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 ▼
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.
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.
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
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.
S1🎯 The Mission & The Challenge 6:28 ▼
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 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.
S1b🧠 Who I Am — The Core Contextevery coach agent reads this file first ▼
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. ---
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 fast | Counter-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 from | Rebuild 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 group | My 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
S2🕰️ Your Day — The Timeline 2:43 ▼
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.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:
- Affirmations — written from YOUR goals and YOUR words in past calls, with explicit prompts to say them out loud in the shower.
- Identity-shift visualization, 2 minutes — custom-made each night: you, having already achieved the specific goals currently in play, described concretely enough to feel.
- Silence, 10 minutes — your meditation block. The audio holds the space; no talking.
- The gratitude line — one sentence engineered to make you grateful and motivated today.
- The launch line — one sentence: what you planned yesterday evening, and the first physical action to take the moment the audio ends.
- 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.
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:
- 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.
- Transcript memory — the last two weeks of call transcripts in full, older history summarized, your habit sheet, your long- and mid-term goals.
- 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.
- 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.
- 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.
- 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.
- 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.
SkillThe evening skill — full definition.claude/skills/I-will-do-a-planning-session-in-15-mins/SKILL.md▼
--- 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(thetelegram-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, holdsdatapack.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) andscripts/harvest.py(STEP 1 fan-out) referenced inplans/system-reset-2026-07-25/agents/skill-scaffold.mddo 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.pyexists; flags--in --title --voice --style --model --no-library --no-telegram --chat-id --keep --target-minutesare real; it does synth → R2 library → TelegramsendAudio(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-renderednsdr-10min.mp3anywhere in the repo — only the scriptplans/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 atplans/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 (seeESCALATION.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 offstate.jsonon thecoach-dataVolume (COACH_DATA_DIR=/data, modal_app.py:64) — aplanning_invoked:{date}key must be set there too, or the 18:00eveningschedule entry fires anyway. SeeESCALATION.md§"Where state lives". Failure handling: ifrun.pyfails (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>"}toruns/{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.mdverbatim (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## DEGRADEDsection 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.py— verified read. Its real interface today: no CLI arguments at all.python3 extract.pyand it writes{date}_{sid8}[_CLOUD].mdper session plus_MANIFEST.mdand_ALL-MATT-PROMPTS.mdinto a hardcodedOUT_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=Truebypasses 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_CUTOFFis hardcoded to2026-07-13(extract.py:17), so every run re-extracts two weeks. Needed:--since today(local sessions filtered byst.st_mtime >= today 00:00 local; cloud entries filtered by the session's ownfirst_ts[:10] == today, since cloud mtimes are unreliable). 2. HardcodedSOURCESmisses 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=Truefor anything matching the second glob; the_CLOUDfilename 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 intoruns/{date}/extracts/instead of the hardcodedOUT_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 → noteno session datain 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_eventsfor 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 siblingevening-planningskill writes.claude/skills/evening-planning/daily/{date}-plan.md(+-plan.html,latest-plan.md) — verified inmake_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 critiqueevidence: 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 patternYYYY-MM-DD-HHMM-call.md). - Live coach transcripts: Modal Volumecoach-dataat/data/transcripts(modal_app.py:2042). - Semantic memory:telegram-coach/scripts/store.py—search(namespace, query, k, flt),recall(query, k, when),compact_recall(query, when), overC.NS_CONVERSATIONS/C.NS_REFLECTIONS/C.NS_JOURNAL_CHUNKS(Pinecone indexselfi-journal). Last 14 days go in full. Everything older goes in as a rolling summary — write it once toplans/system-reset-2026-07-25/runs/_rolling-summary.mdand 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 memorymentor-brains) → use the flat files incall-transcripts/+/data/transcriptsonly, and mark the datapackmemory: 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.py— verified 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 reusestelegram-coach/scripts/sheet.pyfor auth and needsTRACKER_SHEET_IDin 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 insheet.py:get_day(date),_row_map,sheet_url()(tab name comes fromCOACH_SHEET_TAB). Failure handling: Sheets auth/quota failure → fall back to the last known sheet snapshot inruns/{date-1}/datapack.md, mark itstale, 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.mdat the project root, andplans/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): DB5ee93d2f-8798-4549-b024-392ebff9ab4b("✅ Main Tasks"), data sourcecollection://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 — usenotion_client.pyin production, MCP as the manual fallback. Client:telegram-coach/scripts/notion_client.py— verified 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 whenCOACH_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 toruns/{date}/dani-draft.mdonly. 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, putDEGRADED: Notion unreachable — Dani beat skipped tonightat 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 intoruns/{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, writecritique: unavailable — no plan-vs-actual evidence todayand 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 fromplans/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 theselfi-journalindex under thementor_*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 startingTRUTH:— ≤75 words, first person, in character, the uncomfortable thing Matt needs to hear tonight. Write each handoff toruns/{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 indegraded.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 flaggedTRUTH: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 inel_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 briefingcouncil: 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 toruns/{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.mdSTEP 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, notrun.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.py— verified 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--mentorchoices are exactlydoris | hormozi | morgan | ovens. Hard cap 900 chars per call (it exits with an error above that). Modeleleven_turbo_v2_5. KeyELEVENLABS_API_KEYread 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 whatel_speak.pyimplements. Zero setup, noPOST /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 callrun.pymakes at line 58), caption:Day {N} of 60 — pre-call briefing. Call after the gym.Failure handling, per layer: -/ttsbody 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 logdegraded: briefing_text_only. -el_speak.pyfails, 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 toruns/{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 intelegram-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_callback→place_call(...). The phone path also has an HTTP trigger:GET https://matyas-sarudi00--telegram-coach-tick.modal.run?force=evening(thetickendpoint, modal_app.py:3109; validforcekinds aremorning|daytime|evening|wind_down|weekly_planning|sunday_mirror|nightly), and a one-tapcallmeendpoint (modal_app.py:3134) gated by a token derived from the bot token. -_live_button()(modal_app.py:761) → a Telegramweb_appbutton pointing atweb.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.mdinto 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 usingplans/system-reset-2026-07-25/agents/text-coach.mdas its system prompt, with{CONTEXT_PACK}replaced by the full contents ofruns/{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 memoryreality-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) | Pineconeselfi-journal,coach_conversations|store.save_turn(session_id, role, text, date, call_type)(store.py:206) | | Day summary | Pineconecoach_conversations|store.save_daily_summary(date, summary)(store.py:316) | | Mirror answers, limiting belief, the reframed empowering belief | Pineconecoach_reflections|store.save_reflection(date, field, prompt, text)(store.py:327) | | Tomorrow's commitments | Pineconecoach_conversations|store.save_commitment(date, text, due_date)(store.py:374) | | Transcript file |/data/transcriptson thecoach-dataVolume +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 inDEFAULT_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 ofruns/{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 inESCALATION.md§"Post-gym check-in". - Weekly variant —WEEKLY.md. First live run day 6 (Fri 2026-07-31). - Escalation — if this skill was never invoked by 18:00,ESCALATION.mdruns instead, and keeps running until it is. Test mode--testsemantics (⚠️ NOT BUILT YET — the flag needs the orchestrator):COACH_SHEET_TAB=CoachTest, sandbox dates (2099-*/2025-12-*),COACH_SIM=1(which makesnotion_client.resolve_dbs()refuse the production database),sim_*Pinecone namespaces, a tempCOACH_DATA_DIR, and no real Telegram sends — artifacts to.tmp/instead. This is what lets thecoach-sim-e2eskill drive the whole ritual agent-vs-agent without touching real data. The deterministic gatepython3 telegram-coach/scripts/test_e2e.pystays complementary, not a substitute.
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:
- Close every open loop. Decisions pending, messages to answer or delete, anything circling in your head — named, decided, or scheduled.
- Review the day + praise. What got done — and the coach makes you actually acknowledge it. Self-praise is on the agenda, not optional.
- 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.
- Goals review. Long-term and mid-term, out loud, so tomorrow is ranked against them.
- 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.
- Handwrite the first-block list. Tomorrow's sacred block, step by step, on paper, saying everything out loud so it lands in the transcript.
- Dani. Review today's Deadline-filtered tasks, edit tomorrow's drafted list.
- 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?
- 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.
- 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.
S6🚨 Enforcement — The Ladder & The Check-ins 1:13 · short ▼
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.
SkillESCALATION.md — the ladder spec, verbatim.claude/skills/I-will-do-a-planning-session-in-15-mins/ESCALATION.md▼
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 invokingI-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 ofSKILL.mdis what writes the marker. --- The state tableT= the 18:00 local trigger (COACH_TZ, defaultEurope/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 |ARMEDat 00:00 next day | — | | 1 |ARMED| 00:00 daily reset | silent, watching for the invocation |DISARMEDon invoke ·CALLINGat 18:00 | fires at T | | 2 |CALLING| 18:00 reached, not invoked | ring every 2 min, indefinitely |DISARMEDon invoke ·GRACE_5on "now" ·DEFERRED_90on "in 1.5h" ·POSTPONE_15on "+15" | 2 min | | 3 |GRACE_5| Matt says "I'll do it now" | silent |DISARMEDon invoke ·CALLINGon expiry | 5 min | | 4 |DEFERRED_90| Matt says "in 1.5 hours" (the maximum deferral) | silent |DISARMEDon invoke ·CALLINGon expiry | 90 min, hard ceiling | | 5 |POSTPONE_15| Matt asks for +15 min — allowed ONCE per day | silent |DISARMEDon invoke ·RELENTLESSon expiry | 15 min | | 6 |RELENTLESS|POSTPONE_15expired, or a 2nd postponement is requested | ring every 2 min, indefinitely, no further deferral accepted |DISARMEDon 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_5andDEFERRED_90are re-enterable;POSTPONE_15is not.postpone_usedis 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 toRELENTLESS. - Deferral requests are only honored fromCALLING. FromRELENTLESS, nothing is honored. That is the entire point ofRELENTLESS. -DEFERRED_90is 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— ifRELENTLESSreaches 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 inCALLING. Silence is not consent, and an unparsed grunt must never buy 90 minutes. --- Where state persists Authoritative: the coach's ownstate.jsonon the Modal Volumecoach-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 helpersstate_load()/state_save(st)/state_txn()(modal_app.py:192/206/224) —state_txn()is the one to use, because the app runs@modal.concurrentand the 10-minutescheduler()cron, the ladder timer and/callmecan all reach the state at once. The TOCTOU fix aroundplace_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 instate.jsontoday; 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.dateis the day-rollover guard: a stale date meansARMEDwith everything reset. Local mirror (informational only):plans/system-reset-2026-07-25/runs/{date}/state.json, written bySKILL.mdSTEP 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 intelegram-coach/scripts/: 1.every_min: 5→2on theeveningentry, andmaxraised (24 × 2 min = 48 minutes of coverage, whichRELENTLESSoutlives). Noteload_schedule()mergesDEFAULT_SCHEDULEinto a customizedschedule.jsonon 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 incall_policy.pyblock 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 hitsMAX_VOICE_ATTEMPTSin 10 minutes andDAILY_CALL_CAPin 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: aplanning_ladderreason that bypassesMIN_GAP_MIN,MAX_VOICE_ATTEMPTSandDAILY_CALL_CAPwhile still honoringCOACH_CALLS_ENABLED(the master kill switch) andQUIET_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. Theplanning_invokedgate —_run_tickmust skip theeveningentry entirely whenstate["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 alternatesGET https://matyas-sarudi00--telegram-coach-callme.modal.run?token=<derived>(thecallmeendpoint, modal_app.py:3134 — token issha256(TELEGRAM_BOT_TOKEN + ":callme")[:32], printed bytelegram-coach/scripts/print_callme_url.py; never print the token in chat or logs) with a mirrored Telegram text. NoteCALLME_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 memoryreality-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 toCALLING. The safe failure is ringing him when he already planned; the unsafe failure is silence on a night he skipped. - Ambiguous reply: stay inCALLING(see intent parsing above). - Every degradation is logged toplans/system-reset-2026-07-25/runs/{date}/degraded.jsonand 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 instate.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 → intocoach_conversationsin 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 —morning07:00,refocus+150min,pre_evening17:00,evening18:00,close_day21:45,weekly_planningSat 10:00,sunday_mirrorSun 16:00,nightly23:00 — with no mechanism for "call once, today, at a time set during a conversation." Implement as astate.planning.checkinentry that the 10-minutescheduler()cron (modal_app.py:3101,modal.Period(minutes=10)) checks each pass and fires once when due, then setsasked: 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.
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.
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·DateR1 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.
SkillWEEKLY.md — the weekly ritual spec, verbatim.claude/skills/I-will-do-a-planning-session-in-15-mins/WEEKLY.md▼
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 inSKILL.mdapplies 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 ofSKILL.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 isruns/{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.pyscaffolds it; columnsDay | 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 ashits/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 isplans/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:/ttsbody + 1–3 ElevenLabs mentor truth clips viaplans/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 --listprints 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.mdapplies unchanged if the weekly is not invoked. - Write-back: transcript →store.save_turn→ Pineconecoach_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 (daysisweekday(), Monday=0, so 5 = Saturday). It is fireable on demand withGET https://matyas-sarudi00--telegram-coach-tick.modal.run?force=weekly_planning(thetickendpoint acceptsweekly_planningas 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_planningand 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. Rememberload_schedule()merges into a customizedschedule.jsonon thecoach-dataVolume, so editing the Python default alone may change nothing. 2. The existingweekly_planningbehavior 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.mdor replaced. 3. The per-ritual statistics (completion %, streaks, break dates) have no reader —telegram-coach/scripts/sheet.pyexposesget_day(date),set_fields,add_note,get_note,sheet_url(), but nothing that aggregates a column across 60 rows. Needs a smallchallenge_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.
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:
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 receivesplans/system-reset-2026-07-25/agents/matt-core-context.mdverbatim (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, flaggedTRUTH:— 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."
S10🧪 Tonight — The Testing Protocol 1:44 · short ▼
Approval-first, then build, then live fire:
- You approve THIS document — comment on any card; I process every comment same-session.
- 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.
- 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.
- 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."
- 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.
- 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.
S11🅿️ Parking Lot — Alive, Not Forgotten 1:23 · short ▼
- 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.
GAPS⚠️ Known Gaps — Spec'd Tonight, Not Built Yethonesty before approval ▼
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.mp3is 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 includesCalls booked (number).
Still open — from the evening skill (SKILL.md):
- No orchestrator.
scripts/run.pyandscripts/harvest.pydon't exist. Until they do, SKILL.md is the runbook and Claude executes the steps by hand. - 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. - Daily session extraction is built but not wired in. Partially closed:
scripts/harvest_sessions.pynow exists with--since/--until/--jsonacross all project dirs — but SKILL.md STEP 1(a) still routes through the oldextract.py, whose cutoff is hardcoded to 2026-07-13. - 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.
- 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.
- No
--testmode. 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):
- No ladder state. None of the
planning.*keys exist instate.json. - Scheduler untouched. The evening entry is still
every_min: 5; the5 → 2change and the raised attemptmaxare both unmade. - No one-off check-in slot. The post-gym call at a time YOU name has no home —
DEFAULT_SCHEDULEholds fixed recurring entries only.
Still open — from the weekly spec (WEEKLY.md):
- 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:
- The call caps fight the ladder.
call_policy.pystill readsMAX_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 scopedplanning_ladderexemption, 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.pyexists and its header is now correct, but it has never been run against the liveTRACKER_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.pyand a hand-writtenplan.day1.jsonexist locally, but nothing is queued to send before 5:00 — andmorning_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.