Overview
What it does
Field education workers in remote areas frequently encounter device and app problems with no immediate technical support available. This bot gives them a structured troubleshooting path through WhatsApp, a channel they already use, without requiring them to navigate a help portal or wait for a support agent to respond.
Head teachers describe their issue in plain language and Claude classifies the intent, dispatching them into one of 9 symptom-specific troubleshooting paths. Session state is tracked in PostgreSQL so the conversation survives interruptions and inactivity timeouts. If the issue remains unresolved after the troubleshooting steps, the bot escalates to an Education Officer via Slack with full context and creates an Asana ticket for tracking.
How It Works
End-to-end flow
1. Receive
Incoming WhatsApp messages arrive via Twilio webhook. The bot loads or creates a session from PostgreSQL, restoring any in-progress troubleshooting state so the head teacher can pick up where they left off.
2. Classify
Claude classifies the message intent. For open-ended reports, it identifies whether the issue is a device problem or a Field App problem and routes accordingly. Mid-flow issue changes are also detected so the user is never stuck in the wrong path.
3. Guide
The bot walks the user through one of 9 symptom-specific troubleshooting paths with inactivity timers (20 minutes standard, 60 minutes for charging steps). Notion knowledge base articles back each EO-facing step with a 5-minute in-memory cache.
4. Escalate
Unresolved issues are sent to Slack with context-aware action buttons for Education Officers. An Asana ticket is created automatically for tracking and follow-up. Daily monitoring alerts flag dark schools, symptom spikes, and inactive EOs.
Capabilities
What it covers
- Multi-turn form-based troubleshooting with stateful session tracking in PostgreSQL
- Two main branches: teacher device issues and Field App problems, with 9 symptom paths total
- Claude-powered intent detection for open-ended reports and mid-flow issue changes
- Inactivity timers per step (20 min default, 60 min for charging steps)
- Notion knowledge base integration with 5-minute in-memory cache for EO steps
- Automated Slack escalation with context-aware action buttons for Education Officers
- Asana ticket creation for all unresolved issues
- Daily monitoring with alerts for dark schools, symptom spikes, and inactive EOs
- In-browser simulator for local testing without Twilio or Slack credentials
- Feature flags for safe incremental rollout
Stack
Tools involved
- Node.js
- Express.js
- Claude API
- Twilio (WhatsApp)
- Slack Web API
- Asana API
- Notion API
- PostgreSQL (Neon)
- node-cron