FIG.00 — LOCAL-FIRST AI SYSTEM · BUILT SOLO, WITH AI

I don't just use AI. I architect and ship it.

A revenue-strategy operator who built and runs a production, multi-agent AI system — solo, end-to-end. GTM engineering before it had a job title.

// the same instinct that runs a revenue org — applied to building one

0
Lines of codepython · edge JS · 11 app pages
0
Runtimesdaemons · Cloudflare · PWA
0
AI personasdistinct voices · one engine
0+
Git commits836 app · 5,238 vault · months live
explore the system
FIG.01 — The operator behind it

I turn ambiguity into operating systems.

Four chapters — a startup built from zero, consulting rigor, a real P&L, and big-tech altitude. The system on this page is what that operator builds when the product is his own career.

College era
X Academyco-founder · GTM owner
Built an operating machine from nothing — 0 → 500+ students/yr and a 50–80-person seasonal operation.
Trained: 0→1 building
2020 – 2023
C
A global strategy consultancyAssociate Consultant
Growth strategy, survey-led pricing across 20+ products, and cost programs for $1B+ enterprise clients — rated top 20% in North America.
Trained: structured problem-solving
2025 · stint
MoonBrewoperator · channel GM (DTC)
Ran a DTC channel P&L end-to-end — paid growth, retention, unit economics — and scaled the channel 10×.
Trained: P&L & paid growth
2024 → now
T
A global tech platformstrategy & ops · NYC
Marketplace campaign strategy, then HQ monetization strategy & ops on a multi-billion-dollar ads line — the weekly revenue read, org-scale planning, AI-GTM systems.
Trained: big-tech altitude

One through-line: I'm the person who shows up with the framework, the receipts, and the system that keeps working after the meeting ends.

FIG.02 — Three-layer architecture

One person built a reliable, three-layer distributed AI system.

A phone front-end, a transient cloud relay, and an always-on engine on the desktop — wired so that disposable AI chat becomes a permanent, queryable record. And the loop is now open to the world: job-market APIs flow in nightly, and any agent can query the brain back out over MCP. The load-bearing claim, drawn rather than described.

YOUR POCKET CLOUD · TRANSIENT (~14 DAYS) WINDOWS / WSL2 · CANONICAL PHONE · PWA index.html — 7 tabs CLOUD Durable Object + KV DAEMONS Opus coach · sweeper · 12 agents per-call telemetry · eval-gated WS + 8s poll poll VAULT — PERMANENT 182 .md files · git · queryable route + commit ENCRYPTED HUB gcrypt → GitHub + R2 enc. THE OUTSIDE WORLD — IN / OUT JOB-MARKET APIs greenhouse · lever · ashby pivot agent pulls · nightly ANY MCP CLIENT other agents query the brain MCP · read-only
→ a live packet traces capture → cloud → engine → permanent vault — a system that now also reads the job market and answers other agents
Layer 1 — Frontend

The phone PWA

  • Eleven HTML pages, ~6,900 lines — chat app, Job OS, vault reader, command center, focus, kitchen, lift & more. No framework, no build step
  • 7 chat tabs + Body panel, tasks tray, Memory Forge
  • Live replies over WebSocket; 8s poll as a backstop

Why: capture has to be frictionless from a pocket, or it never happens.

Layer 2 — Cloud

A transient mailbox

  • ChatRoom Durable Object (SQLite, instant WebSocket push)
  • Pages Functions (token auth) + KV for prompts/tasks/lease
  • Owns nothing permanent — a ~14-day rolling window

Why: the cloud is a relay, not the brain. Nothing important lives there.

Layer 3 — Daemons

The always-on engine

  • live_coach.py — Opus responder, read-only vault tools
  • companion_sync.py — 15-min sweeper routes → vault → git
  • 12 autonomous scheduled agents under systemd

Why: intelligence and durable data both stay on the machine.

Chats are disposable. The files are the memory.
The problem

One giant AI chat thread degrades — it slows down, loses track of dates, and forgets what mattered three weeks ago. Memory trapped inside a conversation is fragile and unsearchable.

The approach

Every conversation is throwaway. Anything worth keeping is swept to timestamped markdown within 15 minutes. The chat is just the interface; the version-controlled vault is the permanent, queryable brain.

FIG.03 — Hands-on

Click around — a sanitized mirror of the live system.

A demo-safe replica of the companion app, inside this page. Every tab is a real surface of the running system; the data here is synthetic and the personas are generic — the real one runs on my life, and stays private.

Demo modeSynthetic data · generic personas — the real one runs on my life, and stays private.
Today
💬Coach
🎯Job OS
🎙Drill
Focus
🤝Network
🍳Kitchen
🏋️Lift
📬Reply Desk
🗂Vault
System
Monday · 7:05 AM
The Steady: "Morning. Two blocks today — deep work 9–11, gym 6:30. Yesterday you logged 7.5h sleep and a clean training day. Protect the 9 o'clock."
Capture streak 12 days
Open tasks 3
Captures this week 41
Ship the Q-review one-pagerdue todayfocus block
Call back the recruiter15 minqueued
Log yesterday's win to the evidence bank2 minqueued
Click a task to check it off. All of this is assembled overnight from what I actually logged — no manual upkeep.
"I blew the evening doomscrolling and skipped the gym."
"Leadership took my numbers for the quarterly read."
STThe Steady
PLThe Playful
FRThe Fierce
PRThe Precise
The Steady
"Okay. One evening, logged and done — it's data, not a verdict. What's the smallest win we can still bank tonight: ten minutes of mobility, or laying out tomorrow's gym kit?"
Pick a prompt, then a voice — same event, four coaching styles. The real system runs seven persistent characters, each with its own memory, distilled nightly.
Pipeline
Acme AI — Strategy & Ops LeadJD fit 4.2/5interview loop
Scorecard: AI-systems story ✓ strong · P&L ownership · SQL depth ▲ gap → drill queued. Tailored resume + prep pack generated from the frozen JD.
Northwind — RevOps ManagerJD fit 3.8/5applied
Strong ops match, weaker AI mandate — scored against my skill matrix on intake. Follow-up nudge scheduled Thursday.
Foundry Labs — GTM Systemsauto-sourcedresearching
Pulled in by the nightly JD feed (score ≥4 auto-intake, full posting frozen). Queued for the Monday scan.
Click a row. Every JD is frozen, scored, and turned into prep; recruiter inbound auto-files from Gmail.
Companies shown are synthetic; the scoring pipeline is real.
Deliberate practice · Interview reps
"Walk me through turning an undefined mandate into a system."
SHanded "figure out lead quality" — no definition, no owner, global scope.
TMake new-business acquisition measurable before the next planning cycle.
AAuthored a 7-stage end-to-end lead-lifecycle framework — every stage with P0–P2 pain points and a named owner.
RIt became the operating model regional GMs confirm against.
Coach note: strong shape — next rep, lead with the R and let them pull you back into the A.
Reveal my rep ▸
Next question ↻
Rep 1 / 3
The nightly agent mines my work journal into an Interview-Bank of STAR reps — practice is scheduled and graded, not vibes.
This week · scored against my goals
Deep work ✓ 92
Career reps ✓ 85
Training ✗ 3/4
Screen creep ▲ +40 min
Week score 78 — computed from planned time-blocks vs. what the activity tracker actually saw, then read against my stated goals. Not vibes.
The review writes itself Sunday night; I argue with it, not with my memory.
Warm network
J. Rivera — b-school '24, PMcoffee owedtouch Fri
M. Chen — RevOps leadintro promisedthis week
Relationships get next-touch dates like tasks do. The nightly agent surfaces who's going cold before they're cold.
Names are synthetic; the cadence engine is live.
Pantry → dinner
chicken thighs
rice
frozen broccoli
teriyaki
Tonight: one-pan teriyaki bowl — ~640 kcal · 52g protein. Cooked meals auto-file as fuel receipts against the day's target.
Click an ingredient out of the pantry and the suggestion adapts — recipes are gated by what's actually there.
Last session · Push day
Bench 3×8 @ 185
OHP 3×10 @ 95
PR watch +5 lb
Suggestions are equipment-gated — it only programs what my gym actually has. Sessions land in the body log as training receipts.
The PR board updates itself; I just lift.
Inbox triage
Recruiter — "open to Strategy & Ops roles?"career signaldrafted
Draft: "Thanks for reaching out — I'm selectively exploring. Sharpest fit: strategy & ops roles where AI-systems building matters. Open to a short call this week?"
DRAFT ONLY — the system never sends on my behalf. I stay the human in the loop.
Triage + drafting run on schedule; judgment stays mine.
The permanent record
"log: sharp insight on the commute"→ Life-Log.md · 📥 Inboxa4f1c · 08:41
Leader kudos in the quarterly read→ Kudos.md · dated receipt7b3e9 · 11:15
Drill rep: undefined mandate → system→ Interview-Bank.mdc1d20 · 19:32
Every 15 minutes a sweeper routes captures into the right markdown file and commits it to git — 182 files, 5,200+ commits, mirrored to an encrypted off-machine hub (ciphertext only).
Chats are disposable; these files are the memory.
It runs like infrastructure
Daemons ● active
Scheduled agents 12
Sweep every 15 min
Uptime 24/7
Every LLM call logs latency, size, and failures to the system's own telemetry; a health-check script prints the 7-day rollup and flags doc drift.
Persona changes gate through a golden-set + LLM-as-judge eval before they ship. Backup restore drill: 573 files recovered ✓ from the encrypted hub.
systemd timers · a doctor script · an eval gate — one person, run like a production service.
FIG.04 — Explore the system

The depth, on demand.

Five views into what was built — the data model, the AI persona engineering, the full feature set, the skills it proves, and an honest accounting of where it stops. Pick a tab.

The vault is a database; markdown is the storage format. 182 files under local git — and growing. These four exhibits are the real schema — the contracts between the app, the AI, and the permanent record.

Exhibit A · Capture → file routing The sweeper's switch. A capture's meaning is encoded by which tab it arrives on — the channel is the schema, so free-text dictation lands structured without a single form field.
App channelRoutes intoParse
storyPivot-Engine/Era-Intake.mdraw experience mining
drillInterview-Bank.mdscored STAR reps
bodyBody/Body-Log.mdtag-parsed longitudinal data
checkin / logLife-Log.md → Inboxtimestamped drop
verbatim · both sidesCompanion-Transcripts/<ch>.mdarchive (prune cursor)
Exhibit B · The Capability-Matrix gap engine The standout structure: a skills-supply table joined against live market demand. The Demand column is auto-counted from a bank of frozen job descriptions, so it tells you which gap to close next by market pull, not gut. (Employer-internal evidence abstracted.)
CapabilityStrengthDemandEvidence
Revenue analytics & forecasting✅ proven4/5leadership-facing weekly revenue read
Dashboard / BI & data requirements✅ proven5/5leadership-read dashboards; loss model
Exec communication & synthesis✅ proven5/5org-structure report; revenue read
AI workflow automation / AI-GTM✅ proven2/5this Career OS; AI-SDR strategy
MarTech stack hands-on (CRM admin)🔴 gap3/5designed CRM processes, never the admin
Public / demonstrable AI artifacts🟡 closingrising→ this showcase is the artifact
Exhibit C · North-Stars weekly scoreboard A one-win / one-miss / one-next operating cadence — the same review rhythm a revenue org runs, applied to personal goals. (Personal rows withheld; structure shown.)
StarWinMissNext
Work credibility8-workstream operating model mapped; weekly report shippedrole scope unconfirmedconfirm R&R
Career optionalitycross-functional visibility; leadership recognitionno explicit optionality actionkeep AI-practitioner brand
Deliberate actionadmin cleared; intentional resthold the cadence
+ personal stars (health, resilience, social) tracked on the same schema — withheld here.
Exhibit D · Command-Center — query layer The vault is queried, not just stored. Any - [ ] task tagged #todo / #followup / #risk anywhere in 182 files auto-rolls-up into one dashboard via Obsidian Dataview.
## ▶︎ All open to-dos (mine to drive)
TASK
WHERE !completed AND contains(tags, "#todo")
SORT due ASC

## ⚠️ Open risks (watch these)
TASK
WHERE !completed AND contains(tags, "#risk")
SORT due ASC