Next-Session-Prompt — Receptionist-Brain Unblock + Smoke

Status am Ende 2026-05-15 Session: 95% der Plattform live, Smoke blockt auf Cloudflare-Access-Service-Token. Plus echte Salon-Daten fehlen noch (Arne-Setup-Call).

Komplette Capability-Doku: receptionist. Was hier folgt ist die TODO-Liste fuer den Unblock-Anlauf.

Live (alles seit 2026-05-15 deployed)

  • CDK-Stack ReceptionistBrainStack in av-production eu-central-1
  • Brain-Lambda receptionist-brain (Stream-getriggert, Python 3.12 ARM_64, Haiku-4.5, Tool-Use-Loop mit Safety-Net)
  • 4 DDB-Tables: receptionist-customers, -conversations, -end-customers, -events
  • DDB-Stream auf mcp-whatsapp-inbox aktiv (NEW_IMAGE)
  • Customer 1 in DDB geseedet (Friseur im Sueden, Placeholder-Daten)
  • Code: ~/source/agents-platform/lambdas/receptionist-brain/ (5 Files + 1 Prompt-Template)
  • Stack: ~/source/agents-platform/infra/lib/receptionist-brain-stack.ts

Blocker fuer ersten echten End-to-End-Smoke

1. Cloudflare Access Service-Token (10 Min)

mcp-whatsapp.agenticventures.de/mcp ist seit dem 2026-05-15-Audit-Hardening hinter Cloudflare Access. Brain-Code ist CF-Access-aware, braucht aber den Token.

Schritte:

  1. https://one.dash.cloudflare.com/bf395d62cc6a9117564c0712fa9e3ad2/access/service-auth → „Create Service Token”
    • Name: receptionist-brain
    • Duration: 1 Year (Reminder fuer Rotation in 11 Monaten setzen)
    • Speicher client_id + client_secret SOFORT (kommen nur einmal)
  2. Bei beiden Access-Apps die Policy adden (mcp-whatsapp.agenticventures.de/mcp + mcp-calcom.agenticventures.de/mcp):
    • Policy „Receptionist-Brain”: Include = Service Auth → Service Token = receptionist-brain
  3. AWS-Secret anlegen (Brain liest das lazy bei erstem MCP-Call):
    aws --profile av-production secretsmanager create-secret \
      --name receptionist-brain/cf-access-mcp \
      --region eu-central-1 \
      --secret-string '{"client_id":"<ID>","client_secret":"<SECRET>"}'
  4. Brain laed das Secret beim ersten Invoke (lazy + gecacht). Kein Lambda-Redeploy noetig.

2. Smoke retry (5 Min)

Nach Service-Token-Setup:

NOW=$(date +%s)
WAMID="wamid.smoke-$(uuidgen | tr -d '-' | head -c 16)"
aws --profile av-production dynamodb put-item \
  --table-name mcp-whatsapp-inbox \
  --region eu-central-1 \
  --item "{
    \"wamid\": {\"S\": \"$WAMID\"},
    \"from_phone\": {\"S\": \"4915128945607\"},
    \"contact_name\": {\"S\": \"Marvin\"},
    \"type\": {\"S\": \"text\"},
    \"text_body\": {\"S\": \"Hi, koennen wir morgen 14 Uhr einen Damen-Schnitt machen?\"},
    \"timestamp\": {\"N\": \"$NOW\"},
    \"raw_json\": {\"S\": \"{}\"},
    \"received_at\": {\"N\": \"$NOW\"},
    \"inbox_partition\": {\"S\": \"main\"}
  }"
 
# 10s warten
sleep 10
aws --profile av-production logs tail /aws/lambda/receptionist-brain --since 30s --format short | tail -20

Erwartet: Bot antwortet auf dein WhatsApp mit Slot-Vorschlaegen oder einer Klaerungs-Frage (z.B. „bei wem?”), bot_response_sent-Event in receptionist-events.

3. Echte Test-WA von Marvin (3 Min)

Wenn Smoke gruen: echte WhatsApp an +1 555-973-8821 schicken. Service-Window muss offen sein (24h seit letzter Inbound).

Mittelfristig (kommt nach Setup-Call mit Arne)

  • Echte Salon-Daten in receptionist-customers (Adresse, Oeffnungszeiten, 5 MAs mit echten Cal.com-User-IDs)
  • Cal.com-Team-Account fuer Friseur im Sueden aufsetzen (statt Marvin’s Test-User)
  • Service-Liste mit echten Preisen + Dauern (Marvin’s Test-Services sind ok als Schema-Vorlage, Inhalte muessen Arnes echtes Angebot sein)

Naechste Plattform-Aufgaben

TaskWannWo
KPI-Daily-Summary-Lambdanach echter Live-Dateneigene Session, ce:plan
Conversation-Audit-Trail (Compliance)Pre-Live-Gateeigene Session
Permanent-Token (WhatsApp System User)Pre-Live-Gate15 Min, Anleitung in _index Verlauf-Eintrag
Restaurant-Vertical (Customer 2)wenn Restaurant-Customer da istmittelfristig, ResyBackend Adapter
mcp-whatsapp Inbox-Schema erweitern um phone_number_id (aktuell Fallback-Lookup auf ersten aktiven Customer)bei Customer 2 spaetestensklein, ~1h
mcp-calcom Multi-Tenant (per-Customer API-Key)bei 2. Salon-Customermittel, ~3h

Bekannte Drifts

  • mcp-whatsapp-inbox Stream wurde via CLI aktiviert, der McpWhatsappHosted-CDK-Stack hat stream: NEW_IMAGE noch nicht im Code. Bei naechstem cdk deploy auf den mcp-whatsapp-Stack im ~/source/mcps/mcp-whatsapp/infra/ wird CloudFormation versuchen den Stream zu deaktivieren. Fix: stream: dynamodb.StreamViewType.NEW_IMAGE in der InboxTable-Definition adden (Datei lib/mcp-whatsapp-hosted-stack.ts Zeile ~100). Klein, ein-Zeiler.

Prompt-Block (kopier in naechste Session)

Wir machen weiter mit receptionist-Brain Smoke-Unblock. Stand: 95% live, Brain blockt auf Cloudflare-Access-Service-Token.

Lies erst: intern/projekte/friseur-im-sueden-bot/next-session-prompt.md
+ intern/capabilities/receptionist.md

Heute zu erledigen:
1. Cloudflare Access Service-Token `receptionist-brain` anlegen
2. Token-Policy auf beide Access-Apps adden (mcp-whatsapp + mcp-calcom)
3. AWS-Secret `receptionist-brain/cf-access-mcp` mit client_id + client_secret
4. Smoke via fake Inbox-Item (Marvin's Phone 4915128945607)
5. Bei gruen: echte WhatsApp-Test

Falls Smoke gruen + Zeit uebrig: KPI-Daily-Summary Lambda starten (`routine-anlegen`-Skill oder direkt im agents-platform-Pattern).

Wichtig: Stack-Drift in McpWhatsappHosted (stream-spec nur via CLI aktiviert, nicht im CDK). Beim naechsten cdk deploy dort den Drift schliessen.