Try it
- Public demo (recorded live run, no keys, free): https://nebius-guardian.vercel.app
- Live mode for judges (real Nemotron + Tavily calls on your own message or call): https://server.tail113e81.ts.net:8443 — the judge access code is in the file attached to this submission for judges (JUDGE_ACCESS.txt); enter it in the "Judge access code" field and press Unlock.
- Code (MIT): https://github.com/LevAdamenko/guardian
Inspiration
Phone scams aimed at older people follow a handful of scripts: the "grandson" in an accident who needs cash by courier, the fake police officer who wants your savings moved to a "safe account", the "bank security department" that asks you to install AnyDesk, the friend who urgently needs a BLIK code. Polish police, CERT Polska and the banking association publish warnings about each of them, but those warnings rarely reach the person on the phone in the moment it matters.
What it does
Guardian listens to a call (or reads an SMS) on behalf of an elderly person. As the call unfolds, it recognises scam tactics, shows a calm, big-font warning with one safe action ("Hang up. Call your bank on the number on your card."), and sends the relative an alert quoting what the caller actually said, with links to official warnings about the same scheme.
How I built it
- NVIDIA Nemotron (
nemotron-3-super-120b-a12b) via Nebius Token Factory does two jobs: extracting scam tactics from the transcript as structured JSON, each with a verbatim quote, and writing the warning, the relative's alert and the safe action. - Tavily searches only official domains (policja.pl, cert.pl, knf.gov.pl, zbp.pl, gov.pl, europol.europa.eu) for a page that describes the same tactic. That page becomes evidence in the verdict.
- Deterministic code does the parts that must not hallucinate: a quote validator drops any tactic whose quote the caller never said, a weighted scorer decides SAFE / CAUTION / SCAM, and the verdict model itself refuses SCAM without at least two validated tactics and one official source.
- FastAPI backend and a single-page phone simulator. The caller's lines are spoken with the browser's speech synthesis. Every external call has a replay layer, so the demo and the test suite run offline.
Challenges
- Phones don't let apps hear calls. Android and iOS block call audio for third-party apps, so I built the call source as a pluggable adapter and ship a browser call simulator; a telephony bridge can be added without touching the pipeline.
- False alarms are as harmful as misses. A guardian that cries wolf gets switched off, so benign calls (the real grandson, a real bank reminder) are part of the test set and must stay SAFE.
- Search in the right language. My first Tavily queries were in English and returned loosely related Europol PDFs. The official warnings are written in Polish, so I switched to Polish queries ("oszustwo metodą na wnuczka", "bezpieczne konto"). Every source is now a real police warning about that exact scheme.
- Keeping the model honest. LLMs happily invent supporting quotes. Validating every quote against the caller's actual words and requiring an official source turned "the model thinks so" into "the caller said X, and the police say X is how this scam works".
Accomplishments
- With real Nemotron and Tavily responses: 4/4 scam calls caught and 0/2 false alarms; 3/3 scam SMS caught and the real parcel notice left alone. In the fake police call, CAUTION comes on the caller's first sentence and SCAM on the second.
- The real grandson briefly raises CAUTION ("it is your grandson Adam"), then drops back to SAFE: one tactic with no official source can never become an alarm.
- A hard, tested rule: no evidence, no alarm.
- The UI is honest about provenance: it shows when text came from Nemotron, from a template fallback or from a hand-seeded example.
What I learned
Most of the safety of an LLM agent here comes from what the code refuses to accept from the model, not from the prompt.
What's next
- Live microphone input (Web Speech API) and a Twilio/Telnyx media-stream adapter for a real forwarded line.
- More languages and more countries' official sources.
- A pilot with a senior centre, with the relative alert sent by SMS.
Built With
- fastapi
- nebius-token-factory
- nvidia-nemotron
- pydantic
- pytest
- python
- tavily
Log in or sign up for Devpost to join the conversation.