Challenge
An Estonian hospitality group’s maintenance team coordinated repair requests through informal messaging and verbal handoffs — with no traceability, no SLA enforcement, and no KPI visibility for management. Department heads (housekeeping, reception, café, pool) had no reliable way to tell whether a submitted issue had been seen, accepted, or resolved. The team needed structure across the whole job lifecycle, without leaving the tool they already used every day — Telegram.
Solution
- Built a fully async Python Telegram bot (python-telegram-bot) as the single interface for every role: requesters, technicians, and managers.
- Integrated Claude (Anthropic) as an AI triage agent — it validates request completeness through a short clarifying dialogue, then classifies urgency on a three-level scale (critical / same-day / planned) with structured output.
- Designed a 9-state ticket lifecycle (new → accepted → in progress → done → closed, plus attention / needs-purchase / needs-contractor / waiting branches), with mandatory technician comments and photo confirmation for critical tickets.
- Implemented role-based notification routing so each actor sees only relevant events; critical tickets escalate to the manager if unacknowledged within 15 minutes (APScheduler SLA watchdog).
- Delivered daily / weekly / monthly KPI reports on demand — creation rate, closure rate, average response time, and average resolution time.
- Deployed as a systemd service on an on-premises Ubuntu server — no cloud dependency, secrets isolated behind a hardware firewall.
- Data layer built on SQLAlchemy 2.0 (async) with a clean path from SQLite (WAL) in development to PostgreSQL in production, Alembic migrations ready for handoff.
Result
The MVP was delivered and running in production within 48 hours of starting development. Every maintenance request is now logged, assigned, tracked, and closed with a full audit trail, and KPI reporting is available to management on demand. The AI triage layer reduces dispatcher load and catches under-specified requests before they reach technicians. A web dashboard (FastAPI + live wall monitor) and full PostgreSQL migration are scoped for the next release.