Live work · Telegram Support Agent
Telegram Support Agent.
Production conversational agent with confidence-based escalation.
Knowledge-base grounded support bot. Handles 19/23 conversations autonomously in the demo run. Escalates to a human when confidence drops.
Demo · Try it
See it in action.
Business Support Bot
online · powered by Claude
Hi, I'm the Business Support Bot. Tap a question below to see how I respond. Low-confidence answers escalate to a human owner.
demo · powered by Claude
Tap a question to send it
I · About
Most support bots ship something that pretends to be helpful and ends up frustrating customers. This one knows when to ask for help. Each deployment loads a per-client knowledge base (FAQs, pricing, policies, product details). When a user asks a question, the bot reasons over the knowledge base, scores its own confidence, answers if confident, escalates if not. Every conversation rolls up into a daily digest the business owner reads at 8am.
II · How it works
The pipeline.
- 01Per-client knowledge base loaded from JSON file (FAQs, pricing, policies)
- 02User sends a message via Telegram
- 03Claude generates a response using the knowledge base as context
- 04Self-confidence score appended to every response (0-1)
- 05If score < 0.7, the response is suppressed and an escalation message is sent ('this needs human help; owner will respond shortly')
- 06All conversations logged to per-day file
- 07Daily digest at 8am summarizing flagged escalations and unanswered questions
III · Sample
Confidence scoring + escalation logic.
async function respondToMessage(message, kb) {
const response = await groq.chat.completions.create({
model: "llama-3.3-70b",
messages: [
{ role: "system", content: SYSTEM_WITH_KB(kb) },
{ role: "user", content: message.text }
],
response_format: {
type: "json_object",
schema: {
answer: "string",
confidence: "number",
sources_used: "string[]"
}
}
});
const parsed = JSON.parse(response.choices[0].message.content);
if (parsed.confidence < 0.7) {
await escalate(message, parsed);
return ESCALATION_MESSAGE;
}
await logSuccess(message, parsed);
return parsed.answer;
}