Act I · Pre-Alpha
Built with Claude Cowork · 42 sessions

Operation Meridian

A real-time spy thriller played across a native iPhone PWA, real SMS, live voice calls, and the player's actual inbox. Five integrated APIs running one cohesive fiction. Architected solo in 24 days in Claude Cowork.

Threat
Real AI
Using AI to solve an AI threat
Operative
MERIDIAN
You. Right now.
Window
72 hrs
Real-world clock
Channels
5 live
SMS · Email · Voice · Portal · Push
// Mission Briefing

A spy story that lives outside the screen.

Operation Meridian is a real-time investigation game. From the moment you start, the mission runs on a real clock against your real life. AI-driven handlers brief you over voice calls, INTEL drops hit your inbox, encrypted SMS chatter arrives on your phone, and a native iPhone PWA ties it all together: dashboard, intel, cipher lab, cables, pinned evidence, comms, and an accusation panel that closes when the window expires.

You're racing four AI agents, a fallible analyst named VESPER, and a cast of suspects across 88 authored game slots, 52 INTEL documents, 15 dossiers, and 9 puzzle types, from caesar and vigenère to fingerprint deduction. Three suspects. Four possible endings. One chance to call it.

Architected solo. Shipped in 24 days.

Every figure below is from the live codebase, not a marketing approximation.

0 Total lines of code JS · EJS · CSS · SQL
0 Lines of JavaScript across 95 files
0 Git commits (v2) 445 total across repos
0 Calendar days to build v2 solo, with Claude
0 Authored Act I game slots across 16 slot types
0 HTTP endpoints 6 route modules · 24 services
0 Live delivery channels SMS · email · voice · portal · push
0 Claude Cowork sessions 88.9 hrs of direction-giving

One engine. Five channels. Real life.

A single Node/Express core fans out to the player across every device they actually use, and a hand-authored slot system schedules every beat.

Delivery pipeline · live
Sources
  • 88 slots
  • 52 INTEL items
  • 15 dossiers
  • 14 email templates
  • 9 puzzle types
Meridian Core
  • 67 endpoints
  • 24 backend services
  • 9 migrations
  • 8 Supabase tables
  • state machine + scheduler
Player Devices
  • Twilio SMS
  • Resend Email
  • Vapi Voice
  • Player Portal (7 tabs)
  • Push Notifications
sms_inbound
sms_outbound
email_briefing
email_dossier
voice_outbound
voice_inbound
portal_unlock
intel_drop
cipher_unlock
cable_message
push_alert
scene_state
act2_briefing
act2_evidence
act2_pivot
act2_accuse

// 16 slot types · 12 original Act I + 4 Act II extensions

Bespoke Tooling

A custom tool, made for the job.

A 6,451-line, single-file planning application: no framework, no build step, no dependencies. The Slot Timeline Organizer turns 88 narrative beats into a draggable, zoomable, dependency-wired swim-lane timeline. Put together in one session, deployed behind admin auth.

6,451 lines
336 KB self-contained
0 dependencies
9 swim lanes
5-day track
39 auto-wired dependencies
6 zoom levels
3-layer state model
/admin/organizer · Slot Timeline Organizer
Lane
Day 1
Day 2
Day 3
Day 4
Day 5
ALEX
brief.001
tasking.012
cable.034
extract.067
FOXHOUND
leak.004
intel.021
push.041
CIPHER-6
vigenere.008
decode.029
unlock.058
GHOST
cable.018
tip.037
final.082
// vesper
analysis.006
read.026
read.071
// email
brief.002
dossier.024
dossier.052
// sms
drop.003
drop.014
keyword.036
final.078
// voice
call.001
call.045
// portal
unlock.011
tab.032
accuse.075
F.01

9-Lane Swim Timeline

5-day horizontal track, 4 agent lanes (Alex / Foxhound / Cipher-6 / Ghost) and 5 system lanes (VESPER, email, SMS, voice, portal). 88 cards live where they belong.

F.02

Drag-To-Wire Dependencies

Hover any card to reveal ports. Drag between ports to create cascade relationships. 39 dependencies auto-parsed from the episode spec and rendered as bezier curves on a canvas overlay.

F.03

Type-Aware Inspector

Click a card; the inspector pulls actual authored prose from 6 different sources (Supabase tables, HTML files, inline JSON). Each slot type renders its own field set.

F.04

3-Layer State Model

seed (immutable spec) → canon (committed) → planning (working layer). localStorage persists between sessions; nothing is lost.

F.05

3-Format Export

Markdown for Slack handoff. JSON Claude-ingest payload with embedded apply-instructions. Diff view shows exactly what changed since canon. One click, three audiences.

F.06

Desktop-Class Interactions

6 zoom levels, space-hold to pan, shift-click multi-select, shift-drag marquee, grouped card clusters, full keyboard shortcuts. Feels like Figma; built in one file.

42 sessions.
One architect.
Claude Cowork.

The game engine, the story, the design system, the iPhone PWA, and this portfolio site were worked out across 42 Claude Cowork sessions over about 24 days. I brought the architecture and the direction. The agent did the building inside it.

The design system (tokens, components, dark and light theming, responsive layout) was built directly in Cowork. No Figma handoff, no separate design tool. Concept to production in one place.

Five integrated APIs. One production deployment.

Every external service is wired into the slot system: no service is bolted on, all five speak the same scheduling language. Running in production on Railway with zero cold starts.

Anthropic Claude

claude-haiku · LLM

Powers VESPER's analyst voice plus 4 agent cable handlers, each with its own system prompt. Drives a 7-intent classifier that routes free-text player replies.

Vapi Voice AI

real-time speech

Outbound briefing calls (90-second cap) and in-portal agent comms (2-5 min). Webhook transcripts persist to Supabase and reappear in the cables tab.

Twilio SMS

inbound + outbound

Real SMS to/from the player's actual phone. Keyword reply system handles commands like FOLLOW, HIDE, and PULL CROSS FIN.

Resend Email

transactional + briefings

14 email templates: briefings, dossiers, magic-link auth, account notifications. Every in-world email looks like it came from the right department.

Supabase

postgres + realtime + auth

Postgres database, session store, real-time state propagation. 8 tables, 9 migrations, full row-level security on player data.

Railway

production hosting

Node.js + Express deployed to Railway: always-on, zero cold starts, GitHub-triggered deploys. The game runs live 24/7, not on serverless functions.

Four agents. One unreliable analyst.

Every voice has its own system prompt, vocabulary, and trust trajectory.

// Codename · Field Handler

Alex

Terse. Tactical. Your direct line.

Runs the mission from the operations side. Short sentences, action verbs, no hand-holding. If something is broken, Alex is the one who says it first.

"Move on the dock. Three minutes. Confirm."
// Codename · FOXHOUND

Sam Reyes

lowercase. distrusts institutions. signs 🦊

A journalist-turned-leaker with a backchannel into agency cables. Won't capitalize a sentence to save their life. Tips you off when the official story doesn't add up.

"they're scrubbing the manifest. ask why. 🦊"
// Codename · CIPHER-6

Morgan Vex

Signals analyst · technical · precise

Lives in the headers and metadata. Talks in vigenère keys, frequency tables, and checksum mismatches. The puzzle handler. The only one who treats the lab like home.

"Key is 7 chars. IC 0.067, English. You've got it."
// Codename · GHOST

Quinn Delacroix

Cryptic. Allegiance unclear.

Drops in on encrypted cables with information you weren't supposed to have. Helpful? Honeypot? The endings split partly on whether you trust them.

"You've been looking at the wrong photograph. Page 3."

VESPER

// Design pattern: calibrated unreliable AI

Most AI assistants optimize for accuracy. VESPER does the opposite, on purpose. It's the in-world analyst on the player's portal, and it's deliberately miscalibrated at known rates across all three acts. The goal: teach players to interrogate AI output rather than accept it. Three of its reads are hand-anchored wrong regardless of dice rolls, a structural design decision, not a bug.

It's the same question enterprises face with AI tooling: when should a human override the machine? VESPER makes that question the game.

Act I · 80% accurate Act II · 60% accurate Act III · 40% accurate + 3 hand-anchored wrong reads

The mission window opens soon.

Operation Meridian goes into closed alpha in the coming weeks. Request access, read the novel that started it, or reach out directly.