How the studio actually runs.
One person. An org chart that can be enforced in code. Most studios hide their process: here’s mine, on the record: the chain a decision climbs, the gates it has to clear, and the exact tools that ship it.
Five layers between an idea and the work.
A one-person studio still runs an organization, an AI-augmented one. Every decision passes through this chain. Click any role to see what it does.
- 9 workflow commands
- 9 managed agents
- 5 enforcement scripts
- 4 Karpathy principles
- ant CLI · authenticated
The hierarchy at a glance
Every layer exists because the WHY survives every step in the chain of command.
Click any node in the chart to see that role’s core question and when it engages.
Nine properties in active build or live stewardship.
Mine, clients, and family — the same roster tracked on the MattEbersole operation map. LII Claims is the current funded client build.
- 9 active properties
- 4 client builds
- 5 owned platforms
Business site, service catalog, checkout funnel. :3002
Portfolio, CRM, Stripe API. :3001
World Harvest HQ platform. Node · MySQL.
Church site, credibility piece. :3003
Client inventory system. PHP/MySQL. $3K paid
Client insurance-claims ops platform — carrier portals, scheduling, field inspections. Engagement A. :3010 · live build
Web app + 3 Electron apps. :3004
Digital sovereignty platform. :3005
Faith tools, ministry MVP. :3006
Not a diagram. Running infrastructure.
That chart is enforced in code: nine workflow commands, nine managed agents, five gate scripts. The structure controls what can happen, not just what should. The same governance ships to you as a drop-in kit for Claude, Grok, Gemini, or any local model.
9 Workflow Commands
Each one runs a four-phase pipeline: Governance → Execution → QA → Deploy. Phase 2 literally cannot start until the council’s sprint file exists. Run them from Claude Code.
9 Managed Agents
Separate agents, separate permissions, run on the ant CLI. The Vision Council can only write sprint files; the builder requires one to exist before it touches a line. The cop can’t be the robber.
5 Enforcement Scripts
validate-sprint, phase-gate, scope-guard, verify-hooks, handoff-validator. They check sprint completeness, gate phase progression, and watch file edits against the authorized list. Zero dependencies.
3 Decision Tiers
Green, Blue, Amber: governance proportional to risk. A CSS fix gets a one-line council note; a client deploy gets the full debate, sprint file, and a notify-before-execute gate.
Karpathy’s 4 Principles
Think Before Coding · Simplicity First · Surgical Changes · Goal-Driven Execution. Encoded into every specialist agent’s brief, not left to good intentions.
The Council Protocol
Four roles, four questions, real disagreement, and a written sprint file before any code. The debate that produces no artifact is, by rule, a debate that didn’t happen.
Free Download
Seven markdown files: the governance framework, council protocol, decision tiers, department structure, and a customization guide. It’s the thinking behind the system, not the full technical build above. Drop it into any AI platform and start organizing how your agents work.
Download the Starter Kit ↓Installed & Customized
Want the hierarchy tuned to your specific business: roles renamed, filters rewritten, decision tiers calibrated, memory seeded with your context? That’s what I do.
$300/hr flat · Pay first, then we schedule
Hire Me to Install It →You don’t rise to the occasion. You fall to your lowest level of training.
Every week the studio checks itself against its own documented standards, before a client ever sees the work. Real log from the latest drill, in plain English.
Violations Caught
- Scroll hijacking on mobile: a third-party scroll library was fighting native scroll. Removed entirely.
- Video loading on slow connections: hero videos fetched on 2G. Now gated behind a live network check.
- Dead code in production JS: seven wired-but-unreachable paths pruned. Smaller payload.
Near Misses Flagged
- Server log skipped after a backend change: caught during the drill before the next client request hit. PM2 log check added to the post-deploy checklist.
- Orphaned rebuild branch left alive: a competing version of the site was sitting on a live branch after a rebuild decision. Archived and tagged before the next deploy.
- Capacity overrun on polish iterations: 130+ deploy runs in two calendar days on one site. Capacity flag raised. The drill exists to catch this kind of drift before it costs a client timeline.
Strengths Confirmed
- Pre-deploy checklist clean every run: HTML validated, CSS structure verified, JS parsed, all new element IDs confirmed unique. No exceptions.
- Server backup before every deploy: timestamped backups on the server before anything gets pushed. Rollback path is always open.
- Content rules held across all nine pages: phone links, ownership language, and client-facing copy verified consistent on every page, every drill.
Latest drill: 2026-06-09 · Cadence: weekly
Three real, recent decisions.
Every meaningful decision in the studio is recorded. Trigger, filter used, outcome. Three examples below, sanitized but not softened.
Resigned the day job
Trigger Fourteen years at one company, six as a bench technician, then Operations Director from 2018 to 2025, with the asset-recording system built and run the whole way. Workload diverging from where I wanted to apply my time.
Filter used Family > ownership > revenue. The salaried role kept the household stable but blocked the studio. The studio felt like the work I’d be doing in 20 years; the role didn’t.
Outcome Resigned. MattCreates is the answer to “what’s the alternative.” Former employer still contracts me part-time for continuity; they’re now launching V2 with their own internal teams.
Killed 10 of 22 projects
Trigger 22 projects in flight. Capacity overrun. Nothing finishing. A structured audit of scattered project history revealed 6+ additional projects I’d forgotten about.
Filter used 6-filter: faith → family → ownership → revenue → capacity → patterns. Capacity broke the tie. Patterns confirmed: starting beats finishing, but finishing pays the bills.
Outcome 9 active, 3 parked, 10 killed. MattEbersole.com pushed to ship before the others.
Rebuilt MattCreates seven times
Trigger v2 → v3 → v4 → v5 → v6 → v7. Every prior version felt like a template, not an art piece. The team kept hearing “polish” when Matt said “depth.”
Filter used Translator’s intent-fidelity test. Translator vetoed v5 and v6 publicly and on-the-record. The Vision Council was added to the hierarchy specifically to prevent this from happening again.
Outcome V7 ships from v3’s engine restored, with the auto dusk/dawn theme and this Operation page as the differentiator. The Vision Council can now be enforced in code. 9 workflows, 9 agents, 5 gate scripts. so a future “polish vs. depth” drift gets caught structurally, not after the fact.
Every tool. With reasons.
No SaaS buried inside the code you get. Linode hosts every line, and you hold the keys. My own build tooling still leans on subscription AI where it earns its cost; full local parity is the direction of travel, not a claim I’ll fake.
Single server hosts every site I run. Predictable monthly bill. SSH access I control and hand to you.
Battle-tested, plain config, .htaccess for vhost-level security headers. Boring is good.
Express backends kept alive by PM2. restarts on crash, logs to disk. The same stack behind USR’s inventory.
Client sites that need a CMS or a real database: twenty years of answers behind every gotcha. Powers a live congregation site.
Subscription AI assistants: today’s primary copilots. They earn the seat. The dependency is real and acknowledged.
Local models on the MacBook (qwen3:8b and friends). Solid for drafts and quick review. Not yet load-bearing; the gap is closing.
The scroll motion you’re feeling. Vendored locally, one ticker, gated on prefers-reduced-motion. Content reads fine with JS off.
Direct integration, never a checkout SaaS layer on top. Keys in env, not in the client.