Two Birds Innovation · Ontario, Canada 🍁

One person, shipping like a team.

Built without writing a single line of code.
7,077
Commits across 15 repositories, counted 8 October 2026. Every one written through an AI agent that reads the codebase, edits files, runs the tests, and commits to Git. One business person, no engineering team, zero lines of code written by hand.

The products aren't the hard part. The harness underneath them is: guardrails that keep it safe, governance that keeps it honest, and enough flexibility that one business person can build, test, and adapt real software with no developer and near-zero cost. Aaron Patzalek, 15+ years in category development, innovation, and customer experience, started Two Birds Innovation in early 2026 and built that system first. This page shows what's running on it.

6 products in build
DCC the most mature
4 AI engines
working in turns
63 skills committed
incl. vendored packs
15 repositories
built
$0 hosting
cost
✓ Sovereign — no vendor lock-in ✓ Open source core — $0 licensing
🛠️
Technical stack
What's actually running: MCPs, agents, architecture, the sovereignty table, every product in build. For anyone who wants to see under the hood.
🏢
Business operations
The org, who does what, and what it costs — the same system explained in plain business terms, no technical background required.
The Model

A software studio that runs itself overnight

Most people using AI are using it like an assistant. This is using it as the engineer. Months went into building the infrastructure, the shop floor, before worrying about the products that sit on top of it.

An idea can land in a backlog at midnight and have committed code, passing smoke tests, and a health report waiting by morning. It does not even have to be typed: hold a key and talk, or send a voice note from a phone. Speech is transcribed on the machine with Whisper, not by a cloud transcription service. One person running a studio that ships like a five-person team.

The cost structure: $0 hosting, $0 npm packages in any product repo. Sovereignty-first, and as close to free as possible. Nothing runs on pay-per-use AI. The work rides subscriptions already paid for (Claude, ChatGPT, Google AI Pro and OpenCode Go), spread across four engines so no single vendor is a single point of failure, and the one unattended route that used prepaid API credit is switched off. There are a small number of named, bounded exceptions (currently a low-cost AI video tool), chosen because the output stays owned and portable, not because sovereignty stopped mattering. No vendor can price you out of the system you built.

What's Connected

The stack

Counted from the repository and the live configuration. The figures below are recomputed by the nightly build, and the date on each one says when it last was.

📊 Capability snapshot
4
AI engines in the
overnight loop
63
skills committed to the repo
(incl. reviewed vendored packs)
4
MCP servers wired into
the engine configs
21
Claude Code custom agents
for specific sprint types
Engines: Claude Code orchestrates and judges, Codex runs the overnight work, OpenCode handles browser work and open models through a local gateway, and Antigravity with Gemini is used as an IDE and CLI (its pay-per-use API route stays off, and it now runs through its command-line print mode on the Google plan). The two main paid accounts (Claude and Codex) each have a weekly usage cap, and any engine can be switched off with one line in a file. MCP servers wired into the engine configs: GitHub, Notion, Playwright and NotebookLM. Known gaps: coverage across engines is uneven (queued work), and the architecture page is still a hand-typed snapshot. Claude.ai account connectors are listed separately below and are not part of these counts.

Engines (who does the work):

Claude CodeCodexOpenCodeAntigravity / Gemini

MCP servers (how engines reach tools):

GitHubNotionPlaywrightNotebookLMContext7Sequential Thinking

Voice and phone:

Local dictation (Whisper)Telegram voice notesText-to-speech (Kokoro)Business phone line (VoIP.ms)Project Harrier (alpha)

Automation, and tools being weighed:

n8n (scheduled and triggered jobs on the always-on machine)Dynamic Workflows (Claude Code, trialled and passed, Claude plan only)Hermes Agent (installed, trial not started)Orca (under consideration)

Also available on demand in Claude.ai (account connectors, not counted above):

GmailGoogle Calendar Google DriveSlack NotionAirtable CanvaFigma MiroExcalidraw GammaZoom for Claude CalendlyDocusign TodoistZapier CloudflareVercel SemrushAmplitude Hugging FaceStripe ShopifyBitly IndeedZipRecruiter MalwarebytesSpotify PDF ViewerMermaid Chart LinearMicrosoft 365 Windsor.aiAudible Consensus

📖  Stack 101: the tools in the stack, in plain English  →

What each tool does, whether it is in or out, and why.

The Workflow

From idea to live — one sprint

Same flow, grouped by what each stage does: an idea is captured, routed to an engine, executed in isolation, and verified before anyone calls it done.

Capture
1
Say it or send it

Hold Ctrl+Space and talk, or send a Telegram voice note from a phone. Dictation and Telegram voice notes are transcribed on the machine with Whisper, not by a cloud transcription service. Forwarded videos and links are transcribed, scored and filed the same way.

Whisper (local)Telegramlive preview
2
Filed with an owner

The idea becomes a backlog item with a priority, an effort and return rating, and an owner. An autonomy check blocks anything an agent can do itself, so only work that truly needs a person reaches the human queue.

NotionGit sprint queueautonomy check
Route
3
The orchestrator picks the job

An operating-system timer, not an open terminal, wakes the supervisor every ten minutes. It picks the next job by priority, checks it for collisions and design gates, and sends it to an engine that has headroom.

overnight-loop.pysystemd / Task Schedulerpriority order
4
Engines take turns

Claude Code, Codex, OpenCode and Antigravity share the work. The two main paid accounts have a weekly usage cap, so neither gets drained. A capped, down or switched-off engine is skipped automatically and the next one takes the job.

weekly capsfailoveron/off file
Execute
5
Work happens in a disposable copy

The engine works in a throwaway clone and never touches the live working tree. It may only edit the paths the job declares, it cannot delete or rename files, and its result is secret-scanned before it can land.

severed cloneallowed pathssecret scan
6
Static HTML pushed to GitHub Pages

No build step, no Node.js, no npm in the product repos. Git push, and GitHub deploys in seconds. $0 hosting. WCAG accessibility checks run automatically via GitHub Actions on every push.

GitGitHub Pagesaxe-core CI
Verify
7
Checked before it counts as done

Tests run first. For anything on a live site, the real page then has to pass a Playwright check. Landing is fast-forward only, so a failed job cannot overwrite good work.

Playwrightlive verificationfast-forward only
8
Nightly build and health checks

At 2am the overnight build re-checks every product, re-syncs the repos and recomputes the numbers on this page. A health check runs whenever a session starts, and scheduled jobs leave a heartbeat, so a job that goes quiet is flagged within a day or two.

Task Schedulerheartbeatsclaims check
Human in the loop

Every step above runs without a person. This is the one node that is not automatic: the decisions, approvals and judgment calls that only a human can make. Everything an agent can resolve on its own never reaches it.

Architecture

Five layers. Built to run without babysitting.

Products on top. Automation and orchestration in the middle. Several AI engines, held to hard rules, as the workforce. Sovereignty principles at the base. Every choice above L5 must survive the test: "if this vendor disappeared tomorrow, what breaks?" (The name's a nod to 2001: A Space Odyssey. Make of that what you will.)

HAL Stack · Architecture
L1
Products — what users see · GitHub Pages
DCC Adults DCC Kids Career Coach Clarity KevsCasa NormeScore 2 Birds Innovation (consulting)
L2
HAL Stack: automation and orchestration · overnight build
Sprint queue Orchestrator Headless sprint runner Engine routing + weekly caps Overnight build (2am) Playwright smoke tests Uptime monitor Autonomy audit Health checks + heartbeats n8n Dynamic Workflows Scribe intake Project Harrier (alpha) The Chronicler Job scanner Daily briefing (Logan v3)
L3
AI + Governance: the workforce · review personas · hard rules
Claude Code Codex OpenCode Antigravity + Gemini Hermes Agent (installed, trial not started) Orca (under consideration) 4 MCP servers wired 63 skills 21 custom agents Scrappy Pack (6) Founding Board Inner Circle Design gate Voice-check protocol Token guard
L4
Infrastructure — hosting · CI/CD · local compute · fleet
GitHub Pages GitHub Actions (15+ workflows) Git · 15 repos Four-machine fleet Local model gateway Local speech Private Command Deck Task Scheduler + systemd Python stdlib Codeberg mirror (not yet active)
L5
Sovereignty Foundation — principles that constrain every choice above
Static HTML/CSS/JS only No npm in products Open-source first Self-hosted before SaaS Subscription-first, no surprise API bills Audio stays local A reason on file for every tool Canadian English SR&ED-tracked research Decapitation-checklist gated
Governance

The hard rules — enforced on every sprint

These aren't preferences. They're gates. If a rule fires, the sprint stops until it's cleared.

🔒
Design Gate
Fires before any UI sprint starts

Four conditions required: PRODUCT.md exists, /impeccable audit has run this quarter, a human approved the shape brief for structural changes, dark mode tested on Android Chrome. Any one missing — sprint doesn't start.

🧑‍🤝‍🧑
Persona Panel Review
Fires at every Stage 3+ sprint completion

Before results commit, the sprint is reviewed by a panel of AI personas: the Scrappy Pack, the Founding Board, and the Inner Circle. A REWORK verdict blocks the commit. The panel catches what a solo operator misses when heads-down.

🎙️
Voice Check
Fires before any content leaves the system

Every email, landing page, or grant submission is scanned against a banned word list. A compliance tag is appended proving the scan ran. Nothing goes out unscanned.

🛡️
Sovereignty Check
Fires before any tool is added to the stack

Before any SaaS, API, or dependency lands, the decapitation checklist runs, and the tool's written rationale is read first: why it was chosen, what it replaced, and what a swap would have to beat. If this service disappeared tomorrow, what breaks? No paid service without proof no sovereign alternative exists.

⚡
Autonomy Gate (AWR)
Fires before any task reaches the human queue

Three checks: Can PowerShell or Python execute this? Can an MCP tool handle it? Does it only need files and scripts? If any yes — the agent does it. Only genuinely human tasks reach the queue.

🔢
Token Guard
Always on — every AI session

The guard blocks an identical call repeated three times in a row and any touch of credential files, and warns and logs when a single turn passes 120 and then 200 tool calls. The warnings never stop the work; they make a runaway loop visible.

✅
Live Verification
Fires before anything on a live site is called done

Nothing that touches a live site is done until a Playwright check passes against the real URL. Domain and DNS changes also get a check through the real public path, on a deep page, not just the home page. Reporting "done" past a failing check is treated as a serious defect.

🛑
Deletion Guard
Fires before anything destructive

Deleting data, rewriting git history, or removing cloud resources needs an explicit yes from a human in that session. A hook enforces it, so an agent cannot talk its way past it.

⚖️
Capacity Caps
Fires before an engine takes a job

The two main paid AI accounts each have a weekly usage cap of 75%. Past it, the engine is skipped until its weekly reset, so no subscription is run dry and no engine becomes a hidden single point of failure.

🔬
Proof It Works
Fires before a scheduled job counts as done

A new scheduled job is not done when it runs once. It needs a trigger confirmed on the live scheduler, a heartbeat, an alert threshold, and a test where the trigger is removed and the health check turns red.

The Overnight Loop

What runs at 2am every night, and all day

🔄
2:00 am
11 repos pulled and pushed

The 11 active product and portfolio repos synced from remote and pushed to GitHub. Fewer than the 15 built, because archived, template and utility repos are not in the nightly set.

📊
2:01 am
Lighthouse audits across all products

Performance, Accessibility, Best Practices, SEO scored. Results written to quality/lighthouse-results/.

🧪
2:03 am
Playwright smoke tests

Headless Chromium hits all products. Checks key elements, exercises user flows. Screenshots on failure.

🔍
2:05 am
Autonomy audit

Scans every open backlog item. Anything the AI can handle gets flagged for the agent. It never reaches a human.

📬
2:06 am
Approved outbox sender

Emails approved in the outbox folder are sent via smtplib. No SendGrid, no subscription.

📰
2:07 am
CoS daily briefing generated (Logan v3)

Reads session wins and Notion P1 items, writes a morning briefing. Ready when the laptop opens.

📈
20th of month
StatCan LFS data refresh

Pulls Statistics Canada Table 14-10-0287-01. Extracts national unemployment rate. Updates Career Coach automatically.

📈
2:08 am
Numbers on this page recomputed

The claims check re-counts commits, repositories, skills, engines and products from their sources and stamps the date it ran. If this job does not run, the date visibly stops moving.

🧭
Every 10 min
Orchestrator tick

An operating-system timer wakes the supervisor. It dispatches the next eligible job, watches the one in flight, and moves a stuck job to another engine. No terminal has to stay open.

🐦
Every 15 min
Scribe intake

Checks the Telegram inbox for forwarded videos, links and voice notes, transcribes them on the machine, scores them against current work and files them.

🫀
All day
Heartbeats

Scheduled jobs write a heartbeat as they finish. A missing or stale one raises a flag at the next health check, so a job that quietly stops is noticed within a day or two.

The Products

What's running on the shop floor

🧠
Digital Confidence Centre — Adults
Most mature alpha
→ Libraries · Municipalities · Seniors

29-module digital literacy platform. Bilingual EN/FR. WCAG AA. Built for the gap left when federal Digital Literacy Exchange Program funding ended on 31 March 2025 (a program that had reached over 650,000 participants). Licensing for libraries and municipalities; pricing is on the DCC for libraries page.

🧒
Digital Confidence Centre — Kids
Alpha
→ School Boards · Libraries · Youth Programs

Digital literacy curriculum for children. Online safety, AI literacy, technology judgment. Same trust-first architecture as the adult platform. Built on the same codebase — not a separate product, a major line extension.

💼
Career Coach
Alpha
→ Employment Agencies · Career Centres · Job Seekers

AI-assisted job search. Pulls live StatCan unemployment data monthly. CV customization, salary research protocol. B2B model targets employment agencies and college career centres.

📡
Clarity
Alpha
→ Ontario SME Owners

Free 15-minute AI readiness diagnostic. Seven questions. Personalized SWOT and action plan. Qualifies consulting leads before they book a call. Every local SME in Elgin County is a target.

🏠
KevsCasa
Alpha
→ Rental Seekers · Housing Navigators

Apartment search and tracking dashboard. Started as a personal civic tool for a friend in London, ON. The repository is private and there is no public site, but the daily listing-refresh automation runs against it and has for months. Being positioned as a white-label housing navigator.

📊
NormeScore
Specified
→ Regulated Canadian Professionals

A technology-readiness diagnostic with sourced Canadian benchmarks, so an adviser can see where their own practice stands before advising clients on technology. Spec complete; deliberately held at the gate until one positioning decision is made.

🏢
Business Strategy Consulting
Available
→ Founders · Operators · Growth-Stage Teams

Strategy and operations work for businesses that are growing, stuck, or looking for new perspectives. Technology as one tool in the kit, not the pitch. Direct engagement model — you work with Aaron, not a team of juniors. Reach out via the consulting page to explore fit.

Architecture Principle

Sovereign by design — every tool gets audited

Before any tool lands in the stack, it passes a sovereignty check. The question: if this service disappeared tomorrow, what breaks?

FunctionWhat we useWhat we rejected
HostingGitHub PagesVercel / Netlify
ScriptingPython stdlibnpm packages
SchedulerTask SchedulerCloud cron SaaS
Monitoringuptime-monitor.pyDatadog / PagerDuty
Smoke testsPlaywright OSSBrowserStack
Email sendsmtplib (Gmail)SendGrid / Mailchimp
Backup mirrorCodeberg.orgGitHub only
FrontendStatic HTML/CSSReact / Next.js
Model routingOmniRoute (self-hosted)OpenRouter / LiteLLM
On the Horizon

What's being built next

A live snapshot of what's in motion right now — some locked in, some still in design. The shop floor keeps adding capability.

🎬
LOON — video engine
In development
→ Explainer & product video, in-house

A near-zero-cost pipeline that turns a script into a narrated, animated explainer video — bilingual EN/FR. First outputs already rendered. Brings video production in-house without a studio or a subscription stack.

🐦
Content intelligence — Scribe
Running, alpha
→ Idea capture & triage

Forward a video or clip and the system pulls the transcript, scores it against what Two Birds is actually working on, routes the strong ones, and catalogues the rest for the record. Built from tools already in the stack.

🧪
DCC beta program
In development
→ Real users before launch

An invite-based beta so real seniors and the family members supporting them shape the Digital Confidence Centre before public release. Feedback loop and invite flow drafted.

🎛️
Command Deck consolidation
In development
→ One control surface

Folding the separate dashboards into a single command deck — every product's status, backlog, and health on one screen, reachable from the phone.

🪺
Symphonica(Multi-Harness Build Orchestrator)
Building
→ Coding work that keeps moving

Routes coding work across Claude Code, Codex, OpenCode and Antigravity by real-time capacity and weekly usage caps, so work keeps moving when one tool hits a limit. The supervisor, the disposable-copy runner and the landing checks are live: an overnight run is started on request, then runs without anyone watching. What is still being built is the safety net around it: canary jobs, clearer failure alerts, and engine coverage that is the same everywhere.

🎨
Design-language library
In development
→ On-brand builds, faster

Adopting vetted, open brand design systems so any new page can be scaffolded on-brand in one shot — each one cross-checked against the stack's sovereignty rules before it's pulled in.

📱
Project Harrier (mobile voice agent)
Alpha
→ Acting on a voice note from a phone

Send a voice note or a text from a phone and it acts: the audio is transcribed on the machine, then turned into a calendar invite, a formatted Google Doc or a Notion page. Transcription happens on the machine, it runs on subscriptions already paid for, and a safe hold replaces any pay-per-use fallback. Next: voicemail triage and a morning briefing.

🎙️
Voice in every coding tool
In development
→ Hold a key, talk, see the words as you speak

Hold Ctrl+Space and talk, with live text while you speak, in any coding tool. The live preview and local transcription work today. Delivering the final text into every tool the same way is being hardened.

🧭
What is coming
Plans, not promises
→ Next steps for the stack, no dates

Planned: the Hermes Agent trial, once its gate is cleared. Possibly Orca, for running several tools side by side. Already done: the overnight loop moved to the always-on machine (m73), and the Antigravity engine now runs through its command-line print mode on the Google plan, with its pay-per-use API route off.