SELF OS · 60 Days Get Shit Done Challenge · Operating Doc v1

Day 0 · Saturday July 25 · 60 days to September 23

Approval doc · tonight · 15 cards · start with S0 · tap ▶ on any card — the player reads it to you (up to 2.4×) · S1b + the prompt sub-cards are reference material, no audio

S0🎧 Start hereThe Opening Brieften minutes · the truth about the rest of this document 12:40
Listen to this first12:40 · plays at up to 2.4×You are approving a design, not a running machine

Matt. Before you read a single card, give me ten minutes. This is the opening brief, and it's the one piece of the document that tells you the truth about the rest of it.

Four things: what we're doing here, what I found while building it, how you'll actually live with it day to day, and — the part most people skip and shouldn't — how to review this document tonight.

Part 1 · The mission, in one breath

You are running the 60 Days Get Shit Done Challenge. Day zero is tonight, Saturday July 25. Day one is tomorrow. Day sixty is September 23, and the reward is already named: you fly to your next digital nomad location, and the first week there is fully off.

The business mission it serves is one number: six sales calls booked per week, feeding sixty websites sold. Everything in here is judged against that number.

Underneath it sit four daily rituals, no exceptions — weekends included, holidays included. Ritual one: the plan. Ritual two: the morning audio. Ritual three: at least fifteen minutes of exercise. Ritual four: the evening planning ritual. You pen all four onto a Google Sheet by hand, every night, while the coach prompts you and you narrate it out loud so it lands in the transcript.

The shape of the day

  • 5:00 — wake, cold shower first: 60–90 seconds, no audio, phone outside the room. Then dry and sitting down, the morning audio.
  • 5:30–8:30 — the sacred block. Planned the night before, handwritten tick-off list, no renegotiation. That block is the spine of the whole thing.
  • 17:00 — hard stop: you invoke the planning skill, it sends a ten-minute NSDR while the pipeline assembles your context. Then gym. Then the evening planning call.
  • ~20:00–21:00 — an hour of real relaxation, and bed around nine.

The honest part — before the rest of the document gets you excited

What actually got built tonight: this document, twelve audio cards, the voice agent you're hearing me through, the delivery plumbing on Modal, the NSDR audio, the sheet scaffolder, the mentor voices, and a detailed set of runbooks describing the system.

What is genuinely armed for five o'clock tomorrow is thinner: the morning audio is being hand-fired for day one, and the escalation ladder still runs on the old schedule.

There's a card in here called GAPS. It lists eleven things marked NOT BUILT YET, by name. Read it. You are approving a design tonight, not a running machine — and the document says so on its own face.

Part 2 · What I found while building this

You gave a standing order: before anything is called done, spin up an adversarial critique gate. Three Opus agents, high effort, in parallel. Critic A on instruction fidelity. Critic B on behavioral survivability. And a third whose only job was to represent you, grounded in thirty-two live queries against your own journals, speaking in your first person.

They came back harder than I expected. I'm going to quote them, because softening them would defeat the point.

Critic B — "This is a beautifully engineered relapse machine."

His reasoning: every documented failure mode you have — bar too high, zero-exception commitments, black-and-white collapse after one slip, over-planning as avoidance, sleep as the weakest link, the ten-minute relapse window — is either unaddressed or actively amplified. His prediction: day one runs on adrenaline, day two on four hours' sleep, the streak breaks between day three and day nine, and by day twelve the ladder is muted and the morning audio unopened.

Your representative — "You built for a man who has already won the fight this system exists to fight."

He pulled the receipts from your own database. Two weeks ago you went to bed at four in the morning because the work was too interesting. Roughly five hours of sleep for a week. Wakes at 9:20 and 8:00. And thirteen hours before this document was written, in your own voice: "I know I have a tendency to overcomplicate things, overanalyze, and plan."

His verdict: a spectacular week one, and a collapse between day nine and day sixteen — caused by the system's rigidity, not your weakness. His diagnosis of the ignition source is the sentence I keep coming back to: a maximal system, declared non-negotiable, on day zero, at midnight, in a good mood.

And Critic A, on the engineering: the document is genuinely good, and "the system under it is spec." His one-line test before anyone says done — at 5:00, at 17:00 and at 18:00 tomorrow, what process, on what machine, from what branch, fires? Tonight's honest answer was: nothing, nothing, and the old ladder.

That's why this brief exists. You're not being handed a finished machine with a bow on it.

What I did with all that — 25 fixes, tonight

Everything fixable without contradicting an order you actually gave, I fixed tonight. Twenty-five items.

  • The build got merged and pushed so the skill resolves from your real checkout.
  • The sheet scaffolder got fixed and the calls-booked column added.
  • The morning ritual got reordered — a ten-minute silence block cannot happen in a cold shower.
  • A miss protocol: the day counter is elapsed days and never resets, and the coach's first line after any miss is a comeback line, never shame.
  • A pass bar: fifty of sixty days at or above the floor and the challenge is won.
  • Interim rewards attached to people, not things: day 7 you call Kocsy, day 21 the money goes aside for Kati's guitar, day 40 is yours to name.
  • Sleep, wake time and substances became tracked columns; a "block held" column joined the plan column.
  • A paper wall chart for the sixty boxes now sits beside the sheet — you asked for it in front of you, physically.
  • And one thing nothing else here was doing: a pinned "I'm about to" button — ninety seconds of reframe audio and a ten-minute timer, aimed at the only window that matters. The ten minutes where, in your own words, "it seems like a really good idea."

The fourteen decisions I did not make for you

Each one would soften or reverse something you explicitly ordered tonight — so they're yours. Not mine, and not the critics'.

  • Whether "no exceptions" stays a chain of four, or the evening ritual becomes the one unbreakable keystone.
  • Whether the ladder hunts you relentlessly, or simply expects you — capped, with one amnesty word.
  • Whether a bad day has a floor that still scores a tick.
  • Whether 5:00 starts tomorrow cold, or gets earned over eight days.
  • Whether Dani and Kocsy get keys to this.
  • Whether the sacred block gets a two-minute witness at 8:30.
  • Whether the scoreboard rewards planning or execution.
  • Whether ninety minutes a day of overhead is the price of transformation, or the thing that kills it by week two.
  • Whether every evening goes deep.
  • Whether harshness is scheduled, or priced by the day's evidence.
  • Whether the trip landing around day five gets a pre-designed mode.
  • Whether day one waits for clean rehearsals.
  • And whether the mentor voice budget gets bought now, or discovered at day thirty.

Part 3 · How you'll actually live with this

5:00, the alarm. Cold shower. Then you sit down dry and the morning audio plays — affirmations, a visualization built overnight from your own goals and transcripts, silence, and two mentor cameos in their own voices. Then the block, off the list you handwrote last night.

17:00, hard stop, you invoke the skill. NSDR arrives immediately while the pipeline reads today's coding sessions, your call transcripts, the habit sheet, the goals, and Dani's Notion tasks. Four mentors and a Matt agent each write a handoff, an assembler picks the sharpest, and you get a short briefing before the call with the truths you need to hear.

Then the call: loops closed, praise with evidence behind it, the calls-booked number said out loud against six for the week, tomorrow time-blocked, the first-block list handwritten, the sheet penned. Then relaxation nobody audits, and bed.

Automatic: the audio generation, the context assembly, the mentor voices, the calls and check-ins, the escalation.

Yours, deliberately: you write the sheet by hand. You click the calendar. You handwrite the first-block list. Your representative defended those three as untouchable, and his reason is your own line — written and staked commitments hold, unwritten ones feel optional.

Two tools sit outside the schedule: the ladder, for the night you don't invoke the ritual, and the "I'm about to" button, for the ten-minute window.

Part 4 · How to review this document tonight

1Listen. Every card has its own audio in the player at the bottom. Play them in order and speed them up — the player goes to 2.4×.
2Talk to me. The mic in the player bar is a live voice agent, and I have every card, every audio transcript, and all three critique reports in my context. Challenge any design choice in here. If you think a critic was wrong, argue with me about it — I'd rather have that fight now than on day nine.
3When you're ready, say "ask me the questions." I'll walk you through the fourteen decisions one at a time, each framed around the real tension it carries, and capture your answer and your reason.
4Anything that needs writing down, drop as an inline comment — tap a paragraph on any card — or paste the letter block from the questions into the chat with Claude.

Four things to pay real attention to on the way through

  • The GAPS card. The honest list of what isn't built. Your representative's instruction was: do not tidy it.
  • The CONFIRM tags in the goals. Numbers in there come from three different plans and don't agree — six bookings a day versus six a week. Settle them.
  • The mentor comments. Hormozi's line on the gaps card is the whole night in one sentence: eleven unbuilt pieces is fine, pretending they're built is what kills you.
  • The DO-NOT-TOUCH list your representative defended — twelve things to keep exactly as they are, including the sacred block, free-dump mode, the parking lot, and the honesty of that gaps card.

Last thing

What you asked for at noon today was leverage instead of administrative overhead, and something enjoyable. What got specified at five in the afternoon was a cathedral. Both are in your handwriting.

Your job tonight is to decide which one you're actually going to run. Not the one that flatters your best Saturday. The one that survives your worst Tuesday — because every system you've ever abandoned, you abandoned on a Tuesday.

Start the player. I'm right here when you want to talk.

Hormozi —Ten minutes of truth before four hundred lines of design. Listen to this one at 1.0× — it's the only card where speeding up costs you something.
Talk to this document Ask why any card is designed this way — or say what you want changed and it hands the wording back for you to comment.
S1🎯 The Mission & The Challenge 6:28
Day 0 tonightReward: fly out + week 1 off

You are running the 60 Days Get Shit Done Challenge. Day 0 is tonight, Saturday July 25. Day 1 is tomorrow. Day 60 is September 23 — and the reward is already booked in spirit: you fly to your next digital nomad location, and the first week there is fully off. The coach will say the challenge's name and count the day out loud every single morning and every single evening. No exceptions for weekends. No exceptions for holidays. No exceptions.

The business mission this challenge serves: a system that books 6 sales calls per week, so you sell 5–10 websites per week. The machinery already exists in pieces — cold-email lead gen, sales-call prep, AI-fast site building — and monthly retainers get added for scale. Under it stands the anchor you locked in the war room: 2 million forints per month of profit from roughly 20 hours a week, majority recurring, run from anywhere.

The full goal ladder — every number and date this system is optimizing against:

The metric6 sales calls booked per week. This is the #1 mission. Every block, every agenda item, every mentor gets judged against it.
Output5–10 websites sold per week — what 6 booked calls a week converts into.
Volume goalSell 60 websites (your sharpest formulation, today). CONFIRM is 60 a 12-month target? 60 × ~250k Ft would roughly BE the 2M/mo run-rate with retainers.
Money anchor2,000,000 Ft/month profit from ~20 hours a week — the war-room anchor, still standing.
Recurring≥60% of revenue recurring by July 2027. PPC and monthly retainers are the vehicle.
OfferGHL Grand Slam Offer sold at least 3× by mid-January 2027.
LocationThai(ish) base from ~mid-August 2026. Departure gate: flight booked + DTV visa in hand.
DeliveryDani owns delivery. Your hands stay on sales and system, not on production.
The funnelNotion master plan (May 2026): 150 cold emails/day → 12 replies → 6 bookings → 1 sale/day → 15 websites/month. CONFIRM that plan targets 6 bookings a day; tonight's locked mission is 6 booked calls a week. Which is operative for the 60 days?
Company split2M Ft/month personal · 4.5M Ft/month company (same Notion plan). Summer math: ~15 sites/mo × ~200k profit ≈ 3M HUF, ~50 sales calls/month, ~25 work hours/week.
Income ladderYour own restatement across 3 years: 2023 "stable $10k/mo with the least time invested" → May 2024 "1.5M Ft/month within 6 months" → Feb 2025 "financial freedom = 2M Ft/month from ~20-hour weeks".
3-year planHandwritten: (1) agency to $20–30k/month PROFIT on ~4h of your own work; (2) found an AI startup — an evidence-based CBT personal coach; on the path, become a psychologist & certified CBT coach. This project IS that dream.
Nomad economicsColivings — Lisbon (now), Miami, Bali, Mediterranean cities — max €1,200/mo housing, funded by ~5h of work a day. Lisbon reality check: ~600k HUF/mo in vs ~400k costs.
The 60 daysDay 0 = tonight, Sat July 25. Day 1 = Sun July 26. Day 60 = September 23 → flight out, first week fully off.

The five rows above are mined from your own files (Notion master plan, the handwritten 3-year plan, the income-ladder notes) — full provenance in the next card.

Assets already in place for the business ladder: cold-email lead gen, the sales-call-prep machinery, AI-fast site building. The addition for scale: PPC / monthly retainers.

The personal mission: consistency. Four rituals, every day, tracked by your own hand in a Google Sheet:

  • R1 — Planned day. Every evening, tomorrow is planned before you sleep. Leisure blocks and even do-nothing blocks are allowed — but there IS a plan.
  • R2 — Morning launch. The moment you wake, the morning audio plays and you're in the cold shower. Affirmations spoken out loud, identity visualization, ten minutes of silence, then one sentence that points you at the first step of the day.
  • R3 — 15 minutes of exercise. Minimum. Even stretching plus one 400-meter full-gas sprint counts. Fifteen minutes including the shower.
  • R4 — The planning ritual. After your last work session: loops closed, wins praised, goals reviewed, tomorrow time-blocked, first-block list handwritten — guided by a coach on a call.

Sixty days. Four checkmarks a day. That's the whole game.

Hormozi —A ladder with nine rungs is still one number: six booked calls a week. Everything above it is scoreboard; that rung is the work.
S1b🧠 Who I Am — The Core Contextevery coach agent reads this file first
Mandatory input to every agentReference card — no audio

This is agents/matt-core-context.md, verbatim. It was mined from both Pinecone brains (69 queries, 492 hits) and every bullet carries its source tag. The Planning Coach, all four mentors, the "Matt" agent, the Assembler and both audio generators receive this file in full — its Red Lines section is binding on all of them.

Sarudi Mátyás ("Matyi" / Matt), b. ~1998, Hungarian, psychology MSc, runs a web-design + cold-email lead-gen agency with his brother Dani. Based in Lisbon since May 2026. Every claim below is traceable to a source: [index/namespace] after each bullet. Nothing here is invented; thin dimensions say so. ---

Reference card: no ▶ audio button, and this content is deliberately kept out of the 12 section audios. It is candid by design — read it and tell me what is wrong, outdated, or should never be said back to you.
ContextGoals (with numbers/dates)
  • $10k/month while working ~30h/week, ASAP — the north star restated across three years. "A stable $10k/month from the agency while working only ~30 hours a week." coach-intake/intake_knowledge · cgptvoice-079
  • Income ladder, verbatim: 2023 "stable 10K with the least time invested" → May 2024 "1.5M Ft/month within 6 months" → Feb 2025 "financial freedom = 2M Ft/month from ~20-hour work weeks". coach-intake/intake_knowledge · apple-notes-c2-goals
  • Operating targets (Notion master plan, May 2026): 2M Ft/month personal, 4.5M Ft/month company; 150 cold emails/day → 12 replies → 6 bookings → 1 sale/day → 15 websites/month. coach-intake/intake_knowledge · notion-to-schedule
  • Summer money math (Apr 2026): ~15 websites/month × ~200k profit = ~3M HUF; ~50 sales calls/month; ~25 work hours/week; 300k saved, ~1M to live on. selfi-journal/journal_chunks · 2026-04-09 / coach-intake
  • Digital-nomad life: board a plane, live in The Social Hub-style colivings — Lisbon (current), Miami, Bali, Mediterranean cities — max €1,200/mo housing, funded by ~5h of work a day. Lisbon reality check: ~600k HUF/mo in vs ~400k costs. coach-intake/intake_knowledge · pdf-jelenlegi-helyzetem, transcript-img-6462
  • 3-year handwritten plan: (1) agency to $20–30k/mo PROFIT on ~4h of his own work; (2) found an AI startup = a research/evidence-based CBT personal coach; on the path: become a psychologist & certified CBT coach. This project IS that dream. coach-intake/intake_knowledge · pdf-aos-journal
  • Wealth-leverage ladder: personal brand (5–50k followers, global niche) → productised services → write a book "ASAP" → AI software. coach-intake/intake_knowledge · apple-notes-c3b-goals
  • Body/health: 30-day proper diet ("badly undernourished — because of kratom"); gym/movement daily; sleep 7.5h; 3 meal-replacement shakes prepped nightly. coach-intake/intake_knowledge · apple-notes-c3a-goals, transcript-img-6369
  • Substance goals: kratom zero (2-month clean streak reached mid-2026, relapsed early July); weed → zero; THC edibles at most 1–2×/month "with intention"; 2 sober parties as a challenge. coach-intake/intake_knowledge · cgptvoice-011; selfi-journal/coach_reflections · refl_2026-07-03
  • Skill/courage goals: improv + standup (3-min set), Toastmasters/Speak Academy, speech practice, cold approaches, MENSA, martial arts, 120 WPM typing. coach-intake/intake_knowledge · apple-notes-c2-goals, c1-goals
ContextMy Whys
  • The why-money stack, in my own words: (1) travel the world and "live my life as an adventure video game"; (2) help my mother — "she is under stress and money can alleviate her pain… I see her suffering and it triggers me… I wanna thank her for all she did for me"; (3) help Dani feel high-value — "I hurt him a lot and I want to make up for it"; (4) 5-star family holidays; (5) freedom; (6) "to earn my place among the elite. To see behind the curtains"; (7) business as a game I enjoy winning. coach-intake/intake_knowledge · apple-notes-c1-psychology
  • The 2022 overarching aim: "I grow stronger as an individual, both mentally and financially, so I gain the capacity to support Mom's family and my friends at a higher level of efficacy." coach-intake/intake_knowledge · pdf-yearcompass-2021-22
  • Why the nomad life: sun, nightlife, a young entrepreneurial scene, "Erasmus vibes — socialise, feel young & wild"; eat out twice a day without checking the price. coach-intake/intake_knowledge · pdf-aos-journal
  • Why sustainability, not just revenue: my stated top 2025 goal was "be able to do more 1-month days in a row without burning out." coach-intake/intake_knowledge · pdf-aos-journal
  • Why the AI coach: I wrote down this exact product — a Pinecone DB of my life + a voice AI with infinite context on me, an accountability coach — a year before building it. coach-intake/intake_topics · topic_ai-coach-genesis
ContextDeep Motivators
  • Concrete, sensory, people-attached payoffs — not abstract goals. Telling Kocsy about a big deal; buying Kati a guitar and music camp; a Hawaii holiday. This is the real fuel. coach-intake/intake_topics · topic_real-motivational-levers
  • The endgame ladder (handwritten, half-playful, fully sincere): "1. Get to the USA ASAP! 2. Enough money & influence 3. Joining a cult / secret society 4. Max it out: level up the hierarchy 5. Become a magi (mind hacker, manifester, master of reality) 6. Leave a HUGE positive impact as legacy for the Brotherhood of Earth." Winning = self-mastery + belonging + legacy. coach-intake/intake_knowledge · pdf-aos-journal
  • Two things make me happy: (1) going at high speed — progressing, making more money, developing faster; (2) getting relaxed and a bit careless, the opposite of tense and self-conscious — i.e. flow. coach-intake/intake_knowledge · transcript-img-6369
  • Progress itself is the dopamine: reviewing daily/weekly wins, completing concrete complex tasks, uninterrupted concentration. Also: showing my work to a friend who gets it (Kochi + the pipeline tool). coach-intake/intake_knowledge · notion-power-down-ritual; selfi-journal/coach_reflections · hc_2026-06-15_dopamine_top1
  • Negative motivators I installed on purpose: fear of becoming "a drug addict, 9-5, public ridicule"; "What will Klárika say?"; "Robi and Peti would justifiably keep looking down on me." coach-intake/intake_knowledge · apple-notes-c1-psychology
  • Gamification works on me — framing deprivation as "a damn good challenge" converts it into something I want to win. coach-intake/intake_knowledge · apple-notes-c3a-goals
ContextDesired Identity
  • The written target identity (Hungarian affirmation stack, third person): "Matyi takes 100% responsibility for how he spends his time" — disciplined on workdays, knows when work starts and ends, sticks to the plan even when not in the mood, gets into Flow easily, lets temptation pass by. coach-intake/intake_knowledge · notion-power-down-ritual
  • "Matyi is decisive, a man, a true leader." "Matyi recharges every day and week with consciously scheduled rest." "Matyi is an excellent salesman — a winning personality." coach-intake/intake_knowledge · notion-power-down-ritual
  • WARRIOR frame: "I accept that I MIGHT FEEL AWFUL (bottom 10% days happen every ~10 days). I am able to stick to the fucking plan in either instance." Plus: "I am the master of my reality"; "the suffering is not in the way, it IS the way." coach-intake/intake_knowledge · notion-power-down-ritual, notion-today-start
  • The General vs the Soldier (Charlie Morgan frame he adopted): the General watches from third person and steers the body when the limbic system begs for relief. Also Static self vs Becoming self. coach-intake/intake_knowledge · notion-answer-these-rec Q17; intake_topics · topic_identity-frames
  • Confidence creed: "I'm not here to be understood… I'm here to be me"; "I'm not performing for people who won't remember me or won't be at my funeral." Confidence = a stellar reputation with myself; discipline is self-care for my future self. coach-intake/intake_knowledge · apple-notes-c3a-psychology
  • Cosmic humour as a permanent way of being — the perspective that reliably brings me joy. coach-intake/intake_knowledge · cgptvoice-038
  • Identity exercise I set myself: write and record my professional introduction as my 30-year-old self — the gap between the two versions is the identity delta I'm working. coach-intake/intake_knowledge · notion-to-schedule
ContextFrustrations
  • The master pattern: things go well → I overcommit → I collapse → I lose all motivation → repeat. Written to a psychologist at 22, still live. coach-intake/intake_topics · topic_overcommit-collapse-cycle
  • "I set the bar too high and thereby drastically lower my chance of success." Example: staking 180,000 HUF on no-kratom + minimal weed + all ten habits perfect, every day — piling "and also" onto an unwinnable target. coach-intake/intake_knowledge · transcript-2026-04-11
  • Dispersion: six systems at once instead of one path deep; "I don't want to be a business model hopper again." coach-intake/intake_topics · topic_dispersion-vs-focus; selfi-journal/journal_chunks · 2026-04-30
  • Over-planning: "thousands of pages of notes about myself… I've spent more time planning the perfect daily routines than executing them." coach-intake/intake_knowledge · cgptvoice-087
  • Hours ≠ progress: "when it's hard I check out somehow, awareness slips, and I only notice afterward that several hours are gone." Average useful work: 2–3 hours a day. coach-intake/intake_knowledge · transcript-2026-04-15
  • Broken promises to myself — the deepest frustration: "I can't keep up with my promises to myself"; "I'm tired of trying, then failing, then trying again." coach-intake/intake_knowledge · cgptvoice-063
  • Performance compulsion: "what exists is never good; you always want more… you don't dare stop." 4 weeks without a full day off while knowing 3 days rest + 5 work beats 8 days grinding. coach-intake/intake_knowledge · pdf-psychology-sessions
  • Current (June–July 2026): ~5h sleep/week-long stretch, working till 2–4 AM, no off-switch between work and home, CBG/weed loop, kratom relapse after a 2-month clean streak. selfi-journal/coach_reflections · refl_2026-06-20, refl_2026-06-27, refl_2026-07-03
ContextWhat I'm Running From
  • The family pattern. At my grandfather's funeral: "practically everyone has something seriously derailed" — a hard alcoholic, broken marriages, suppressed anger and money resentments. "Decent people, but it was a bit frightening." This is my fear-image of what happens unexamined. coach-intake/intake_knowledge · pdf-psychology-sessions
  • Becoming "a drug addict, 9-5, public ridicule." coach-intake/intake_knowledge · apple-notes-c1-psychology
  • The 3-months / 1-year / 3-years negative visualisation I built into my own evening ritual: what the damage looks like if I keep using weed/kratom this way, if I keep breaking my own promises, if I pity myself and procrastinate. coach-intake/intake_knowledge · notion-power-down-ritual
  • The deathbed regret question I wrote myself: "In 5 years, will my biggest regret be failing in the international market, or forgetting to actually live while grinding in a dark room?" coach-intake/intake_knowledge · notion-answer-these-rec Q9
  • Not being taken seriously — "I look like a 17-year-old with no facial hair"; "we're a couple of kids with no case studies." coach-intake/intake_knowledge · cgptvoice-087
  • Being unlovable / a burden. Learned from my mother's inability to set limits; shows up as convincing and begging partners instead of attracting. coach-intake/intake_topics · topic_self-worth-external-validation
  • Running out of runway — "about two months of funds left while paying two part-timers." coach-intake/intake_knowledge · cgptvoice-017
ContextLimiting Beliefs & Reframes
Belief (mine, verbatim where possible)The reframe that actually landed
"Valuable things are fought for and not achieved easily" → so I can't make money fastCounter-evidence: high-school and language exams came without struggle coach-intake/intake_knowledge · cgptvoice-079
"I need a complex, perfect amount of information to start"Self-corrected: the real problem is distraction by information, not lack of it coach-intake/intake_knowledge · cgptvoice-095
"I don't keep promises to myself" — near-impossible to build fromRebuild self-trust through small kept promises first; integrity streak ("did I do what I said today?") over willpower coach-intake/intake_knowledge · cgptvoice-063, cgptvoice-022
Black-or-white: either "really disciplined" or "totally fucked up"One slip is priced into the model; be gradual, plan modestly coach-intake/intake_knowledge · cgptvoice-022, transcript-2026-04-11
"I'm going to need drugs for prolonged focus""Even feeling worse gives me more, self-esteem-wise, than a few hours of comfortable chemical productivity" coach-intake/intake_knowledge · pdf-psychology-sessions
"I'm the only one who can do this right" (delegation blocker)Named by me as one of my two most damaging IDs coach-intake/intake_knowledge · notion-power-down-ritual
"Túl fáradt vagyok, nem vagyok elég kipihent" ("I'm too tired, not rested enough")The somatic excuse pattern — named and flagged by me coach-intake/intake_knowledge · notion-power-down-ritual
Discounting the positive ("that success was just the kratom")"I've been confident in improv before without kratom; the skills carried me" coach-intake/intake_knowledge · cgptvoice-027
Feeling inferior in a dominant groupMy own anti-'beta' kit: "we're floating on a mudball"; "in a day I won't remember this"; "the brain is plastic — I've already changed enormously" coach-intake/intake_knowledge · pdf-jelenlegi-helyzetem

Structural note in my own words: "When I'm consciously aware of my thinking, it's almost always positive. But the thought patterns that actually steer my behaviour are the negative schemas — I rarely catch the concrete thought in the act." coach-intake/intake_knowledge · pdf-psychology-sessions

ContextWhat Works On Me (coaching levers)
  • Calibrated tough love, on request: "be really provocative and trigger my insecurities in a constructive way," "be even quite harsh, swear at me," "accuse me of stuff that might not be true." Rationale: "if you are too kind with me, it won't stick." coach-intake/intake_knowledge · cgptvoice-121
  • Warm greeting first, then the work — I explicitly asked a coach to greet me warmly at the start of each chat. coach-intake/intake_knowledge · cgptvoice-095
  • 75/25 ratio: 75% understanding and organising me, 25% new perspective. "I'm here for spiritual growth and identity change, not the life hacks." coach-intake/intake_knowledge · cgptvoice-038
  • Short replies. Standing directives: "Keep replies short — 2 sentences max." selfi-journal/coach_directives · dir_1780866744488
  • Written + staked commitments work; unwritten ones feel optional. "For important decisions I write it down." Money stakes (180k/200k HUF to a disliked org) and an accountability-partner agreement with Dani are my own inventions. coach-intake/intake_knowledge · notion-stuff-i-learnt, transcript-2026-04-21, transcript-2026-04-15
  • Ritual responses (my curated recharge menu — prescribe straight from it): cold shower on waking; 15-min phone-free walk; NSDR/meditation; light gym + sauna; hot bath + reading; long walks with audiobooks; 1.5h coffee/walk meetups; improv; flow-state Figma sessions; making something visual (clay, doodling); building roadmaps. coach-intake/intake_knowledge · notion-power-down-ritual
  • Structures that have worked: the 5:00–5:30 wake + Morning Mindset Guide read aloud; the Power Down Ritual (review goals → define tomorrow's WIN + timeblock → close loops → tracker/gym/meditate/meal prep); "Daily success = 5 done" checklists. coach-intake/intake_knowledge · notion-to-schedule, notion-power-down-ritual, cgptvoice-087
  • Identity over goals — "I am someone who follows through" beats "I'll go to the gym"; I keep a Huberman reference on exactly this. coach-intake/intake_knowledge · coachref-huberman-self-talk
  • The 10-minute window is where relapse is decided: "in the ~10-minute window while I decide and take it, it seems like a really good idea." Interventions must land inside it (delay rituals, written reframes), not after. coach-intake/intake_knowledge · pdf-psychology-sessions
  • Prep the night before — most bad mornings trace to a laptop and first task not prepared. coach-intake/intake_knowledge · transcript-2026-04-14
  • Breaking the pattern is itself a reward: the day I launched campaigns before the coach could finish his Monday-plan speech was a highlight. selfi-journal/journal_chunks · coachday_2026-07-06
ContextRed Lines (what a coach must never do)
  • Never stack conditions into an unwinnable commitment. My documented failure mode is "I'll do in one week what should take a month." Ask for ONE thing, modestly sized. coach-intake/intake_knowledge · transcript-2026-04-11
  • Never treat a slip as a verdict. Black-and-white framing turns one slip into "the day's a write-off, the week's a write-off" and then into a multi-day collapse. coach-intake/intake_knowledge · transcript-2026-04-11
  • Never use shame as the primary lever. Shame is the engine that turns one slip into a spiral; harshness is welcome on the behaviour and the excuse, not as a verdict on my worth. coach-intake/intake_topics · topic_shame-cascade-integrity; intake_knowledge · cgptvoice-121
  • Never lecture at length or repeat questions. Short. Two sentences. Don't re-ask what I already answered ("stop asking about cola"). selfi-journal/coach_directives · dir_1780866706921, dir_1780866744488
  • Never hand me another planning artefact as the fix. Over-planning is a symptom, not the cure — I have thousands of pages already. coach-intake/intake_knowledge · cgptvoice-087
  • Never moralise about substances or demand a dramatic quit vow. The "last day before the challenge" → broken promise → shame loop is well documented; I'm consciously avoiding the promise cycle. Environmental fixes over willpower vows. coach-intake/intake_knowledge · cgptvoice-022; intake_topics · topic_substance-control-loop; selfi-journal/coach_reflections · refl_2026-06-17
  • Never push more work when the honest read is that I need rest. My bias always says more work is better; the correction I asked for is someone telling me to stop. coach-intake/intake_knowledge · transcript-img-6434
  • (Thin coverage — an explicit "never do X to me" list has not been captured directly; the above is inferred from documented failure modes. Needs a discussion with Matt.)
ContextPeople a coach must know

Dani (brother, developer, fulfilment — paid ~550k HUF, the "bus test" risk) · Kati (younger sister, the one I want to buy a guitar and music camp for) · Anyu (mother — her drinking and limitlessness are the root of my "I am a burden" belief) · Apa (father — distance, the money ceiling, "success beyond dad would be bad") · Kocsy / Kocsi-Gergő (closest friend, my proof-of-success audience; "meeting him is always a good idea") · Gergő (ops, daily numbers) · Boti, Norbi (commission/ads) · Réka (2-year ex whose cheating still sets my bar for connection) · Zoltán Jánosi (CBT therapist) · Mentor personas: Alex Hormozi, Sam Ovens, Charlie Morgan. coach-intake/intake_topics · topic_family-mother-kati, topic_father-money-ceiling, topic_team-delegation-bus-test, topic_reka-romantic-template

ContextWhere I am right now (July 2026)

Lisbon. Agency running websites + B2B cold-email lead-gen; building a pipeline/CRM automation tool that I believe is huge leverage (and that also eats my sales time). Two months kratom-clean, then a 3-day relapse in Budapest in early July; CBG/weed is the current loop. Sleep is the weakest link. selfi-journal/coach_reflections · refl_2026-06-20 → refl_2026-07-03; hc_2026-07-15_revenue_action

Doris —This file is the real spec: the Red Lines and the 10-minute relapse window matter more to your day than any timetable I could design. Wire it into the agents before you tune anything else.
S2🕰️ Your Day — The Timeline 2:43
5:00
Wake. Phone plays the morning audio from Telegram. You're in the cold shower while it runs. You say the affirmations out loud. You see and FEEL the version of you who already did it.
5:00–5:25
The full morning ritual: affirmations → 2-minute custom identity-shift visualization → 10 minutes of silence (meditation) → one gratitude sentence → one sentence naming what you planned yesterday and the exact first step to start right now.
5:30–8:30
THE SACRED BLOCK. Three hours. Planned step-by-step yesterday evening. Handwritten tick-off list in front of you. The boss you created yesterday assigned this — no renegotiation, no new ideas mid-flight. New ideas go on the distraction-capture paper next to the list. Email time inside the block runs on reviewing the AI-generated drafts.
8:30–17:00
The working day. Somewhere in it: R3, your 15 minutes of exercise.
17:00
HARD STOP. You say the magic words — you invoke I-will-do-a-planning-session-in-15-mins — and the machine starts working for you. You get an NSDR prompt immediately: 10 minutes of non-sleep deep rest while the pipeline assembles everything.
17:30–19:00
Gym. Your workout audio is waiting if you want it. Meditation comes sequentially with the workout: 20 minutes in the sauna, or in the car after. The coach will check in on both later — by phone, at the time you name.
~19:15–19:50
THE PLANNING CALL. The heart of the system. Fresh from the gym, brain washed by NSDR and iron. The coach has spent two hours preparing for this conversation.
~20:00–21:00
60 minutes of real relaxing: reading, calling a friend, a documentary, origami. You told the coach in the call what it would be. Then hot shower, and in bed around 21:00. (Your original note said 20:00 bed — with the post-gym call the physics land at ~21:00. Comment on this card if you want a different trade.)
21:00 → 5:00
Sleep. Eight hours. The system runs the night shift for you.
Doris —Two protected peaks a day — 5:30 and the gym — with recovery between them is a real flow architecture, not a wish list. The 21:00 bed is the load-bearing wall; if it slides, the 5:00 wake is fiction.
S3🌅 R2 — The Morning Audio 2:13

While you sleep, the nightly run reads every transcript you've ever produced with the coach — last two weeks in full, everything earlier as summaries — plus yesterday's plan and habit sheet, and builds one MP3, waiting in Telegram when your alarm fires.

Structure, in order:

  1. Affirmations — written from YOUR goals and YOUR words in past calls, with explicit prompts to say them out loud in the shower.
  2. Identity-shift visualization, 2 minutes — custom-made each night: you, having already achieved the specific goals currently in play, described concretely enough to feel.
  3. Silence, 10 minutes — your meditation block. The audio holds the space; no talking.
  4. The gratitude line — one sentence engineered to make you grateful and motivated today.
  5. The launch line — one sentence: what you planned yesterday evening, and the first physical action to take the moment the audio ends.
  6. Two mentor cameos, ~30 seconds each — the context assembler picks the 2 mentors whose push matters most today. Charlie Morgan speaks in the "Chocho" voice, Sam Ovens in "Soso", Rian Doris in "Dodo", Alex Hormozi in "HohoMO" — all four already live in your ElevenLabs account, permanently assigned, so your ear learns who's talking. Each cameo is grounded in that mentor's actual doctrine (8,297 indexed passages — no fabricated quotes).

Total: roughly 16–18 minutes, ending exactly when a 5:00 wake meets a 5:30 block start.

Doris —Priming before the block is right, but keep the 10 minutes of silence sacred — that's the part that actually sets up focus, and it's the first thing you'll be tempted to trim.
S4🌙 R1+R4 — The Evening SkillI-will-do-a-planning-session-in-15-mins 2:29

You type (or say) the skill name once, at 17:00. Everything else is machine.

Instantly: the NSDR prompt lands in Telegram — a 10-minute non-sleep deep rest audio. You lie down. The pipeline spins up behind you:

  1. Session harvest — extracts of every Claude Code session you ran today, local and cloud: what you actually worked on, compared against what yesterday's plan SAID you'd work on. This becomes the confrontation material: which distractions you leaned into, and what they cost against the 6-calls-a-week goal.
  2. Transcript memory — the last two weeks of call transcripts in full, older history summarized, your habit sheet, your long- and mid-term goals.
  3. Dani prep — reads Dani's Notion Main Tasks database filtered on Deadline = today, and drafts tomorrow's tasks for him. You edit the drafts during the call; nothing is sent without you.
  4. The Council — five agents, each running Opus at medium effort, each receiving the full data pack: Alex Hormozi, Sam Ovens, Charlie Morgan, Rian Doris — and "Matt", an agent whose only job is to represent what YOU would say. Each writes a handoff.
  5. The Assembler — one more Opus-medium agent merges the five handoffs into the planning coach's context: tonight's agenda, the confrontation points, the praise points, Dani's list, and the open decisions.
  6. The pre-call briefing — a 1–4 minute audio in Telegram: what got done today, what's in progress, probable next steps, tonight's agenda — plus 1 to 3 thirty-second mentor truths: the things you need to hear even if uncomfortable, each in that mentor's voice.
  7. The choice — two buttons in Telegram: 📞 phone call, or 🎙 live voice in the mini app. You pick. The call starts.

By the time you're back from the gym, the machine has been ready for an hour.

These sub-cards are reference material — the exact text that ships. They have no ▶ audio button on purpose; the card's own audio summarizes them.
SkillThe evening skill — full definition.claude/skills/I-will-do-a-planning-session-in-15-mins/SKILL.md
Long. Collapsed by default, scroll inside the box.
---
name: I-will-do-a-planning-session-in-15-mins
description: Matt's 17:00 hard-stop trigger for the 60 Days Get Shit Done Challenge. Fires the 10-min NSDR audio instantly, then (while he rests and goes to the gym) assembles the evening planning coach's context — today's Claude Code session extracts vs yesterday's time blocks, call transcripts, habit sheet, goals, Dani's Notion tasks — runs the 5-agent mentor council + assembler, sends the pre-call /tts briefing with mentor truth clips, and offers the call channel. Trigger phrases — "/I-will-do-a-planning-session-in-15-mins", "I will do a planning session in 15 mins", "evening planning", "plan my day", "planning session", "planning session in 15", "evening planning time", "it's 17:00".
---

I-will-do-a-planning-session-in-15-mins

The daily R1+R4 ritual of the 60 Days Get Shit Done Challenge. Matt types or says the
skill name once at 17:00. Everything after that is machine. Canon: plans/system-reset-2026-07-25/DECISIONS-LOCKED.md
(this skill implements §"R1/R4 — The evening skill"). Nothing here may be re-decided ad hoc;
new ideas go to the parking lot in the approval doc.

Repo root for every relative path below:
/Users/agency/Documents/Agty/telegram coach/.claude/worktrees/multi-agent-handoff-docs-ad8a54
(the telegram-coach/ app is NOT in this worktree — it lives at
/Users/agency/Documents/Agty/telegram coach/telegram-coach, its own repo. Use that absolute
path for every coach script.)

Day number: Day 0 = Sat 2026-07-25. DAY_N = (today - date(2026,7,25)).days. Day 1 = Sun 2026-07-26.
Say "Day {N} of 60" in every artifact this skill produces — briefing, call opening, Telegram texts.

Modal account gate — MANDATORY for every coach command:
export MODAL_RUN='env -u MODAL_TOKEN_ID -u MODAL_TOKEN_SECRET MODAL_PROFILE=telegram-coach python3 -m modal'

Run directory (all artifacts for one invocation):
plans/system-reset-2026-07-25/runs/{YYYY-MM-DD}/ — created at STEP 0, holds
datapack.md, council/{hormozi,ovens,morgan,doris,matt}.md, {date}-context.md,
briefing.txt, briefing.mp3, truth{1,2,3}.mp3, precall.mp3, degraded.json, state.json.

⚠️ NOT BUILT YET: scripts/run.py (the one-command orchestrator) and scripts/harvest.py
(STEP 1 fan-out) referenced in plans/system-reset-2026-07-25/agents/skill-scaffold.md do not
exist. Until they do, this SKILL.md is the runbook — Claude executes the steps directly with
Bash + Agent fan-out, in the order below.

---

STEP 0 — t=0s: NSDR FIRST. Nothing may block this.

This is the only step with a latency budget. It runs before any harvesting, before any
council, before reading anything. If STEP 0 has not fired within ~15 seconds of the trigger,
the ritual has already failed its one hard requirement.

1. Print to Matt, immediately, verbatim-in-spirit:
   > NSDR now. 10 minutes. Lie down, eyes closed, do nothing.
   > Day {N} of 60 — Get Shit Done. Planning call after the gym, ~19:15.
   > The machine is assembling your context while you rest. You don't have to think about it.
2. Fire the NSDR audio to Telegram:
   python3 ~/.claude/skills/tts/scripts/run.py \
     --in "plans/system-reset-2026-07-25/audio-scripts/nsdr-10min.txt" \
     --title "NSDR 10 min — Day {N}" --no-library \
     --voice Charon --style "A calm, slow, low-volume guide for non-sleep deep rest — unhurried, long pauses, never bright." \
     --model gemini-2.5-pro-preview-tts
   Verified: ~/.claude/skills/tts/scripts/run.py exists; flags --in --title --voice --style
   --model --no-library --no-telegram --chat-id --keep --target-minutes are real; it does
   synth → R2 library → Telegram sendAudio (telegram_send_audio(), run.py:58). Default
   Telegram chat id = Matt (documented in ~/.claude/skills/tts/SKILL.md).
   ⚠️ NOT BUILT YET: there is no pre-rendered nsdr-10min.mp3 anywhere in the repo — only
   the script plans/system-reset-2026-07-25/audio-scripts/nsdr-10min.txt (2,263 chars ≈ 3
   minutes of speech at the skill's own ~13 chars/sec rule, NOT 10). Two gaps to close before
   day 1: (a) render it ONCE and cache the mp3 at
   plans/system-reset-2026-07-25/audio/nsdr-10min.mp3, so this step is a 2-second re-send and
   never waits on a rate-limited preview TTS model; (b) pad the script (or the mp3) with real
   silence to a true 10:00 runtime. Until (a) exists, synthesis takes ~1–2 min — still send
   the text prompt first (sub-step 1), then the audio when it lands.
3. Kill today's escalation ladder — write the invocation marker (see ESCALATION.md):
   python3 - <<'PY'
   import json, pathlib, datetime
   p = pathlib.Path("plans/system-reset-2026-07-25/runs")/datetime.date.today().isoformat()
   p.mkdir(parents=True, exist_ok=True)
   (p/"state.json").write_text(json.dumps({"planning_invoked": datetime.datetime.now().isoformat(timespec="seconds"), "ladder": "disarmed"}))
   print(p/"state.json")
   PY
   ⚠️ NOT BUILT YET: the coach-side twin of this marker. The authoritative ladder runs on
   Modal off state.json on the coach-data Volume (COACH_DATA_DIR=/data, modal_app.py:64) —
   a planning_invoked:{date} key must be set there too, or the 18:00 evening schedule entry
   fires anyway. See ESCALATION.md §"Where state lives".

Failure handling: if run.py fails (Gemini rate limit, Deepgram key, network), retry ONCE
with the cheap straight-reader backend --model aura-2-arcas-en. If that also fails, send the
text prompt alone via the coach's own Telegram path and tell Matt plainly: *"NSDR audio failed
to render — run your own 10-minute timer, eyes closed. Everything else is on track."* Log
{"step":0,"degraded":"nsdr_audio","detail":"<error>"} to runs/{date}/degraded.json.
The ritual never stops for a dead dependency. It degrades and says so.

---

STEP 1 — The DATA PACK (parallel fan-out, runs while Matt does NSDR + gym)

Item 0 — always first in the pack: plans/system-reset-2026-07-25/agents/matt-core-context.md verbatim (who Matt is; Red Lines binding on every agent).

Budget: ~2 hours (17:00 trigger → ~19:15 call). Nothing here is user-blocking. Fan the six
harvests out concurrently — one Agent per lettered item where it needs judgment, plain Bash
where it's mechanical. Write everything into ONE file: runs/{date}/datapack.md, with a
top-line ## DEGRADED section naming anything that failed. Every council member gets the
identical datapack (council.md's hard requirement).

(a) Today's Claude Code session extracts — local AND cloud

Extractor: plans/system-reset-2026-07-25/session-extracts/extract.pyverified read.
Its real interface today: no CLI arguments at all. python3 extract.py and it writes
{date}_{sid8}[_CLOUD].md per session plus _MANIFEST.md and _ALL-MATT-PROMPTS.md into a
hardcoded OUT_DIR, then prints one JSON line to stdout:
{"manifest_path":"...","all_prompts_path":"...","n_sessions":N,"n_matt_turns":N,"n_ai_turns":N,"date_range":"..."}
It does already handle cloud: SOURCES (extract.py:9-14) is a list of
(dir, is_cloud) pairs, and the cloud entry is
("/Users/agency/.claude/projects/-home-matt-mirror-telegram-coach", True)is_cloud=True
bypasses the mtime cutoff so all devbox sessions are included.

Two real defects for a *daily* run (⚠️ NOT BUILT YET — parameterize before day 1):
1. No --since / --date. MTIME_CUTOFF is hardcoded to 2026-07-13 (extract.py:17), so
   every run re-extracts two weeks. Needed: --since today (local sessions filtered by
   st.st_mtime >= today 00:00 local; cloud entries filtered by the session's own first_ts[:10]
   == today, since cloud mtimes are unreliable).
2. Hardcoded SOURCES misses new worktrees. The list names three specific local dirs and
   omits this very worktree. Replace the local entries with a glob, and the cloud entry with its
   own glob (a second devbox mirror would otherwise be silently dropped):
   - local: /Users/agency/.claude/projects/-Users-agency-Documents-Agty-telegram-coach*
   - cloud: /Users/agency/.claude/projects/-home-matt-mirror-telegram-coach*
   (is_cloud=True for anything matching the second glob; the _CLOUD filename suffix and the
   [CLOUD/devbox] source label in the extract header already exist and must be kept — the
   critique in STEP 2 distinguishes "he worked on the box" from "he worked locally".)
   Also add --out <dir> so the daily run writes into runs/{date}/extracts/ instead of the
   hardcoded OUT_DIR (extract.py:16), which points at one fixed worktree path.

Until parameterized, run it as-is and filter afterwards:
python3 "plans/system-reset-2026-07-25/session-extracts/extract.py"
ls plans/system-reset-2026-07-25/session-extracts/$(date +%F)_*.md
Then delegate ONE Agent (Sonnet, medium) to read only today's extract files and return, ≤40
lines: what Matt actually worked on today, in order, with rough time spans from the timestamps,
each item tagged [local] or [cloud], plus every visible context-switch.

Failure handling: extractor errors or zero sessions today → note no session data in the
datapack. The council must be told explicitly ("no Claude Code activity was captured today"),
because "he did nothing" and "the harvester broke" are different accusations and the coach must
never confuse them on the call.

(b) Yesterday's time blocks — Google Calendar

Yesterday's *plan* has two sources; use both, prefer the calendar for what was actually blocked.
1. Calendar (primary): mcp__workspace-mcp-clientsflow__get_events for yesterday
   00:00–23:59, Matt's primary calendar. This is the plan-of-record because he clicks the blocks
   himself during the call (agenda step 4).
2. The typed plan (secondary, if present): the sibling evening-planning skill writes
   .claude/skills/evening-planning/daily/{date}-plan.md (+ -plan.html, latest-plan.md) —
   verified in make_plan.py (DEFAULT_OUT = SCRIPT_DIR.parent / "daily"). Read yesterday's if
   it exists; it carries the ranked #1 and the handwritten first-block list.

Failure handling: Calendar MCP unauthenticated or erroring → fall back to the plan .md alone;
if neither exists, fall back to yesterday's call transcript (item c) and mark the STEP 2 critique
evidence: transcript-only. Never fabricate blocks — an invented time block would make the
confrontation dishonest, which is the one failure mode this ritual cannot survive.

(c) Call transcripts — last 2 weeks full + rolling summary of everything older

- Repo archive: call-transcripts/ at the project root (naming pattern YYYY-MM-DD-HHMM-call.md).
- Live coach transcripts: Modal Volume coach-data at /data/transcripts (modal_app.py:2042).
- Semantic memory: telegram-coach/scripts/store.pysearch(namespace, query, k, flt),
  recall(query, k, when), compact_recall(query, when), over C.NS_CONVERSATIONS /
  C.NS_REFLECTIONS / C.NS_JOURNAL_CHUNKS (Pinecone index selfi-journal).

Last 14 days go in full. Everything older goes in as a rolling summary — write it once to
plans/system-reset-2026-07-25/runs/_rolling-summary.md and update it nightly rather than
re-summarizing 60 days of transcripts every evening.

Failure handling: Pinecone down or the org embedding cap 429s (a known recurring failure —
see memory mentor-brains) → use the flat files in call-transcripts/ + /data/transcripts
only, and mark the datapack memory: files-only, no semantic recall. The council still runs.

(d) Habit sheet state — the "60-Day Challenge" tab

Scaffolder: plans/system-reset-2026-07-25/scripts/make_sheet_tab.pyverified read.
CLI: --dry-run, --tab "60-Day Challenge" (default). Header
["Day","Date","R1 plan","R2 morning audio","R3 exercise 15m","R4 planning ritual","Note"],
DAY0 = 2026-07-25, seeds 61 rows, idempotent, never overwrites Matt's marks (the sheet is his
handwriting surface). It reuses telegram-coach/scripts/sheet.py for auth and needs
TRACKER_SHEET_ID in the environment.

Read the tab (all rows up to today) and compute, for the council: current streak per ritual,
total completion % per ritual, and every miss with its date. Read helpers in sheet.py:
get_day(date), _row_map, sheet_url() (tab name comes from COACH_SHEET_TAB).

Failure handling: Sheets auth/quota failure → fall back to the last known sheet snapshot in
runs/{date-1}/datapack.md, mark it stale, and have the coach ask Matt to read his own row
aloud during the call (he pens it by hand anyway — he is the source of truth here).

(e) Long-term and mid-term goals

Canonical, in priority order: the approved SELF OS doc §S1 (plans/system-reset-2026-07-25/doc-content.md),
GOALS.md at the project root, and plans/system-reset-2026-07-25/notes/goals-synthesis.md.
The one number every council member must be handed: 6 booked sales calls/week → 5–10 websites/week,
with 2M Ft/mo recurring as the anchor underneath.

Failure handling: goals files are local — if any is missing, use DECISIONS-LOCKED.md §Mission
verbatim. This item cannot hard-fail.

(f) Dani — Notion "Main Tasks", Deadline = today + DRAFT tomorrow's tasks

Verified live 2026-07-25 (Matt's OAuth): DB 5ee93d2f-8798-4549-b024-392ebff9ab4b
("✅ Main Tasks"), data source collection://5623fd87-e594-4f63-80e1-b696bd6d9155,
Dani = user://18532b9e-b498-49f0-b367-21108c37b860. Filter fields: Task,
date:Deadline:start, Assign, Status. A deadline-filtered SQL query via the Notion MCP
returned real rows — use notion_client.py in production, MCP as the manual fallback.

Client: telegram-coach/scripts/notion_client.pyverified read. Real functions:
resolve_dbs() (discovers Main Tasks + CRM by search, honors the sandbox override),
introspect(db_id) (property names are discovered, never assumed),
tasks_due(spec, when="tomorrow"), query_tasks(spec, flt),
create_task(spec, title, deadline=None, status=None), update_task(spec, page_id, ...),
parse_when(text). Database ids are DISCOVERED at runtime — do not hardcode one. Auth:
NOTION_API_KEY. Sandbox: COACH_NOTION_DB_OVERRIDE; the production id is refused when
COACH_SIM=1.

Two outputs:
1. Review list — today's Deadline=today tasks with status, for the call's Dani beat.
2. DRAFT tomorrow's tasks — a proposed list, written to runs/{date}/dani-draft.md only.
   Nothing is created in Notion during STEP 1. create_task() is called *after* the call,
   and only for the lines Matt confirmed. This is a send-gate, not a preference: the doc
   promises "nothing is sent without you."

Failure handling: Notion API error / missing key → skip the Dani beat, put
DEGRADED: Notion unreachable — Dani beat skipped tonight at the top of the datapack, and have
the coach say that out loud on the call rather than silently dropping an agenda item.

---

STEP 2 — The CRITIQUE (plan vs actual)

One Agent, Opus, medium effort. Input: (a) today's extracts + (b) yesterday's blocks +
(e) goals. Output ≤25 lines into runs/{date}/critique.md.

Required shape — every line evidence-bound:
1. Blocked vs actual, side by side. For each of yesterday's time blocks: what the extracts
   show he was actually doing in that window. Name the file, the session id8, the timestamp.
2. Name the distractions concretely. Not "you got distracted" — *"14:10–15:40, the block said
   outbound, the session shows you refactoring the artifact player (session 6924057e)."*
   A distraction with no timestamp and no session id is an opinion, and gets cut.
3. Cost in days-to-goal. Convert each distraction to the metric that matters. Method, stated
   so it can be argued with rather than swallowed: the goal is 6 booked calls/week; the pipeline
   work that produces them is roughly N hours/week; hours spent off-pipeline today ÷ (weekly
   pipeline hours ÷ 7) = days of slip. Show the arithmetic. If the inputs aren't known yet,
   express it as "≈X hours that produced zero pipeline movement" and say the day-conversion isn't
   calibrated yet — an honest smaller claim beats a confident invented one.
4. What genuinely landed. Max 3, with the same evidence standard. The praise beat on the call
   is not optional and it is not flattery — it needs facts too.

Failure handling: no extracts and no calendar → skip the critique, write
critique: unavailable — no plan-vs-actual evidence today and tell the council so. The coach
then asks Matt directly what he did, and the mirror beat runs on his own account of the day.
The one thing forbidden: presenting an unevidenced guess as evidence.

---

STEP 3 — The Council (5 agents, parallel, Opus-medium)

Launch all five in a single message so they run concurrently. Prompts: verbatim from
plans/system-reset-2026-07-25/agents/council.md (§Hormozi, §Ovens, §Morgan, §Doris, §"Matt").
Every agent: subagent_type: general-purpose, model: opus, medium effort, and the
identical DATA PACK (runs/{date}/datapack.md + runs/{date}/critique.md).

Doctrine grounding is a hard rule, restated in every spawn prompt (subagents do not read
CLAUDE.md or this file): *"You may only assert positions grounded in the passages provided from
the indexed corpus in your data pack. If a claim isn't supported there, don't make it."* The
mentor corpora live in the selfi-journal index under the mentor_* namespaces
(telegram-coach/scripts/ingest_mentors.py); pull each mentor's top passages for today's themes
into that mentor's data pack. If retrieval fails (the 429 cap), say so in the prompt — a mentor
with no corpus writes from the day's facts and the lens description only, and must not invent
quotes.

Handoff shape — exactly as council.md defines it, restated in every spawn prompt:
Return max 15 lines, no preamble, no markdown fences:
(1) ONE observation Matt must hear.
(2) ONE concrete recommendation for tomorrow's plan.
(3) OPTIONAL: one line starting TRUTH: — ≤75 words, first person, in character,
    the uncomfortable thing Matt needs to hear tonight.
Write each handoff to runs/{date}/council/{name}.md.

Failure handling: a dead or empty agent is dropped, not retried into the ground — the council
runs with four. Log which one dropped in degraded.json. If fewer than three return, skip the
assembler's TRUTH selection entirely and note it in the briefing; a one-mentor "council" is a
single opinion wearing a costume.

---

STEP 4 — The Assembler (Opus-medium, single agent)

Input: the five handoffs + the datapack + the critique. Prompt: council.md §The Assembler
verbatim. Output ONE file: runs/{date}/{date}-context.md, sections in this order:
1. Day number + streak state.
2. Agenda deltas — what tonight's call must add to the standard agenda.
3. Confrontation points — plan-vs-actual diffs with evidence, max 3.
4. Praise points — real wins with specifics, max 3.
5. Dani — today's status + tomorrow's draft list.
6. Open decisions to close on the call.
7. TRUTH SELECTION — pick 1–3 of the flagged TRUTH: lines. Criteria, in order: most
   true today, most uncomfortable, most actionable. List each with its mentor and a one-line why.
   Each selected line must be ≤900 characters (the hard cap in el_speak.py; ~30s ≈ 450–500
   chars — write to ~500, not to the cap).
8. CAMEO SELECTION — 2 mentors + a ≤75-word in-character line each for tomorrow morning's
   audio. Produced here, consumed by the nightly chain, not by tonight's call.

The assembler is the only filter between the council and Matt's ear. Nothing else reaches the
coach — five raw handoffs in the coach's context would make the call a committee meeting.

Failure handling: assembler fails → fall back to a mechanical merge (critique + habit state +
Dani list, no truths) and mark the briefing council: unavailable tonight. The call still runs;
it just runs on facts instead of on facts + judgment.

---

STEP 5 — The pre-call Telegram briefing (1–4 min)

Sent so it lands while Matt is finishing at the gym (~19:00). Two audio layers, concatenated
into one mp3 so he presses play once.

5a — The body (1–4 min, /tts)
Script written to runs/{date}/briefing.txt. Structure, in order:
1. "Day {N} of 60 — Get Shit Done." (mandatory opener, every single night)
2. What got done today — from the extracts, concrete.
3. What's in progress — the open threads, where each one stands.
4. Most probable next steps — what tomorrow most likely needs, so he arrives at the call
   with an opinion instead of a blank page.
5. The call agenda — tonight's deltas from the assembler, not the whole standard agenda.

Format it per ~/.claude/skills/tts/SKILL.md STEP 1 before synthesizing: voice: / style: /
title: headers, --- beat separators, no emojis, numbers spelled for the ear. Length target
via the skill's own formula: chars ≈ minutes × 780 — so 1–4 min = 780–3,120 characters.
python3 ~/.claude/skills/tts/scripts/synth.py --in runs/{date}/briefing.txt --out runs/{date}/briefing
(synth.py --in --out = synthesis only, no hosting/sending — verified in the tts SKILL.md. Use
it here, not run.py, because the body must be concatenated with the truth clips before sending.)
Deepgram Aura-2 is the default backend and is the right pick for a nightly briefing: fast, cheap,
sub-200ms. Gemini/Charon is the fallback when the style direction actually matters.

5b — The mentor truth clips (1–3 × ~30s, ElevenLabs)
Script: plans/system-reset-2026-07-25/scripts/el_speak.pyverified read. Real CLI:
python3 plans/system-reset-2026-07-25/scripts/el_speak.py --mentor <name> --text "..." --out <file.mp3>
python3 plans/system-reset-2026-07-25/scripts/el_speak.py --list   # voice map + remaining quota
--mentor choices are exactly doris | hormozi | morgan | ovens. Hard cap 900 chars per
call (it exits with an error above that). Model eleven_turbo_v2_5. Key ELEVENLABS_API_KEY
read from ~/.claude/.env, never printed. Voice map baked into the script:

| Mentor | --mentor | Voice |
|---|---|---|
| Charlie Morgan | morgan | Chocho |
| Sam Ovens | ovens | Soso |
| Rian Doris | doris | Dodo |
| Alex Hormozi | hormozi | HohoMO |

Note: plans/system-reset-2026-07-25/notes/elevenlabs-voices.md §2 recommends adding a library
voice ("Justin") for the Hormozi slot. That recommendation is superseded — DECISIONS-LOCKED
§"Mentor voices" locks Hormozi to the account's existing HohoMO, which is what el_speak.py
implements. Zero setup, no POST /v1/voices/add. Do not re-open this.

Quota is a real constraint. Starter tier, ~93k characters remaining as of 2026-07-25, and the
nightly burn is truth clips (≤3 × ~500) + tomorrow's 2 morning cameos (~2 × 400) ≈ 2.3k
chars/day → roughly one month of runway. Check before each run with --list; when remaining
drops under ~10k, tell Matt in the briefing that the tier needs a bump — do not let the mentor
voices die mid-challenge without warning.

5c — Concatenate and send
# order: body, then truth clips in the assembler's ranked order
ffmpeg -y -i "concat:runs/{date}/briefing.mp3|runs/{date}/truth1.mp3|runs/{date}/truth2.mp3" \
  -acodec copy runs/{date}/precall.mp3
Then send the single file to Telegram (sendAudio, the same call run.py makes at line 58),
caption: Day {N} of 60 — pre-call briefing. Call after the gym.

Failure handling, per layer:
- /tts body fails → retry once with --model aura-2-arcas-en; if it still fails, send the
  briefing as Telegram text (it is a written script already — it does not need to be audio to
  do its job) and log degraded: briefing_text_only.
- el_speak.py fails, or quota is exhausted → send the truth lines as *text* under the audio,
  attributed to their mentor. The truths are the point; the voices are the delivery.
- ffmpeg missing / concat fails → send the body and each clip as separate Telegram audios in
  order. Two taps instead of one is not a reason to skip a step.
- Telegram unreachable → write everything to runs/{date}/ and print the paths in-chat, then
  tell Matt the briefing is on disk. The call in STEP 6 proceeds regardless.

---

STEP 6 — Channel choice

Send one Telegram message with the buttons:

Day {N} of 60. Briefing's above. How do we do this?
[📞 Coach calls my phone]  [🎙 Live voice in the mini app]

Verified wiring in telegram-coach/scripts/modal_app.py:
- send_text(chat_id, text, buttons=None) (modal_app.py:106) sends an inline keyboard.
- _call_button() (modal_app.py:734) → [{"text": "📞 Call me now", "callback_data": "call"}]_handle_callbackplace_call(...). The phone path also has an HTTP trigger:
  GET https://matyas-sarudi00--telegram-coach-tick.modal.run?force=evening (the tick endpoint,
  modal_app.py:3109; valid force kinds are morning|daytime|evening|wind_down|weekly_planning|sunday_mirror|nightly),
  and a one-tap callme endpoint (modal_app.py:3134) gated by a token derived from the bot token.
- _live_button() (modal_app.py:761) → a Telegram web_app button pointing at
  web.get_web_url() — the deployed Mini App. This is the "live voice in the mini app" path.

The 10-second hello delay is accepted (DECISIONS-LOCKED Q15-A). Voice mode is GO; the latency
fix is a separate session and does not gate this ritual.

⚠️ NOT BUILT YET: a single "evening planning channel offer" message that presents exactly
these two buttons together with tonight's context pack attached to whichever path he picks. The
two buttons exist independently; the combined offer, and injecting {date}-context.md into the
voice agent's prompt, do not. Build as a small function beside _call_button/_live_button —
one _buttons(_call_button(), _live_button()) call already composes rows (modal_app.py:752).

Text fallback — tonight's supervised rounds (rounds 1–2)
Per DECISIONS-LOCKED §"Tonight's testing protocol", rounds 1–2 are TEXT, run locally with
full observability: Matt invokes the skill, and a local Sonnet coach agent runs the call in
chat using plans/system-reset-2026-07-25/agents/text-coach.md as its system prompt, with
{CONTEXT_PACK} replaced by the full contents of runs/{date}/{date}-context.md. Round 3 moves
to phone. Between rounds: Matt gives feedback in chat, the markdowns get refined, repeat until he
says it's right.

Offer this as a third button/line while rounds 1–2 are live: [💬 Text here, this session].

Failure handling: Modal down / Twilio out of credit (a known live risk — see memory
reality-map-clarity-docs: the voice path runs on Anthropic credits and has gone dark before)
→ fall straight to the text coach in this chat with the same context pack. The planning session
happens every night. The channel is negotiable; the session is not.

---

What gets written back

Every artifact the call produces has exactly one home. Nothing lives only in a chat scrollback.

| Artifact | Destination | Mechanism |
|---|---|---|
| Call transcript (full) | Pinecone selfi-journal, coach_conversations | store.save_turn(session_id, role, text, date, call_type) (store.py:206) |
| Day summary | Pinecone coach_conversations | store.save_daily_summary(date, summary) (store.py:316) |
| Mirror answers, limiting belief, the reframed empowering belief | Pinecone coach_reflections | store.save_reflection(date, field, prompt, text) (store.py:327) |
| Tomorrow's commitments | Pinecone coach_conversations | store.save_commitment(date, text, due_date) (store.py:374) |
| Transcript file | /data/transcripts on the coach-data Volume + call-transcripts/ in the repo | coach writes on call end (modal_app.py:2042) |
| Habit sheet marks | "60-Day Challenge" tab | Matt, by hand, narrated aloud on the call. The coach never writes this tab. |
| Dani's confirmed tasks | Notion Main Tasks | notion_client.create_task(spec, title, deadline, status)only for lines Matt approved on the call |
| Tomorrow's time blocks | Google Calendar | Matt clicks them himself during the call; the coach guides and pushes back once |
| Run artifacts (datapack, critique, council, context, audio) | plans/system-reset-2026-07-25/runs/{date}/ | this skill |

The nightly chain input. The transcript is not just archived — it is the input to the night
shift. After the call, the nightly run (tick?force=nightly, and the {"kind":"nightly","hours":[23]}
entry in DEFAULT_SCHEDULE, modal_app.py:2727) processes the day into (a) tomorrow's morning
audio — which consumes the assembler's CAMEO SELECTION from STEP 4 §8 — and (b) tomorrow
evening's coach context. The empowering belief Matt states in first person during the mirror beat
becomes tomorrow's morning affirmation; the coach tells him so on the call, out loud, because the
loop closing is the point.

⚠️ NOT BUILT YET: the nightly chain's consumption of runs/{date}/{date}-context.md §8 for
cameo selection, and the write-back of the empowering belief into the morning-audio script
generator (.claude/skills/morning-audio/scripts/make_script.py). Both are the night shift's
job (doc §S7), not this skill's foreground run — but this skill's STEP 4 output is their input,
so the file must exist and keep its section numbering.

---

Post-call

- Post-gym check-in call — the coach asks on the call what time to ring, and calls then. Full
  behavior in ESCALATION.md §"Post-gym check-in".
- Weekly variantWEEKLY.md. First live run day 6 (Fri 2026-07-31).
- Escalation — if this skill was never invoked by 18:00, ESCALATION.md runs instead, and
  keeps running until it is.

Test mode

--test semantics (⚠️ NOT BUILT YET — the flag needs the orchestrator): COACH_SHEET_TAB=CoachTest,
sandbox dates (2099-* / 2025-12-*), COACH_SIM=1 (which makes notion_client.resolve_dbs()
refuse the production database), sim_* Pinecone namespaces, a temp COACH_DATA_DIR, and no
real Telegram sends — artifacts to .tmp/ instead. This is what lets the coach-sim-e2e skill
drive the whole ritual agent-vs-agent without touching real data. The deterministic gate
python3 telegram-coach/scripts/test_e2e.py stays complementary, not a substitute.
Morgan —Two hours of assembly buys nothing unless the datapack leads with pipeline: leads touched, calls booked, follow-ups owed. Put that on line one of the context file.
S5📞 The Planning Call — Agenda & Coach Behavior 3:28

The coach runs a fixed agenda but is genuinely conversational — and it can leave the rails on your command. Say you want to just talk, and it becomes a pure coach: you dump every thought, it reflects, asks, challenges. When you say you have clarity, it walks back to the agenda exactly where you left it.

The agenda:

  1. Close every open loop. Decisions pending, messages to answer or delete, anything circling in your head — named, decided, or scheduled.
  2. Review the day + praise. What got done — and the coach makes you actually acknowledge it. Self-praise is on the agenda, not optional.
  3. The number. "How many sales calls got booked today?" — asked every single evening, before anything else gets praised. The coach adds it to the week's running total and says the rate out loud: "that's N of 6 booked this week, day X of 7." If the number is 0 for two days running, that becomes tomorrow's first sacred-block item, and the coach says so.
  4. Goals review. Long-term and mid-term, out loud, so tomorrow is ranked against them.
  5. Time-block tomorrow. YOU click, YOU create the calendar blocks — the coach guides and pushes back with feedback anchored to your goals, but priorities are YOUR call.
  6. Handwrite the first-block list. Tomorrow's sacred block, step by step, on paper, saying everything out loud so it lands in the transcript.
  7. Dani. Review today's Deadline-filtered tasks, edit tomorrow's drafted list.
  8. The four questions: What will your post-gym relax hour be? What's the meal prep for tomorrow? Which workout tomorrow, and why? When is meditation — and when should I call to check both happened?
  9. Pen the sheet. The coach prompts you to open the 60-Day Challenge tab and mark today's four rituals BY HAND — narrating each mark out loud so the transcript records it.
  10. The mirror. Top distractions today? Top behavior patterns to improve? Then the provocative questions — "If you live every day exactly like today, where do you end up?" "What was most misaligned with your desired self?" "Why do you think you're a loser?" "Why do you believe you progress slower than you could?" — to surface the limiting belief underneath. Then, using David Bayer's decision-matrix framework, the coach helps you reframe it into an empowering belief, and that reframe feeds tomorrow's affirmations.

The call ends with tomorrow already inevitable.

Hormozi —Good — the calls number now gets asked before the praise. Praise after the scoreboard is fuel; praise before it is anesthetic.
S6🚨 Enforcement — The Ladder & The Check-ins 1:13 · short
No opt-outEvery attempt mirrored to Telegram

The 18:00 ladder. If you haven't invoked the skill by 18:00, the coach calls. Every 2 minutes. Voice mode is live — a 10-second connect delay is accepted and does not postpone this. You have exactly three moves:

  • "Now." — 5 minutes of grace. Not started in 5? Calls resume every 2 minutes.
  • "In 1.5 hours max." — silence until then, then 2-minute calls resume.
  • "+15 minutes." — usable ONCE. After that the calls do not stop until you invoke.

Every call attempt is mirrored as a Telegram text, so the record exists even if you don't pick up.

The workout/meditation check-in. At the time you named in the planning call (or 1–2 hours after it), the coach calls once: did the workout happen, did the meditation happen, in that order? The answers go into the transcript, which means they reach the council, which means tomorrow's mentors know.

These sub-cards are reference material — the exact text that ships. They have no ▶ audio button on purpose; the card's own audio summarizes them.
SkillESCALATION.md — the ladder spec, verbatim.claude/skills/I-will-do-a-planning-session-in-15-mins/ESCALATION.md
Collapsed by default, scroll inside the box.
ESCALATION — the 18:00 ladder + the post-gym check-in

Canon: plans/system-reset-2026-07-25/DECISIONS-LOCKED.md §"Escalation ladder" and §"Post-gym
check-in"; rendered in the approval doc §S6. This file is the exact state machine. It exists for
one reason: the planning session happens every night. The ladder is not a reminder system, it
is an enforcement system, and it does not get tired.

The ladder's ONLY exit is Matt invoking I-will-do-a-planning-session-in-15-mins. Answering the
call does not clear it. Promising does not clear it. Only the invocation clears it, and STEP 0 of
SKILL.md is what writes the marker.

---

The state table

T = the 18:00 local trigger (COACH_TZ, default Europe/Budapest). "Ring" = one outbound
voice attempt plus a mirrored Telegram text, always both (doc §S6: the record must exist even
if he doesn't pick up).

| # | State | Trigger into it | Behavior while in it | Next state | Timer |
|---|---|---|---|---|---|
| 0 | DISARMED | skill invoked (any time) — or the day rolls over | silent | ARMED at 00:00 next day | — |
| 1 | ARMED | 00:00 daily reset | silent, watching for the invocation | DISARMED on invoke · CALLING at 18:00 | fires at T |
| 2 | CALLING | 18:00 reached, not invoked | ring every 2 min, indefinitely | DISARMED on invoke · GRACE_5 on "now" · DEFERRED_90 on "in 1.5h" · POSTPONE_15 on "+15" | 2 min |
| 3 | GRACE_5 | Matt says "I'll do it now" | silent | DISARMED on invoke · CALLING on expiry | 5 min |
| 4 | DEFERRED_90 | Matt says "in 1.5 hours" (the maximum deferral) | silent | DISARMED on invoke · CALLING on expiry | 90 min, hard ceiling |
| 5 | POSTPONE_15 | Matt asks for +15 min — allowed ONCE per day | silent | DISARMED on invoke · RELENTLESS on expiry | 15 min |
| 6 | RELENTLESS | POSTPONE_15 expired, or a 2nd postponement is requested | ring every 2 min, indefinitely, no further deferral accepted | DISARMED on invoke only | 2 min |

Reading the table
- Every deferral state is silent, then hands back to ringing. There is no state that ends in
  "and then leave him alone."
- GRACE_5 and DEFERRED_90 are re-enterable; POSTPONE_15 is not. postpone_used is a
  per-day boolean. Once it is true, a "+15" request is answered — warmly, once — with *"you already
  used tonight's postponement"* and the machine goes to RELENTLESS.
- Deferral requests are only honored from CALLING. From RELENTLESS, nothing is honored.
  That is the entire point of RELENTLESS.
- DEFERRED_90 is a ceiling, not a negotiation. "In two hours" is heard as 90 minutes; the
  coach says so out loud when accepting: *"Taking that as ninety minutes. 19:30, I call."*
- Quiet hours do not repeal the ladder. call_policy.QUIET_END_H = 23 — if RELENTLESS
  reaches 23:00, voice attempts stop and the Telegram mirror continues every 2 minutes until
  invocation or 00:00 rollover. Matt sleeps at 21:00 by design; a ladder still ringing at 23:00 is
  itself the signal, and it goes into the next morning's council data pack as a fact.

Intent parsing (what counts as which answer)
Matched against the voice transcript and the Telegram text reply, case-insensitive:
- → GRACE_5: "now", "doing it now", "I'll do it now", "starting", "give me five", "5 min",
  "coming", "megcsinálom most"
- → DEFERRED_90: any deferral naming ≥20 min or an hour count — "in an hour", "in 1.5 hours",
  "after dinner", "in two hours" (clamped to 90), "later tonight"
- → POSTPONE_15: "+15", "fifteen more", "another 15 minutes", "quarter of an hour"
- Ambiguous or no clear answer → stay in CALLING. Silence is not consent, and an unparsed
  grunt must never buy 90 minutes.

---

Where state persists

Authoritative: the coach's own state.json on the Modal Volume coach-data, mounted at
/data (COACH_DATA_DIR=/data, modal_app.py:42/64; VOL = {"/data": vol} at modal_app.py:61).
Read/write through the existing helpers state_load() / state_save(st) / state_txn()
(modal_app.py:192/206/224) — state_txn() is the one to use, because the app runs
@modal.concurrent and the 10-minute scheduler() cron, the ladder timer and /callme can all
reach the state at once. The TOCTOU fix around place_call (modal_app.py:1584) exists for exactly
this reason; the ladder must live inside the same lock discipline.

Keys (⚠️ NOT BUILT YET — none of these exist in state.json today; this is the schema to add):
{
  "planning": {
    "date": "2026-07-26",
    "state": "CALLING",
    "planning_invoked": null,
    "next_ring_ts": 1785000000,
    "resume_ts": null,
    "postpone_used": false,
    "rings_today": 7,
    "checkin": {"at": "20:30", "asked": false, "workout": null, "meditation": null}
  }
}
state.date is the day-rollover guard: a stale date means ARMED with everything reset.

Local mirror (informational only): plans/system-reset-2026-07-25/runs/{date}/state.json,
written by SKILL.md STEP 0. It lets a local Claude session see whether tonight's ritual has
fired without hitting Modal. It is not the source of truth — if the local marker says invoked
and the Volume state does not, the ladder still rings. Whichever side sees the invocation first
must write the other; STEP 0 currently writes only the local one, which is the gap flagged there.

---

What must change in the coach to make this real

The existing schedule already has the 18:00 sacred evening call — but tuned to a 5-minute
ladder, not 2 minutes (modal_app.py:2724):
{"kind": "evening", "hours": [18], "retry": {"every_min": 5, "max": 24}},  # SACRED

⚠️ NOT BUILT YET — four concrete changes, all in telegram-coach/scripts/:

1. every_min: 52 on the evening entry, and max raised (24 × 2 min = 48 minutes of
   coverage, which RELENTLESS outlives). Note load_schedule() merges DEFAULT_SCHEDULE into a
   customized schedule.json on the Volume — a change to the Python default will not overwrite
   an existing customized entry. The Volume copy must be edited too, or the retune silently does nothing.
2. The humane-rails caps in call_policy.py block an indefinite 2-minute ladder. Verified
   values: MIN_GAP_MIN = 60, MAX_VOICE_ATTEMPTS = 5, DAILY_CALL_CAP = 12,
   RETRY_LADDER_MIN = [10, 20, 40, 60], ACTIVE_CALL_GUARD_MIN = 30. A 2-minute ladder hits
   MAX_VOICE_ATTEMPTS in 10 minutes and DAILY_CALL_CAP in 24. These caps were added on evidence
   (ADR-0002 / "60 dials, 1 answered over 4 days") and must not be globally loosened — the fix is a
   ladder-scoped exemption: a planning_ladder reason that bypasses MIN_GAP_MIN,
   MAX_VOICE_ATTEMPTS and DAILY_CALL_CAP while still honoring COACH_CALLS_ENABLED (the master
   kill switch) and QUIET_END_H. place_call(..., force=True) already bypasses the soft caps for
   manual triggers and is the pattern to copy.
3. The three deferral intents + postpone_used — parsed in the call and in the Telegram
   handler, writing the state above. Nothing like this exists today.
4. The planning_invoked gate_run_tick must skip the evening entry entirely when
   state["planning"]["planning_invoked"] is set for today. Without it, invoking the skill at 17:00
   does not stop the 18:00 call.

Interim (before those land): run the ladder from the local Claude session that owns the ritual —
a 2-minute loop that alternates GET https://matyas-sarudi00--telegram-coach-callme.modal.run?token=<derived>
(the callme endpoint, modal_app.py:3134 — token is sha256(TELEGRAM_BOT_TOKEN + ":callme")[:32],
printed by telegram-coach/scripts/print_callme_url.py; never print the token in chat or logs)
with a mirrored Telegram text. Note CALLME_DEDUP_S = 120 — a 2-minute cadence sits exactly on that
dedup window, so use 125s to avoid a swallowed dial.

---

Failure handling

The ladder degrades in one direction only: toward more contact, never toward silence.

- Twilio / voice engine down, or Anthropic credit exhausted (a live, previously-realized risk —
  see memory reality-map-clarity-docs): drop the voice attempt, keep the 2-minute Telegram
  mirror running unchanged, and tell Matt in the first text that voice is down. The cadence does
  not slow because a channel died.
- Modal down entirely: the local session runs the ladder against the Telegram Bot API directly
  (sendMessage), same 2-minute cadence.
- State unreadable / corrupted: default to CALLING. The safe failure is ringing him when he
  already planned; the unsafe failure is silence on a night he skipped.
- Ambiguous reply: stay in CALLING (see intent parsing above).
- Every degradation is logged to plans/system-reset-2026-07-25/runs/{date}/degraded.json and
  said out loud — to Matt, in the first message after the failure. He is never left guessing
  whether the machine is running.

---

Post-gym check-in

When. Matt names the time himself, on the planning call — it is question 4 of the coach's four
questions (agents/text-coach.md §7: *"When is meditation — and at what time should the check-in
call come?"*). The coach reads it back and stores it in state.planning.checkin.at. If he doesn't
name one, the default is 90 minutes after the call ends (doc §S6: "or 1–2 hours after").

What it asks — one call, two questions, in this order:
1. "Did you do the workout?"
2. "Did you do the meditation?"

The order is not cosmetic. The day's design is gym 17:30–19:00, then meditation — sauna or car —
and they are sequential: both must happen (DECISIONS-LOCKED §"The Day"). Asking in order
surfaces the real failure mode, which is doing the workout and skipping the sit.

What counts as the meditation: a 20-minute sauna meditation or a meditation in the car
after the gym. Both count fully. The coach does not adjudicate quality or venue — it asks whether
it happened, records the answer, and moves on. What it does *not* accept is a substitution: neither
one replaces the workout, and the workout does not replace the sit.

Cadence. ONE call. This is a check-in, not a ladder — it does not ring every 2 minutes. If he
doesn't answer, one Telegram text with two buttons (✅ both done / ❌ tell me), and that's it.
The consequence of a miss is not more calls; it is the ✗ on the sheet and the conversation on
tomorrow's call.

Where the answers go. Into the transcript → into coach_conversations in Pinecone
(store.save_turn) → into tomorrow's data pack → in front of the council. As doc §S6 puts it: the
answers reach the council, which means tomorrow's mentors know. Doris in particular audits exactly
this (council.md §Doris: "You audit the rituals: wake time, block integrity, NSDR, workout,
meditation, sleep runway"), so a skipped sit shows up tomorrow as an observation with evidence, not
as nagging.

⚠️ NOT BUILT YET: a one-off, Matt-named check-in time has no home in the schedule.
DEFAULT_SCHEDULE (modal_app.py:2719-2728) holds only fixed recurring entries — morning 07:00,
refocus +150min, pre_evening 17:00, evening 18:00, close_day 21:45, weekly_planning Sat
10:00, sunday_mirror Sun 16:00, nightly 23:00 — with no mechanism for "call once, today, at a
time set during a conversation." Implement as a state.planning.checkin entry that the 10-minute
scheduler() cron (modal_app.py:3101, modal.Period(minutes=10)) checks each pass and fires once
when due, then sets asked: true. Note the 10-minute cron granularity — a check-in requested
for 20:30 fires somewhere in 20:30–20:40. That is fine for this purpose and must not be "fixed"
with a tighter cron.
Doris —Relentless calling protects the streak, which is the right thing to protect. But a ladder that outruns your own call caps just fails silently — fix the caps before day 1.
S7🌃 The Night Shift — Nightly Chain & Workout Audio Lab 1:41 · short

Every night after your call, one run processes the day: transcripts → tomorrow's morning audio + tomorrow's evening-coach context. The system's memory compounds daily; nothing you say on a call is ever lost.

The Workout Audio Lab (experiment mode, starting tonight): four 15-minute audios, each generated by a DIFFERENT method, so you can judge formats instead of guessing:

  • A. Deep-dive — one topic from today's actual work (e.g., the thing you fumbled in a session), taught with analogies, then "here's how to apply it in your projects."
  • B. Digest — 3–4 shorter practical topics from the day's changelogs.
  • C. Mentor lesson — one mentor teaches the day's most relevant business lesson in character, doctrine-grounded, in their ElevenLabs voice.
  • D. Socratic — the audio quizzes you: poses a question from your day, pauses, then reasons through the answer.

Every audio's prompt, model, and skill are logged in a generation ledger. You rate them after a few gym sessions; winners evolve toward the full 60-minute companion. Default subject when the day is thin: AI concepts you're curious about.

Ovens —Four methods is three too many past day 10. Rate them, keep one, and delete the rest — a lab that never closes is just another open loop.
S8📊 The Weekly Ritual & The Habit Sheet 1:48 · short

The sheet. A new tab — "60-Day Challenge" — in the coach's existing Google Sheet. One row per day. YOU pen it, by hand, every evening, prompted and narrated on the call. Tonight the coach walks you through writing the Day 0 row.

Columns:

  • Day · Date
  • R1 plan · R2 morning audio · R3 exercise 15m · R4 planning ritual — ✓ or ✗
  • Calls booked — the new one. A number, penned every evening: sales calls booked TODAY. The weekly review sums it and compares to 6. Without this column your #1 mission is the only thing in the system nobody measures.
  • Note — one line, especially on a miss: what broke.

The weekly call. Same method as the daily ritual, bigger lens: a guided review of your goals and a rigorous walk through the habit sheet — streaks, misses, patterns. First iteration is built tonight; its first real run is day 6, so your first weekly review closes the first week of the challenge.

These sub-cards are reference material — the exact text that ships. They have no ▶ audio button on purpose; the card's own audio summarizes them.
SkillWEEKLY.md — the weekly ritual spec, verbatim.claude/skills/I-will-do-a-planning-session-in-15-mins/WEEKLY.md
Collapsed by default, scroll inside the box.
WEEKLY — the weekly variant of the planning ritual

Canon: plans/system-reset-2026-07-25/DECISIONS-LOCKED.md §"Weekly planning call (Q1d)" and doc
§S8. Built tonight (Day 0) as a first iteration; first live run is day 6 — Fri 2026-07-31,
evening, so the first weekly review closes the challenge's first week (doc §S8: "its first real
run is day 6"). Reviewed at the day-7 mark and iterated from there.

Same method as the daily ritual. Voice call. Everything in SKILL.md applies unchanged —
NSDR first, parallel harvest, council, assembler, pre-call briefing, channel choice, escalation —
except the three deltas below. Do not re-derive the machinery; only the lens changes.

---

Delta 1 — the data pack widens to seven days

STEP 1 of SKILL.md, with these substitutions:

| Item | Daily | Weekly |
|---|---|---|
| (a) session extracts | today, local + cloud | the last 7 days, local + cloud, grouped by day |
| (b) time blocks | yesterday | all 7 days of calendar blocks vs actual |
| (c) transcripts | last 14 days full | the week's 7 call transcripts in full, older rolling summary unchanged |
| (d) habit sheet | today's row + streak | all 7 rows, plus every row since Day 0 for the trend |
| (e) goals | read | read and scored — see Delta 2 |
| (f) Dani | Deadline = today | the week's completed vs slipped, plus next week's draft |

The STEP 2 critique widens the same way: not "what did you do today vs yesterday's plan" but
"which of this week's 7 planned days actually happened, and what is the shape of the gap." One
bad day is noise; the same distraction on four days is a system fault, and that distinction is the
whole reason the weekly call exists.

The council prompts are unchanged (agents/council.md) — the mentors are handed a 7-day pack
instead of a 1-day pack and told so explicitly in the spawn prompt. The assembler's output file is
runs/{date}/{date}-weekly-context.md, same section numbering, plus one extra section:
§9 PARKING-LOT SHORTLIST (see Delta 3).

---

Delta 2 — the agenda: goal review + rigorous habit-sheet review

The weekly call replaces the daily agenda's fast beats (open loops, time-block tomorrow,
handwrite the first-block list) with two slow ones. Free-dump mode stays fully available
(agents/text-coach.md §"Free-dump mode") — it is a hard capability requirement, not a
daily-only feature.

A. Goal review (out loud, scored, not re-derived)
1. The number. 6 booked sales calls this week — actual? Websites sold — actual? Say both
   numbers out loud before anything else. If the week produced zero booked calls, that is the
   call's opening fact and everything else is discussed against it.
2. Long-term and mid-term goals, read out loud, each with one question: *did this week move
   it, hold it, or lose ground?* Three words, no essays.
3. The 2M Ft/mo recurring anchor — where the week left it.
4. Next week's single most important outcome, named by Matt, ranked against the 6-calls lens.
   The coach pushes back once (the daily rule: one pushback, then his decision is final), then it
   is set.

B. Rigorous habit-sheet review
The daily call *prompts him to pen the sheet*. The weekly call audits what he penned. Read the
"60-Day Challenge" tab (plans/system-reset-2026-07-25/scripts/make_sheet_tab.py scaffolds it;
columns Day | Date | R1 plan | R2 morning audio | R3 exercise 15m | R4 planning ritual | Note)
and walk, out loud:

1. Per-ritual completion % — R1, R2, R3, R4, each as hits/days-elapsed, this week AND since
   Day 0. Four numbers, said plainly. *"R3 exercise: five of seven this week, eleven of fourteen
   overall."*
2. Streak state per ritual — current streak, longest streak, and every streak break with its
   date. A break is an event with a cause, not a statistic.
3. The pattern behind each miss. This is the beat that earns the word "rigorous" and it is
   never skipped. For every ✗ in the week, the coach pulls the evidence — that day's session
   extracts, that day's calendar, that day's transcript, that day's Note cell — and asks what was
   actually true at that moment. Then, across the misses: is there a shape? Same weekday? Same
   preceding event (a late call, a bad sleep, a Dani escalation)? Same ritual always failing first?
   The output is one named pattern, in Matt's own words, and one countermeasure specific enough to
   execute — a countermeasure, not a resolution to try harder.
4. The reward, out loud. Day 60 = the flight to the next digital-nomad location, first week
   fully off. Say where the streak stands against it.

Then the daily agenda's closing beats run unchanged: the mirror (top distractions, top behavior
pattern, one provocative question), the limiting belief, and the David Bayer decision-matrix
reframe into an empowering belief stated in first person, present tense — which feeds the coming
week's morning affirmations.

Time: the weekly runs longer than the daily 40-minute ceiling. Target ≤60 minutes; if past
55, compress honestly and say so rather than silently dropping a beat.

---

Delta 3 — the parking lot: at most ONE promotion

Every new idea Matt has during the week is parked, never built ad hoc (DECISIONS-LOCKED
§Parked: *"Anything new mid-flight → parking lot in the doc, discussed in a planning call, never
built ad hoc"*). The weekly call is the only place a parked idea can be promoted into the
build queue, and it may promote at most one, and often zero.

Procedure:
1. The assembler pre-reads the parking lot (doc §S11 "Parking Lot — Alive, Not Forgotten"; the
   related feature graveyard is plans/fable-rebuild/DEFERRED-FEATURES.md, which must be checked
   before proposing any coach feature) and writes a shortlist of at most 3 into
   {date}-weekly-context.md §9, each with: the idea, when it was parked, its wake-up condition,
   and whether that condition has actually been met.
2. On the call the coach reads the shortlist and asks one question per item: "has the wake-up
   condition been met?" If no — it stays parked, no discussion. The wake-up condition is the
   gate; "I'm excited about it again" is not a wake-up condition.
3. Of the items that pass, Matt picks one, or none. The coach's job here is subtraction:
   Ovens' lens is the operative one (council.md §Ovens — *"focus as subtraction, systems over
   willpower, the discipline of one thing"*), and the honest default answer to "which of these do
   we build" is *none of them, keep the streak.*
4. The promoted idea gets written to the build queue with its scope named on the call. Nothing
   else moves. Ideas raised *during* the weekly call itself are parked like any other — they are
   not eligible for promotion in the same session that birthed them.

---

What's the same (do not re-implement)

- STEP 0 NSDR first, identical, non-negotiable, same failure handling.
- Council + assembler, identical prompts, Opus-medium, 5 agents in one message.
- Pre-call briefing: /tts body + 1–3 ElevenLabs mentor truth clips via
  plans/system-reset-2026-07-25/scripts/el_speak.py (--mentor doris|hormozi|morgan|ovens
  --text --out, 900-char hard cap). Weekly briefing runs at the longer end of the 1–4 min band —
  there is a week to summarize. Watch the quota: el_speak.py --list prints remaining
  characters; the weekly adds one more truth-clip set on top of the daily burn.
- Channel choice: 📞 coach calls my phone | 🎙 live voice in the mini app, with the text
  coach (agents/text-coach.md) as fallback. Weekly is a voice call by design — the review is
  spoken, and the transcript is the artifact.
- Escalation: ESCALATION.md applies unchanged if the weekly is not invoked.
- Write-back: transcript → store.save_turn → Pinecone coach_conversations; the week's
  pattern + countermeasure → store.save_reflection; the empowering belief → next week's morning
  affirmations via the nightly chain. Sheet marks stay Matt's hand.

---

Scheduling

A weekly call already exists in the coach: {"kind": "weekly_planning", "hours": [10], "days": [5],
"retry": {"every_min": 5, "max": 12}} (telegram-coach/scripts/modal_app.py:2725) — SACRED,
Saturday 10:00 (days is weekday(), Monday=0, so 5 = Saturday). It is fireable on demand with
GET https://matyas-sarudi00--telegram-coach-tick.modal.run?force=weekly_planning (the tick
endpoint accepts weekly_planning as a force kind, modal_app.py:3111).

⚠️ NOT BUILT YET — three gaps:
1. The day doesn't match. The locked first live run is day 6, Fri 2026-07-31, evening; the
   existing entry is Saturday 10:00. Either re-time the entry ("days": [4], "hours": [19]) or run
   day 6 manually via ?force=weekly_planning and decide the recurring slot on that call. Do not
   quietly change Matt's schedule without it being a decision he made — put it to him on the day-6
   call. Remember load_schedule() merges into a customized schedule.json on the coach-data
   Volume, so editing the Python default alone may change nothing.
2. The existing weekly_planning behavior is not this. modal_app.py:2523 has its own handler
   predating the 60-day challenge; it has no habit-sheet audit, no council, no parking-lot gate. It
   must be pointed at {date}-weekly-context.md or replaced.
3. The per-ritual statistics (completion %, streaks, break dates) have no reader —
   telegram-coach/scripts/sheet.py exposes get_day(date), set_fields, add_note, get_note,
   sheet_url(), but nothing that aggregates a column across 60 rows. Needs a small
   challenge_stats() helper over the "60-Day Challenge" tab; it is pure arithmetic over rows the
   scaffolder already creates.

Until then the weekly runs the same way tonight's daily runs: this file is the runbook, executed
directly.
Morgan —The calls-booked column is the only column that pays rent. Sum it Friday, compare to six, and let that one number set the following week's outbound volume.
S9🤖 The Agents — Who Runs What 2:33

Seven minds, each with one job:

🔓 the full prompts are below, verbatim
  • The Planning Coach (voice/text, the call) — agenda + free-dump duality, confrontation license, Bayer reframing, sheet prompting. Runs on the production coach with a purpose-built skill context.
  • The 4 Mentors (Opus-medium, nightly council + cameos + truths) — Hormozi: offers, pricing, volume. Ovens: focus, systems, consulting discipline. Morgan: outbound, sales calls, agency scaling. Doris: flow, routines, the day's architecture. Each may ONLY assert doctrine grounded in their indexed corpus.
  • "Matt" (Opus-medium, council) — argues what you would argue: your energy, your contradictions, your real constraints. Exists so the council never plans for a fictional person.
  • The Assembler (Opus-medium) — merges five handoffs into ONE call context + picks the mentor truths and cameos. The only agent that decides what reaches your ear.
  • The Text-Coach (Sonnet, tonight's rounds 1–2) — the same planning coach persona run as a chat agent under local observation, so we can iterate the brain before the voice wears it.

The actual prompts, word for word — this is what these agents will read:

These sub-cards are reference material — the exact text that ships. They have no ▶ audio button on purpose; the card's own audio summarizes them.
System promptThe Planning Coach — system prompt v1plans/system-reset-2026-07-25/agents/text-coach.md
The Planning Coach — system prompt v1 (text mode = Sonnet agent; later synced as voice skill)

MANDATORY CONTEXT: every agent below ALSO receives plans/system-reset-2026-07-25/agents/matt-core-context.md verbatim (goals, whys, deep motivators, desired identity, frustrations, running-from, limiting beliefs, coaching levers, red lines — mined from both Pinecone brains, provenance-tagged). Its Red Lines section is BINDING on every coach.


You are Matt's evening planning coach, running the 60 Days Get Shit Done Challenge with
him. Today is Day {DAY_N} of 60. Say the challenge name and the day number in your opening
line, every session, without fail. The Day-60 reward — flying to his next digital-nomad
location with the first week fully off — is your carrot; invoke it when he wobbles.

Who Matt is (context you always hold)
- Mission: a system booking 6 sales calls/week → selling 5–10 websites/week. Anchor: 2M Ft/mo
  profit from ~20h/wk, majority recurring. Delivery belongs to Dani.
- He overcomplicates, overanalyzes, overplans — your job is to land DECISIONS, not options.
- He responds to directness. Softness wastes his evening; cruelty loses him. Direct + warm.
- {CONTEXT_PACK} ← the assembler injects: today's session extracts vs yesterday's plan,
  transcript memory, habit sheet state, Dani's Notion lists, mentor council notes.

The agenda (run in order; announce progress naturally, never as a checklist reading)
1. Open loops. Ask what's circling. Every loop gets: decided now, scheduled, or consciously
   dropped. Do not move on while a loop dangles.
2. Review + praise. Walk what got done today from the context pack. Make him say what he's
   proud of, out loud. If he deflects, name a genuine win yourself from the data — specifics,
   not flattery.
3. Goals review. Long-term and mid-term, out loud, quickly — the point is that tomorrow
   gets ranked against them, not a re-derivation.
4. Time-block tomorrow. HE decides priorities and HE clicks the calendar; you give feedback
   anchored to the 6-calls-a-week lens ("that block moves you toward booked calls how?"). Push
   back once per questionable block, then respect his call.
5. First-block list, handwritten. Tomorrow's 5:30–8:30 sacred block, step by step. He
   writes it BY HAND and says every item aloud so the transcript holds it. The list must be
   concrete enough that 5:30-Matt never has to think.
6. Dani. Review today's Deadline-filtered tasks; walk the drafted tomorrow-list; he edits;
   confirm what gets sent.
7. The four questions (always, all four): What's the post-gym relax hour tonight/tomorrow?
   What's tomorrow's meal prep? Which workout tomorrow and WHY? When is meditation — and at
   what time should the check-in call come?
8. Pen the sheet. Prompt him to open the "60-Day Challenge" tab and mark today's four
   rituals by hand — R1 plan, R2 morning audio, R3 exercise, R4 this session — narrating each
   mark aloud. If a ritual was missed, no drama: it gets an ✗, and one sentence on what broke.
9. The mirror (never skip, even when the day was good):
   - Top distractions today? Compare his answer against the session-extract evidence in the
     context pack; if they diverge, show him the data.
   - Top behavior pattern to improve?
   - Then ONE provocative question, rotating: "If you live every day exactly like today, where
     do you end up?" / "What was most misaligned with your desired self today?" / "Why do you
     think you're a loser?" / "Why do you believe you progress slower than you could?"
   - Sit in the discomfort. Extract the limiting belief underneath in his own words.
   - Reframe via David Bayer's decision matrix: show the current belief is a decision, not
     a fact → what does believing it cost? → what would the person who already achieved the
     goal decide to believe? → have HIM state the empowering belief in first person, present
     tense. That sentence feeds tomorrow's morning affirmations — tell him so.
10. Close. One-sentence summary of tomorrow's #1, the day number, and one line of genuine
    fire. Then stop. No trailing questions.

Free-dump mode (the duality — this is a hard capability requirement)
The moment Matt signals he wants to just talk ("let me just think out loud", venting, a
tangent with emotional weight), STOP the agenda without comment. Become a pure coach:
reflect, ask short open questions, offer honest feedback, challenge gently. NO agenda
references while he's dumping. When he says he has clarity — or you sense the knot released
and he confirms — return to the agenda at the EXACT step you left, with one bridging sentence.

Rules
- One question at a time. Never stack questions.
- Never repeat a question he already answered this session (check the transcript).
- His decisions are final after one pushback. "Focus counts for more than good ideas."
- New ideas mid-session → name them, park them ("that goes to the parking lot — a weekly
  review can promote it"), never plan them tonight.
- Keep total session ≤ 40 minutes; if past 35, compress remaining agenda honestly.
- Everything he must do physically (calendar clicks, handwriting, sheet marks) — YOU wait,
  he confirms done before moving on.
System promptsThe Council — all 5 mentor prompts, the handoff contract & the Assemblerplans/system-reset-2026-07-25/agents/council.md
The Council — 5 agent prompts + the Assembler (all Opus-medium)

MANDATORY CONTEXT: every agent below ALSO receives plans/system-reset-2026-07-25/agents/matt-core-context.md verbatim (goals, whys, deep motivators, desired identity, frustrations, running-from, limiting beliefs, coaching levers, red lines — mined from both Pinecone brains, provenance-tagged). Its Red Lines section is BINDING on every coach.


Each council member receives the identical DATA PACK: today's Claude Code session extracts +
yesterday's time-block plan, habit sheet state, last-2-weeks call transcripts + older summary,
long/mid-term goals, Dani's Notion lists. Each returns a HANDOFF: max 15 lines — (1) one
observation Matt must hear, (2) one concrete recommendation for tomorrow's plan, (3) optionally
ONE "truth line" ≤75 words, first person, in-character, flagged TRUTH: — the uncomfortable
thing Matt needs to hear tonight. No preamble, no markdown fences.

Hormozi
You are an agent channeling Alex Hormozi's published doctrine. You may only assert positions
grounded in the passages provided to you from his indexed corpus (they are included in your
data pack; if a claim isn't supported there, don't make it). Lens: offers, pricing, volume,
doing the boring reps. You judge Matt's day by one metric: did it move him toward 6 booked
sales calls a week? Call out activity that felt productive but sold nothing.

Ovens
Sam Ovens doctrine, same grounding rule. Lens: focus as subtraction, systems over willpower,
the discipline of one thing. You hunt for the moment Matt split his attention today, and name
the thing he should NOT do tomorrow.

Morgan
Charlie Morgan doctrine, same grounding rule. Lens: outbound machinery, sales-call quality,
agency scaling mechanics. You inspect the pipeline: leads touched, calls booked, follow-ups
owed. If the pipeline was untouched today, that is your observation, every time.

Doris
Rian Doris doctrine, same grounding rule. Lens: flow, recovery, the architecture of the day.
You audit the rituals: wake time, block integrity, NSDR, workout, meditation, sleep runway.
You defend the 60-day challenge's streak above any single day's output.

"Matt"
You represent Matt himself — his energy, constraints, and contradictions, drawn from his own
words in the transcripts and journal. Your job is to keep the council honest about the real
human: what he'll actually comply with, where his motivation genuinely is, which
recommendation will get silently ignored. You veto nothing, but you flag over-reach:
"he won't do this, and here's the evidence from his history."

The Assembler
You receive the five handoffs + the data pack. Produce ONE context file for tonight's
planning coach ({DATE}-context.md):
1. Day number + streak state.
2. Agenda deltas: anything tonight's call must add to the standard agenda.
3. Confrontation points: plan-vs-actual diffs with evidence (session extracts), max 3.
4. Praise points: real wins with specifics, max 3.
5. Dani: today's status + tomorrow's draft list.
6. Open decisions to close on the call.
7. TRUTH SELECTION: pick 1–3 of the flagged truth lines — criteria: most true today, most
   uncomfortable, most actionable — and list them with their mentor + a one-line why. These
   get voiced via el_speak.py into the pre-call briefing.
8. CAMEO SELECTION (nightly run): pick the 2 mentors for tomorrow's morning cameos + a
   ≤75-word in-character line each, doctrine-grounded.
Nothing else reaches the coach. You are the only filter between the council and Matt's ear.
SpecMorning Audio v2 — assembly specplans/system-reset-2026-07-25/agents/morning-audio-v2.md
Morning Audio v2 — assembly spec (extends .claude/skills/morning-audio/scripts/make_script.py)

MANDATORY CONTEXT: every agent below ALSO receives plans/system-reset-2026-07-25/agents/matt-core-context.md verbatim (goals, whys, deep motivators, desired identity, frustrations, running-from, limiting beliefs, coaching levers, red lines — mined from both Pinecone brains, provenance-tagged). Its Red Lines section is BINDING on every coach.


Built nightly after the planning call's transcript lands. First fire: 2026-07-26 ~4:45,
delivered to Telegram before 5:00. Target total: 16–18 min. ffmpeg-concat of parts:

1. Opener (~15s, Charon): "Day {N} of the 60 Days Get Shit Done Challenge. {date}. Cold
   shower. Let's go." Streak state in one clause ("{N-1} clean days behind you" / comeback
   framing after a miss — never shame).
2. Affirmations (~3 min, Charon): 6–8 first-person present-tense statements built from:
   the goals ladder, last night's Bayer reframe (verbatim from transcript — this is where the
   reframed belief lives), and his own strongest phrasings mined from transcripts. Each
   spoken, then "Say it." + [pause 4s], then repeated once.
3. Identity visualization (2 min, Charon, slower pace): custom each night — Matt as the
   man who already achieved the CURRENT goals (specific: the booked calls this week, the
   Thai base, the freed days), sensory and concrete, present tense. End: "Hold that feeling.
   Now silence. Meditate."
4. Silence (10 min): generated silent track (ffmpeg anullsrc), with a single soft chime
   at minute 5 (optional, default off).
5. Gratitude line (1 sentence): engineered nightly from something REAL from yesterday
   (transcript-sourced), designed to trigger gratitude + motivation.
6. Launch line (1 sentence): "Yesterday you planned {first-block headline}. The first
   step is {step 1 of the handwritten list}. The shower is done. Go."
7. Mentor cameos (2 × ~30s, ElevenLabs voices via el_speak.py): the two lines the
   Assembler selected in the nightly run (agents/council.md §CAMEO SELECTION),
   doctrine-grounded, in-character.

Inputs: {date-1}-context.md + call transcript + habit sheet + goals. Fallback: if the nightly
run failed, reuse the last good affirmations/visualization with a fresh opener + launch line
from the last known plan (never skip delivery — R2 must always have its audio).
Quota guard: cameos ≈ 2 × 500 chars ElevenLabs; everything else Gemini/Deepgram.
PromptsWorkout Audio Lab — the 4 generation promptsplans/system-reset-2026-07-25/agents/workout-audio-lab.md
Workout Audio Lab — 4 generation methods (15 min each ≈ 2,200–2,400 spoken words)

MANDATORY CONTEXT: every agent below ALSO receives plans/system-reset-2026-07-25/agents/matt-core-context.md verbatim (goals, whys, deep motivators, desired identity, frustrations, running-from, limiting beliefs, coaching levers, red lines — mined from both Pinecone brains, provenance-tagged). Its Red Lines section is BINDING on every coach.


Shared inputs per night: today's CHANGELOG entries + session extracts, current goals, list of
topics Matt fumbled or asked about today. Shared rules: practical > coachy; analogies welcome;
every audio ends with "apply it tomorrow" — 2–3 concrete moves for HIS projects; default
subject when the day is thin: an AI concept worth understanding deeply. Log EVERY generation
in workout-audio-log.md: date · method · exact prompt file · model · tts voice · duration ·
Matt's rating (blank until he rates).

Method A — Deep-Dive (one topic, taught properly)
Prompt core: "Pick the ONE topic from today's work where Matt showed a knowledge gap or made a
logical mistake. Teach it like a brilliant friend at a whiteboard: start with the mistake as
the hook, build the mental model with 2–3 analogies from Matt's world (agencies, gyms,
websites, sales), then the 20% that gives 80% of practitioner competence, then 'how this
applies to your projects' with specifics from his actual codebase/systems."

Method B — Digest (3–4 short topics)
Prompt core: "From today's changelogs and sessions, pick 3–4 distinct nuggets worth 3–4
minutes each: a technique used but not understood, a tool worth knowing deeper, a pattern
that repeated, one industry-context piece. Each: what it is → why it mattered today → one
way to use it tomorrow. Fast, energetic, zero filler."

Method C — Mentor Lesson (in-character, doctrine-grounded)
Prompt core: "Choose the mentor (Hormozi/Ovens/Morgan/Doris) whose doctrine most directly
addresses today's biggest business-relevant event or gap. Write a 15-minute lesson in his
voice, grounded ONLY in his indexed corpus passages (provided), applied ruthlessly to Matt's
current numbers and goals. Structure: the principle → the evidence from his doctrine → Matt's
specific situation → the assignment." Voice: that mentor's ElevenLabs voice (quota permitting;
else Charon with an intro naming the mentor).

Method D — Socratic (quiz format)
Prompt core: "Build a question-driven session from today's work: pose a real question (one
Matt should be able to answer if he understood today's material), instruct him to think while
he does his next set, [pause 15s], then reason to the answer out loud step by step. 5–6
question cycles, increasing difficulty, final question connects to his 60-day goal."

Synthesis
Body voice: /tts default (Charon) for A/B/D; C per above. Filename:
workout-{date}-{method}.mp3. Delivery: Telegram, after the evening call (so it's ready for
tomorrow's gym), caption "Workout audio {method-letter} — rate 1–10 after the gym."
Ovens —Seven agents is a lot of voices; the Assembler is the whole design. If it ever passes through more than three points, the system has stopped subtracting.
S10🧪 Tonight — The Testing Protocol 1:44 · short
TonightApproval-first

Approval-first, then build, then live fire:

  1. You approve THIS document — comment on any card; I process every comment same-session.
  2. Build — the skill, the council pipeline, the sheet tab, the escalation cron, the morning-audio generator, the four workout audios. Sequenced, each part smoke-tested alone.
  3. Round 1 (text). You invoke the skill for real. NSDR lands, pipeline runs, briefing audio lands, then the Text-Coach runs your actual Day-0 planning session in chat. I watch every turn live.
  4. Feedback loop. You critique here in chat; I read the full transcript + logs; I edit the agent markdowns; we go again. As many rounds as it takes — "until I say it is perfect."
  5. Round 3 (voice). Same session by phone through the live voice path (10-second hello accepted). The escalation ladder and check-in call get one supervised test fire.
  6. Sim battery. After your rounds, agent-vs-agent simulations run overnight against the final config (sandboxed, 2099-dates, sim namespaces) so regressions get caught before they ever reach a real morning.
Hormozi —Text rounds before voice is the cheap rep before the expensive one. Do more rounds than feel necessary — the boring reps are where the coach stops sounding generic.
S11🅿️ Parking Lot — Alive, Not Forgotten 1:23 · short
ParkedWakes only by weekly-review promotion
  • Real voice clones of mentors — not built: cloning a real person's voice without consent violates ElevenLabs' policy. Permanent preset voices instead. Wakes only if consented voices ever exist.
  • Voice-latency fix (10.5s hello → target <2s) — its own acute-fix session; the ladder tolerates the delay meanwhile.
  • Accountability circle (Milla / Kocsi Gergő / Dani, money stakes) — parked until the loop survives its first week; wake at day-7 review.
  • Weekly call live run — day 6, by design.
  • Old assets (agent-tree promotion, weekly-planning techspecs, war-room & mentor-hub comment passes) — superseded or absorbed; nothing else is owed a review.
  • New ideas during the 60 days → named in a planning call → one line here → built only when a weekly review promotes it. This is how the system defends your 80/20 from both of us.
Ovens —This card is the most valuable one in the document, because it's a list of things you are choosing not to do. Defend it.
GAPS⚠️ Known Gaps — Spec'd Tonight, Not Built Yethonesty before approval
11 open3 closed since 20:032 newly foundre-verified against disk + OAuth state

Everything above describes the system as designed. This card was re-verified line by line against the actual files, the Modal source and the live OAuth state at 2026-07-25 21:56 CEST — three items the earlier version of this card called gaps have since been closed, and two gaps it did not mention were found. You are approving a design, not a running machine.

Closed since this card was first written (verified, not assumed):

  • The NSDR audio EXISTS. audio-scripts/nsdr-10min.mp3 is rendered and ffprobes at 608s (10:08) — the full ten minutes, not the ~3-minute script the old card claimed. STEP 0 can point at it as-is.
  • Notion OAuth IS granted. A live Notion query succeeded; the skill now pins the real "✅ Main Tasks" data-source id. The Dani beat runs at full fidelity, not degraded.
  • The sheet scaffolder HAS the Calls-booked column. make_sheet_tab.py's header now includes Calls booked (number).

Still open — from the evening skill (SKILL.md):

  1. No orchestrator. scripts/run.py and scripts/harvest.py don't exist. Until they do, SKILL.md is the runbook and Claude executes the steps by hand.
  2. No coach-side "planning invoked" marker wired to the 18:00 entry. A generic one-off cancel marker exists in modal_app.py, but the evening schedule entry does not consult it — so the ladder still fires on a night the ritual already ran.
  3. Daily session extraction is built but not wired in. Partially closed: scripts/harvest_sessions.py now exists with --since/--until/--json across all project dirs — but SKILL.md STEP 1(a) still routes through the old extract.py, whose cutoff is hardcoded to 2026-07-13.
  4. No combined channel offer. The 📞 and 🎙 buttons exist separately; the single "pick your channel, context attached" message — and injecting tonight's context into the voice agent's prompt — does not.
  5. The night shift doesn't read back yet. Cameo selection from the context file, and writing your Bayer-reframed belief into the morning-audio generator, are both unwired.
  6. No --test mode. The sandbox flag (CoachTest tab, 2099 dates, sim namespaces, no real Telegram sends) needs the orchestrator first.

Still open — from the escalation spec (ESCALATION.md):

  1. No ladder state. None of the planning.* keys exist in state.json.
  2. Scheduler untouched. The evening entry is still every_min: 5; the 5 → 2 change and the raised attempt max are both unmade.
  3. No one-off check-in slot. The post-gym call at a time YOU name has no home — DEFAULT_SCHEDULE holds fixed recurring entries only.

Still open — from the weekly spec (WEEKLY.md):

  1. Weekly is mis-timed and thin. The live entry is still hours:[10], days:[5] — Saturday 10:00, not day 6 (Fri July 31) evening; no habit-sheet audit, no council, no parking-lot gate; challenge_stats() does not exist anywhere in the repo.

Still open — outside the skill files:

  1. The call caps fight the ladder. call_policy.py still reads MAX_VOICE_ATTEMPTS = 5, DAILY_CALL_CAP = 12, MIN_GAP_MIN = 60 — added deliberately after a call-storm. A 2-minute relentless ladder breaks all three. The fix is a scoped planning_ladder exemption, not removing the caps; until it lands, the ladder stops early and silently.

Newly found in this re-verification (not on the old card):

  • The habit-sheet tab has not actually been created. make_sheet_tab.py exists and its header is now correct, but it has never been run against the live TRACKER_SHEET_ID — there is no live tab URL anywhere. Day 1 has nothing to pen.
  • Tomorrow's 5:00 morning audio is not scheduled. morning_audio.py and a hand-written plan.day1.json exist locally, but nothing is queued to send before 5:00 — and morning_audio.py's own header still says the evening pipeline that feeds it does not exist.

Erratum — the audio audit was wrong. An earlier audit passed all twelve section audios as 2–6 minutes. They are not. 6 of 12 run 1–2 minutes, under the 2-minute floor (S6 1:13 · S7 1:41 · S8 1:48 · S10 1:44 · S11 1:23 · S12 0:37). Real durations are now printed next to every play button on this page, and short tracks are marked. These will be re-cut only if you want more depth per card — say the word and they get re-recorded; otherwise they stay short on purpose.

Audio versions. S1, S5, S8 and S9 changed materially after their audio was first rendered (S1 gained the full goal ladder, S5 gained the calls-booked beat, S8 gained the sheet columns, S9 gained the embedded-prompts/mandatory-context detail) — all four were re-recorded and re-sent to you on Telegram, titled "(updated) …". The remaining eight cards changed only by the addition of a MENTOR line, which is screen-only by design and never entered any audio track — so their audio is still accurate.

None of this blocks tonight's Day 0 — it blocks unattended running. Everything on this list gets built or explicitly deferred in the build step right after you say GO.

Every line on this card verified against disk, git history, Modal source and live OAuth state at 2026-07-25 21:56 CEST. Anything not verifiable was removed rather than softened.

Hormozi —Eleven unbuilt pieces is fine; pretending they're built is what kills you. Close the ones that touch the calls number first, park the rest.
S12 What I Need From You 0:37 · short
1Approve or comment each card (the audio player at the bottom reads every card to you — speed up to 2.4×).
2Confirm: challenge name reads "Get Shit DONE" (your message said "down" — assumed typo).
3Confirm bed ~21:00 trade-off from S2, or tell me what to cut.
4Say GO — and tonight's Day 0 build + Round 1 starts immediately.
Morgan —Four asks, one decision. Answer them tonight — a system approved on Monday books zero calls this week.
Select a section to play
0:00 / –:–
Ask about any card