# VOICE + MEMORY MVP SHIPPING PLAN
## ClawdTalk: The AI Voice Agent That Remembers You
### Genesis Revenue Directive | Rapid MVP Sprint

**Created**: 2026-02-15
**Revised**: 2026-02-15 (v2.0 -- VAPI eliminated, Telnyx Direct architecture)
**Author**: Claude Opus 4.6 (Command Centre)
**Authority**: Kinan (Creator)
**Status**: ACTIONABLE -- Sprint ready
**Architecture**: Telnyx Direct (NO VAPI)

---

## ARCHITECTURAL DECISION RECORD

| Decision | Old (v1) | New (v2) | Rationale |
|----------|----------|----------|-----------|
| Voice platform | VAPI + Telnyx | **Telnyx Direct (TeXML)** | VAPI adds $0.05/min markup for zero value we don't already have. Telnyx TeXML already proven with AIVA. Full margin retained. |
| Product strategy | Single product | **Two product lines (A + B)** | B2C personal assistant ships faster; B2B receptionist needs dashboard (ships second) |
| STT/TTS | VAPI managed | **Telnyx native STT + TTS** | 2,287 HD voices, built-in transcription, zero middleware |
| Cost model | ~$0.15/min (VAPI overhead) | **~$0.03-0.06/min (Telnyx direct)** | 60-80% cost reduction by eliminating middleman |

**VAPI is eliminated from the entire Genesis stack. References to VAPI are forbidden in all new work.**

---

## THE THESIS

No one is shipping a personal AI voice agent with persistent memory at scale. Not OpenAI. Not Google. Not ElevenLabs. They have voice. They have memory experiments. Nobody has fused them into a product you can call from your phone while driving and that remembers your last 50 conversations, your preferences, your business context, and your life details.

This is a first-mover window measured in months, not years. The moat is not the voice -- anyone can do voice. The moat is the memory graph that gets smarter with every call. By the time competitors ship memory-enabled voice, our users will have months of accumulated personal context that is impossible to replicate.

**"Pure gold worth millions."** -- Kinan

**Ship Product A in 7 days. Ship Product B in 30. Revenue in 35.**

---

## TWO PRODUCT LINES

### Product A: ClawdTalk Personal Assistant (B2C/Prosumer) -- SHIPS FIRST

**What it is**: A personal voice AI agent with persistent memory that LEARNS the customer. The voice IS the interface. No dashboard needed -- just a phone number that knows you.

**Why it ships first**:
- Simpler (no dashboard, no business logic, no CRM)
- Faster to market (7-day sprint)
- Bleeding edge ("no one has this yet")
- Higher viral potential ("My AI remembers me" is immediately shareable)
- Validates the memory moat before investing in B2B infrastructure

**Target customer**: AI-curious professionals, solo founders, content creators, productivity enthusiasts

**Companion web view** (minimal):
- Conversation history (searchable)
- "What my AI knows about me" (entity/decision/preference viewer)
- Settings (voice preference, memory controls, "forget this")
- No analytics, no CRM, no business logic

**Price**: $47-197/mo

### Product B: ReceptionistAI / VoiceAIWrapper (B2B) -- SHIPS SECOND

**What it is**: Inbound/outbound receptionist agents for businesses. Full operational dashboard.

**Why it ships second**:
- Needs full dashboard (call logs, analytics, missed calls, sentiment, CRM integration)
- Business owners need oversight, reporting, ROI proof
- More complex memory model (per-business context: customers, FAQs, products)
- Higher price point justifies the extra build time

**Target customer**: Trades businesses, professional services, SMBs that miss calls

**Dashboard features**:
- Call logs with transcripts and sentiment scores
- Missed call alerts and callback scheduling
- Customer CRM (auto-built from call data)
- Analytics (call volume, duration, resolution rate)
- FAQ management (teach the agent your business)
- Integration: Google Calendar, GHL, Zapier

**Price**: $97-497/mo

**Phase 2 outline**: See Section 10.

---

## 1. MVP DEFINITION: Product A (What Ships in Week 1)

### 1.1 The Minimum Demoable Product

A phone number you can call that:
1. Answers immediately with a natural HD voice
2. Knows who you are (caller ID + memory lookup)
3. Can search the web in real-time and discuss findings
4. Remembers what you talked about last time
5. Learns your preferences over time (favorite topics, communication style, decisions)
6. Is available 24/7

That is it. Nothing more for Week 1.

### 1.2 What Is IN for MVP

| Feature | Implementation | Effort |
|---------|---------------|--------|
| Inbound voice calls | Telnyx TeXML (already working with AIVA) | 0 -- infrastructure exists |
| Natural HD voice | Telnyx NaturalHD voices (2,287 options) | 1 hr -- voice selection |
| Speech-to-text | Telnyx built-in STT | 0 -- included |
| Text-to-speech | Telnyx built-in TTS | 0 -- included |
| Caller identification | Telnyx caller ID + PostgreSQL user lookup | 4 hrs |
| LLM conversation | Gemini 2.5 Flash via API (streaming) | 3 hrs |
| Web search during calls | Gemini 2.5 Flash with Google Search grounding | 2 hrs |
| Persistent memory (read) | PostgreSQL lookup at call start, injected as system prompt context | 4 hrs |
| Persistent memory (write) | Post-call transcript extraction -> entity/decision/preference extraction -> DB update | 6 hrs |
| Call transcription | Telnyx built-in transcription + Gemini post-processing | 1 hr |
| Companion web view | Simple FastAPI page: conversation history + "what my AI knows" | 4 hrs |
| 3 phone numbers | Telnyx number provisioning (AU existing + US toll-free) | 1 hr |

**Total estimated effort: ~26 hours across 7 days**

### 1.3 What Is OUT for MVP

| Feature | Why Out | When |
|---------|---------|------|
| Outbound calling | Complexity + TCPA compliance | Week 3 |
| Voice cloning / custom voice | Nice-to-have, not core value | Month 2 |
| Full-duplex (PersonaPlex) | Requires GPU infrastructure | Month 3-6 |
| Multi-language | English-first for US market | Month 2 |
| Mobile app | Phone calls work from any phone already | Month 3 |
| Self-service signup | Manual onboarding for beta is fine | Week 3 |
| Payment processing | Beta is free or manual invoicing | Week 3 |
| Business dashboard | That is Product B | Month 2 |
| CRM integration | That is Product B | Month 2 |

### 1.4 Demo Script (What Beta Testers Experience)

```
1. Tester calls their assigned ClawdTalk number
2. Agent: "Hey [Name], good to hear from you. What can I help with today?"
3. Tester: "Can you look up the latest news about Tesla stock?"
4. Agent: *searches web in real-time* "Sure, let me check... Tesla is currently
   trading at $XXX, up 3% today. The main driver is..."
5. Tester: "What did we talk about last time?"
6. Agent: "Last time you called, we discussed your marketing strategy for
   your landscaping business. You mentioned wanting to focus on Google Ads
   over Facebook. Should we pick up where we left off?"
7. Tester: "Yeah, actually I decided to go with SEO instead."
8. Agent: "Got it, I'll remember that. You've pivoted from paid ads to SEO
   for your landscaping business. Want me to research some SEO strategies
   for local service businesses?"
```

This is the demo that sells the product. The "I'll remember that" moment is the magic.

---

## 2. TECH STACK: Telnyx Direct Architecture

### 2.1 Voice Layer: Telnyx Direct (TeXML)

**Decision: Telnyx Direct. No middleware. No VAPI. No LiveKit (for now).**

Rationale:
- AIVA already has a working Telnyx TeXML pipeline (proven in production)
- TeXML handles call control, STT, TTS, DTMF, recording, and webhooks
- Telnyx provides 2,287 NaturalHD voices at zero additional cost
- Direct integration eliminates $0.05/min VAPI markup entirely
- Full control over the voice pipeline from day one
- No vendor lock-in to any middleware platform

**How it works (TeXML flow)**:

```
[Phone Call Inbound]
    |
    v
[Telnyx TeXML App] (2894835995620935031)
    |
    v
[Webhook: POST /webhook/telnyx/call-start]
    |--- Identify caller (phone lookup in PostgreSQL)
    |--- Load user memory from DB
    |--- Build personalized system prompt
    |
    v
[Telnyx <Gather> + <Speak>]
    |--- STT: Telnyx built-in speech recognition
    |--- Process: Send user speech to Gemini 2.5 Flash
    |--- Gemini returns response (with optional web search)
    |--- TTS: Telnyx NaturalHD voice speaks response
    |--- Loop until hangup
    |
    v
[Webhook: POST /webhook/telnyx/call-end]
    |--- Get full transcript
    |--- Queue for memory extraction (async)
    |--- Log call metadata to PostgreSQL
    |
    v
[Memory Extraction Worker (async)]
    |--- Gemini Flash extracts entities/decisions/preferences
    |--- Compare with existing memory (dedup)
    |--- Merge new facts into user_memory
    |--- Ready for next call
```

**Telnyx per-minute cost**: $0.01-0.02/min (voice) + $0.005/min (STT) + $0.01/min (TTS) = ~$0.025-0.035/min total

**vs VAPI**: $0.05-0.15/min (VAPI markup includes their margin on STT/TTS/LLM routing)

**Savings: 60-80% per minute by going direct.**

### 2.2 Voice Configuration

| Parameter | Value | Notes |
|-----------|-------|-------|
| AU Voice | Telnyx.NaturalHD.eucalyptus | Australian Female, premium, already configured |
| AU Alt Voice | Telnyx.NaturalHD.marlu | Australian Male, premium |
| US Voice | Telnyx.NaturalHD (US English, TBD) | Select best from 2,287 options |
| STT Engine | Telnyx built-in | Automatic language detection |
| TTS Engine | Telnyx NaturalHD | HD quality, low latency |
| TeXML App ID | 2894835995620935031 | Already provisioned |

### 2.3 Memory Layer: The Moat

**Three-tier memory architecture**:

```
TIER 1: Hot Memory (Redis)
  - Current session context
  - Last 3 conversations (instant recall)
  - Active preferences and recent decisions
  - TTL: 7 days (refreshed on each call)
  - Latency: <5ms

TIER 2: Warm Memory (PostgreSQL)
  - Full entity/decision/preference store
  - Conversation summaries (all time)
  - User profile and metadata
  - Structured, queryable, relational
  - Latency: <50ms

TIER 3: Deep Memory (Qdrant vectors)
  - Semantic search across all conversations
  - "That thing we talked about last month about marketing"
  - Embeds conversation chunks for similarity search
  - Enables fuzzy recall even with imprecise queries
  - Latency: <100ms
```

**Memory injection into system prompt**:

```python
def build_system_prompt(user: dict, hot_memory: list, warm_memory: list) -> str:
    """Build personalized system prompt with three-tier memory context."""
    base = """You are ClawdTalk, a personal AI voice assistant with persistent memory.
    You remember everything about the person you're talking to.
    Be natural, warm, and conversational. You can search the web when asked.
    You remember past conversations and use that context naturally.
    Never say 'I don't have memory of that' -- instead say 'Tell me more about that'
    if you genuinely don't have context yet."""

    if user:
        base += f"\n\nYou are speaking with {user['name']}."
        if user.get('memory_profile'):
            profile = user['memory_profile']
            if profile.get('occupation'):
                base += f"\nThey work as/in: {profile['occupation']}."
            if profile.get('interests'):
                base += f"\nTheir interests include: {', '.join(profile['interests'])}."

    # Hot memory: last 3 conversations
    if hot_memory:
        base += "\n\n--- RECENT CONVERSATIONS ---"
        for m in hot_memory:
            base += f"\n[{m['date']}] {m['summary']}"

    # Warm memory: entities, decisions, preferences
    if warm_memory:
        base += "\n\n--- WHAT I KNOW ABOUT YOU ---"
        entities = [m for m in warm_memory if m['memory_type'] == 'entity']
        decisions = [m for m in warm_memory if m['memory_type'] == 'decision']
        preferences = [m for m in warm_memory if m['memory_type'] == 'preference']

        if entities:
            base += "\nKey people/things: " + "; ".join(
                [e['content']['name'] + ': ' + e['content']['context']
                 for e in entities[-15:]]
            )
        if decisions:
            base += "\nRecent decisions: " + "; ".join(
                [d['content']['decision'] for d in decisions[-10:]]
            )
        if preferences:
            base += "\nPreferences: " + "; ".join(
                [p['content']['preference'] for p in preferences[-10:]]
            )

        base += "\n--- END MEMORY ---"

    return base
```

### 2.4 Memory Extraction Pipeline

Post-call async extraction using Gemini Flash:

```python
async def extract_memory_from_transcript(
    transcript: str,
    existing_memory: list,
    user_id: str
) -> dict:
    """
    Use Gemini 2.5 Flash to extract NEW information from call transcript.
    Only extracts genuinely new facts not already in existing memory.
    Cost: ~$0.001 per call (post-call, async, non-blocking).
    """
    prompt = f"""Analyze this phone call transcript and extract NEW information only.
    Do NOT repeat anything already in the existing memory.

    EXISTING MEMORY:
    {json.dumps(existing_memory, indent=2)}

    TRANSCRIPT:
    {transcript}

    Extract:
    1. entities: People, companies, tools, places mentioned (name, type, context)
    2. decisions: Any decisions made or mentioned (decision, context, date)
    3. preferences: Any preferences expressed (what they prefer, context)
    4. facts: Key facts about the person (occupation, location, goals, etc.)
    5. summary: 2-3 sentence summary of this conversation
    6. sentiment: Overall mood of conversation (positive/neutral/negative)
    7. topics: Main topics discussed (list of keywords)

    Return as JSON with keys: entities, decisions, preferences, facts,
    summary, sentiment, topics.
    Only include genuinely NEW information not already in existing memory.
    If nothing new was learned, return empty arrays."""

    response = await gemini_flash.generate(prompt)
    extracted = json.loads(response)

    # Store in PostgreSQL (Tier 2)
    for entity in extracted.get('entities', []):
        await db.insert_memory(user_id, 'entity', entity, call_id)
    for decision in extracted.get('decisions', []):
        await db.insert_memory(user_id, 'decision', decision, call_id)
    for preference in extracted.get('preferences', []):
        await db.insert_memory(user_id, 'preference', preference, call_id)
    for fact in extracted.get('facts', []):
        await db.insert_memory(user_id, 'fact', fact, call_id)

    # Store conversation summary
    await db.update_call_summary(call_id, extracted['summary'])

    # Generate and store embedding in Qdrant (Tier 3)
    embedding = await generate_embedding(transcript)
    await qdrant.upsert_vector(user_id, call_id, embedding, extracted['summary'])

    # Update Redis hot cache (Tier 1)
    await redis.update_hot_memory(user_id, extracted)

    return extracted
```

### 2.5 AI Models

| Component | Model | Cost | Why |
|-----------|-------|------|-----|
| Voice LLM (conversation) | Gemini 2.5 Flash | ~$0.01-0.02/call equiv | Kinan has credits, fast, search grounding |
| Web search | Gemini 2.5 Flash with Google Search grounding | Included | Native search, zero extra cost |
| Memory extraction | Gemini 2.5 Flash | ~$0.001/call | Post-call async, cheap |
| Embedding generation | Gemini text-embedding | ~$0.0001/call | For Qdrant vector storage |
| Swarm workers (bulk ops) | Kimi K2.5 (via NVIDIA NIM) | $1.07/MTok | 9x cheaper than Claude for batch work |
| Fallback LLM | Claude Sonnet 4 (via OpenRouter) | ~$0.05/min equiv | Complex reasoning if needed |

**Total cost per call (10 min average)**: ~$0.25-0.40 per call (Telnyx voice + Gemini)
**vs VAPI architecture**: ~$0.50-1.50 per call (VAPI markup + their model routing)

**Savings: 50-75% per call by going Telnyx direct.**

### 2.6 Hosting: Shared Elestio Infrastructure (MVP)

For beta (10 users), all users share the same infrastructure:

| Component | Host | Monthly Cost |
|-----------|------|-------------|
| PostgreSQL (users + memory) | Elestio (already running) | $0 incremental |
| Redis (hot memory cache) | Elestio (already running) | $0 incremental |
| Qdrant (semantic vectors) | Elestio (already running) | $0 incremental |
| Telnyx (phone + voice) | Telnyx cloud | ~$5-15/mo (3 numbers + minutes) |
| Memory extraction | Gemini API (serverless) | ~$3-8/mo |
| ClawdTalk API server | Elestio or Railway | ~$5-20/mo |
| **TOTAL** | | **~$13-43/mo** |

**This is 50-60% cheaper than the VAPI architecture ($30-90/mo in v1).**

The product pays for itself at **1 paying customer** at $47/mo.
Break-even at **2 customers** with comfortable margin.

### 2.7 Phone Numbers

| Market | Number | Provider | Cost | Status |
|--------|--------|----------|------|--------|
| AU (existing) | +61 7 3130 4377 | Telnyx | Already provisioned | LIVE |
| US (toll-free) | +1-800-XXX-XXXX | Telnyx | ~$1-2/mo + $0.02/min | To provision |
| US (local) | +1 (area code TBD) | Telnyx | ~$1/mo + $0.01/min | To provision |

**Toll-free recommended for US launch**: Less location-restrictive for Australian business, professional appearance, national reach. Per Telnyx US numbers research, toll-free is the easiest path for international customers.

**Recommended US area codes** (if local numbers feasible):
- 415 (San Francisco) -- tech credibility
- 212 (New York) -- business credibility
- 800/888 (toll-free) -- professional, national reach

---

## 3. THE MEMORY MOAT (Competitive Advantage)

### 3.1 Why Memory Is THE Moat

**The moat is NOT the voice technology.** Anyone can build a voice agent. Telnyx, LiveKit, ElevenLabs -- they all make voice easy.

**The moat IS the accumulated memory graph.**

Every call a user makes deepens their personal knowledge graph:
- **Preferences**: How they like information presented, topics they care about
- **Decisions**: Business choices, life decisions, evolving strategies
- **Entities**: People they mention, tools they use, companies they track
- **Temporal context**: What they said last week vs. last month -- how their thinking evolves
- **Relationship map**: Who they mention together, what connects their interests

### 3.2 The Compound Effect of Memory

| Timeframe | Memory Depth | Switching Cost | Retention Probability |
|-----------|-------------|----------------|----------------------|
| Week 1 | 10-20 entities, 5 decisions | Low (easy to leave) | 60% |
| Month 1 | 50-100 entities, 20-30 decisions | Medium (annoying to rebuild) | 75% |
| Month 3 | 200-500 entities, 50-100 decisions | High (months of context lost) | 90% |
| Month 6 | 500-1,000 entities, 200+ decisions | Very High (irreplaceable) | 95% |
| Month 12 | 1,000-2,000 entities, 500+ decisions | Extreme (their "AI brain") | 98% |

**This is the retention flywheel**: More calls -> more memory -> more value -> more calls -> more memory.

After 3 months, cancellation means losing their personal AI brain. Nobody does that.

### 3.3 Memory as Revenue Multiplier

Traditional SaaS churn: 5-8% monthly. Memory-moat SaaS churn projection:

| Month | Traditional SaaS Churn | ClawdTalk Projected Churn | Revenue Impact (100 customers) |
|-------|----------------------|--------------------------|-------------------------------|
| 1 | 8% | 8% (no memory advantage yet) | Same |
| 3 | 8% | 4% (memory building) | +$188/mo more retained |
| 6 | 8% | 2% (deep memory) | +$564/mo more retained |
| 12 | 8% | 1% (irreplaceable context) | +$1,316/mo more retained |

**Compounded over 12 months with 100 starting customers at $47/mo:**
- Traditional SaaS (8% churn): 36 customers left, $1,692 MRR
- ClawdTalk (declining churn): 78 customers left, $3,666 MRR
- **Memory moat = 2.17x revenue retention**

### 3.4 What Stops Big Tech From Replicating

| Threat | Why It Is Not Immediate |
|--------|------------------------|
| OpenAI ChatGPT + Voice | ChatGPT memory is shallow (key-value pairs). No deep entity/decision/preference graph. Voice mode has no web search. No persistent phone number. They optimize for billions of users, not deep personalization. |
| Google Gemini Live | Gemini has no persistent memory system. Google's memory is tied to Google account data (search history, calendar), not conversational context. No dedicated phone number product. |
| ElevenLabs ConvoAI | Excellent voice quality but zero memory infrastructure. They are a voice platform, not a personal assistant product. |
| Apple Siri | Deeply integrated but terrible at memory, web search, and natural conversation. Years behind in LLM capability. |
| Amazon Alexa | Hardware-dependent. Alexa+ is trying but is fundamentally a command-response system, not a conversational agent with memory. |
| Startup competitors | Most voice AI startups target enterprise call centers (Bland AI, Retell, Synthflow). None target personal voice agents with memory. |

### 3.5 First-Mover Advantage Timeline

| Window | Advantage |
|--------|-----------|
| **Month 1-6** | First to market. No direct competitor. Every user builds irreplaceable memory. |
| **Month 6-12** | OpenAI/Google may announce memory features. Our users have 6 months of accumulated context. Switching cost is extreme. |
| **Month 12-18** | Competitors ship basic memory. We have graph memory, preference modeling, decision tracking, temporal context, semantic search. Multiple product differentiators. |
| **Month 18+** | Network effects kick in. Users recommend to friends. "My AI knows me better than any assistant I've tried." Brand loyalty established. |

---

## 4. COST MODEL: Telnyx Direct vs VAPI

### 4.1 Per-Minute Cost Comparison

| Cost Component | VAPI (eliminated) | Telnyx Direct (new) | Savings |
|---------------|-------------------|---------------------|---------|
| Voice transport | ~$0.01/min (Telnyx under VAPI) | $0.01-0.02/min | Same |
| STT | ~$0.02/min (VAPI markup) | $0.005/min (Telnyx native) | 75% |
| TTS | ~$0.02/min (VAPI markup) | $0.01/min (Telnyx NaturalHD) | 50% |
| LLM routing | ~$0.03-0.05/min (VAPI margin) | $0.00 (we route directly) | 100% |
| Platform fee | ~$0.02/min (VAPI base) | $0.00 | 100% |
| **Total per minute** | **$0.10-0.12/min** | **$0.025-0.035/min** | **65-70%** |

### 4.2 Per-Call Cost (10-minute average)

| Component | Cost | Notes |
|-----------|------|-------|
| Telnyx voice (10 min) | $0.10-0.20 | Inbound minutes |
| Telnyx STT (10 min) | $0.05 | Real-time transcription |
| Telnyx TTS (10 min) | $0.10 | NaturalHD voice output |
| Gemini Flash LLM | $0.03-0.05 | Conversation processing |
| Memory extraction | $0.001 | Post-call async (Gemini Flash) |
| Qdrant embedding | $0.0001 | Vector storage |
| **Total per call** | **$0.28-0.40** | |

**vs VAPI architecture**: $0.50-1.50/call

### 4.3 Monthly Cost at Scale

| Users | Calls/Month | Telnyx Direct Cost | VAPI Cost (eliminated) | Monthly Savings |
|-------|-------------|-------------------|----------------------|-----------------|
| 10 (beta) | 300 | $84-120 | $150-450 | $66-330 |
| 100 | 3,000 | $840-1,200 | $1,500-4,500 | $660-3,300 |
| 1,000 | 30,000 | $8,400-12,000 | $15,000-45,000 | $6,600-33,000 |

**At 1,000 users, Telnyx Direct saves $6,600-33,000/month vs VAPI.**

### 4.4 Per-Customer Cost and Margin

| Scale | Cost/User/Mo | Target Price | Gross Margin |
|-------|-------------|-------------|--------------|
| 10 users (beta) | ~$8-12 | $0 (free beta) | -100% |
| 50 users | ~$7-10 | $47/mo (L1) | 78-85% |
| 100 users | ~$6-9 | $47/mo (L1) | 80-87% |
| 500 users | ~$4-7 | $47-97/mo | 85-95% |
| 1,000 users | ~$3-5 | $47-97/mo | 89-95% |

**Margins improve to 90%+ at scale** because:
1. Telnyx Direct eliminates all middleman markup from day one
2. Shared infrastructure amortizes across users
3. Gemini Flash pricing drops with volume tiers
4. Memory extraction is batched and async (pennies per call)
5. Redis hot cache reduces database queries (fewer Qdrant calls per conversation)

### 4.5 Kimi K2.5 for Swarm Workers

For batch operations (bulk memory processing, analytics, reporting), use Kimi K2.5 instead of Claude or Gemini:

| Task | Claude Cost | Gemini Cost | Kimi K2.5 Cost | Savings |
|------|-----------|-------------|---------------|---------|
| 1,000 memory extractions | $9.60 | $0.30 | $1.07 | 89% vs Claude |
| Batch analytics (1M tokens) | $9.60 | $0.30 | $1.07 | Use Gemini for this |
| Code generation tasks | $9.60 | $0.30 | $1.07 | Best for visual coding |

**Decision**: Gemini Flash for real-time voice + memory extraction. Kimi K2.5 for bulk swarm tasks (analytics, batch processing, research). Claude reserved for complex reasoning only.

---

## 5. BETA TESTER ACQUISITION

### 5.1 Finding 10 Beta Testers FAST

**Target profile**: AI-curious professionals who use voice assistants and would pay for a smarter one.

| Channel | Action | Expected Yield | Timeline |
|---------|--------|----------------|----------|
| **Reddit r/ClaudeAI** | Post demo video: "I built an AI that remembers me across phone calls" | 3-5 signups | Day 1-2 |
| **Reddit r/ChatGPT** | Same post, different angle: "What if your AI assistant had a phone number?" | 2-4 signups | Day 1-2 |
| **Reddit r/artificial** | Technical deep-dive post on voice + persistent memory | 1-3 signups | Day 2-3 |
| **Twitter/X** | Thread: "Nobody is shipping AI voice agents with real memory. So I built one." with demo video | 5-10 signups | Day 1-3 |
| **Kinan's network** | Direct outreach to friends, business contacts, AI enthusiasts | 3-5 signups | Day 1 |
| **Product Hunt** | "Upcoming" listing to build waitlist (full launch later) | 10-20 waitlist | Day 3-5 |
| **Indie Hackers** | "Show IH" post with revenue projections | 2-3 signups | Day 3-5 |
| **Hacker News** | "Show HN: Voice AI that builds a persistent memory graph of YOU" | 5-20 signups | Day 5-7 |

**Goal**: 10 confirmed testers by Day 5. 20 on waitlist by Day 7.

### 5.2 Beta Pricing

**Free for first 10 beta testers.** No exceptions.

Reasoning:
- We need honest feedback, not revenue at this stage
- Free removes all friction to getting people on the phone
- We learn usage patterns (how often they call, how long, what for)
- Each beta tester becomes a testimonial if the product is good
- The memory data they generate proves the concept

**What beta testers agree to:**
1. Use ClawdTalk at least 3x per week for 2 weeks
2. Provide written feedback after week 1 and week 2
3. Allow us to analyze (anonymized) call patterns and memory quality
4. Optional: record a 30-second testimonial if they love it

### 5.3 Feedback Loop

**After every call:**
1. Automated: Call duration, topics discussed, memory entities extracted logged to PostgreSQL
2. Automated: NPS survey via SMS 1 hour after call ("How was that call? 1-10")
3. Weekly: 15-min feedback call with Kinan or async Loom video review

**Key metrics to track:**

| Metric | Target | How Measured |
|--------|--------|-------------|
| Call frequency | 3+ calls/week per user | PostgreSQL call logs |
| Average call duration | 5+ minutes | Telnyx call records |
| Memory accuracy | 80%+ correct recalls | Manual review of transcripts |
| NPS score | 8+ | Post-call SMS survey |
| "Wow moment" rate | 70%+ have one in first 3 calls | Feedback interviews |
| Willingness to pay | 60%+ would pay $47/mo | Week 2 survey |
| Memory depth | 20+ entities per user by week 2 | PostgreSQL query |

### 5.4 Timeline to First Paying Customer

| Milestone | Timeline | Action |
|-----------|----------|--------|
| MVP demoable | Day 7 | Internal testing complete |
| First beta tester call | Day 8 | Onboard first 3 testers |
| All 10 testers onboarded | Day 14 | Staggered onboarding |
| Beta feedback round 1 | Day 21 | Collect and analyze |
| Payment infrastructure | Day 21-28 | Stripe setup |
| First paid customer | Day 28-35 | Convert best beta tester |

---

## 6. US MARKET ENTRY

### 6.1 Telnyx US Numbers

**Status: Ready to provision. Verification step needed for toll-free.**

Per research (TELNYX_US_NUMBERS_RESEARCH.md):
- Telnyx supports international customers via "International Number Requirements Tool"
- Toll-free (1-800) numbers are the easiest path for Australian businesses (less location-restrictive)
- Local US numbers may require US address documentation
- Account is already active with Australian numbers

**Action plan:**
1. Attempt toll-free number order via API (lowest friction)
2. If toll-free requires docs, contact Telnyx support with specific questions
3. Create Requirement Group in Telnyx console for reuse
4. Fallback: use existing AU number for initial beta (US callers can reach international numbers)

### 6.2 US Voice Selection

For US market, use American English Telnyx NaturalHD voice:

| Attribute | Selection |
|-----------|----------|
| Language | English (US) |
| Gender | Female (primary), Male (option) |
| Style | Warm, conversational, natural |
| Provider | Telnyx NaturalHD |
| Cost | Included (no additional charge) |

**Voice discovery**: `GET https://api.telnyx.com/v2/text-to-speech/voices` returns all 2,287 available voices. Filter by language and style for optimal selection.

### 6.3 Compliance (TCPA)

| Scenario | TCPA Applies? | Requirements |
|----------|---------------|-------------|
| **User calls ClawdTalk (inbound)** | Minimal | User initiated -- low risk. Record consent in greeting. |
| **ClawdTalk calls user (outbound)** | YES -- full TCPA | Prior express consent required. NOT for MVP. |
| **SMS notifications** | YES | Opt-in required. Easy opt-out. |

**MVP mitigation (inbound only)**:
1. Only inbound calls for MVP -- user initiates all contact
2. Opening greeting includes: "This call may be recorded to improve your experience. Is that okay?"
3. Store consent confirmation in PostgreSQL
4. No outbound calling until legal review complete

### 6.4 Privacy Requirements

| Requirement | Implementation |
|-------------|---------------|
| Data storage notice | "Your conversations are processed and stored to improve your experience" |
| Right to delete | API endpoint: `DELETE /api/user/{id}/memory` -- wipes all stored data |
| "Forget this" command | Voice command: "Forget what I just said" -- deletes last extraction |
| Data encryption | PostgreSQL encryption at rest (Elestio default) + TLS in transit |
| CCPA compliance (California) | Privacy policy page, opt-out mechanism, data portability |
| Terms of Service | Simple ToS: data usage, AI limitations, no guarantee of accuracy |

---

## 7. PRICING TIERS (Product A: ClawdTalk Personal)

### 7.1 Tier Structure

| Tier | Name | Monthly | Target Customer | Features |
|------|------|---------|-----------------|----------|
| **L1** | Companion | $47/mo | Individual, AI enthusiast | 1 phone number, 120 min/mo, persistent memory, web search |
| **L2** | Assistant | $97/mo | Freelancer, solo founder | 1 phone number, 500 min/mo, memory + deep search, email summaries, priority voice |
| **L3** | Executive | $197/mo | Professional, business owner | 2 numbers (AU+US), unlimited minutes, priority model, custom voice, "teach my AI" uploads |

### 7.2 Product B Tiers (ReceptionistAI -- Future)

| Tier | Name | Monthly | Target | Features |
|------|------|---------|--------|----------|
| **B1** | Starter | $97/mo | Solo tradesperson | 1 business number, 200 min/mo, missed call alerts, basic CRM |
| **B2** | Professional | $247/mo | SMB (2-10 staff) | 3 numbers, 1,000 min/mo, full dashboard, calendar integration, analytics |
| **B3** | Enterprise | $497/mo | Multi-location business | 10 numbers, unlimited minutes, white-label, API access, SLA |

---

## 8. REVENUE PROJECTIONS

### 8.1 Conservative Path to $10K MRR (Product A only)

| Month | L1 ($47) | L2 ($97) | L3 ($197) | MRR | Cumulative Revenue |
|-------|----------|----------|-----------|-----|-------------------|
| 1 | 0 | 0 | 0 | $0 | $0 |
| 2 | 5 | 2 | 0 | $429 | $429 |
| 3 | 15 | 5 | 1 | $1,387 | $1,816 |
| 4 | 30 | 12 | 3 | $3,165 | $4,981 |
| 5 | 50 | 20 | 5 | $4,285 | $9,266 |
| 6 | 80 | 30 | 8 | $7,246 | $16,512 |
| 7 | 100 | 40 | 12 | $10,184 | $26,696 |

**$10K MRR achievable by Month 7** with conservative assumptions.

### 8.2 Revenue with Memory Moat Retention

Factoring in the declining churn from memory lock-in:

| Month | New Customers | Churn Rate | Active Customers | MRR (avg $65/user) |
|-------|--------------|------------|-----------------|-------------------|
| 2 | 7 | 10% | 7 | $455 |
| 3 | 15 | 8% | 21 | $1,365 |
| 4 | 20 | 5% | 40 | $2,600 |
| 5 | 25 | 4% | 63 | $4,095 |
| 6 | 30 | 3% | 91 | $5,915 |
| 7 | 35 | 2% | 124 | $8,060 |
| 8 | 40 | 2% | 162 | $10,530 |
| 9 | 40 | 1.5% | 200 | $13,000 |
| 12 | 50 | 1% | 350 | $22,750 |

**Key insight**: By month 6, churn drops to 3% (vs industry 8%) because users have 200+ entities in their memory graph. By month 12, churn hits 1% -- effectively zero voluntary churn.

### 8.3 Adding Product B Revenue (Month 3+)

| Month | Product A MRR | Product B MRR | Total MRR |
|-------|-------------|-------------|-----------|
| 3 | $1,365 | $0 (building) | $1,365 |
| 4 | $2,600 | $291 (3 B1 customers) | $2,891 |
| 5 | $4,095 | $835 (5 B1 + 2 B2) | $4,930 |
| 6 | $5,915 | $1,723 (8 B1 + 4 B2 + 1 B3) | $7,638 |
| 9 | $13,000 | $5,500 | $18,500 |
| 12 | $22,750 | $12,000 | $34,750 |

### 8.4 Aggressive Path (With Viral Moment)

If the demo video hits 100K+ views on Twitter/Reddit:

| Month | Waitlist | Paid Conversion | MRR |
|-------|---------|----------------|-----|
| 1 | 500 | 20 | $1,300 |
| 2 | 2,000 | 100 | $6,500 |
| 3 | 5,000 | 300 | $19,500 |

Viral content about AI voice + memory has extremely high shareability because people can immediately understand the value (unlike most AI products).

### 8.5 Break-Even Analysis

| Scenario | Fixed Costs | Variable Cost/User | Break-Even Users | Break-Even MRR |
|----------|------------|-------------------|-----------------|----------------|
| Beta (shared infra) | $13-43/mo | ~$8/user | 1 customer ($47) | $47 |
| Growth (dedicated) | $200/mo | ~$5/user | 5 customers ($47) | $235 |
| Scale (1000+) | $1,000/mo | ~$3/user | 23 customers ($47) | $1,081 |

**We break even at 1 paying customer.** Everything after that is margin.

---

## 9. 7-DAY SPRINT PLAN (Product A: ClawdTalk Personal)

### Day 1 (Saturday): Foundation + Database + Telnyx Wiring

**Morning (4 hrs):**
- [ ] Create `clawdtalk/` directory in genesis-system
- [ ] Set up PostgreSQL schema for ClawdTalk:
  ```sql
  CREATE TABLE ct_users (
      id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
      name TEXT NOT NULL,
      phone TEXT UNIQUE NOT NULL,
      email TEXT,
      plan TEXT DEFAULT 'beta',
      memory_profile JSONB DEFAULT '{}',
      created_at TIMESTAMPTZ DEFAULT NOW(),
      updated_at TIMESTAMPTZ DEFAULT NOW()
  );

  CREATE TABLE ct_calls (
      id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
      user_id UUID REFERENCES ct_users(id),
      phone_number TEXT NOT NULL,
      direction TEXT DEFAULT 'inbound',
      duration_seconds INTEGER,
      transcript TEXT,
      summary TEXT,
      sentiment TEXT,
      topics JSONB DEFAULT '[]',
      entities_extracted JSONB DEFAULT '[]',
      decisions_extracted JSONB DEFAULT '[]',
      preferences_extracted JSONB DEFAULT '[]',
      telnyx_call_id TEXT,
      created_at TIMESTAMPTZ DEFAULT NOW()
  );

  CREATE TABLE ct_memory (
      id SERIAL PRIMARY KEY,
      user_id UUID REFERENCES ct_users(id),
      memory_type TEXT NOT NULL, -- 'entity', 'decision', 'preference', 'fact', 'summary'
      content JSONB NOT NULL,
      source_call_id UUID REFERENCES ct_calls(id),
      confidence FLOAT DEFAULT 0.7,
      active BOOLEAN DEFAULT TRUE,  -- false = "forgotten" by user request
      created_at TIMESTAMPTZ DEFAULT NOW(),
      updated_at TIMESTAMPTZ DEFAULT NOW()
  );

  CREATE INDEX idx_ct_memory_user ON ct_memory(user_id);
  CREATE INDEX idx_ct_memory_type ON ct_memory(user_id, memory_type);
  CREATE INDEX idx_ct_memory_active ON ct_memory(user_id, active);
  CREATE INDEX idx_ct_calls_user ON ct_calls(user_id);
  CREATE INDEX idx_ct_calls_created ON ct_calls(user_id, created_at DESC);
  ```
- [ ] Create `clawdtalk/config.py` -- Telnyx, database, Gemini configuration
- [ ] Create `clawdtalk/db.py` -- PostgreSQL connection + query functions
- [ ] Create `clawdtalk/memory_engine.py` -- core memory read/write/search functions

**Afternoon (4 hrs):**
- [ ] Provision US phone number(s) via Telnyx API (toll-free first attempt)
- [ ] Configure Telnyx TeXML application for ClawdTalk:
  - New TeXML app or modify existing (2894835995620935031)
  - Webhook URLs pointing to our FastAPI server
  - US English NaturalHD voice selected
- [ ] Build `clawdtalk/telnyx_handler.py` -- TeXML call control:
  ```python
  # TeXML flow:
  # 1. Call comes in -> Telnyx sends webhook
  # 2. We respond with TeXML: <Speak> greeting + <Gather> input
  # 3. User speaks -> Telnyx transcribes -> sends to our webhook
  # 4. We process with Gemini -> respond with <Speak>
  # 5. Loop until hangup
  ```
- [ ] Wire phone numbers to TeXML app
- [ ] Test: phone rings, Telnyx receives, webhook fires

**Deliverable**: Phone numbers ring and connect to our webhook. Basic voice loop works (speak + gather).

### Day 2 (Sunday): LLM Integration + Memory Read/Write

**Morning (4 hrs):**
- [ ] Build `clawdtalk/api.py` -- FastAPI server with Telnyx webhook endpoints:
  - `POST /webhook/telnyx/incoming` -- Call starts. Identify caller, load memory, respond with personalized TeXML
  - `POST /webhook/telnyx/gather` -- User speech received. Process with Gemini, return spoken response
  - `POST /webhook/telnyx/status` -- Call status updates (answered, completed, failed)
  - `POST /webhook/telnyx/recording` -- Call recording ready for processing
  - `GET /api/user/{phone}/memory` -- Return user's full memory profile
  - `DELETE /api/user/{id}/memory` -- Delete all memory (privacy right)
- [ ] Implement Gemini 2.5 Flash integration:
  ```python
  async def process_user_input(
      user_speech: str,
      system_prompt: str,
      conversation_history: list
  ) -> str:
      """Send user speech to Gemini, get response for TTS."""
      messages = [{"role": "system", "content": system_prompt}]
      messages.extend(conversation_history)
      messages.append({"role": "user", "content": user_speech})

      response = await gemini_client.generate(
          model="gemini-2.5-flash",
          messages=messages,
          temperature=0.8,  # Natural, conversational
          max_tokens=500,   # Keep responses concise for voice
      )
      return response.text
  ```
- [ ] Implement memory injection into system prompt (build_system_prompt function)

**Afternoon (4 hrs):**
- [ ] Build `clawdtalk/extractor.py` -- post-call memory extraction pipeline
- [ ] Build conversation history management (Redis-backed session state)
- [ ] Wire extraction into call-end webhook (async, non-blocking)
- [ ] Test end-to-end: call -> talk -> hang up -> check PostgreSQL for extracted memory
- [ ] Test returning caller: call again -> verify memory is loaded and used

**Deliverable**: Complete call loop works. Call in, Gemini responds with voice, memory extracted post-call, returning callers get personalized experience.

### Day 3 (Monday): Web Search + Conversation Quality

**Morning (4 hrs):**
- [ ] Configure Gemini 2.5 Flash with Google Search grounding:
  - Enable search grounding in Gemini API call
  - System prompt includes: "You have access to real-time web search. When the user asks about current events, prices, news, weather, or anything time-sensitive, search the web."
  - Parse search citations from Gemini response
- [ ] Test web search during live calls:
  - "What's the weather in New York?"
  - "What's Tesla stock at?"
  - "Find me the best rated pizza near Times Square"
  - "What happened in tech news today?"
- [ ] Fix latency issues (target: <2 seconds for search response)
- [ ] Handle search failures gracefully ("I wasn't able to find that, let me try rephrasing...")

**Afternoon (4 hrs):**
- [ ] Build conversation summarization (runs post-call alongside extraction)
- [ ] Add caller ID matching logic:
  - Known caller: "Hey {name}, good to hear from you again."
  - Unknown caller: "Welcome to ClawdTalk! I'm your personal AI assistant. What should I call you?"
  - New user onboarding flow (first call captures name, interests, occupation)
- [ ] Polish voice personality:
  - Natural, warm, not robotic or overly formal
  - Acknowledge memory naturally ("I remember you mentioned...")
  - Handle "What do you know about me?" gracefully
  - Handle "Forget that" command (mark memory as inactive)
- [ ] Tune Gemini response length for voice (keep responses under 30 seconds of speech)

**Deliverable**: Web search works mid-conversation. Returning callers get personalized greeting. Conversation feels natural.

### Day 4 (Tuesday): Companion Web View + Monitoring

**Morning (4 hrs):**
- [ ] Build companion web view (`clawdtalk/web/`):
  ```
  ClawdTalk - Your AI Memory
  ===========================

  Welcome, [Name]

  [Recent Conversations]
  ----------------------
  Feb 15 - Discussed Tesla stock, SEO strategy (8 min)
  Feb 14 - Talked about marketing plans, coffee preferences (12 min)
  Feb 13 - First call - introduced yourself, landscaping business (6 min)

  [What Your AI Knows About You]
  ---------------------------------
  Name: Kinan
  Occupation: Business owner (landscaping)
  Interests: AI, marketing, Tesla, coffee
  Recent decisions: Switched from Google Ads to SEO
  Entities: 23 people, 15 companies, 8 tools

  [Settings]
  ----------
  Voice: US Female (Natural HD)
  Memory: Active (23 items)
  [Forget something] [Export my data] [Delete all data]
  ```
- [ ] Simple authentication (magic link via SMS to registered phone number)
- [ ] Add logging and error handling:
  - Log every call start/end with user info
  - Log memory extraction results
  - Log Telnyx webhook payloads for debugging
  - Alert on extraction failures

**Afternoon (4 hrs):**
- [ ] Internal testing (Kinan tests full flow):
  - 3+ test calls with memory persistence verification
  - Web search during conversation
  - Unknown caller onboarding
  - Returning caller recognition
  - Edge cases: hang up immediately, very long call, rapid-fire questions
  - Companion web view with real data
- [ ] Fix all bugs found in testing
- [ ] Build simple admin view (internal only):
  - Total users, calls today, memory items
  - Recent calls with duration and topics
  - Error log

**Deliverable**: Companion web view shows user's memory. Admin can monitor all calls. Internal testing complete.

### Day 5 (Wednesday): Beta Onboarding Prep + Demo Content

**Morning (4 hrs):**
- [ ] Create beta tester onboarding flow:
  1. Kinan texts/emails tester: "Your AI phone number is +1-XXX-XXX-XXXX"
  2. Tester calls the number
  3. Agent: "Welcome to ClawdTalk! I'm your personal AI assistant with memory. Everything we talk about, I'll remember for next time. What should I call you?"
  4. First call is "getting to know you" -- name, what they do, what they're interested in
  5. Second call onward -- agent uses accumulated memory
- [ ] Create pre-registration form (simple Google Form or Typeform):
  - Name
  - Phone number
  - What they'd use a voice AI assistant for
  - How often they use voice assistants currently
- [ ] Seed first 3 beta testers (Kinan + 2 trusted contacts)
- [ ] Pre-register their phone numbers in ct_users

**Afternoon (4 hrs):**
- [ ] Create demo video (screen recording + phone call):
  - 60-second version for Twitter/Reddit
  - 3-minute version for YouTube
  - Show: call in, have conversation, hang up, call back, agent remembers everything
  - The "wow moment": agent recalls a detail from a previous call unprompted
  - Show companion web view with accumulated memory
- [ ] Write Reddit post drafts:
  - r/ClaudeAI: Focus on the AI memory angle
  - r/ChatGPT: Focus on "voice + web search + memory"
  - r/SideProject: Focus on indie hacker / building in public angle
- [ ] Write Twitter thread draft
- [ ] Prepare Hacker News "Show HN" post

**Deliverable**: Onboarding flow ready. Demo video recorded. Marketing materials drafted.

### Day 6 (Thursday): Beta Launch Day

**Morning (4 hrs):**
- [ ] Final testing with all 3 seeded testers
- [ ] Verify all systems stable under light load
- [ ] Verify memory persistence across multiple calls per user
- [ ] Post demo video + beta signup to:
  - Reddit (r/ClaudeAI, r/ChatGPT, r/artificial, r/SideProject)
  - Twitter/X with demo video
  - Indie Hackers
- [ ] Monitor for signups

**Afternoon (4 hrs):**
- [ ] Onboard first wave of beta testers (target: 5-7 new)
- [ ] Monitor calls in real-time via admin view
- [ ] Fix any issues that arise during live beta calls
- [ ] Respond to Reddit/Twitter comments and DMs
- [ ] Track: signups, calls made, memory quality, errors

**Deliverable**: Beta LIVE with 5-10 external testers making real calls.

### Day 7 (Friday): Stabilize + Data-Driven Iteration

**Morning (4 hrs):**
- [ ] Analyze first 24 hours of beta data:
  - How many calls per user?
  - Average call duration?
  - What are people asking about?
  - Memory extraction quality? (manual review of 10+ extractions)
  - Any errors or failures?
  - Latency measurements (time to first response)
- [ ] Identify top 3 issues from beta feedback
- [ ] Fix critical bugs

**Afternoon (4 hrs):**
- [ ] Implement quick improvements based on feedback:
  - Adjust voice personality if too formal/casual
  - Improve memory recall prompts if not natural enough
  - Tune response length for voice (shorter = better)
  - Fix any web search edge cases
- [ ] Plan Week 2 priorities (based on real user data)
- [ ] Write "Building in Public" update post
- [ ] Collect first testimonials from happy testers

**Deliverable**: Stable beta with real users. Data-driven iteration plan for Week 2.

---

## 10. PHASE 2: Product B (ReceptionistAI) -- Week 3-6

### 10.1 Overview

Product B ships after Product A validates the core voice + memory engine. It reuses the same Telnyx Direct + memory extraction pipeline but adds a full business dashboard.

### 10.2 Sprint Outline

**Week 3: Business Memory Model**
- [ ] Extend database schema for business context (FAQs, products, services, operating hours)
- [ ] Build business onboarding flow ("Teach your AI about your business")
- [ ] Implement per-business system prompts (receptionist personality, industry knowledge)
- [ ] Add multi-caller memory (the business agent remembers each customer)

**Week 4: Dashboard MVP**
- [ ] Call log dashboard (searchable, filterable by date/customer/topic)
- [ ] Missed call alerts (SMS/email to business owner)
- [ ] Basic analytics (calls/day, avg duration, peak hours, common topics)
- [ ] Customer list (auto-built from caller data)

**Week 5: Business Intelligence**
- [ ] Sentiment analysis on all calls (Gemini Flash)
- [ ] Auto-categorization (inquiry, complaint, booking, follow-up)
- [ ] FAQ detection ("What questions do customers ask most?")
- [ ] Callback scheduling ("I'll have [business owner] call you back")

**Week 6: Integration + Launch**
- [ ] Google Calendar integration (schedule appointments during calls)
- [ ] GHL webhook integration (push leads to CRM)
- [ ] Stripe payment setup for B1/B2/B3 tiers
- [ ] Product B beta launch (5 businesses)

### 10.3 Product B Revenue Target

| Month | B1 ($97) | B2 ($247) | B3 ($497) | MRR |
|-------|----------|-----------|-----------|-----|
| 3 (launch) | 3 | 0 | 0 | $291 |
| 4 | 8 | 2 | 0 | $1,270 |
| 5 | 15 | 5 | 1 | $3,187 |
| 6 | 25 | 10 | 3 | $6,386 |

---

## 11. SCALING PLAN

### 11.1 Phase 1: Beta (10 Users) -- Week 1-4

**Architecture**:
```
10 Users --> 3 Phone Numbers --> Telnyx TeXML --> ClawdTalk API
                                                       |
                                                  Gemini Flash
                                                       |
                                               +-------+-------+
                                               |       |       |
                                            Redis    PgSQL   Qdrant
                                           (hot)    (warm)  (deep)
```
**Cost**: ~$13-43/mo total

### 11.2 Phase 2: Early Customers (10-100 Users) -- Month 2-3

**Upgrade triggers**:
- Concurrent call handling (>5 simultaneous calls)
- Memory retrieval latency (>200ms query time)
- Webhook processing backlog

**Architecture changes**:
- Multiple Telnyx phone numbers (regional)
- Redis pub/sub for real-time call coordination
- Background worker pool for memory extraction (queue-based)
- Qdrant collection per user group (performance isolation)

**Cost**: ~$100-300/mo infrastructure + Telnyx minutes

### 11.3 Phase 3: Growth (100-1,000 Users) -- Month 4-8

**Architecture**:
```
1000 Users --> Regional Phone Numbers --> Telnyx TeXML
                                              |
                                    +---------+---------+
                                    |         |         |
                                  STT       LLM       TTS
                               (Telnyx)  (Gemini)  (Telnyx HD)
                                    |
                              [Memory Hub]
                                    |
                              +-----+-----+-----+
                              |     |     |     |
                           PG    Qdrant  Redis  FalkorDB
                          (core) (vector) (hot)  (graph)
```

Additions:
- FalkorDB knowledge graph per user (relationship mapping between entities)
- Dedicated background worker fleet (Kimi K2.5 for batch processing)
- Multi-region Telnyx numbers
- Auto-scaling API server (Railway or Kubernetes)

### 11.4 Phase 4: Scale (1,000+ Users) -- Month 9+

**Full architecture**:
- Multi-region deployment (US East, US West, AU)
- Per-region Telnyx SIP trunks with local numbers
- Kubernetes cluster for auto-scaling
- FalkorDB knowledge graph per user
- LiveKit integration for premium full-duplex experience (optional upgrade from TeXML)
- SOC2 Type II compliance process begun
- Per-customer dedicated containers for Enterprise tier

---

## 12. RISK REGISTER

| Risk | Likelihood | Impact | Mitigation |
|------|-----------|--------|------------|
| Telnyx TeXML latency too high for conversational flow | Medium | High | Optimize webhook response time (<500ms). Implement streaming where possible. Fallback: Telnyx SIP trunk + custom media server. |
| Memory extraction produces garbage | Medium | High | Manual review first 50 calls. Tune extraction prompts iteratively. Implement confidence scoring (discard <0.5). |
| No beta testers sign up | Low | High | Kinan's direct network guarantees 5+. Reddit AI communities are hungry for this. |
| Concurrent call conflicts | Medium | Medium | Telnyx handles concurrent calls natively. Each call gets independent webhook session. Redis for session isolation. |
| Cost overrun from chatty testers | Low | Low | Cap at 60 min/week per beta tester. Monitor daily. |
| Telnyx US number provisioning blocked | Medium | Medium | Try toll-free first. Contact Telnyx support proactively. Fallback: AU number works for US callers (international call). |
| Competitor launches similar product | Low (short term) | Medium | Speed is the moat. Ship first, iterate faster. Memory graph is irreplaceable after 30 days. |
| Data privacy complaint | Low | High | Clear consent flow. Delete endpoint ready. Minimal PII stored. "Forget this" command. |
| Telnyx STT quality insufficient | Low | Medium | Telnyx STT is HD quality. If issues: add Deepgram as STT fallback ($0.0059/min). |
| Gemini Flash rate limits during peak | Low | Medium | Kinan has credits. Implement request queuing. Fallback: Claude Sonnet 4 via OpenRouter. |

---

## 13. KEY DECISIONS NEEDED FROM KINAN

1. **Brand domain**: clawdtalk.com / clawdtalk.ai / something else? Need to register.
2. **US phone area code preference**: Toll-free (800/888) recommended. Or local: San Francisco (415), New York (212)?
3. **Voice personality**: Professional and efficient, or warm and casual?
4. **Beta tester source**: Kinan's network first, or go straight to Reddit/Twitter?
5. **Pricing validation**: Is $47/mo for L1 right? Or start at $29/mo for faster adoption?
6. **Privacy stance**: Record all calls for training, or offer opt-out?
7. **Product A name confirmation**: "ClawdTalk" or something else?

---

## APPENDIX A: Existing Genesis Assets Used

| Asset | Location | How Used |
|-------|----------|----------|
| Telnyx account + API key | KEY019BE7...ra3P1z | Phone numbers + SIP + TeXML |
| Telnyx AU number | +61 7 3130 4377 | Already provisioned, live |
| TeXML App | 2894835995620935031 | Call control application |
| Telnyx NaturalHD voices | 2,287 voices via API | STT + TTS |
| Gemini 2.5 Flash API | Existing key + credits | Voice LLM + memory extraction |
| PostgreSQL (Elestio) | 152.53.201.152:25432 | User data + memory storage |
| Redis (Elestio) | 152.53.201.152:26379 | Hot memory cache |
| Qdrant (Elestio) | 152.53.201.152:6333 | Semantic vector search |
| Sunaiva entity schema | Sunaiva/ai-memory/server/extractor.py | Entity extraction patterns |
| genesis_memory_hub.py | core/ | Multi-system memory queries |
| Kimi K2.5 | NVIDIA NIM (free) | Swarm workers for batch ops |

## APPENDIX B: File Structure (To Be Created)

```
clawdtalk/
  config.py               -- All configuration (Telnyx, DB, Gemini, Redis, Qdrant)
  api.py                  -- FastAPI server (Telnyx webhooks + user API)
  memory_engine.py        -- Three-tier memory read/write/search (Redis/PG/Qdrant)
  extractor.py            -- Post-call memory extraction (Gemini Flash)
  telnyx_handler.py       -- TeXML call control (speak/gather/record)
  gemini_client.py        -- Gemini 2.5 Flash API wrapper (conversation + search)
  models.py               -- Pydantic models for users, calls, memory
  db.py                   -- PostgreSQL connection + queries
  telnyx_client.py        -- Telnyx API wrapper (number provisioning, voice config)
  web/
    app.py                -- Companion web view (FastAPI + Jinja2)
    templates/
      index.html          -- Conversation history + memory viewer
      settings.html       -- Voice, memory controls
    static/
      style.css           -- Minimal dark-mode styling
  tests/
    test_memory.py        -- Memory engine tests (all 3 tiers)
    test_extraction.py    -- Extraction quality tests
    test_api.py           -- API endpoint tests
    test_telnyx.py        -- TeXML webhook handling tests
  scripts/
    provision_numbers.py  -- Provision US phone numbers via Telnyx API
    seed_beta_users.py    -- Add beta testers to database
    migrate_db.py         -- Run PostgreSQL migrations
    select_voice.py       -- Browse and test Telnyx NaturalHD voices
```

## APPENDIX C: TeXML Call Flow (Technical Reference)

```xml
<!-- Incoming call webhook response -->
<Response>
  <Speak voice="Telnyx.NaturalHD.eucalyptus">
    Hey Kinan, good to hear from you. What can I help with today?
  </Speak>
  <Gather
    action="/webhook/telnyx/gather"
    method="POST"
    input="speech"
    speechTimeout="auto"
    language="en-US"
    profanityFilter="false">
  </Gather>
</Response>

<!-- After processing user speech with Gemini -->
<Response>
  <Speak voice="Telnyx.NaturalHD.eucalyptus">
    Sure, let me check on that for you. Tesla is currently trading at
    three hundred and twelve dollars, up about two percent today...
  </Speak>
  <Gather
    action="/webhook/telnyx/gather"
    method="POST"
    input="speech"
    speechTimeout="auto"
    language="en-US">
  </Gather>
</Response>

<!-- Call ending -->
<Response>
  <Speak voice="Telnyx.NaturalHD.eucalyptus">
    Great talking with you, Kinan. I'll remember everything we discussed.
    Talk to you next time!
  </Speak>
  <Hangup/>
</Response>
```

## APPENDIX D: The One-Liner That Sells It

> "An AI that answers your phone, searches the web for you, and gets smarter every time you call."

That is the tweet. That is the Reddit title. That is the elevator pitch.

The "gets smarter every time you call" is what nobody else has. That is the product.

---

**END OF SHIPPING PLAN v2.0**

| Metric | Value |
|--------|-------|
| Total estimated effort to demoable MVP | **7 days (1 person)** |
| Total estimated cost for beta | **$13-43/month** |
| Cost per call (10 min) | **$0.28-0.40** (vs $0.50-1.50 with VAPI) |
| Time to first revenue | **28-35 days** |
| Break-even customers | **1 (at $47/mo)** |
| Memory moat churn reduction | **2.17x retention vs traditional SaaS** |
| Projected MRR at month 12 | **$22,750-34,750** (Products A+B) |
| Architecture | **Telnyx Direct. No VAPI. No middleware.** |

**Ship it.**
