Independent product · Full-stack & AI engineering
AI Appointment & CRM Automation
Telegram booking across text, voice, and guided controls—with identity, availability, and CRM writes enforced by application code.
- Role
- Independent full-stack AI engineer
- Stage
- Early production
The challenge
The problem and my role
Appointment requests arrived through free-form text, voice notes, and guided choices, but staff still had to interpret the request, identify the patient, check live availability, get confirmation, and record the visit.
I built the application-owned workflow around Telegram, LangGraph, and EspoCRM so the model could interpret and route requests while identity, availability, and CRM writes stayed under deterministic controls.
Product walkthrough
Booking an appointment
Text, voice, and guided controls enter the same CRM-backed booking path. The application presents current choices, keeps the operation specific, and requires confirmation before a write.
Implementation evidence
What was delivered
The public TypeScript implementation exposes the routing, Telegram controls, identity-scoped CRM tools, approval interrupts, checkpoint persistence, and failure handling.
Controlled workflow
Text, voice, and guided controls converge on one application-owned booking path.
CRM safeguards
Identity-scoped reads, live availability, and operation-specific tools keep CRM state authoritative.
Explicit writes
Booking, rescheduling, and cancellation pause for confirmation before changing CRM state.
Design principles
Key engineering decisions
The model handles ambiguity and routing; ordinary application code owns correctness-critical behavior.
Keep EspoCRM authoritative
The assistant reads live contacts, services, availability, and appointments instead of replacing the CRM.
Put guarantees in application code
Identity, valid slots, deterministic controls, and operation boundaries do not depend on model behavior.
Require approval for writes
Each booking, reschedule, or cancellation is tied to a specific pending operation before the write proceeds.
Selected outcomes
Controlled tool use, live CRM availability, identity-scoped operations, and explicit approval gates in an inspectable TypeScript implementation.
Resources
- LangGraph
- Telegram
- EspoCRM
- Docker
- TypeScript