Roadmap

What we built, and what we cut.

The commits start on 23 June 2026, but the work began about a year before. Here is what it built, what it took back out, and what is written down for next.

The work, to scale
Before the first commit
About a year
Of commits, 23 Jun – 28 Oct
127 days
built
68
taken out
9
planned
5

Updated

Chapters down, tracks across
Skip the sheet
ChapterModelDataPeersProductCraftReaders
Work no commit showsUndated1 built1 built1 built
Groundwork23–29 Jun1 built2 built1 built2 built
A first screener3–17 Jul1 built2 built3 built2 built, 1 taken out
Earnings season29 Jul – 8 Oct2 built, 1 taken out1 built4 built
Peers, in the lab15–16 Oct5 built
Three tools17 Oct2 built1 built2 built, 1 taken out1 built
One app19–23 Oct1 built3 built, 4 taken out1 built
Open to the public24 Oct5 built
For investors25 Oct1 built1 built3 built1 built
Ask it26 Oct1 built3 built, 2 taken out1 built
Compare27 Oct1 built3 built1 built
Polish27–28 Oct6 built1 built
NextPlanned2 planned1 planned2 planned
  • Built
  • Taken out
  • Planned
  • One square is one entry

The tracks

Model
What a company is worth
Data
What the numbers stand on
Peers
Who a company is like
Product
What a reader uses
Craft
What holds it up
Readers
Who follows along
  1. Work no commit shows

    No dates, no commits

    The year before the first commit, and the work that runs beside the code.

    1. UndatedProduct

      A year before the first commit

      Daily work on the idea began about a year before the first commit on 23 June, and none of it is in the list of commits.

    2. UndatedCraft

      Regulatory work

      Regulatory work ran beside the code as part of the daily work, and no commit records it.

    3. UndatedReaders

      A newsletter that found its readers

      Old Money Investing, our Substack newsletter, began with no outside following. On 8 September it had 100 paid subscribers and bestseller status, 41 days after its first post and 16 after its first paid post. It has about 5,000 subscribers.

  1. Groundwork

    23–29 Jun

    A web app, a pipeline and a first idea of what a company is worth.

    1. Craft

      The first commit

      A web app on Cloudflare with a database, file storage and a rate limit already wired in. Development and production were separate sites from the start.

    2. Data

      A pipeline to feed it

      A job that fetches prices and company statements, cleans them and writes the files the site reads. By the end of the second day it held 212 files. The first fixes were for crashes and leaks.

    3. Data

      Every field written down

      One document lists every table and every field, and the quality rules each must meet.

    4. Product

      A roadmap you could vote on

      A public board with columns from idea to shipped. Anyone could vote on an item without signing in, once for each item.

    5. Model

      A first model of value

      Price set against a computed value for each company, stored in a fixed format the web app reads.

    6. Craft

      Guards at the edges

      Loaders refuse any path that climbs out of the data folder, and every quality gate checks its own settings before it runs.

  2. A first screener

    3–17 Jul

    A table of companies, live prices, the first checks on the data and the legal pages.

    1. Product

      A table of companies

      Sort and scan every company in one table. By 8 July it paged, showed live prices and opened a row into its details.

    2. Data

      The pipeline tests itself

      Checks for scale errors, price gaps, implausible prices, thin history and extreme returns, each finding with a severity. A night spent silencing some of them was undone the same morning.

    3. Model

      The gap is measured from value

      A gap is measured against the value the model computes, not against the market price. That is still how every gap on the site is measured.

    4. Data

      A missing number stays missing

      A zero market cap is rebuilt from shares outstanding where that is possible. Where it is not, the page shows nothing instead of a guess.

    5. Product

      Prices that move

      A price cell flashes when its price changes, so the market can be seen to move without a reload.

    6. Craft

      The legal pages

      Terms of use, a privacy notice and a financial disclaimer went up on 10 July, five days before production opened.

    7. Craft

      A floor for every color pair

      A color brief and a script that measures the contrast of every text and background pair. A pair below its floor fails the check.

    8. Product

      The MVP opens production

      The same day as a redesign: sign-in gates, an admin site for development, and production opened.

    9. CraftTaken out

      The first cleanups

      Eleven unused packages went on 4 July. On 17 July a cleanup took out archive routes, dead screens, copied reference docs and an orphaned pipeline stage: 162 files in one commit.

  3. Earnings season

    29 Jul – 8 Oct

    A newsletter opens and the earnings desk goes live. Checks tighten. Market indicators leave.

    1. Readers

      A newsletter opens

      Earnings Intel published its welcome on 29 July: how thousands of earnings releases, market expectations, competitor results and options prices become a short list of the reports that matter.

    2. Product

      The week's twenty

      A report ranked each week's earnings by an attention score and kept up to 20. The first issue to name its twenty went out on 2 August.

    3. Readers

      An issue every Sunday

      From 2 August an issue went out on every Sunday, 13 in a row by 25 October.

    4. Product

      An earnings desk

      A weekly view of who reports, and a page of five sections for each company's report. Work began on 31 July, and it went live on 13 August.

    5. Craft

      Checks that run anywhere

      A secret scanner, a pinned code checker and the repo's gates now run in CI as they run on a laptop. Tests no longer depend on what was published locally.

    6. Readers

      A new name

      Earnings Intel became Old Money Investing on 27 September, and its issues began to set stocks against the fair value model.

    7. ProductTaken out

      Three indicators retire

      Three market indicators, first drawn in July, were taken out on 8 October. They are archived, with notes on how to restore them.

  4. Peers, in the lab

    15–16 Oct

    Two days to learn whether peers can price a company, with every test written before its result.

    1. Peers

      Peers with weights

      Companies are ranked against weighted peers instead of industry and size tiers. Every peer set is dated and never rewritten.

    2. Peers

      A group for every company

      A company with no peers of its own is ranked against a daily comparison group, rebuilt and graded every night.

    3. Peers

      The new way runs in shadow

      Every night the new way prices each company beside the old way, and both results are kept. Pages keep the old way until the new one proves itself.

    4. Peers

      Tests written before results

      Each design for companies with no usable peers was registered in writing, with its pass mark, before it was scored.

    5. Peers

      A final test, read once

      The last twelve month ends were held back while the design was built. It beat the old estimate on every multiple tested, and the ledger refuses a second read. It is research code, not yet in production.

  5. Three tools

    17 Oct

    Valuation, Peers and Universe in one day: 74 commits, one fair value and a rule of no number.

    1. Product

      Valuation

      Price against fair value, month by month: a ledger of the past and a cone for the next three years.

    2. Peers

      Peers

      A company set against its peers by similarity and by value, on a map that zooms by pinch, wheel, keys and buttons.

    3. Product

      Universe

      Every company in one table, with its filters and its sort in the address, so any view can be shared by link. Prices are live.

    4. Model

      One fair value

      All three tools read the same number, so a company has one fair value wherever it appears. The old name for it is gone from every page.

    5. Model

      No number, no guess

      Where the model does not apply, no page shows a fair value, and the page says so.

    6. Craft

      Contrast and focus, every state

      The contrast list grew to cover the core pages, and every control got a focus frame. What the check caught was fixed the same day.

    7. ProductTaken out

      The first table retires

      The July finance table was archived. So was the shelves pipeline, built earlier the same day for a design that did not last.

  6. One app

    19–23 Oct

    A dozen pages cut, a market clock fixed, a portrait of each company, and the marketing site folded in.

    1. ProductTaken out

      Twelve pages retired

      The calendars, the command center, the index, two archives, a team page and the weekly report went in one day. Each old address now answers 404.

    2. Product

      A market clock that stays right

      A holiday table that stopped in 2027 gave way to the exchange's own rules: observed days, Good Friday, early closes and a day of mourning the table missed.

    3. Product

      A portrait of each company

      How a company earns, where its cash goes, how much strain it can take and which companies it resembles. A missing input stays missing.

    4. ProductTaken out

      The dossiers retire

      The earnings dossiers came out of the pages, the pipeline and storage, after a copy was archived and checked. One question from them returned three days later as a panel.

    5. Peers

      What a company sells

      Each company's revenue is sorted into about 800 kinds of business, using a dictionary of about 12,000 labels. Two companies are alike when their money sits in nearby kinds.

    6. Product

      The home page moves in

      The marketing site became the home page of the app, and was compared with the old one pixel by pixel at fifteen widths.

    7. ProductTaken out

      Sign-in removed

      Sign-in was removed, so every page is open to read. The admin screens run only in development.

    8. ProductTaken out

      The empty roadmap retires

      The old roadmap page showed a title and a blank body, and nothing linked to it. It went into the archive, and this page takes its place.

    9. Craft

      An engraving, drawn live

      The footer's engraving is drawn live in WebGL, in the manner of security printing, with no image and no graphics library. A fixture pins every frame it can draw.

  7. Open to the public

    24 Oct

    A shield, a notice of rights, a keyboard check and a scan for secrets, all on one day.

    1. Craft

      A shield at the door

      Before the app runs, a shield asks a program to prove it is a browser, slows a client that reads too much and turns away one that is plainly collecting the data. A reader who opens companies one at a time never sees it.

    2. Craft

      A shield that was attacked

      Planted bugs in its code had to fail a test, and all 164 did. A red-team script then ran 18 scenarios against a built Worker, and none of its 59 checks failed.

    3. Craft

      Rules that cannot drift apart

      The robots file and the notice reserving data-mining rights are written from the list the shield decides with, and a test holds them to each other, path by path.

    4. Craft

      Every control shows focus

      A script tabs through the product's pages on a desktop and a phone, and names each control that takes focus without a visible frame.

    5. Craft

      No secret in the bundle

      A check before every deploy fails the deploy if the script the Worker uploads carries a secret.

  8. For investors

    25 Oct

    How long a company has stood at its gap, eight gates, a card to post and what a stock did after earnings.

    1. Product

      How long it has stood there

      A line through a company's last twelve months of gap, and how many of those months it has stood where it is now. The Universe filters and sorts by it.

    2. Model

      Eight gates

      Model, size, value, confidence, growth, cushion, cash and books. Each gate answers pass, fail or not tested, and a missing reading is never a pass.

    3. Craft

      The gates matched a real screen

      On a frozen snapshot, the gates reproduced a published weekly screen: the same count at every stage and the same survivors, with no differences. Of its 25 picks, 24 clear, and the 25th fails one gate, as that screen said.

    4. Peers

      Peers, through the gates

      A matrix puts a company and its peers through the gates. The peers that clear come first, then those that fail by the fewest gates.

    5. Product

      A card to post

      Press Share on a stock and get one picture: its gap and how long it has stood there, or its eight gates. It is drawn in your browser, and nothing is sent anywhere to make it.

    6. Product

      What happened after earnings

      A Valuation section shows what a stock did after each of its last five reports, and whether earnings per share beat the estimate.

  9. Ask it

    26 Oct

    The home page becomes a question box, and every page learns to open at the answer.

    1. Product

      The Prompt

      Type a company and get one sentence about it, and three pictures that show it. No language model writes it: every sentence is built from numbers that a file holds.

    2. Product

      Three depths

      Every page opens at the answer and the numbers that make it. Two more stops add the work behind it, then every element. The choice follows the reader from page to page.

    3. Product

      A ridgeline for the gap

      A company's gap history is drawn on a log scale, so a price at twice fair value and a price at half sit the same distance either side.

    4. Data

      One file per answer

      The nightly run writes a small file for each valued company, so the Prompt answers by reading a file instead of computing. Python and TypeScript each check its format.

    5. Craft

      Words are tested too

      A script holds every word a reader sees to rules of voice: no talk of where a number was read, no disclaimers, one name for the model. It scans the code and the pages as they render.

    6. ProductTaken out

      The Gates page folds in

      Gates stopped being a page of their own and became a section of Valuation. Peers and Universe lead there, and the old addresses redirect.

    7. ProductTaken out

      The first chart is gone

      The first chart page, built in July on a charting library, was removed with the library. Its addresses redirect to Valuation, and every chart on the site is now plain SVG.

  10. Compare

    27 Oct

    Who is a company really like, and is it cheaper than they are?

    1. Peers

      Four lenses

      Business, words, numbers and motion each rank the twenty companies closest to a company, and each votes for its first ten.

    2. Peers

      A twin needs three votes

      A company is a twin when three lenses vote for it. Where no three agree, the page says so and picks none.

    3. Peers

      One against one

      Any two companies side by side: how many points apart their gaps are, how alike they are, and what each lens says of the other.

    4. Craft

      One rule, two languages

      The twin rule is written in Python and in TypeScript. One shared test file makes either fail until the other agrees.

    5. Data

      A faster build, the same output

      Parallel reads, a pool of processes for pricing and two caches made a test build faster, and uploads now use 64 threads. The whole build was compared file by file with the old one, and every output was identical.

  11. Polish

    27–28 Oct

    Details, narrow screens and two written plans.

    1. Product

      A bar that becomes the header

      Leaving the home page, the Prompt's dark bar moves up and becomes the company picker of the header, and nothing else moves. A reader who asks for less motion gets the change at once.

    2. Craft

      Two plans, written to be checked

      Peers v2 and Fair Value v2 are written as numbered units. Each has its tests, its pass mark and its way back, and each finding names its script and says whether it was measured, inferred or guessed.

    3. Product

      A month on nearly every ring

      On a company's capital map, nearly every ring among its peers carries its month, written beside the ring or on a short line that crosses nothing. Where no place is clear, the month is left out.

    4. Product

      Three doors, no Enter key

      The Prompt lost its on-screen Enter key, since the keyboard's own still asks. Three small doors under its panes lead to Valuation, Peers and Universe.

    5. Product

      Fits a 320-pixel phone

      Labels in the Valuation answer no longer print over each other between 768 and 939 pixels. Pairs and twins were redrawn to fit the narrowest phone.

    6. Product

      A preview with no number

      The image that previews the site is captured from the real home page with the Prompt emptied, so it names no company and shows no figure.

    7. Product

      This page

      The roadmap returns, as a record of what was built, what was taken out and what is planned. It is data, and tests hold it to its order, its length, its words and its links.