Chapter Two
Biohealing Help Desk

Built withFastAPI · Google Cloud · Gemini · Claude · Telegram · GoHighLevel · Alpine.js
The Problem
Biohealing Stream's support requests were scattered across email, Telegram, and web chat with no single queue, no ownership, and no way to know what had already been answered. The existing automation, GoHighLevel's email workflows, couldn't tell a real cancellation question from a refund dispute, so it either answered things it shouldn't have or didn't answer at all.
What I Built
- One inbox for three channels: web chat widget, a Telegram bot, and email (IMAP polling every 3 hours plus a manual sync button, SMTP outbound), all landing in the same ticket queue instead of three separate places to check.
- AI-drafted replies grounded in a real knowledge base pulled from their support documentation, with hardcoded business rules layered on top of the model so it can't freelance on the two questions that matter most: cancellation requests always get the correct self-service link, and refund or billing-dispute questions always escalate to a human instead of guessing at a financial answer.
- Live GoHighLevel CRM lookups from inside the AI conversation: when someone asks when their subscription renews, the AI asks for their email, then pulls their real renewal date straight from their CRM record. Same pattern recovers a lost stream access link, gated to only fire when someone explicitly asks for it.
- Public, no-login stream access recovery tool: a subscriber can request their own access link by email, verified with Cloudflare Turnstile and rate-limited per IP and per address, because the automated relay email fails for some customers and this is the fallback.
- Email auto-reply pipeline that tells apart a brand new ticket, a follow-up on something already open, and a ticket a human already took over. New tickets it can answer get sent automatically; anything flagged for escalation gets an acknowledgment email instead of a made-up answer. A 30-minute cooldown keeps it from spamming the same thread, and the moment I reply manually from the dashboard, the AI is permanently locked out of that ticket.
- Self-serve public help center that auto-sorts real historical support questions into six topics (Account & Access, Billing, Technical Issues, Using the Stream, Safety & Protocols, Free Session) using a rules-based classifier built from the actual questions customers have asked, with the most common ones surfaced automatically.
- Admin console with role-based access separating customer-facing channels from internal settings, including a one-toggle switch to turn AI auto-send on or off without a code deploy.
- Shared login bridge between the help desk and the core Biohealing Stream subscription platform, so a customer's support account and their paid subscription aren't two separate identities.
How It Works
A ticket can start from a web chat message, a Telegram message, or an inbound email; all three normalize into the same ticket record. The AI drafts a response against the knowledge base, but a layer of hardcoded rules checks the topic first: cancellation always gets the real link, anything about refunds or anything the model is unsure of gets flagged for escalation and routed to a human instead of answered. Renewal-date and stream-access questions trigger a live GoHighLevel lookup instead of a guess. If a ticket needs a human, replying manually from the dashboard permanently disables the AI for that thread.
Results
Live in daily production, handling real support tickets across chat, Telegram, and email in one system of record instead of three. The CRM-connected AI handles renewal and access questions without a human touching them, and the escalation rules mean it never guesses on money.
At a Glance
- Support channels unified3 (chat, Telegram, email)
- CRM integrationLive GoHighLevel lookups
- Help center topics6, auto-classified
- Escalation ruleAutomatic on refunds/unknowns