Dispatch 144
Week ↗

Viewer mode, enrichment pass, a demo flag

Thursday, January 1, 2026. Three commits across three arcs in ca-retirement-leads, and the day adds up to a cleaner product surface. First I backed up the enrichment pipeline. The commit touched twenty-nine…

Commits
3
Systems
1
Read
1min
Product capture

Wealth-Ops — live product surface.

Thursday, January 1, 2026. Three commits across three arcs in ca-retirement-leads, and the day adds up to a cleaner product surface.

First I backed up the enrichment pipeline. The commit touched twenty-nine files, swapped nearly a million lines of data, and left 179 lines of deletions. The goal was straightforward: lock the state before I rewired enrichment, with the full 6,269 contacts safely in the database. That was the anchor. Everything else that day depended on not losing that data.

With the backup in place, I built viewer mode and applied Human Interest branding across the frontend. I adjusted layouts, CSS, the config layer, every dashboard page, and the routing stubs so that a read-only surface could be shipped without letting anyone touch the ingestion or enrichment flows. The .env.viewer files and the layout component got the heaviest edits, which is exactly where a branding toggle has to live.

The goal was straightforward: lock the state before I rewired enrichment, with the full 6,269 contacts safely in the database.

Then I added the demo mode. That was the smaller but more tactical arc: a banner component, contact stats, and an enrichment data export hook. The demo flag and the viewer flag ended up living side by side in config, which is fine as long as they stay orthogonal. I kept the demo banners and stats in the Contacts page because that's where a prospect wants to see proof that the numbers are real.

It was a quiet day by calendar standards, but the commits tell a different story. The data layer got a hard checkpoint, the UI got a branded viewer shell, and the demo path got the props it needed to show the product off without exposing anything it shouldn't.

Also today: the usual CLAUDE.md and data README tidy-ups, plus a few .env scaffolding adjustments that don't merit a paragraph but matter when someone spins the repo up on a fresh machine.

Three arcs, one repo, no breakage. The day added up to a product that can be shown without being touched.

Also in the frame

Real product captures — click any to enlarge.

wealth ops