Front Desk · conversations
One engine. Every decision on the record.
The AI receptionist, support bot and lead qualifier behind every chat, call, form and email. Self-hosted, Docker-based, provider-agnostic: models where language is messy, code wherever the answer must be right.
Architecture
Seven layers. Watch a request go through them.
Pick a path or let it play: each step lights the part of the stack that handles it. Hover to pause.
1/10 · Web forms: the form posts to its business's secret URL
Channels
what you already have
Chat widget
one script tag, call button
Voice
browser widget + phone number
Web forms
one secret URL per business
Email
forward your inbox to an intake address
Telegram
a bot per business
Admin / MCP
Claude connector, ops tools
Edge
TLS · allowlists · limits
nginx
per-host path allowlists, rate limits
CrowdSec
bans brute-force sources
Secrets
HMAC, per-client keys, header secrets
Orchestration
visual, inspectable
n8n
lead pipeline, alerts, booking events
Alerts
Telegram, Slack, email, daily digest
CRM webhook
signed events to any URL
Engine
Python · FastAPI · LangGraph · Pydantic AI
Support
facts + RAG, citations, refusals
Booking
profile-driven slots, alternatives
Voice tools
speakable answers; facts p95 ≈ 40 ms
Lead scoring
sub-scores with evidence quotes
Decision
deterministic
Policy gate
TypeScript, versioned policy, reason codes
Jev overlay
independent second opinion → review
Data
client_id on every row
Postgres
audit log, bookings, calls
pgvector
1536-dim HNSW cosine
Redis
session memory, rate limits
Operations
boring on purpose
Uptime Kuma
monitors + status page
Backups
checksums + real restore test
Boot check
every service checked after a reboot
Test suites
golden, static, live smoke, real calls
Flows
Three paths through the engine.
Support answer
- 1question
- 2injection check
- 3split into intents
- 4facts from profile
- 5RAG over client docs
- 6unsupported-fact guard
- 7answer + citations
Voice booking
- 1caller
- 2voice agent
- 3availability tool
- 4book tool
- 5row in Postgres
- 6signed post-call webhook
- 7call record + alert
Lead
- 1form / webhook
- 2n8n
- 3deterministic extract
- 4LLM sub-scores
- 5policy gate
- 6route + reply
- 7audit + Telegram
Worked example
What the lead pipeline does with one message.
Hi! We run a B2B SaaSindustry and need an AI-powered RAG chatbot trained on our documentationneed, plus a lead-qualification bot for our website. Budget is $8-10kbudget, we want to start next monthtimeline. Can we book a scoping call this weekintent?
Reference case from the golden test suite. It must route to a full offer on the primary model, with the primary model switched off, and with keyword fallbacks disabled.
- 01Extractbudget $8,000 (range → lower bound, USD) · start = 1st of next month · no spam signals
- 02Evidenceeach LLM sub-score must quote the lead; a quote that isn't in the message is dropped
- 03Scorefit · budget clarity · urgency · authority · scope, weighted from client config
- 04Gatebudget ≥ $1,000 tier · plausible · no injection · confidence floor → PASS
- 05Routefull offer · reply names the verified need and industry · no prices or dates invented
- 06Recordaudit row with every input, score, quote, gate and timing · Telegram alert
Principles
The rules the code follows.
The model scores, code decides
LLMs extract and rate; a deterministic TypeScript gate with versioned policy makes the final call and records its reason codes.
Facts from config, never generated
Hours, prices, services and addresses come from one profile file per business. Answers that contain anything else are blocked.
Degrade, don't fail
Every model has a deadline and a fallback. If all of them are slow, the lead goes to human review instead of an error page.
Every decision is auditable
Each lead, answer, booking and call is stored with its inputs, outputs, timings and the rules that fired.
Tenants can't leak
The business a request belongs to comes from its credential, never from model output. Every row carries a client id, and cross-client reads are tested.
Tested like software
Golden suites across a dozen industries, static checks, live smoke tests and real voice calls run after changes.
Deployment
Your server or ours.
Installed on your server
The full stack runs in Docker on a VPS you own: your data never leaves it, you pay the model providers directly, and we hand over monitoring, backups and the test suites.
Hosted by us
Your business runs as a client on our stack: its own keys, knowledge base, bookings and audit trail, isolated from every other client, with rows tagged by client id and cross-client reads tested.
See them run on real data.
The apps run real models on every click, so they sit behind a password. Ask for a login or a guided walkthrough: talk to our AI receptionist in Front Desk, drop invoices into Docket, or load forged applicants into Dossier. Or try them in public: score a lead, read your invoice, forge an applicant, or connect Docket and Dossier to Claude. Or hire us to build yours.