Synaplan
Open-source AI platform for companies: self-hosted AI agents, GDPR-compliant chatbot widget, RAG knowledge base, WhatsApp and Outlook AI, MCP, multi-model routing. Docker, Kubernetes or hosted in Germ
IT helpdesk assistant with ML-driven escalation: multi-task intent and emotion models feed a risk-based router that decides when to hand off to a human and creates tickets.
BusinessPython · TypeScriptGitHub @tanushreenerellaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗An IT helpdesk assistant that decides when an employee needs a human. A multi-task DistilBERT reads each message for intent and emotion, and a calibrated risk router decides whether to keep helping or hand off with a ticket.
Live demo | Model on Hugging Face | Detailed results
| Intent accuracy | 97.7% (7 classes, baseline 34.1%) |
| Emotion accuracy | 80% (6 classes, baseline 39.6%) |
| Escalation | 80% recall at 7.8% false alarms (TF-IDF: 76% at 13.0%) |
| Served model | ONNX int8, 66.8 MB, 11 ms per message |
| Tests | 125 automated tests |
message -> DistilBERT (intent + emotion) -> risk router -> keep helping or hand off
router.py; the LLM (Groq) only extracts details and writes replies.sop.json; a ticket is created if they don't work.| Dataset | Used for | Rows used |
|---|---|---|
| Banking77, CLINC150, SNIPS | Intent head | mapped to 7 support intents |
| Twitter Customer Support (TWCS) | Intent head (complaint, feedback, appreciation) | keyword-labelled tweets |
| GoEmotions | Emotion head | single-label comments, mapped to 6 emotions |
| 616 IT helpdesk messages | Escalation test only (never trained on) | 308 held out |
In total: 39,861 intent and 31,979 emotion training rows. Original labels were mapped to Closira's labels in intent_map.json and emotion_map.json.
Intents: information_request, issue_report, action_request, complaint, feedback, appreciation, chit_chat Emotions: angry, frustrated, confused, sad, happy, neutral
distilbert-base-uncased with one shared encoder and two heads (intent and emotion) on the [CLS] token.pip install -r backend/requirements.txt
uvicorn backend.main:app --reload --port 8000
cd frontend && npm install && npm run dev
Needs GROQ_API_KEY and DATABASE_URL. Training and evaluation commands are in backend/ml/results/README.md.