Inspiration "Digital arrest" scams target elderly parents in India: a fake CBI or police officer keeps them on the call, orders secrecy and demands a transfer. Another pattern is a "son" in an accident who needs money now. Citizens reported ₹22,846 crore in cyber-fraud losses in 2024 (MHA, in Parliament). Caller ID and spam filters know nothing about your family, so they can't tell that your son would never call you "Mummy" or ask you to keep secrets.
What it does Ringproof follows a call turn by turn and scores each caller line against a private memory of the family: who each person is, how they talk, what they usually ask for, and household rules ("real police never arrest anyone over a phone call"). When a call is unusual for that person, it acts:
- an official caller (CBI, bank) gets "hang up, call 1930", with official pages found by Tavily;
- a family member gets a code-word challenge, checked in the browser (the code word never leaves the device), or an "Is this you?" email to the real person, whose Yes/No reaches the live call;
- a trusted contact gets an email alert. Real calls stay quiet. The memory lives in the browser and can be viewed, edited or deleted; calls are never stored.
How we built it
- Nemotron 3 Ultra on Nebius Token Factory scores every caller turn (JSON: score, signals with the triggering quote, claimed contact or organisation). Nemotron 3 Super is the backup, then keyword rules; the screen says when a backup answered.
- A policy table in code maps signals and caller type to the action, so the model never picks it.
- Tavily search restricted to official domains; helpline numbers only from a verified table.
- FastAPI backend streaming transcript, risk and action events over a WebSocket; React + Vite dashboard, installable as a PWA; family memory in IndexedDB.
- Speech-to-text service with NVIDIA Parakeet + Sortformer, and Terraform for a Nebius L40S GPU.
- 10 scripted sample calls (5 scams, 5 real) with expected results written before running: on Oct 30 Nemotron 3 Ultra got 10/10, and on all 10 the risk rose at the right turn. Repeat runs later varied: one real call went high in 2 of 4 runs.
Challenges
Hidden reasoning tokens counted against max_tokens and cut off the JSON until we raised it.
Keeping real family calls quiet mattered as much as catching scams, so every sample has an
expected level after each turn. Speech-to-text needs a GPU outside Token Factory, and we did not
get it running before the deadline.
Accomplishments Real calls never told to hang up; scams flagged at the money, OTP or "officer" demand. A family member can confirm or deny a caller from an email link while the call is live.
What we learned The largest model (Nemotron 3 Ultra) was also the fastest on our task, so a small-model-first cascade didn't pay off. Family context makes the difference between "sounds like a scam" and "this isn't how Sujeet talks".
What's next
Run Parakeet on a Nebius GPU for live audio, Hindi/Hinglish, and a guardian agent on a real phone
line (docs/VISION.md).
Built With
- fastapi
- indexeddb
- nebius-ai-cloud
- nebius-token-factory
- nvidia-nemo
- nvidia-nemotron
- python
- react
- tavily
- terraform
- typescript
- vite
Log in or sign up for Devpost to join the conversation.