Novus
A pixel-city game that teaches financial markets. Judge loan files, spot warning signs in company accounts and trade a live market, graded on your reasoning, never on your luck.
Play demoWhy it exists
Most people learn finance from textbooks, then make their first real money decisions with no practice. Worse, they learn to judge a decision by how it turned out, not by whether it made sense at the time.
Novus makes you a finance intern in a small working market. You walk an open pixel city, take a desk at a bank, read credit files, check company accounts for red flags and trade a live market against the clock. Only after an outcome does it show what your call was worth and which idea it turned on: consequence first, vocabulary second.

Graded on reasoning, not luck
- Every call is graded against the file’s hidden risk, never the outcome that happened to be rolled. A sound loan that still defaulted is still sound; a lucky reckless one earns almost nothing.
- You log a risk read before every result, so the game tests recall, not recognition.
- Teaching arrives after the outcome and points at numbers already on screen. No lesson pops up mid-decision.


A live market
Twelve invented companies across real sectors, with prices that move every second through drift, noise and sector shocks. A “Why did it move today?” breakdown splits each move into drift, noise and news, so two stocks can rise by the same amount for completely different reasons. The market is seeded, so a saved game carries on exactly as it would have.

Real collapses, replayed
Pattern files at Risk & Compliance echo real frauds, and the game names the case afterwards. Historical replays of Satyam (2008) and IL&FS (2018) show only what was public at each step, and mark you on what was defensible then, not on knowing the ending.

For teachers
A separate dashboard lets a teacher create a class, set drills and modules with due dates, and see who has passed, which habits the class shares and what to teach next. Privacy between teacher and student is enforced by Postgres row-level security, not by the page.

How it’s built
Vite, React 19 and strict TypeScript, with Phaser 4 for the city, Zustand for state and optional Supabase for cloud saves, transcripts and classes. The code is split into three layers that never mix: the simulation owns every rule and all the money maths and uses only a seeded random number generator, the world layer draws the city, and the UI only shows state and sends actions. That split keeps the market deterministic and testable.