The builder is a form on the left and a live preview on the right. Everything you add or change shows up immediately, and the status bar underneath the preview turns red with a message if something isn't valid yet, so you can't accidentally produce a broken graph.
Load a sample from the Sample dropdown to start from something real, or pick Blank to build up from nothing. Copy JSON copies the current spec to your clipboard.
The form is organized top to bottom in the order you usually build.
Meta. The title, and the formatting that applies to the whole graph: font scale (multiplies all text at once — turn it up for a projector), title size, graph width, sidebar width, and sidebar position (beside the graph, below it, or automatic). Every number box shows its default value, so the up/down arrows nudge from the real default and a value is only saved when you change it.
Parameters. The adjustable numbers. Each has a name (how you refer to it in formulas), a starting value, an optional label, and — if you give it both a min and a max — it becomes a slider and a drag target. step sets how coarsely it rounds.
Derived. Values computed from the parameters, each a name and a formula (an expression over your parameters and earlier derived values). This is where an equilibrium quantity, a price, or a shaded-area coordinate lives, so it recomputes whenever a slider moves.
Colors. Add or rename palette colors. Anywhere a color is asked for you can type a palette name (demand, supply, profit, …) or pick any color from the wheel.
Panels / objects. The heart of it. A single graph has one set of axes and a list of objects; add a second panel for a stacked two-graph layout. For each axis you set the label, range, tick count, color, and text size. Then you add objects from the menu — a curve, a line, a point, a shaded area, a rectangle, an arrow, a segment, or a free label — and fill in their fields. A point can carry droplines to the axes and can be made draggable. Any object can be given a show condition so it appears only when some expression is true.
Sidebar. The controls and text beside the graph. Add a slider for each parameter you want the student to move, and add text blocks that show live values (write ${expr} in the text and it fills in the current number; $...$ renders math). The show in graph checkbox hides the sidebar from the rendered graph while keeping it here in the builder — useful for a clean figure that you still want the setup for.
The Build dropdown at the top switches what you are authoring. Graph is the default described above. Game (payoff matrix) gives you a normal-form editor: name the two players, list their strategies, fill the payoff cells, and toggle best-response shading, Nash rings, iterated elimination, or the 2×2 mixed-strategy view.
Sequential game (tree) builds an extensive-form game solved by backward induction. You list the players (each with a color), then edit the tree node by node. Every node is either a decision — a mover chosen from the player list and one labeled action per branch — or a terminal node holding a payoff for each player. Each action carries its own child node, indented beneath it, so the tree grows as deep as the game needs, up to five decision stages. Adding an action gives you a new terminal leaf you can then turn into a further decision; switching a node between decision and terminal is a single dropdown. Turn backward induction on for the step-by-step solver, and choose top-down or left-right layout.
Repeated game builds the infinitely repeated prisoner's dilemma. You name the two players and their cooperate/defect actions, choose which trigger strategies to offer (grim, tit-for-tat, and an n-period punishment), and set how many periods the discounting timeline shows. The stage payoffs and the discount factor are ordinary parameters, so you drive them with sliders in the sidebar exactly as in a graph; the view then reports whether cooperation is sustainable.
Continuous-action sequential games — Stackelberg leader-follower, for instance — are not trees: with a continuum of quantities there is no finite branch to draw. The honest picture is a graph in the players' action space, where the follower's reaction curve is its continuum of best responses and the subgame-perfect outcome is the point the leader picks along it. The Stackelberg (continuous sequential) sample is exactly this, built with ordinary curves, points, and an annotation, so you author it in Graph mode like any other figure.
Text sizing works at two levels and they combine. Font scale in the meta section multiplies everything at once. Then each individual piece — the title, each axis, each label, each slider, each text block — has its own optional size that overrides just that piece. Every size box is pre-filled with its default, so you always know where you're starting from.
When the graph looks right, either Copy JSON to save the spec, or open the same graph from the Gallery to download it as a self-contained file. A spec you build here is exactly the spec the gallery and the standalone files use — there is only one format.