Kumu / Micro/Macro Econ / Imperfect Competition / Stage 1
Stage 1 — Brief, Spec, Build, Audit
Objective
Optional · ungraded · self-paced
This case is an optional extension. Nothing here is submitted and nothing is due — self-paced, for students who want to run the argument out to its end.
A brief stating the two-market problem and a hypothesis you can be wrong about. Then the specification, the AI-built workbook, and your audit of it — the same sequence as the first case, on a harder model.
Your repository already exists. This engagement adds one capability folder:
capabilities/pricing-power/.
Learn — the three things a vague spec gets wrong here
Both markets share the cost structure TVC = a·Q + b·Q², so
MC = a + 2b·Q with a = $1 per bag and fixed costs of $130M. Non-GMO demand is flat at
$120 with b = 0.000015; GMO demand is P = 525 − 0.0000067·Q with b = 0.000001, and
MR = 525 − 0.0000134·Q.
Three specification failures produce three specific, recognizable defects. Knowing them in advance is what lets you write a spec that prevents them and an audit that catches them.
Variable cost is the area under marginal cost
Total variable cost is aQ + bQ² — the area under the MC curve — not MC × Q.
Marginal cost is the cost of the last unit; every earlier unit cost less. Specify it as
MC × Q and average cost becomes equal to marginal cost, which forces profit to exactly minus
fixed costs: −$130M, every time, regardless of the market. That is an artifact, not economics, and
the previous version of this course's workbook shipped with exactly that bug.
Marginal revenue is a separate series, with twice the slope
To sell one more bag the price maker cuts the price on every bag. For linear demand that discount doubles the slope exactly: MR shares demand's intercept and falls twice as fast. A specification that describes "the demand curve" and never defines marginal revenue separately produces a model where MR = P — which is a model of the first case, not this one, and every downstream number is wrong.
The price comes off demand
MR = MC picks the quantity. Demand tells you the price buyers will pay for that quantity. If your spec is ambiguous about which curve supplies the price, you get a model that prices at about $69 instead of $297 — the most common error in this case.
Write it so it cannot be read two ways
"P_STAR is read from the demand relation evaluated at Q_STAR, not from MR_GMO" is unambiguous. "Find the optimal price" is not — and a model will resolve that ambiguity confidently, in whichever direction it happens to resolve it.
Do — write the brief
Create docs/briefs/imperfect-competition-brief.md before anything else: the
two-market setup in your own words, and a hypothesis — "I expect the GMO price and profit to
be X because Y." Real numbers, and the mechanism you think decides it. The
brief template has the structure.
Commit it before any spec or model work. The commit timestamp is what makes it a hypothesis rather than a summary, and Stage 2 has nothing to compare against without it. Most hypotheses here are off by an order of magnitude on profit; that is the good outcome.
Do — specify
Write capabilities/pricing-power/spec.md before opening Excel, covering both markets:
named inputs with units and sources, structure, calculation logic in named-range notation,
validation rules, and outputs. The spec template has
the sections; the three failures above tell you where to be most precise.
Write the check figures in as acceptance criteria, before the build:
| Figure | Non-GMO (price taker) | GMO (patent monopoly) |
|---|---|---|
| Q* | 3,966,667 bags | 34,025,974 bags |
| P* | $120 (given) | $297.03 — off demand, not MR |
| Profit | $106.0M | $8.785B |
| Markup P/MC | 1.0× | 4.30× (Lerner 0.768) |
Commit the spec, then generate. The order is brief, spec, workbook.
Do — generate
Hand the spec to an AI tool as-is — chat, a CLI agent pointed at your repository, or Claude for Excel. A manual build is permitted; the contract is what matters, not the tool.
Re-explaining the model is a defect report
If you find yourself typing "no, marginal revenue is a separate line" into the chat, that sentence belongs in the spec. Add it, commit it, regenerate. In this case especially: the clarifications you give verbally are exactly the three failures above, and a model that needed to be told once will need to be told again next time.
Do — audit
Run your validation rules against what came back and record the findings at the end of
spec.md: what you checked, what you found, what you did.
| Check | What it catches |
|---|---|
| The check figures, both markets | Everything, in aggregate — but not where it went wrong |
A hand calculation of total variable cost at small Q — compute aQ + bQ² at 1,000,000 bags and compare | VC = MC × Q, in one line. If non-GMO profit is exactly −$130M, this is why |
| MR strictly below price at every positive quantity on the GMO sheet | A model that rebuilt a price taker. If MR = P anywhere, stop and fix the spec |
| Formulas, not pasted values, referencing your named inputs | A number that is right today and wrong the moment an input changes |
| The Econ Policy Lab, for the welfare geometry | Whether the surplus areas your model reports have the shape they should |
When a check fails, fix the spec and regenerate rather than patching the workbook by hand. A workbook that no longer matches its spec is a model nobody can rebuild.
AI boundary for this stage: AI may explain MR and MC mechanics, critique your reasoning, and debug what it built. It may not write the brief, and it may not hand you the optima before your hypothesis is committed — asking for the profit-maximizing quantity before the brief exists defeats the stage.
Deliverable
| What | Where it goes |
|---|---|
| The brief, with a hypothesis committed before any modeling | docs/briefs/imperfect-competition-brief.md |
| The specification, with audit findings appended | capabilities/pricing-power/spec.md |
| The workbook that satisfies it | capabilities/pricing-power/model.xlsx |
| What the capability is, and where it was exercised | capabilities/pricing-power/README.md |
docs/briefs/imperfect-competition-brief.mdcommitted before any spec or model work- The brief states the two-market setup in your own words and a hypothesis with real numbers and a mechanism
spec.mdcommitted before the workbook- Demand and marginal revenue defined as separate series, MR with twice the slope
- Variable cost specified as the area under MC (
aQ + bQ²), never MC × Q - The spec states explicitly that price is read off demand, not off MR
- Check figures written into the spec as acceptance criteria before the build
- Both optima match: Q* 3,966,667 and 34,025,974 bags; P* $120 and $297.03; profit $106.0M and $8.785B
- Markup 4.30× and Lerner 0.768 reproduce
- Hand check at small Q confirms variable cost is the area under MC
- MR strictly below price at every positive quantity on the GMO sheet
- Decision tables complete for both markets and consistent with the optima
- D/MR/MC chart legible: MR twice as steep, the MR = MC crossing, and P* up on demand
- Calculated cells contain formulas referencing named inputs; no
#REF!,#DIV/0!,#NAME? - Audit findings recorded in
spec.md— at least three checks, each naming what it would have caught README.mdin the capability folder, with an "exercised in:" line- At least two descriptive commits for this stage