Next Chapter OS Β· Tech Journal

Build Reports

Two-week engineering audits for Mark. Left column: what was built. Right column: what it does for our business, in plain English.

Entry Β· 2026-05-22

Next Chapter OS β€” Two-Week Build Report

Window: 2026-05-08 β†’ 2026-05-22 For: Mark From: Ewing Source: ~250 commits surveyed across main + active feature branches, plus uncommitted working-tree state on feat/pool-pipeline-la-first-run.

How to read this

Six sections:

  1. Shipped & In Use β€” landed in main, live on os.chapter.guide
  2. Business Process & Impact Math β€” what the work is worth, with arithmetic
  3. In-Flight (Started, Not Finalized) β€” sitting in working trees, mid-fix, or awaiting validation
  4. Planned, Not Started β€” missions opened, scaffolded, not built
  5. Non-Feature Major Enhancements β€” infra/hygiene that doesn't show as a button
  6. Recommended Build for Next Week

A clickable URL appendix is at the bottom so you can see the actual work, not just read about it.

1. Shipped & In Use (last 2 weeks)

1A. Deal Manager Skills & Active Engagements

Every link below is a full clickable URL. Click and arrive. No hunts.

What it does for our business
  • Every active deal now has its own "robot manager" β€” a Claude agent that knows the deal cold: who the buyer is, what was said on the last call, what's in the contract draft.
  • Before, every time you asked about a deal, Claude had to be re-told the whole story. Now it loads instantly.
  • We have these for our 6 biggest deals (Loan Mart, Design Precast, Capstone, PixelFlex/Elite, Tempest, HR.com).
  • Each deal also has its own private password-protected web page β€” the deal room β€” with the CIM, the buyer list, the calendar of calls. One URL to share, no email attachments.
  • Translation: instead of digging through email and Drive every time someone asks "what's happening with Capstone?", we click one URL and the full picture loads.

1B. Phoenix Lunch & Learn (LLPhoenix)

  • Standalone phoenix-lunch site, zero coupling to OS [f21ea96]
  • Public surfaces: /lunch-phoenix, /rsvp/phoenix, /LLPhoenix invite review
  • RSVP form β†’ Google Sheets webhook β†’ Slack DM on submit
  • 514 June invitees loaded to Supabase; full overnight pipeline (qualify β†’ LinkedIn β†’ Websets β†’ split β†’ Salesfinity)
  • $1.25 Exa personalization run across 179 invitees with NEEDS_REVIEW validation and consolidated CSV for Mark
  • 5-PDF carousel + polished HTML conversion page
What it does for our business
  • We're hosting a Lunch & Learn in Phoenix for 500+ business owners. Instead of attaching 5 PDFs to invitation emails, we built one web page where invitees preview everything and RSVP.
  • We ran 179 invitees through Exa to write a personalized 1-line opener for each, for $1.25 total (used to cost ~$50 in research time per batch).
  • When someone RSVPs, the form sends data to Google Sheets AND pings Mark on Slack within seconds.
  • 5 draft versions of the invite are stacked into a slideshow on the same page so people can compare without downloading anything.
  • Translation: one URL replaces the 5-PDF email blast, and we know the second someone says yes.

1C. Engine / Python

  • Pool pipeline SoCal scaffolding β€” discover_pool_socal.py shipped, multiple iterations fixing snippet-truth parsing, Supabase column names, findSimilar payload, embedded-quote env strip.
  • Exa consolidation (this is the big one) β€” every Exa call in the system now routes through one middleware:
    • Shared domain config, canonical stages, ExaSkill + exa_refresh
    • HTTP wrapper + admin inspector
    • discover_deep() seedβ†’findSimilar fan-out
    • 6 callers shimmed through ExaMiddleware, TEMPLATES deleted
    • 11 scripts migrated, 22 routines live-tested, full audit PASS
    • 5 footguns closed, exa_routine_audits table + writer_safety filter
    • New exa-audit skill detects drift automatically
  • Salesfinity FIN-3 webhook β€” unbroken dispositions PR landed; envelope-mismatch fix script staged.
  • Drive ingest β€” spec v0.3 + validation_status UVD gate + 5-day pilot plan.
What it does for our business
  • Exa is the search engine we use to find companies and people. It has lots of products β€” and we were sending some calls to the wrong, more expensive product.
  • We discovered a "lookalike company" feature that's ~10x cheaper than searching for companies and ~100x cheaper than running the same query through Websets.
  • Now no one β€” on any machine β€” can use Exa without going through "the Exa policeman." It's a single piece of code that picks the right product, knows where in Supabase the result goes, and uses pre-written, tested search strings.
  • A new skill called exa-audit automatically catches anyone trying to bypass the policeman.
  • Translation: searches are cheaper AND more accurate AND faster AND guaranteed to land in our database.

1D. Next.js OS App

  • Meetings page β€” signal-first triage redesign, default Revenue Opportunities filter, audio-synced spotlight player, sticky CallPlayer, per-call coaching, Call Room + chat, BestMomentHero standalone audio.
  • Leads / Calls β€” Charlie scaffolded new pages, nav swapped to funnel order.
  • Email Editor (swarm-build #007) β€” schema + feature defs, index w/ filter chips, token palette, voice anchor (Phases 2-7), Tier-1/Tier-2 templates, 49-field renderer.
  • Email Studio / Examples β€” /email as real-email list, compose-from-example + tokenizer, auto-labeling task per sent email.
  • Deals page β€” opportunity thesis on tiles, qualified-only tile grid, orphans triage at /orphans, gated rooms (/keystone /bedrock /forum /lagoon), DocuSign-style e-sign prototype, /deals/[slug]/history from Fireflies verdicts.
  • Audit triage at /audit β€” 71-item MASTER_PLAN.md viewer with progress status, completed parking, complexity sort.
  • Build preflight + feature registry, per-machine actor tiles, auth on/off toggle.
What it does for our business
  • This is the operator side of the platform β€” the screens Ewing, Mark, Charlie, and Bear actually click on every day.
  • Meetings page: calls are grouped by signal (revenue opportunities first), and clicking play jumps the audio to the exact moment without scrubbing.
  • Email Editor: rebuilt from scratch so Charlie can write follow-ups on her own without Ewing's help.
  • Deals dashboard: every deal tile shows a one-line "why we opened this" thesis. At a glance you remember the bet you made.
  • Audit page: tracks all 71 items in our master plan with progress status β€” replaces 5 separate spreadsheets.
  • Translation: the team has fewer tabs open, less context-switching, can find anything in under 3 clicks.

1E. Skills

  • fixlater β€” in-thread task capture with GH-issue + on-disk mirror
  • thread-mine β€” ground-truth reset across 4 machines
  • debrief-thread β€” quick architect+data audit with verdict + naming
  • glossy-pack β€” codifies hub design across 5 engagements
  • exa-audit v1.0/v1.1 β€” drift detector
  • skill-upgrade β€” master library auditor + 5 applied upgrades
  • Journal v2.1 β€” three-artifact split, 95 past journals migrated.
What it does for our business
  • Skills are reusable Claude agents β€” like macros for the brain. Add a skill once; every Claude session can use it.
  • 7 new skills shipped, including fixlater (capture a task in 5 seconds and it lands in GitHub AND on disk) and exa-audit (catches Exa overspend before it happens).
  • All 95 past swarm-run notebooks were migrated to the new format so they're all searchable the same way.
  • Translation: Charlie and Bear can do specialist work without specialist training β€” the skill carries the expertise. The library compounds every week.

2. Business Process & Impact Math

(From market-analyst pass; assumptions called out, no point estimates without ranges.)

Pool pipeline (LA first run) — Enables turnkey SoCal pool service TAM → enriched dial-ready list pushed to Salesfinity without manual touch. 1,000 LA targets × 60% reachable phone match × 5% parallel-dialer connect = 30 live conversations. At 8-12% conversation→BOV, 2-4 BOVs. Pool service multiples 4.5-6.0x EBITDA (segment_signals, MEDIUM confidence). On $1.2M EBITDA × 5x = $6M deal × 6% fee × 25% close = $90K EV per BOV → $180-360K EV from one LA run. Confidence: MEDIUM.

Five CIM drafts (Capstone / Loan Mart / Puddle Pools / PixelFlex / Elite Multimedia) β€” 5 deals can go to buyers this week vs. next month. Each CIM previously ~6-10 analyst-hours; 5 Γ— 8h = 40 hours compressed to ~6h of your review. Decay math: sell-side close probability drops ~3-5%/month a deal sits unmarketed. 5 CIMs shipped 30 days earlier Γ— ~4% Γ— ~$240K avg success fee = ~$48K EV lift just from speed. Confidence: HIGH on time saved, MEDIUM on decay math.

Phoenix Lunch & Learn page β€” single URL replaces "5 PDFs attached." Landing-page-link open rates 28-34% vs. attachment 18-22% (Mailchimp B2B median 2024). On 300 owners, ~30 incremental opens, ~0.6 incremental RSVPs. Real value is reputational β€” table-stakes professionalism. Confidence: LOW on attendees, HIGH that it's required.

Salesfinity webhook envelope fix (issue #87) β€” dialer outcomes actually land in Supabase tied to the right contact. Without it, ~5% drop Γ— 200 calls/day Γ— $0.50 per redundant dial = $25/day waste. Real downside: one missed callback that was actually a hot seller = $50-300K fee loss. Confidence: HIGH that fix is required, LOW on leak magnitude.

Two-machine sync-audit script β€” detects drift between your two Macs before it causes repeated work. Pre-script: 30-90 min lost per incident Γ— 2-3 incidents/week = 2-4 hours/week recovered. At $300/hr loaded effective rate: $30-60K/year of reclaimed capacity. Confidence: MEDIUM.

Transcript polish + correction pilot β€” Fireflies transcripts scrubbed before feeding the extractor which feeds CIMs and deal memos. Raw Fireflies ~92-94% word accuracy on M&A jargon β†’ polished ~98%+. 4-6pt accuracy lift upstream of every client deliverable. Confidence: LOW on the lift number, HIGH that it's upstream of everything.

Writer safety + em-dash removal sweep β€” client-facing collateral stops broadcasting "AI wrote this." No revenue line, but every em-dash in a CIM is a credibility signal to a sophisticated buyer. Table-stakes hygiene. Confidence: HIGH that it matters, no defensible number.

Aggregate two-week EV: ~$250-500K of pipeline value created or unlocked, dominated by the pool pipeline and the CIM batch. Infrastructure work is the foundation that keeps the EV from leaking back out.

What it does for our business
  • This is the only section that translates the code into dollars.
  • We don't claim exact numbers β€” we give ranges with confidence levels so you know how much to trust each one.
  • Biggest line: the LA pool-service pipeline is worth $180K–$360K in expected fees if the math holds (MEDIUM confidence).
  • Second biggest: shipping 5 CIMs in 2 weeks instead of 2 months saves ~$48K in lost-momentum value (deals decay 3–5%/month they sit unmarketed).
  • The Salesfinity webhook fix could prevent a $50K–$300K fee loss from one missed callback.
  • Aggregate window: $250K–$500K in pipeline value created or unlocked in 2 weeks.
  • Translation: every major build has dollar arithmetic behind it. Assumptions are stated so we can argue with them.

3. In-Flight (Started, Not Finalized) β€” and the Risk

Biggest risk in this audit: feat/pool-pipeline-la-first-run has zero commits ahead of main. Every item below is sitting as uncommitted modifications or untracked files. A Mac crash or wrong git checkout loses all of it. First action item: commit the working tree.

  1. Salesfinity webhook envelope fix β€” Coded, unstaged. Handler reads body.id but Salesfinity wraps in {event, payload:{_id...}}. Returning 400 on every call since go-live. SALESFINITY_WEBHOOK_SECRET missing from Doppler dev. Needs deploy + manual backfill via sync-calls.ts --days 1.
  2. Pool pipeline LA expansion β€” discover_pool_socal.py modified to add "la" geo preset. Branch namesake but no commits. Awaiting first-run validation.
  3. Discovery-call gap seeding via ExaSkill β€” New step 9 in ExaSkill.enrich() seeds discovery_call_gaps from conversation_only_fields. New files (writer_safety.py, extra_fields_format.py, live test) all untracked. Bare except Exception needs scoping before merge.
  4. Transcript canonical home (Mission, large) β€” Replace Fireflies/Salesfinity ASR with local Whisper + 3-layer glossary. Includes /calls/[id] audit page where anyone corrects words and corrections train next run's initial_prompt. Schema applied, 64 calls mirrored, audit page works with ?mock=true. Blockers: 3 manifest rows missing from call_log, 1 oversized audio file (62-min Lawrence Casey) hit Supabase 50MB cap, UVD pilot review pending. Nothing committed.
  5. Design Precast Engagement Engine (Mission 031) β€” Architecture frozen 2026-05-21 awaiting /swarm-build kickoff. Routes scaffolded, schema written, not wired. /acquisition-thesis route 404s.
  6. Solar PWA hunt + entity type migration β€” Migration untracked; swarm output not folded into pipeline.
  7. Roofing co full-loop test harness β€” Untracked one-shot, not CI-wired.
  8. Intern Vercel onboarding scripts β€” add-vercel-member.sh, onboard-vercel.sh, charlie/bear-cleanup-stale-repo.sh, finish-fireflies-fix.sh, /admin/intern-setup page. All untracked.
  9. 5 maxswarm runs without notebooks committed β€” Runs 021 (UI/UX audit), 022 (deal page consolidation), 024 (solar PWA hunt), 025 (email follow-ups), swarm-build 008 (exa-config audit). Memory rule says "journals + notebooks mandatory every swarm" β€” currently in violation.
  10. add_extra_people_column migration β€” Written today, untracked.
  11. Exa config audit findings β€” Audit produced, not yet actioned.
  12. Seller-precast independent enrichment recipe β€” Drafted, no caller references it.

Open fixlater issues (4): #112 sync-audit reconciliation, #103 drive_mirror date corruption, #90 Exa enrichment on active dial list, #89 auto-publish shifts current branch mid-commit.

Orphan stubs (6 β€” close-without-removing-stub bug): #085 transcript dedup, #087 audio-corpus has no backup (blocks Mission #4), #089 auto-publish branch shift, #090 Exa enrichment pass, #091 wire apply-do-not-mention, #092 review transcript-correction UVD pilot (gates transcript build going live).

What it does for our business
  • This is the scariest section. Read it twice.
  • The branch named feat/pool-pipeline-la-first-run has zero commits. Everything described above in 1A-1E is sitting in working memory on Ewing's Mac. One wrong button press and it's gone.
  • 12 categories of work are uncommitted. 5 swarm runs are missing their notebooks (violation of our own rule).
  • Two key code files (writer_safety.py and extra_fields_format.py) are built and live-tested but never wired into the writer agents β€” they're sitting on the shelf doing nothing.
  • Translation: if Ewing's hard drive dies tomorrow, we lose $100K+ of work. Monday morning's first action: commit and push everything before doing anything else.

4. Planned, Not Started

New missions opened in window, scaffolded or design-frozen but not built:

  • Mission #027 β€” Wrong-Number / Wrong-Contact Re-find (OPEN). On "Bad Number" or "Answered – Wrong Contact" dispositions, mark the (person, company) tuple excluded and run hunter to find a different person at the same title at that company. Closes the ~3-4% wrong-contact leak from Salesfinity.
  • Mission #028 β€” Referral β†’ Clay Person Lookup (OPEN). When a Salesfinity disposition is "Answered – Referral," parse the rep's note for the referred name and push through Clay's person waterfall into a review queue. Today the warmest lead source (~7% of NC calls) decays in free-text notes.
  • Mission #029 β€” "No Longer with Company" Rehydrate (PARKED). Same-title rehire path when a contact actually departed (distinct from #027's bad-number case). Architect needs to pick up.
  • Mission #030 β€” Email Editor Phases 6 + 7 (DECISION REQUIRED). Architect brief proposes a ~30-line voice-anchor in email-draft.ts so the cold-call template voice propagates into the post-meeting LLM followup. Phase 6 shipped (commit d0f53b5); Phase 7 voice-anchor decision still outstanding.
  • Mission #031 β€” Design Precast Engagement Engine (architecture-frozen 2026-05-21, ready for /swarm-build). Highest-leverage near-term build for the buy-side roll-up β€” see In-Flight #5.
  • Mission #032 β€” Drive payoff dashboard
  • Mission #033 β€” Ship-vs-build model (decision support for what gets built next)
  • Transcript Canonical Home + Morning Review (draft 2026-05-11). Blocked on your verdict on 109 quarantined calls in inventory/audio-corpus/v1/quarantine.csv.
  • Mission #010 β€” closed via maxswarm #028
  • FIN-11 β€” closed

Backlog gap worth flagging: writer_safety.py and extra_fields_format.py are written and live-tested but not yet called from writer/draper prompt builders (fixlater #91). Until that wiring lands, the do-not-mention filter and discovery-gap seeding don't actually protect client deliverables β€” they're sitting on the shelf.

What it does for our business
  • Missions are formal proposals that have been scoped but not built. They're real plans, not wish-list items.
  • The 3 with money behind them: #027 (re-find a person when we hit a bad phone number), #028 (auto-research a referral the moment a rep mentions one), and #031 (the daily-use operator screen for the Design Precast buy-side roll-up).
  • Highest near-term build: Mission #031 β€” architecture is frozen, schema is written, routes are scaffolded. Just needs the swarm to execute.
  • Translation: we have scoped EV waiting on the shelf. Pick the top 2 and execute; don't start a 4th until the first two ship.

5. Major Non-Feature Enhancements (Infrastructure / Hygiene)

These don't show up as a user-facing button but compound the platform:

  • Two-machine sync-audit script (commit 29ec5c1) β€” closes the GitHub-Vercel rot you flagged 2 weeks ago. Detects drift between Ewing's two Macs and refuses to let them diverge silently. Three new LaunchAgents committed for SPOF removal.
  • Em-dash scrubbing β€” repo-wide sweep across migrated HTML [37af9eb]; dash-check CI scoped to client-facing surfaces [4d6ecd6]. AI-tell em-dashes no longer leak into CIMs.
  • Exa consolidation β€” 22 Exa-touching scripts β†’ single middleware with budget enforcement. Eliminates the silent overspend risk and gives one place to tune.
  • Hermes cron migration β€” 3 LaunchAgents + 2 Claude tasks; hourly classify-calls, 3x daily SDR refresh, 5am worktree cleanup.
  • Doppler/Vercel intern onboarding pack β€” add-vercel-member.sh, onboard-vercel.sh, grant-doppler-access.sh. Charlie and Bear can be brought online without Ewing handing them keys.
  • M0 company_key foundation β€” applied to prod; canonical company identity across all tables.
  • transcript_extractions dedup constraint β€” fixes the silent double-extraction.
  • Fireflies webhook signature fix + route self-ref fix.
  • Writer safety / output hygiene β€” writer_safety.py filter on every Exa-touching surface.
  • Journal v2.1 three-artifact split β€” 95 past journals migrated to the new format; audit-quality now gates on it.
  • Feature registry + build preflight β€” every feature has a registered def with tier-based permissions; canUse() checked before any actor action.
  • fixlater capture system β€” GH-issue + on-disk mirror; replaces the ephemeral TodoWrite for cross-session task tracking.
What it does for our business
  • "Infrastructure" sounds boring but it's the foundation everything else sits on. When it's solid, builds get faster. When it's not, every new feature is a fresh battle.
  • Two-machine sync-audit: catches when Ewing's two Macs drift apart silently. Was costing 2–4 hours/week in re-doing work that was already done elsewhere.
  • Em-dash scrubbing: removes the AI-tell em-dash from every client-facing document. Sophisticated buyers spot AI by the punctuation; this stops the broadcast.
  • Hermes cron migration: 3 background jobs (call classification, SDR refresh, worktree cleanup) now run themselves on schedule β€” no Ewing intervention.
  • Intern onboarding scripts: Charlie and Bear can be set up on a new Mac without Ewing handing them any API keys.
  • Translation: less drift, less waste, faster onboarding, more reliable. The boring work compounds every single week.

6. Recommended Build for Next Week

In rank order, with rationale:

  1. Commit the working tree on feat/pool-pipeline-la-first-run. This is not a build β€” it's a save. ~12 untracked categories of work are one wrong git checkout from disappearing. Do this Monday morning before anything else.
  2. Ship the Salesfinity webhook envelope fix (#87) + backfill missed calls. Every dialer outcome since go-live is at risk. One-day job, immediate accuracy lift on call_log, unblocks the call-coaching loop.
  3. Run the pool pipeline LA first run end-to-end. Branch exists for a reason. Highest near-term EV ($180-360K) in the queue. Validate the geo preset, push to Salesfinity, measure connect rate, calibrate the math in Section 2.
  4. Close the 5 uncommitted maxswarm notebooks (021, 022, 024, 025, swarm-build 008). Memory rule violation, but also: those runs have unactioned findings (UI/UX audit, deal page consolidation, email follow-ups) that are decay-sensitive.
  5. Kick off Mission #031 (Design Precast Engagement Engine) via /swarm-build. Architecture is frozen, schema is written, routes are scaffolded. The 76-dossier Γ— 49-target operating surface is the highest-value daily-use tool we don't yet have.
  6. Apply the Exa-config-audit findings. Audit produced 2026-05-17, sitting unactioned. Whatever it flagged is real drift in the middleware we just consolidated.
  7. Finalize the transcript canonical home (Mission #4 in-flight). UVD pilot review (#092) is the unblocker. Once live, every CIM and deal memo gets the 4-6pt accuracy lift upstream.
  8. Stand up cost_ledger infrastructure (open issue #102). Swarm-build Gate 5 cannot enforce budgets without it. Currently every multi-agent run is unbounded.
  9. Fix drive_mirror date corruption (#103). Every crawled file is getting the wrong modified_time. Quietly corrupting any downstream "recency" logic.

What I'd NOT do next week: new deal manager skills, new public landing pages, new swarm runs. The platform has more in-flight than is healthy. Finishing > starting.

What it does for our business
  • Don't start anything new. Finish what's already in flight.
  • Priority 1 (5 minutes): commit the working tree. Prevents losing $100K+ of work.
  • Priority 2 (1 day): ship the Salesfinity webhook fix. Every dialer call since go-live is at risk of not landing in our database.
  • Priority 3 (1–2 days): run the LA pool pipeline end-to-end. Highest near-term dollar value ($180K–$360K).
  • Priority 4 (1 day): close the 5 missing swarm notebooks. Rule violation + the findings inside them decay fast.
  • Priority 5 (week-long swarm-build): kick off Mission #031 (Design Precast daily-use operator screen).
  • Translation: the discipline this week is "no new bets." We've already placed 12 β€” we just haven't finished collecting on any of them.

Appendix β€” Clickable URLs (for Mark to actually see the work)

Phoenix Lunch & Learn (newest)

LLPhoenix PDF carousel

URL notes: All assume os.chapter.guide is the live host for the Next.js app (per project_domain_split.md). Marketing root chapter.guide is a separate Cloudflare SPA and not included. File presence confirmed on disk for every link. If any 404, check whether the deployment is behind preview-only protection.

Generated by Claude Code Β· os.chapter.guide/techjournal