Building a geopolitical sim reveals Claude Code's real power
Vartika Tewari's account of building GeoSim — an AI-powered geopolitical simulation engine — reveals that Claude Code's most valuable features are its process-enforcement mechanisms like hooks and custom skills, not its AI code suggestions.
Score breakdown
Adopt Claude Code's hooks and custom skills to automate quality gates — automated `PostToolUse` hooks and versioned skill scripts can catch bugs and enforce process without relying on developers to remember to run checks manually.
- 01GeoSim simulates six geopolitical actors (US, Iran, Israel, Russia, China, Gulf States) using separate Claude Sonnet agent calls, with a resolution engine and narrator synthesizing outcomes.
- 02The stack is Next.js 14 App Router, TypeScript, Supabase (Postgres + Auth + Realtime), Mapbox GL JS, and the Anthropic API.
- 03The team wrote a 216-line CLAUDE.md with @imports to 15 reference files, which evolved across 92 PRs.
Vartika Tewari describes building GeoSim, an AI-powered geopolitical strategic simulation engine where six actors — the US, Iran, Israel, Russia, China, and the Gulf States — each plan moves via separate Claude Sonnet agent calls, with a resolution engine arbitrating outcomes and a narrator synthesizing intelligence reports. The simulation features a git-like branching system where timeline forks are immutable once committed, and fog-of-war is enforced at the database layer via Supabase RLS. The stack is Next.js 14 App Router, TypeScript, Supabase (Postgres + Auth + Realtime), Mapbox GL JS, and the Anthropic API, and the project is live at geosim-eight.vercel.app.
The central lesson from the build was that Claude Code's process-enforcement mechanisms outweighed its AI suggestions in practical value.
The central lesson from the build was that Claude Code's process-enforcement mechanisms outweighed its AI suggestions in practical value. The team wrote a 216-line `CLAUDE.md` with modular `@imports` to 15 reference files covering frontend design, prompt libraries, agent architecture, data models, and testing strategy — a document that evolved across 92 PRs and became the authoritative source for every architectural decision. They also built 14 custom skills, including a `quality-gate` skill that silently failed in its first version on WSL2 because it called `npm` (a Windows binary) instead of `bun`, and a `run-turn` skill that chained all actor agent calls, the resolution engine, the judge, and the narrator into a single command-line invocation.
Five hooks in `.claude/settings.json` automated key quality steps: a `PreToolUse` hook blocked edits to protected files, a `PostToolUse` hook ran Prettier on every saved file, and another `PostToolUse` hook triggered `run-tests-on-save.sh` automatically after each edit — catching a capitalization failure (`"Conventional Strike"` vs `"Conventional strike"`) in `EscalationLadder.test.tsx` before the developer had even moved on to the next task. The broader takeaway is that the most powerful developer tooling enforces good process automatically, rather than relying on the developer to remember to invoke it.
Key facts
- 01GeoSim simulates six geopolitical actors (US, Iran, Israel, Russia, China, Gulf States) using separate Claude Sonnet agent calls, with a resolution engine and narrator synthesizing outcomes.
- 02The stack is Next.js 14 App Router, TypeScript, Supabase (Postgres + Auth + Realtime), Mapbox GL JS, and the Anthropic API.
- 03The team wrote a 216-line CLAUDE.md with @imports to 15 reference files, which evolved across 92 PRs.
- 04