Inspiration
Crisis text lines answer in order of arrival. On a busy night, someone who has just taken pills can wait behind someone asking for clinic timings, and some people close the chat before anyone replies.
What it does
Saath reads each waiting message, estimates its level on the Columbia suicide severity scale (0 to 6) and reorders the queue so the most dangerous conversations come first. Waiting time still counts, so nobody is stuck at the bottom. Each card shows the lines that drove the score and a range of plausible levels. Messages in romanised Hindi or Telugu, which the model reads poorly, are never put in the standard queue. A counsellor can move any chat to the top, and one toggle returns the queue to arrival order.
How we built it
An ensemble of two frozen sentence encoders (multilingual-e5 and mpnet) and word and character TF-IDF, each with ordinal logistic heads. Split conformal prediction sets the cut-offs: the urgent band promises to miss at most 5% of high-risk messages, and a critical tier inside it is 92% precise. A discrete-event simulator replays a helpline shift to measure who gives up waiting. FastAPI serves a plain HTML and JavaScript console, and everything runs on a laptop CPU, so no message leaves the helpline.
Results
- Nested cross-validation: κ 0.81, AUROC 0.955 for level 4 and above
- Urgent band missed 2.0% of high-risk messages (promised at most 5%)
- In a simulated busy shift, 22% of high-risk texters gave up waiting in arrival order and 15% with Saath (28% fewer, 95% CI 21 to 35% over posts). The gain held across 16 changes to staffing, patience and prevalence.
Challenges and limits
All results come from 1,170 Reddit posts and a simulated queue, not a real helpline. Code-mixed Hindi and Telugu text is the weakest point: two multilingual encoders made it worse on a held-out half, so we did not ship them. The README sets out how a helpline would validate Saath on its own data.
What's next
A shadow run on a real helpline, re-calibration on its own labelled chats, and code-mixed training data.
Code: https://github.com/YASASWIP012/saath Demo: https://huggingface.co/spaces/yasaswip012/saath
If you or someone you know is struggling, in India call Tele-MANAS on 14416.
Built With
- fastapi
- python
- scikit-learn
Log in or sign up for Devpost to join the conversation.