Kumu / Micro/Macro Econ / Economic Profit & Rent / 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 naming who you think is ahead and why. Then the specification for two sheets — four profit-and-loss statements taken past accounting profit to economic profit, and the medallion capitalization — the AI-built workbook, and your audit of it.
Your repository already exists. This engagement adds one capability folder:
capabilities/economic-profit/.
Learn — the three things a vague spec gets wrong here
Opportunity cost is the alternative's net earnings
The office job pays $57,600 gross and $52,200 after its own costs. Charge a driver $57,600 and you have compared a gross figure to a net one, overstating every implicit cost in the model. The previous version of this course's template shipped with exactly that error, and it is the kind a generated workbook reproduces silently, because "the traditional job's salary" is a phrase with two readings and a model will pick one.
Opportunity cost has to match scale
A part-time driver forgoes a part-time alternative: $26,100, not $52,200. Specify the implicit cost without qualifying the scale and the part-timer gets charged a full-time opportunity cost — which makes them look far worse than they are, for a reason that is arithmetic rather than economic.
Capitalization has two moving parts
Value is rent ÷ required return. Between the two eras the rent falls from $36,000
to $18,000 and the required return rises from 3.5% to 6.0%, because a shrinking income
stream is also a riskier one. A specification that changes only the rent reproduces neither
observed price. Both inputs belong in the named contract, per era.
One structural requirement
Days per month is a named input, not a constant buried inside formulas. The sensitivity run at the end of this stage depends on being able to change it in one place and watch every verdict move. If changing it does nothing, the number was hard-coded somewhere and the fix belongs in the spec.
Do — write the brief
Create docs/briefs/economic-profit-brief.md before anything else: the four-person
setup in your own words, and a hypothesis — "I expect X to have the highest economic profit
because Y." Name the person and the mechanism. The
brief template has the structure.
Commit it before any spec or model work. Stage 2 does not reward a lucky guess — it rewards the account of why your finished model agreed or disagreed with the hypothesis, and that account can only be written if the hypothesis was on the record first.
Do — specify
Write capabilities/economic-profit/spec.md before opening Excel: named inputs with units
and sources, the structure of both sheets, 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:
| App FT | App PT | Cab FT | Office | |
|---|---|---|---|---|
| Accounting profit | $50,520 | $22,860 | $59,580 | $52,200 |
| Economic profit | −$1,680 | −$3,240 | +$7,380 | +$1,680 |
| Medallion | Before entry | After entry |
|---|---|---|
| Lease ÷ required return | $36,000 ÷ 3.5% | $18,000 ÷ 6.0% |
| Capitalized value | $1,028,571 | $300,000 |
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, use the office job's net figure" into the chat, that sentence belongs in the spec. Add it, commit it, regenerate. In this case the clarifications you give verbally will be exactly the three failures above — which is the evidence that they were missing from the document.
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 eight profit figures and both medallion values | Everything, in aggregate — but not where it went wrong |
| A hand calculation of one opportunity cost — take the part-time driver's implicit cost and compute it yourself from the office job's net earnings, halved | Both the net-to-net rule and the scale rule, in one line. If the workbook says $52,200 or $28,800, one of them did not survive the build |
| Capitalization is a division, not a stored number — change the rent input and watch the value move | A hard-coded $1,028,571 that will not respond to anything |
| Formulas, not pasted values, referencing your named inputs | A number that is right today and wrong the moment an input changes |
| The sensitivity run — days per month 30 → 22, then restore | A days-per-month figure hard-coded somewhere inside the formulas |
Record what the sensitivity did to each worker's economic profit — you will use those numbers in Stage 2 — then restore the input to 30 before your final commit.
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 the profit concepts, quiz you, critique your reasoning, and debug what it built. It may not write the brief, and it may not hand you the verdicts before your hypothesis is committed. "Walk me through why opportunity cost uses net earnings" is exactly right; "which of the four is ahead?" before the brief exists defeats the stage.
Deliverable
| What | Where it goes |
|---|---|
| The brief, with a hypothesis committed before any modeling | docs/briefs/economic-profit-brief.md |
| The specification, with audit findings appended | capabilities/economic-profit/spec.md |
| The workbook that satisfies it | capabilities/economic-profit/model.xlsx |
| What the capability is, and where it was exercised | capabilities/economic-profit/README.md |
docs/briefs/economic-profit-brief.mdcommitted before any spec or model work- The brief names a person and a mechanism, not a hedge
spec.mdcommitted before the workbook- Opportunity cost specified as the alternative's net earnings, never gross
- Opportunity cost scale-matched — the part-timer forgoes a part-time alternative
- Days per month is a named input, not a constant inside formulas
- Both capitalization inputs — rent and required return — named separately for each era
- Check figures written into the spec as acceptance criteria before the build
- All four accounting profits match: $50,520 · $22,860 · $59,580 · $52,200
- All four economic profits match: −$1,680 · −$3,240 · +$7,380 · +$1,680
- Medallion values match: $1,028,571 and $300,000, each as rent ÷ required return
- Hand calculation of one opportunity cost confirms the net-to-net and scale rules survived the build
- Sensitivity run documented: 30 → 22 days per month, verdicts recorded, input restored
- 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