The control surface for the agent fleet. Separate repo, separate deploy, no connection to the consumer app. Built Aug 13, 2026.
claude setup-token. Blocks the fixer, nothing else.| P0 autonomy | Auto-rollback first. Revert to last known-good in ~90s, then a PR for the real fix. Zero unreviewed code ships. |
| Build order | Spine β console β Slack β one agent. Protected. |
| Platform | Claude on Max. No Hermes, no second orchestrator. |
| Grocery number | under $600/month as the promise Β· under $100/week stays as the proof |
| Beta terms | One month free, told to their face, then paid. No card on file, no auto-charge. |
| Dashboard | Own repo, own Pages project, own subdomain. Survives the native-mobile migration. |
claude setup-token β repo secret CLAUDE_CODE_OAUTH_TOKEN β install github.com/apps/claude on Cartwise only.| Work | Blocked by |
|---|---|
| CLAUDE.md in both repos β scope + never-touch, so any session knows which world it's in | nothing |
| Supabase schema β messages / threads / runs / feedback / errors, single-writer lock, RLS | nothing |
| POST /messages β one append API, idempotency, transactional outbox | nothing |
| Slack event handler β signature verification against the saved secrets | nothing |
| Knowledge base β compiled from index.src.html + the five real questions | nothing |
| triage agent β prompt, schema, eval set, escalation rules | nothing |
| 5 smoke tests β incl. item-survives-reload, which guards the save path directly | nothing |
| Slack Event Subscriptions URL | the edge function existing |
| fixer agent β GitHub Action, guardrails, severity routing | tomorrow's #1 |
| Fri | Spine live Β· Slack wired both ways Β· Sentry + uptime Β· CLAUDE.md in both repos |
| SatβSun | triage running on real feedback Β· daily brief posting to Slack Β· KB drafted |
| Mon | concierge in staging β you review 20 real answers before it touches a user |
| Tue | Spine + console + Slack + triage live. fixer opening its first PR. |
Every reply: mirror β explain β act β timeline. Warm, informal, short. Three or four sentences. Names Oleg, never "our support team."
Got it β you added items at the store and they're not showing up at home.
That's an offline save. The app kept them on your phone and hasn't pushed them up yet β nothing's lost.
Open CartWise on wifi and they'll sync in about 5 seconds. Still missing after that? Tell me and I'll get you on a call with Oleg.
Got it β scanner opens but won't read anything on your iPhone.
That's a real bug, not you. I've logged it with your app version and sent it to Oleg.
He's on it, and I'll message you right here when it's fixed. Meanwhile you can add items by name from the search box.
Got it β you want the list split by store so you're not backtracking.
That's a good one and it's on the list now. I can't tell you if or when it'll get built β Oleg decides that off what everyone's asking for.
If it's blocking you, tell me how and I'll flag it higher.
blobHasContent / hadDataRef. Never edit index.html directly. Never merge its own PR.| π΄ Red flags β any hour | Site down Β· data loss Β· auth broken Β· a user reporting a charge Β· error spike Β· security |
| π‘ Everything else | Held for the 7am brief. Bugs, requests, questions, PRs waiting, cost changes |
| Signal | Pass |
|---|---|
| β Week-3 plan built unprompted | The headline. Everything else is a floor. |
| Zero data-loss events | Guard never trips; no household loses items unexplained |
| Sync integrity | No silent offline-save orphans |
| Zero P0s | Site never down, auth never broken |
| Full weekly cycle | plan β list β shop β pantry update, at least once |
| Repo | Holds | Deploys to |
|---|---|---|
Cartwise | The consumer app. index.src.html β build.mjs β index.html + sw.js | cartshop.net |
cartwise-ops private | This console, agent prompts, SOPs, edge functions | ops.cartshop.net |
ops/ folder: the app's Pages project builds from the repo root, so cartshop.net/ops/ would have been a live public URL. Separate repos make that impossible rather than something a redirect rule has to remember to prevent. It also means the fixer working on app code can never touch ops, and the native-mobile migration doesn't drag the console along with it..info/.net for if the console ever becomes its own product.CLAUDE.md stating its scope and its never-touch list. Any session that opens either repo reads it first and knows which world it's in. That's the "logic to make sure we're working in the right place" β it's a file, not a domain.POST /messages. Neither writes to the database directly, neither keeps its own history.| Now | Gated | Opens at |
|---|---|---|
| π Product & Engineering | π£ Growth & Content | β₯300 WAU or first ad dollar |
| π¬ Customer | π° Finance | first revenue or $100 ad spend |
| π Ops & Intelligence | π Trust & Compliance | payments live, >5k users, or PII past email |
| π€ Partnerships & Data | Walmart approval or 2nd retailer | |
| π₯ People & Delegation | first hire |
| Item | Comes back |
|---|---|
| π Paywall & monetization Trial mechanics, auto-renew compliance, price, payment method. Research done and saved. | Before the beta ends |
| Onboarding tutorial First week with the assistant β one week manual β import a recipe. Highest-leverage thing for the week-3 metric. | Before the families land |
| Google Calendar connector β events land in iOS Calendar | 10 min, anytime |
| Business social accounts (IG Β· TikTok Β· YT Β· FB) | Next week β Oleg |
| 2β3 weeks of content generated, ready to paste | Next week β Oleg |
| Partner email β Resend on a subdomain | Before launch |
| Realtime voice β OpenAI Platform, separate billing from ChatGPT Business | Phase 3 |
index.src.html, Oleg strikes what's wrong.