Everything you build now has an altitude.
Your framework's most usable idea for both developer work AND business work is the 3 Levels of Learning — Tactics · Principles · Essence. Treat each of those as an altitude. Every product tier, every agent, every Claude session, every sales conversation gets tagged with an altitude. Once altitude is legible on everything, three problems solve themselves at once:
- Pricing collapses into clarity. Tactics tier · Principles tier · Essence tier. No debate.
- Delegation gets accurate. Tactics → AI / junior humans. Principles → senior operators + you. Essence → you only.
- Claude sessions stop drifting. Every CLAUDE.md declares an altitude. Every session log records what altitude was walked. Drift becomes visible before it costs a week.
This doc gives you the altitude system, the mapping to your existing products, the Claude session standard, the agent-altitude registry, the sales overlay, the developer's "build to protect" protocol, and this week's specific actions.
Three altitudes. every artifact tagged.
Same three names your framework already uses. Now they're operational — attached to files, tiers, sessions, and price tags.
| Altitude | Who owns the work | What it produces | Where it lives in you |
|---|---|---|---|
| TTactics | AI · junior human · outsourceable | Reproducible outputs. Same input → same result. Documented in a checklist or a script. | The scaffolding script. The pain quiz. The intake form. The Basic tier deliverable. |
| PPrinciples | Senior operators + you · reviewed | Judgment-anchored patterns. Rules that generate ten tactics. Frameworks other people can teach with. | The 20-problem matrix. The 6 AI Agent Levels. The Trainer Blueprint. The Premium tier deliverable. |
| EEssence | You only · non-transferable | Character · nature · inclination. Voice. Advocacy. The credential that can't be delegated. Referral-driving quality. | The advocacy calls. The tuned Personal LLM. The Trainer OS SaaS-tier relationship. The essence layer is the moat. |
The tagging convention
Every artifact in your repos gets one of three tags in its frontmatter or first line: altitude: T, altitude: P, altitude: E. Once you can grep for altitude, you can audit — which files are tactics-only? Which agents claim essence-level output but produce tactics? That gap is where quality dies.
Your product tiers already map to the ladder.
You didn't build them this way on purpose — but they align cleanly. That's the framework confirming your instincts. Lock the mapping publicly.
How this changes the discovery call
Add one question to the discovery script: "Are you buying steps · a pattern · or the thing that only shows up when someone becomes the person doing it?" Their answer picks the tier — not you. This is your framework doing the qualifying.
How Claude sessions run from here forward.
Same discipline in every repo you touch — hooks-os, fbtrainer-tojcampaign, smallbusiness, subject-report, and any future client OS. The standard is the framework, applied to your dev practice.
The 5-rule Claude Operating Standard
- Every CLAUDE.md declares an altitude in its first 20 lines. Line reads:
Operating altitude: [T · P · E]— with a one-line explanation of what that altitude means for this repo. - Every session opens by stating intention (Level 01). No implementation without a named outcome. If the session starts with "hey, can you look at…" — that's a discovery session, not a build session. Name it.
- Take action after disruption (Level 01B). When a build hits friction — a failing test, a route 404, a broken script — do not reroute. Fix and continue in the same session. Rerouting is how systems die at Level 06.
- Every session log records altitude walked. One line at the end of each session:
walked: T · Porwalked: E. Auditable over time — you can see when a repo drifts to tactics-only and course-correct. - Culmination gets a commit tag. When a session produces a Level 09 (Culmination) artifact — the big thing that everything else led to — the commit prefix is
culmination:. Grep-able. That's how you find the compounding assets six months later.
CLAUDE.md template addition
# Operating altitude: E · essence-level
# Reason: this repo produces the voice/advocacy/character layer for Margin Hooks.
# Tactics + principles live in downstream systems; essence is authored here.
# Session altitude declaration (paste at top of every session prompt):
# "This session is operating at [T/P/E] · outcome: [one sentence]"
Session end-log convention
## Session · 2026-07-17
**Altitude walked:** P → E
**Outcome shipped:** framework page + implementation companion
**Culmination touched?** yes · the "framework IS continuity" thesis clicked
**Disruption + response:** browser screenshot timed out → switched to read_page, continued
**Handoff:** deploy tomorrow · lock the standard into hooks-os CLAUDE.md
Six moves. every altitude runs this loop.
Same six steps whether you're building an agent, closing a client, or launching a product. This is the daily-mode. Capture → Triage → Approve → Eval → Execute → Notify.
The 6-step core workflow
- Capture quickly. Voice memo · hotkey · mobile note · one-line paste. Straight into the Inbox — no organizing on the way in. Speed matters more than shape at this step.
- Triage into a bucket. Every item goes into Next · Doing · Waiting · Done · Ad-live. Zero items live in Inbox at end of day.
- Approval gate on Q&A items. Anything that needs a human read (draft to send, agreement to sign, message to publish) hits an explicit approval gate. No agent skips this step.
- Evals + guardrails. Every automated output runs through the guardrail checklist (tone · structure · compliance · hard lines) before it's delivered. Fails the eval → agent retries or reshapes. Never delivers messy work.
- Agent executes · retries · revises to spec. The agent works the task to the shape defined by the eval. If it can't clear the bar in 2 tries, it routes back to review — not to the output surface.
- Notify phone when human attention is needed. Push notification on approval gates, escalations, missed SLAs, and completed high-value work. Attention flows to your phone, not the other way around.
This loop is altitude-agnostic. A Tactics agent runs it in seconds. A Principles workflow runs it over a week. An Essence engagement (like a Trainer OS client's monthly tuning session) runs it over 12 months. Same six moves. Different clock.
Every agent gets an altitude tag.
The 6 AI Agent Levels are a technical architecture. Altitudes are what they produce. Both matter — but altitude is the one that tells you whether the agent is safely operating in-scope.
| Agent | Archetype | Altitude | Why |
|---|---|---|---|
| OS Scaffold Script | Act | TTactics | Reproducible. Same input → same repo. Zero judgment. |
| Weekly Stats Cards | Act | TTactics | Template-driven. Data in, cards out. Consent gate is a rule, not judgment. |
| Content Cadence Tracker | Triage | TTactics | Records status. Doesn't decide what to post. |
| Pain Quiz | Triage | TTactics | Score → tier recommendation. Reproducible. |
| Discovery Call Script | Coordinate | PPrinciples | Framework runs the call. Human applies judgment inside the frame. |
| Engagement Monitor | Triage | PPrinciples | Pattern detection over time. Not just "record" — "notice." |
| Voice Rules v1 → v6 | Draft | PPrinciples → EEssence | Ladder. v1 encodes principles. By v6 it produces essence-quality drafts on its own. |
| Personal LLM (12-mo arc) | Draft + Coordinate | EEssence | The end goal. Voice/character/nature installed into an operating brain. |
| Margin's advocacy call | Human only | EEssence | Cannot be delegated. Framework acknowledges this by design. |
The audit rule
Once a quarter, grep every skill/agent for altitude tags. Any agent producing at a higher altitude than tagged is a risk. Any agent producing at a lower altitude than tagged is a delivery gap. Both get logged in improvements.md.
Every agent answers seven questions.
Fits on one page. Seven questions. If any answer is "we'll figure it out later," the agent is not trusted yet — no matter how good the output looks. Add this block to every SKILL.md's frontmatter.
| # | The question | Why it matters |
|---|---|---|
| 01 | What wakes it up? | The trigger. Time-based, event-based, or manual. Without a defined trigger, the agent is theoretical. |
| 02 | What context can it use? | Data + memory scope. Which files, which prior sessions, which client folder. Everything else is out-of-scope by default. |
| 03 | What tools can it use? | Allowed MCP / API / script surface. Everything not on the list is blocked. This is your build-to-protect layer. |
| 04 | What can it do by itself? | The autonomy zone. Actions that don't need approval. Draft a caption? Yes. Send it? No — that's Q05. |
| 05 | What does success look like? | Definition of done. What shape does the output have to hit? This becomes the eval spec. |
| 06 | Where does it need approval? | Every hard gate. "Never publishes" is an approval gate. "Never sends money" is an approval gate. |
| 07 | When does it escalate to a human? | Kill-switch conditions. Failed eval twice, ambiguous input, hard-line violation → route back, don't force through. |
Example · weekly-stats-cards spec
7-question sheet
01 · Wakes: Sunday night default · raw paste dropped in data/inbound-stats/YYYY-WW-raw.txt.
02 · Context: data/stats/canonical-athletes.md · last 4 weeks of stat files · each athlete's profile.md.
03 · Tools: Anthropic SDK (Haiku model) · Playwright + Chromium · local filesystem write.
04 · Autonomy: Parse paste · resolve names · generate card art · draft 4-channel copy · roll up per-athlete season files.
05 · Success: Canonical file with zero PENDING-MATCH · 4 card templates per qualifying athlete · brief in output/reports/.
06 · Approval: NEVER PUBLISHES. Cards land as drafts. Kyron approves per-card in the brief.
07 · Escalation: PENDING-MATCH → exit 1, Kyron reconciles. Missing consent on a minor → no card generates, flagged red.
Guardrails vs Evals
Guardrails
The rules that define what "good" looks like. Tone of voice, structure, formatting, compliance, hard lines, task boundaries. Guardrails are always-on — they don't wait for a test.
In hooks-os: skills/margin-voice/'s "banned phrases" list. weekly-stats-cards/'s consent gate. The 4 tier register rules in margin-voice. Every hard-line clause across every skill.
Evals
The checklist or test layer that runs outputs against the guardrails before delivery. If output fails → agent retries · reshapes · or routes back to review. Never delivers messy work.
In hooks-os today: the PENDING-MATCH exit code in parse-stats.mjs. The consent gate in build-cards.mjs. The "would I have written this?" score in the LLM tuning playbook.
Add this rule to improvements.md across all client OSes: every skill in skills/ has a 7-question spec block in its SKILL.md frontmatter. If it doesn't, it's not shippable — no matter how promising the demo.
Turn a human job into tested labor.
The gap between "AI could probably do this" and "this agent is tested labor" closes with one method. Shadow the human. Extract the spec. Build the eval set. Run against it before you sell it.
The 5-step build sequence
- Shadow · 10 to 20 real runs. Screen recording + narration. Not hypothetical — actual work being done by the human. Every friction point gets logged.
- Extract the spec. Triggers · rules · handoffs · edge cases → answers to the 7 questions above. This is when the spec becomes real; before this it's a wish.
- Build the eval set from real examples. 20-50 real inputs with expected outputs. This is the receipt that proves the agent works — not a demo, a set.
- Run agent against eval set until it clears the bar. Fail rate under X% = ship-ready. Fail rate above X% = the spec is wrong, not the agent. Return to step 2.
- Ship as tested labor. The pitch is not "AI does X" — the pitch is "here are 30 real examples · here's the pass rate · here's the guardrail · here's what you approve."
Why this changes the sales conversation
Once shadowed and evaluated, the agent stops being a promise and becomes a receipt. That's the difference between "vague automation" (which prospects have been burned by) and "tested labor" (which they'll actually pay for at the SaaS tier).
Where to shadow first · in order of ROI
- Margin's Sunday stat sheet workflow — already spec'd, but the shadow set makes the eval set. 10 real weeks of pastes.
- Kyron's Monday triage flow — the actual meta-workflow. Shadow yourself for 4 Mondays. The extracted spec becomes the Control Tower's next automation.
- The advocacy call log entry — Margin logs post-call. Shadow him for 10 calls. Extract the spec. That's the Coordinate agent for CBH advocacy.
The prospect's altitude picks the tier.
Instead of guessing tier from budget or roster size, read altitude. Then let the tier follow. Fewer arguments, higher-quality clients.
Discovery add-on question
"Are you looking for steps to run · a pattern to teach · or to install what only shows up when someone actually becomes the person doing it?"
Steps → Basic. Pattern → Premium. Install → SaaS. If they can't tell you which, run through the 20-problem matrix — where they linger reveals altitude.
Objection ↔ altitude mismatch
"$17K is a lot for a website." → tier mismatch. They're pricing Basic tactics against SaaS essence. Not their fault — you didn't explain altitude.
"$1,500 doesn't sound like enough." → also tier mismatch. They want Essence but are shopping Tactics. Redirect to the discovery frame above.
Add to the walkthrough script
One line, delivered early: "There are three altitudes to what we do. Basic is the steps · Premium is the pattern · SaaS installs what makes it yours. Fifteen minutes from now you'll know which one is for you — not the other way around."
The developer's protocol.
Kyron's principle from the notes: utilize LLMs · build to protect yourself · developers don't always operate with integrity (Empire of AI, Karen Hao). Here's what that becomes in practice.
Local-first, always
Every prompt, voice rule, skill spec, and CLAUDE.md lives in a git repo you own. If Anthropic (or OpenAI, or anyone) sunset a model tomorrow, your framework doesn't die — you retarget to another model and the corpus persists. Never store your framework in a vendor's UI-only surface.
Model-agnostic scaffolding
Where possible, your scripts call models by role (draft-agent, parse-agent), not by hard-coded model id. Swap the underlying model in one config change. Today you use claude-haiku-4-5 for parsing; next year you swap it out without touching the pipeline.
Own the corpus · own the tuning
Voice rules, patterns, principles all live in markdown in your repo — not in a fine-tune the vendor hosts. Fine-tunes get deprecated. Markdown doesn't. Your Personal LLM path is a prompt-engineered LLM against your own growing corpus — that's cheaper AND more portable than a hosted fine-tune.
Every automation has a kill switch
Every skill in hooks-os has a "never publishes automatically" clause. Codify that as a repo-wide rule: no agent writes to a network endpoint you can't unplug in one file change. The weekly-stats-cards skill is the pattern — writes to output/ only, human approves, human posts.
Client data stays with the client
Every client OS is a separate repo (hooks-os, next: trainer-name-os). Their data does not cross into other repos or into your central corpus without an explicit transcript-candidate step (see the pattern already in toj-transcript-candidates-[week].md). That's your integrity layer as an operator managing multiple clients' brands.
The framework is the continuity product.
You already named this in the notes. Here's how it operationalizes.
One layer per month for 12 months
| Month | Layer walked with client | Deliverable |
|---|---|---|
| M1 | Foundation · PPP audit | Their PPP snapshot · what's already true, what needs to become true |
| M2 | Levels 01–02 · Intention + Inspiration | Locked 12-month outcome + inspiration corpus |
| M3 | Levels 03–04 · Illumination + Identification | Named breakthroughs · handles for future reference |
| M4 | Level 05 · Separation / Distinction | Their vocabulary defended · brand voice v2 |
| M5 | Level 06 · Segmentation | Phase discipline installed · no more parallel-fires-of-2 ways |
| M6 | Level 07 · Systemization · quarterly review | First "push-button" asset live in their OS |
| M7 | Level 08 · Delegation | Their first agent + first human delegatee, both operating |
| M8 | Level 09 · Automation | First trigger-based automation running unattended |
| M9 | 4 Values of AI · quarterly review | Their AI usage audited across the 4 values |
| M10 | Level 10 · Culmination | The big thing recognized · culmination artifact named + shipped |
| M11 | Level 11 · Relaxation | Recovery loop installed · they're not the bottleneck anymore |
| M12 | Essence graduation · annual review + renewal | Personal LLM at 90% "would I have written this?" · renew for Year 2 essence-level compounding |
This is the SaaS-tier promise made specific. Renewal happens because they can see which layer is next. Attrition happens when the layer they need doesn't get scheduled. Now it's on the calendar from day one.
Don't build empty data centers.
Kyron's data center model applied to TOJ: paying customers before infrastructure. Pain before product. Signed pilot before the next tier.
The data center rule
The data center model requires paying customers who bring their own service. The operator owns the expensive infrastructure (GPU) and charges by the hour. Every revenue must come from a real pain customer. Do not sell (or build) data centers that are empty.
Applied to TOJ
No product tier, feature, or agent gets built ahead of a signed pilot funding it. Hooks-OS is the paid pilot funding Trainer OS. The next 4 SaaS closes fund the next tier of tooling. Never the other way around.
The 3 checks before building anything new
- Is there a signed pilot funding this? If no — do not build. Sell it first. Even at a heavily discounted "pilot rate."
- Is the pain real and named? "A trainer might want this" ≠ "Coach [Name] signed a pilot to solve this." Only the second counts.
- Does this graduate into a productized asset after the pilot? If it's a one-off for one client, price accordingly and don't multiply it into the roadmap.
Distribution strategy · one niche + one workflow
Build around one niche and one workflow first. Then create content that shows: the pain · the agent fix · the measurable outcome. Not "we do AI for trainers" — instead "Coach Hooks was spending 3 hours a week on Sunday stat cards; now it takes 15 minutes and looks like this. Here's the before, the after, and the eval scores." That's distribution content that converts.
Run the business from your phone.
You operate between meetings, airports, and work sessions. Approvals happen on iPhone. Notifications drive attention. The operator's control surface is mobile-first — full building/coding stays desktop.
What mobile-first means
Capture · triage · approve · trigger. From the phone. Between meetings, at the gate, in the car (voice memo → transcript → inbox). This is the 4-move surface that runs 80% of your daily operator work.
What mobile-first does NOT mean
Full session-driving from mobile. Deep building, code review, and multi-file architecture work stay on desktop. The phone is the execution layer — the desktop is the authoring layer.
The 3 mobile-first surfaces to build (in order)
| # | Surface | What it does | Where it lives |
|---|---|---|---|
| 01 | Approval Inbox | Push notification when a card brief · a message · a proposal needs approval. Tap → see the item → approve/reject/comment. | Lightweight PWA · /approvals route · reads from output/reports/ |
| 02 | Capture | Hotkey / share-sheet → item lands in Inbox with auto-triage tag. Voice memo → transcript → categorized into Next/Doing/Waiting/Done/Ad-live. | iOS Shortcut → webhook → data/inbox/ |
| 03 | Trigger Workflow | One-tap "start Sunday stat cards" · "spawn Monday triage session" · "kick off discovery follow-ups". Trigger sends the run request; execution happens on the desktop/server. | PWA · /trigger route · calls scaffolding webhooks |
Tool candidates for v1
GoHighLevel mobile app already supports approvals, notifications, and pipeline movements — closest thing to a ready-to-use approval surface. Leftclick AI for iPhone-native workflow deployment. Custom lightweight PWA as the long-term answer once patterns lock in — served from the fbtrainer-tojcampaign repo, wraps the Approval Inbox + Capture + Trigger.
Recommendation for v1
Start with GHL mobile + iOS Shortcut for capture. Cost: near zero, already in your stack. Build the custom PWA at Month 6 once the workflows are known-good. Do not build the PWA first — that's an empty data center. See 07B.
What to do before Sunday.
The 10-action punch list (v1.1 · after notes integration)
- Add altitude tag to hooks-os CLAUDE.md. One line, top of file.
Operating altitude: E. Same in fbtrainer-tojcampaign (mixed T+P), same in smallbusiness (mixed T+P). Sets the standard by grepping across future sessions. - Tag every existing skill + agent in hooks-os with altitude in the SKILL.md frontmatter. Use the audit table in Section 04 as the seed. Any surprises get logged in
improvements.md. - Add the 7-question spec block to every SKILL.md in hooks-os. Use the Section 04B template. Any skill that can't answer all 7 gets flagged as "not shippable yet" until it can.
- Wire the 6-step loop into the daily workflow.
workflows/daily.mdgets a preamble: Capture → Triage → Approve → Eval → Execute → Notify. Every session runs the loop. - Shadow yourself for Monday triage · 4 weeks. Screen-record + narrate. At the end of Week 4, extract the spec + build the eval set. That becomes the Kyron-Triage-Agent.
- Update the discovery call script (/discovery) with the altitude question in Section 05.
- Update the walkthrough script (/walkthrough) with the one-line altitude framing early in the call.
- Wire the 12-month continuity delivery calendar into every Trainer OS signed contract. Appendix to the agreement. Renewal conversations start Month 10.
- Add the 5-rule Claude Operating Standard to CLAUDE.md in all three campaign repos. Copy from Section 03 verbatim.
- Set up mobile approvals · v1 route. GHL mobile app + one iOS Shortcut for voice-memo → inbox capture. Do NOT build custom PWA yet — that's an empty data center. Revisit at Month 6.
Ten actions. Total time ~3 hours across the week. The compounding starts the second altitude tags + 7-question specs become grep-able across every repo — everything the operating brains do from that point forward is auditable, and everything you sell becomes tested labor instead of vague automation.