Routes by sender and kind
Routes hot-reload from config. Text, image, and audio can land on different backends without restarting the live process.
AI messaging concierge · live on GCP
frontdesk is an always-on routing and assistant layer for incoming WhatsApp and SMS: it verifies origin, routes by sender and message kind, drafts useful replies, files business-card submissions, and leaves a dashboard trail when something breaks.
Routes hot-reload from config. Text, image, and audio can land on different backends without restarting the live process.
Origin-bound secrets, HMAC signed forwards, replay windows, admin-only WhatsApp origin, and write opt-ins keep transports separated.
Card photos and voice notes are paired, processed, extracted, transcribed, and appended to a Sheet with a reply back to the sender.
The repo includes a WhatsApp broker, TextNow keeper, router, account assistant, card-intake Python service, tutor loop, owner alerts, web push fallback, dashboard, GCP ingress, health monitoring, and runbooks.
Inbound and outbound messages are appended for dashboard review without turning logs into the primary data model.
Router, transport, assistant, card-intake, tutor, alert, and claim failures emit structured codes for a single error stream.
GCP serves the public dashboard and proxies the home box over tailnet, degrading clearly if the office box is unreachable.
Claims are candidacy, not capture; a free-text reply falls through unless it cleanly matches the expected approval vocabulary.
The router records inbound messages after transport verification so the dashboard can show what arrived, from which origin, and where it was forwarded.
Broker status, assistant health, card-intake status, process lists, cost estimates, and error events are separate signals instead of one vague “bot up” light.
The public dashboard is served from the GCP box and reaches the home services through tailnet, keeping the home machine off the public internet.
The product is intentionally composed of small services. That keeps each failure mode inspectable: transport, router, assistant, card intake, dashboard, alerts, and health all have their own surfaces.
WhatsApp and TextNow are treated as interchangeable doors into the same router, with origin bound by which secret authenticated.
Account assistant and card-intake keep their own logic. The router forwards, signs, archives, and gets out of the way.
Dashboard pages read status, messages, process health, and append-only error streams instead of relying on one console log.
Claims, replay windows, per-origin HMAC secrets, and admin-origin checks prevent a convenient chat surface from becoming an unsafe write channel.