For creators and artists working with generative AI, the lesson from Thousand Token Wood is clear: you do not need a massive frontier model to build a living, breathing simulation. You can run a complex multi-agent economy on a 3B parameter model, provided you understand that these systems thrive on engineered constraints rather than raw intelligence. The project, built for the Build Small Hackathon, demonstrates that a tiny economy of five woodland creatures trading pebbles, gossip, and panic is far more engaging when their survival depends on scarcity rather than infinite abundance.
In this article
Why small is the design, not the limit
A functioning economy requires many agents thinking many times per run. This is exactly where a frontier model becomes the wrong tool: it is too slow and too costly to run a council of traders every tick. A small model is what makes a real-time multi-agent simulation feasible. Every creature decides in a single batched GPU call per turn, served via vLLM on Modal and viewed through a Gradio app.
The first economy was dead on arrival
The initial version did nothing. Production outran consumption, so every creature was self-sufficient and never had a reason to trade. The market cleared once and went silent. The fix was to engineer scarcity:
- Diet variety: A creature can eat only one unit of any single food per meal, so surviving means buying foods it does not grow.
- Spoilage: Perishable food rots if hoarded, forcing surplus to be sold while it still has value.
- A winter fuel crisis: Every creature must burn firewood each turn, the need rises over time, and only one creature makes firewood.
That last mechanic drives the drama. One supplier cannot meet rising demand, so the woodcutter gets rich and everyone else competes for warmth.
Valid JSON, weak judgment
With scarcity in place, the honest small-model lesson surfaced. The 3B model emitted valid JSON on 100% of calls, but its economic judgment was poor: a creature that produced acorns would post an order to buy acorns, the one thing it had in surplus.
The fix was not a bigger model, it was a sharper prompt. I told each agent what it produced and must never buy, computed the exact list of goods it was short on, and gave it one worked example. Decision quality jumped and the creatures began trading to their roles. The whole loop is wrapped in a tolerant JSON parse-and-repair layer, so a malformed response degrades to a no-op instead of crashing the simulation.
A second lesson came from wellbeing. I first modeled it as an accumulator, and any chronic shortfall ground every creature to zero over a run, a death spiral that was no fun to watch and that punished the agents’ imperfect optimization. I reframed it as a mean-reverting mood that recovers when a creature is fed and warm and never hits zero. Stakes belong in pebbles, prices, and status, not starvation.
Then it started telling stories
The feature I am most pleased with ties the project to market history. The player can draw a Wood Legend: a famous episode reskinned as woodland folklore. Tulip Mania becomes the Great Acorn Mania. The South Sea Bubble becomes the Hollow Log Trading Company. The 1929 bank runs become the Run on Oona’s Hoard.
These are not flavor text. Each legend fires real shocks, and the agents react. In one run I drew the Run on Oona’s Hoard, the rumor that the owl’s vault was empty. Oona began liquidating her honey to raise pebbles, and the flood of supply crashed the honey price from 10 to 3 over the next turns. A reskinned bank run made an agent dump assets and moved a market price. None of it was scripted.
For that to be visible, prices had to move. They were frozen because the agents quoted back the reference price I showed them. The fix was to let the market reference drift with residual supply and demand after each round: heavy unfilled buying pushes a price up, a glut pushes it down. Prices now trend during scarcity and stay calm in balanced trade.
What actually happened
A representative fifteen-turn run, with a drought and a winter rumor injected partway:
| Metric | Result |
|---|---|
| Valid JSON actions | 100% (75 of 75 calls) |
| Trades per turn | sustained 3 to 9, never silent |
| Honey price | crashed 10 to 3 during the bank-run legend |
| Firewood price | rose 4 to 7 as winter scarcity bit |
| Wealth gap (Gini) | widened 0.14 to 0.38 |
| Outcome | the woodcutter ended richest, the hoarder broke |
The reasoning behind every one of those moves is in the open agent traces: each row is a creature’s full prompt, raw response, parsed actions, and private thought.
Takeaways for building with small models
Most of the engineering is closing the gap between a small model’s reliable formatting and its unreliable reasoning, with structure and prompting rather than scale. Emergent systems need designed scarcity; abundance is boring. And the most compelling small-model demos do not need invented drama. Three centuries of market history had it ready, and a council of 3B agents was enough to play it out.
Key takeaways
- Small models are reliable format generators but unreliable reasoners, so they require strict structural constraints and sharper prompting to produce coherent economic behaviour.
- Emergent systems thrive on designed scarcity, such as spoilage or limited fuel, which forces agents to interact and creates visible market dynamics.
- Reskinning real historical events like the Tulip Mania or the 1929 crash provides instant narrative depth without needing scripted storylines.




