vjra.us / launch

Project Nightingale — Launch Command Center

← Research Library
Agent: Greeter

Enter your API Key

Your Anthropic API key is used directly in the browser to call Claude. It is stored only in this browser session and never sent to any server.

Don't have a key? Get one at console.anthropic.com

01 · Business Problem
The Problem
When a PM or TPM runs a product launch, they become the human switchboard for the entire org. Engineering asks about the rollback plan. Marketing asks about the press embargo. The VP wants a 30-second status read. Sales wants objection-handling scripts.
Answering the same core questions from five angles, all day, for weeks — is not a good use of their time.
The Solution
A voice AI Command Center that routes every stakeholder to the right specialist automatically:
Technical Readiness — engineering, QA, deployment, rollback
GTM & Marketing — campaigns, press, sales, competitive
Executive Briefing — status, risks, budget, milestones
02 · Solution Description
Why Not One Agent?
One giant system prompt gets confused about which "mode" to be in — response quality degrades as it gets longer
A single agent may leak marketing budget numbers when answering a technical question — no information boundaries
All agents share the same tone — can't be precise for engineers and concise for executives simultaneously
Why Multi-Agent Orchestration?
Each subagent has a short, focused prompt — the LLM knows exactly what role it's playing, keeping quality high
Each subagent only sees the KB files relevant to its domain — information is scoped and cannot cross boundaries
Each node is independently testable and debuggable — fixing one agent doesn't affect the others
02 · Technical Architecture
Model
Claude
sonnet-4-6
via Anthropic API
Orchestration
4 agents with scoped system prompts. ROUTE: signals switch agents mid-conversation.
KB Scoping
3 KB files embedded in JS. Each agent only receives files relevant to its domain.
Vector DB
Pinecone (production) · ChromaDB (local dev)
Index: nightingale-launch
Namespaces: technical gtm launch
cosine similarity · 1536-dim
Chunking
Chunk size: 512 tokens
Overlap: 64 tokens
Strategy: recursive text splitter · top-k = 5
Embeddings & Voice
Embed: text-embedding-3-small
62M params · 5× cheaper than large · retrieval quality on par for short structured KB docs · low latency for real-time routing

STT: Web Speech API
TTS: SpeechSynthesis · Daniel · rate 0.92
04 · System Architecture Multi-agent voice + text AI on static hosting
🎤
Voice
Web Speech STT
Text
Chat input
You
G
Greeter Agent · Orchestrator
Classifies intent from any question → emits ROUTE: signal → hands off to the right specialist
claude-sonnet-4-6
T
Technical
Readiness
Engineering · QA · Deployment
Rollback · On-call · APIs
M
GTM & Marketing
Go-to-Market
Campaigns · Press · Messaging
Sales enablement · Competitive
E
Executive
Briefing
Status · Risks · Budget · KPIs
Milestones · Full KB access
KB_TECHNICAL
Sprint · QA · APIs
Deploy · On-call
512 tok · 64 overlap
KB_GTM
Channels · Messaging
Metrics · Objections
512 tok · 64 overlap
KB_LAUNCH + all KBs
Roadmap · Budget
Stakeholders · Risks
Full access · 3 namespaces
🗄
Pinecone Vector Store
nightingale-launch text-embedding-3-small 1536-dim · cosine
Infrastructure
🤖
Anthropic Claude API
claude-sonnet-4-6 · direct browser access
📄
GitHub Pages
Static hosting · no backend · CDN cache
🎙
Web Speech API
STT input · SpeechSynthesis TTS · Daniel voice
🔑
sessionStorage
API key scoped to tab session · no server exposure
Knowledge Base Manifest — 3 Files
KB_TECHNICAL → Technical agent only
Sprint status · QA · APIs · Deploy · Rollback · On-call
KB_GTM → GTM agent only
Channels · Messaging · Competitive · Sales · Metrics
KB_LAUNCH → All agents (Executive gets all 3)
Roadmap · Stakeholders · Budget · Risks · Milestones
KB files embedded as JS string constants in launch.html — each agent only receives its scoped files via buildKB(agent)
Agent KB Access Matrix
Agent KB_TECHNICAL KB_GTM KB_LAUNCH
Greeter (G)
Technical (T)
GTM (M)
Executive (E)
Orchestration Logic
🔀 ROUTE: Signal
Agent emits ROUTE:technical in response
JS parses via ROUTE_RE regex
Switches currentAgent + rebuilds system prompt
Up to 3 hops per message
💬 Conversation
history[] — full message array
Passed to every API call as messages
resetChat() clears history + DOM
Agent context survives within session
🎤 Voice Pipeline
STT: Web Speech API SpeechRecognition
TTS: SpeechSynthesis
Voice: Daniel · rate 0.92 · pitch 0.88
Toggle via mic button in input bar
Routing Table — Intent Classification
User asks about Routes to Signal
Engineering, QA, sprints, deployment, rollback, APIsTechnical (T)ROUTE:technical
Campaigns, press, messaging, competitive, salesGTM (M)ROUTE:gtm
Status overview, budget, risks, milestones, KPIsExecutive (E)ROUTE:executive
Goodbye, thanks, doneEnd conversationROUTE:end
Cross-routing: specialists can also emit ROUTE: to transfer to each other mid-conversation
Environment & Config
🔑 API Configuration
Model: claude-sonnet-4-6
Header: anthropic-dangerous-direct-browser-access: true
Key storage: sessionStorage (per-tab, never server-exposed)
Hosting: GitHub Pages — static, no backend
🎨 Design System
Fonts: Cormorant Garamond (italic) + Inter (body)
Background: #f8f4ee (matches vjra.foundation)
Accent: #b85042
Breakpoints: 768px / 480px mobile responsive
Production Design — Vector DB (not used in static demo)
Parameter Value
ProviderPinecone (prod) · ChromaDB (local)
Indexnightingale-launch
Namespacestechnical · gtm · launch
Embeddingtext-embedding-3-small · 1536-dim
Chunk size / overlap512 tokens / 64 tokens
SimilarityCosine · top-k = 5
Why text-embedding-3-small?62M params · 5× cheaper than large · retrieval quality on par for short structured KB docs · low latency for real-time routing
Current demo embeds KB as JS constants (no vector search). Production would use Pinecone for chunked retrieval.
Key Design Decisions
Why static hosting? Eliminates server cost and deployment complexity. API key in sessionStorage — scoped per tab, never persisted. The anthropic-dangerous-direct-browser-access header enables browser-to-API calls.
Why multi-agent? Each subagent has a short, focused prompt → higher quality. KB files scoped per domain → no info leakage. Each agent is independently testable.
Why JS KB constants? For a demo, embedding KBs in the static file eliminates the need for a running vector DB server. Production design uses Pinecone for dynamic retrieval.
Why no framework? No LangChain/LangGraph — the ROUTE: signal pattern is simple enough that vanilla JS handles routing. Self-contained in one .html file.
End-to-End Flow — How a Question Gets Answered
1
User Input— Voice (Web Speech API STT) or text input captured in the chat bar
2
Greeter Agent— Classifies intent from the question. Emits ROUTE:technical, ROUTE:gtm, or ROUTE:executive
3
JS Route Parser— Regex ROUTE_RE extracts the signal. Switches currentAgent and updates the agent pill in the header
4
KB ScopingbuildKB(agent) selects only the KB files this agent is allowed to see (Technical → KB_TECHNICAL + KB_LAUNCH)
5
System Prompt Assembly— Agent's system prompt + scoped KB + global rules concatenated into the system parameter
6
Claude API Callfetch('https://api.anthropic.com/v1/messages') with claude-sonnet-4-6, anthropic-dangerous-direct-browser-access: true
7
Response Parsing— Check for ROUTE: signal in response. If present → cross-route to another agent (up to 3 hops). If not → display answer
8
Render + Speak— Agent avatar + response bubble rendered in chat. TTS speaks the answer via SpeechSynthesis (Alex voice, rate 0.92). History updated for conversation continuity
Production extension: Steps 4-5 would be replaced by Pinecone vector retrieval (index: nightingale-launch, top-k=5, text-embedding-3-small) via scripts/query_pinecone.py
🧑
You
G
Greeter
T
Technical
Readiness
M
GTM &
Marketing
E
Executive
Briefing
Response
Ask anything — the right specialist responds automatically
How Agents Transfer
Greeter
Routes to Technical, GTM, or Executive based on your first question
Technical
Transfers to GTM for marketing/press. Transfers to Executive for summary or budget.
GTM
Transfers to Technical for bugs/deployment. Transfers to Executive for status overview.
Executive
Transfers to Technical or GTM if you drill into specifics.
Cross-Routing

Any specialist can hand off mid-conversation — routing is transparent to you.

Say "now tell me about marketing" while in Technical and it switches automatically.

Up to 3 hops per message before a clarification prompt.

Agents & Roles
GreeterWelcomes you, detects intent, routes to the right specialist
TechnicalSprint status, QA, bugs, deployment, rollback, on-call, architecture
GTMCampaigns, press, messaging, competitive, sales enablement
ExecutiveHigh-level status, risks, budget, milestones — full KB access