← All projects

Modern Macro Dashboard

Live macro model readings, sold as a paid tier of the publication

OwnedLive · members only2026

Next.js · Neon · FRED API · Ghost Members · Vercel

app.modernmacro.tech →

What it is

The instrument behind Modern Macro Technologies, the research publication I own, and the thing its Professional tier actually buys. Subscribers sign in with the Ghost membership they already have — there is no second account to create — and land on a board showing every model and data series at its latest reading.

Today's board. Each tile names what it measures, carries its own as-of date, and says when a reading is still provisional instead of rounding it into confidence.

What it does

Four models sit across the top, each built to sharpen one decision and each stating plainly what it measures: the divergence between Treasury cash flows and investor sentiment, which historical flow regime today's deficit dynamics resemble, the expected size of tomorrow's index move and not its direction, and the forward path implied by current flows, labelled as a shape and not a target. Below them are the underlying series, including the federal deficit impulse in nominal, inflation-adjusted and oil-adjusted form. Sources are checked every morning and the models recalculated at a fixed hour, but each series publishes on its own schedule, so every tile carries its own as-of date and says so when a reading is still provisional. Opening a model gives the full history and how it is built.

Opening a model gives the full history — here the projected forward path against what actually happened.

How it's built

Next.js on Vercel with roughly a dozen scheduled jobs, one per source, pulling the Daily and Monthly Treasury Statements, margin debt, interest rates and index data into a Neon Postgres database; a separate pass scores the models over the stored history and backfills when a source revises. Authentication is Ghost's own: a member link mints a token, middleware gates every dashboard route, and a reconciliation job keeps community access in step with membership status.

Working with Claude

Each new data series has the same shape: fetch, store, recalculate, backfill, expose. Once the first one existed, adding another became an afternoon rather than a project, and that repeatability is most of why the board has as many series on it as it does. What did not become easy was deciding what a model should say when its inputs are stale or a release is provisional. That stayed a judgment call, and the answer is visible on every tile: an as-of date and a provisional note instead of a confident number. The repository's README is still largely the scaffold's, which is a fair record of where the effort went.