PRODUCT / INTERNAL BUILD

Telegram AI concierge — Telegram AI + Human Concierge Platform

A UK client describes a real errand in Telegram. Claude collects one missing fact at a time, quotes in GBP, and hands a structured brief to humans at TASK_READY. The web is where clients watch progress and staff move stages — not where the conversation starts.

TelegramClaudeFastAPIPostgreSQLJWTConcierge SaaS
Industry
Lifestyle concierge · UK errand services
Type
Telegram bot + client/admin web
Role
Architecture · bot · FastAPI · schema
Roles
Client · concierge team · admin
Stack
Telegram · Claude · FastAPI · Postgres/SQLite
Proof
4 running screens · 4-table schema

The problem

Reservations, tickets, gifts and short trips still depend on facts a form usually misses: the full address, a phone number, the spelling of a name, the time window, the budget, and the things the person will not accept. Collecting those facts is slow. Making the booking is a second job. Finding out whether anyone is actually working on it is a third.

Constraints

Delivery stayed inside the client's stack, tenancy, compliance and media-ownership boundaries. Where a choice was forced (suite vs owned plane, BYOC vs CPaaS, local vs cloud models), the architecture section below records the trade-off rather than a marketing rewrite.

Self-serve apps leave that work with the client. A traditional personal assistant is priced for someone who needs help every day. The gap is the person who needs a few real-world tasks a month and wants them handled — not turned into another inbox.

What goes wrongWho feels itWhat Bob changes
Request arrives without address, time or budgetConcierge teamBob asks for one missing fact at a time — never invents it
Client cannot tell if anyone is workingClientEach task has ordered stages and a written update log
Staff receive raw chat instead of a briefConcierge teamClaude writes task type, requirements and action items
Price appears only after the work is doneClientGBP estimate + 12.5% fee before handoff
Occasional and heavy users pay the sameBusinessFree, Basic and Pro change the standard-task fee

This is not a missed-call AI receptionist or a SIP voice agent. It is not a CCaaS dialer. Bob is chat-first concierge with a human finish line.

What the product does

  1. The client messages Bob on Telegram.
  2. Claude asks for real-world details and suggests options — addresses, phone numbers and names are never assumed.
  3. When the brief is complete, Bob quotes the booking in GBP, adds a 12.5% service fee, and asks if the price is acceptable. Card numbers are never taken in chat.
  4. If the client agrees, Bob ends with TASK_READY. The bot posts a structured brief and full chat to the Telegram admin channel; the web app stores the task.
  5. Claude proposes four to six stages. The first is always “Request Received”.
  6. The client follows progress on the web. An admin moves stages, assigns work, and writes updates.

Two task sizes sit on top of that flow:

  • Breeze — a known, short action (usual salon, named restaurant, standard online order). Fee is £9 on every plan.
  • Standard — research or harder arrangement (finding the right restaurant, sourcing a gift, getting tickets). Fee is £40, £30 or £15 depending on plan.

One door, three keys

RoleWhere they workWhat they see and do
ClientTelegram → /dashboard, /task/{id}Own requests, price, stage bar, notes. Cannot see other clients.
Concierge teamTelegram admin channel → admin webBrief at handoff, then every client’s tasks, deadlines, stage controls.
Admin/admin/login, /admin/dashboardOperational view. Account must have is_admin — client login is rejected.

Sample accounts in these captures:

PersonEmailRoleSample request
Maya Chenmaya@example.comClientSushi table near Covent Garden; birthday gift
Jonah Ellisjonah@example.comClientTwo tickets for The 1975
Adaada@example.comAdminRuns the task list — not the client view

Client dashboard — only your work

Maya signs in at /login and lands on /dashboard. Jonah’s ticket request does not appear. Counts on this capture: one active task, one completed, nothing pending.

Maya Chen client dashboard showing only her restaurant booking and completed gift task, with active and completed counts

Honest chrome: “Total Spent” shows a fixed £520 placeholder in the current template — it is not calculated from task prices.

Client task page — read-only progress

“View Details” on the restaurant booking opens /task/1. Quote, stage bar, latest note, requirements and action list — no control to mark a stage complete. The way back to the team is Telegram.

Client task page for Maya restaurant booking with GBP price, read-only progress bar at Researching Options, and concierge update note

The bar is at “Researching Options” — two stages done out of five. The note stored for that task: two rooms near Covent Garden can take four people at 19:15.

Admin dashboard — every client, one table

Ada signs in at /admin/login. The dashboard lists every task with client name joined from users through telegram_id. Filters cover status, type and deadline. Deadline on this screen is a demo rule: three days after created_at. Maya’s gift task deadline is already past — shown in red.

Admin dashboard listing Maya and Jonah tasks with status filters, deadlines and view actions

Admin task page — where work happens

/admin/task/1 is the operational view for the same restaurant booking Maya sees read-only:

  • Client name, status, generated deadline
  • Requirements and action items the bot stored
  • Stage bar with “Complete Current Stage”
  • Update box that posts a new note onto the task
Admin task page with stage completion control, requirements, action items and update form for restaurant booking

Worked example — Maya’s restaurant booking

Sample message: table for four, sushi near Covent Garden, Friday around 19:00, chill but not too casual. Bob still collects phone, dietary limits and budget before the quote.

TableRow for this request
usersMaya Chen, Telegram id 9001001, is_admin false
tasksRestaurant booking; status In Progress; price “£186 including 12.5% fee”; assigned Priya Shah
task_stagesRequest Received + Researching Options done; three stages open
updatesTwo rooms near Covent Garden can take four at 19:15 — waiting on quieter room

Jonah’s ticket request uses Telegram id 9001002 — visible to Ada, not to Maya. That is client isolation by telegram_id, not by hope.

What the client pays

Membership changes the standard-task fee. Breeze stays £9. In chat, Bob estimates the underlying booking cost in GBP and adds 12.5% before asking the client to accept. Payment after agreement is handled by the concierge team — not in Telegram.

PlanMonthlyBreezeStandardIntended use
Free£0£9£401–2 tasks a month
Basic£50£9£303–5 tasks a month
Pro£149£9£156+ tasks a month

Maya’s “£186 including 12.5% fee” in the screenshot is an in-chat estimate example — not the membership fee itself.

Database — four tables

Postgres 14 from database/db-init.sql. Tasks point at people through telegram_id, not users.id, so a task can remain if web login is removed. Without DATABASE_URL, the same four tables land in SQLite (web_app/concierge.db) — that is what backs these screenshots.

TableJob
usersTelegram id + email; bcrypt hash; is_admin gate
tasksOne accepted request; requirements, action items, status, estimated_price text
task_stagesProgress bar — Claude proposes 4–6 stages; staff complete from admin
updatesNote history under the stages

Indexes on tasks.telegram_user_id, task_stages.task_id, updates.task_id — client dashboard and task page stay one-query simple.

How the system flows

The handoff is the product decision. Until TASK_READY, the conversation is with Bob. After it, a person owns the booking and the web page is the record.

flowchart TD
  ask[Client messages Bob on Telegram]
  details[Bob collects address phone time budget]
  price[Bob quotes GBP plus 12.5 percent fee]
  handoff[Client agrees TASK_READY]
  save[Web app stores task stages brief]
  channel[Admin Telegram channel gets brief]
  work[Concierge completes booking]
  track[Client watches stages and notes]
  done[Admin marks task complete]
  ask --> details --> price --> handoff
  handoff --> save
  handoff --> channel
  save --> work --> track --> done
Request path — chat collects and prices; web tracks delivery.

Architecture

The rule: the bot talks to Claude and the admin channel; both dashboards read and write through FastAPI.

flowchart TB
  clientWeb[Client web dashboard task]
  adminWeb[Admin web dashboard task]
  bot[Telegram bot]
  api[FastAPI web app JWT]
  claude[Claude API]
  channel[Telegram admin channel]
  db[(Postgres or SQLite)]
  clientWeb --> api
  adminWeb --> api
  bot --> api
  bot --> claude
  bot --> channel
  api --> db
Telegram AI concierge stack — single API, bot-only Claude access.

Production compose puts Nginx and certificate renewal in front of the app. Local development serves FastAPI directly — how these screenshots were captured.

Engineering challenges

ProblemApproachResidual
Chat without structured handoffTASK_READY + stored requirements and action itemsPrompt discipline — not a second parser service
Client sees other people’s errandsTasks keyed by telegram_user_idAdmin sees all — by design
Price shock after the factGBP estimate + 12.5% before handoffNot a payment gateway in v1
Staff need ops controls clients must not haveSeparate admin routes + is_adminRole is a DB flag, not OAuth federation
Local demo without PostgresSQLite fallback with same four tablesInteger keys and 0/1 booleans

My role

Architecture through working product: Telegram bot and Claude prompt, TASK_READY handoff, FastAPI client and admin templates, four-table schema, stage and update model, pricing rules in bot and web.

Telegram Claude FastAPI PostgreSQL JWT

Engineering outcomes

No invented task volume or concierge ROI. What the running UI and schema actually show:

  • Telegram-first intake with explicit human handoff marker
  • Client dashboard scoped to one Telegram identity
  • Admin dashboard with stage completion and update posting
  • GBP pricing rule (estimate + 12.5%) before TASK_READY
  • Breeze vs Standard membership tiers on the pricing page
  • Four-table schema with cascade deletes on stages and updates
  • Honest gaps: Total Spent placeholder, demo deadlines, live bot needs secrets

Architectural insight

If the concierge team gets a paste of chat, you built a forwarding service. If the client cannot see stages, you built a black box. The product is the handoff — structured brief, agreed price, shared web record — with Claude as the intake clerk, not the owner of the booking.

Related: Multi-tenant AI receptionist (voice receptionist SaaS), AI chatbot development, multi-tenant SaaS, and full-stack product builds.

Production considerations

  • Telegram handoff when LLM confidence low — human thread preserved.
  • Secrets and webhook validation on public bot endpoints.

FAQ — buyer & architecture questions

Ten common questions about this case study, fit, and engagement.

Documented barge-in, multilingual fallback, tool use or telephony integration—not a demo webhook only.

No. Asterisk/FreeSWITCH handles media; AI orchestration sits beside call control.

Yes. Narrow IVR replacement or receptionist is a common first phase.

Retention and redaction policies are set per project; we implement access control and storage limits.

Architecture can route providers; latency and data residency drive the choice.

Call flows, CRM, languages, compliance rules and example calls that fail today.

Share the current stack (PBX, CRM, cloud), the failure or goal in one paragraph, peak call volume, carriers, and any deadline. Screenshots, a pcap, or a short Loom beat a 40-page RFP. Use the project brief or email hello@unifiedpbx.in.

Yes. Delivery is remote-first from Delhi with scheduled overlap for EU, UK, US and APAC stand-ups. Production changes use written runbooks, rollback steps and agreed maintenance windows.

Yes. Many engagements begin with a 1–2 week SIP trace review, tenant-isolation audit, or architecture assessment. If the fit is good, scope expands from evidence—not from a generic sales deck.

Founders, CTOs, telecom leads, MSPs and product teams building or fixing UCaaS, CCaaS, CRM+voice, AI voice, or vertical SaaS—not buyers who only need seats on a mass-market suite.

Building a concierge product you own?

Share where clients start (Telegram, WhatsApp, web chat), how you price, who completes the booking, and what the client must see while waiting. The first reply is architecture — not a per-task quote.

Discuss Your Project