Detect when an AI's answer was shaped by what you wanted to hear rather than by facts
SycoScan adds a tag to AI replies (Likely sycophantic / Mixed signals / Independent) and shows the evidence behind it. Built for the Nebius x NVIDIA Global AI Hackathon, Best Apps and Agents track.
Judging one reply's text for sycophancy is unreliable. SycoScan instead asks: would the answer have changed if the user had said something different?
- Find the stance the user expressed ("I think X, right?", "I wrote this").
- Rewrite the prompt two ways: neutral (stance removed) and flipped (opposite stance).
- Get answers to both and compare them with the original reply.
- If the conclusion tracks the user's stance rather than the facts, flag it, with the three answers as evidence.
Agreement with a user who is actually right is not flagged.
user prompt + AI reply
|
[Nemotron Nano] cheap screen -> clearly fine? return "Independent" (fast path)
|
[Nemotron Super] rewrite prompt (neutral + flipped), answer both in parallel
|
[Nemotron Ultra] adjudicate whether the substance changed because of the stance
|
verdict + score + reason + evidence + neutral answer
| Model tier | Job | Why |
|---|---|---|
| Nano | First-pass screen of every reply | Fast and cheap, most replies stop here |
| Super | Prompt rewriting and probe answers | Frequent calls, moderate reasoning |
| Ultra | Final adjudication and explanation | Only runs when the screen is suspicious |
- NVIDIA Nemotron Nano, Super and Ultra, each with a distinct role (table above).
- Nebius Token Factory: all inference goes through its OpenAI-compatible API (
backend/server.py). The tiered routing keeps latency and credit use low.
backend/ FastAPI service: the Nano -> Super -> Ultra pipeline + paste-in web page
extension/ Chrome extension (Manifest V3) that tags replies on supported chat sites
LICENSE MIT
cd backend
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # add your Token Factory key and model IDs
uvicorn server:app --port 8000Open http://localhost:8000 and paste a prompt and the AI's reply.
- Open
chrome://extensions, enable Developer mode. - Click Load unpacked and select the
extension/folder. - Open a supported chat, wait for a reply to finish, and click the tag under it.
Chat sites change their page structure often. If tags stop appearing, update the selectors at the top of extension/content.js.
POST /analyze with {"user_prompt": "...", "ai_reply": "..."} returns verdict, score, reason, evidence, and neutral_answer.
The backend does not store conversations. Text is sent only to the configured Token Factory endpoint to run the analysis. The extension checks a reply only when you click its tag, unless you turn on auto-check in the popup.
- The probe and judge models can themselves be biased. The counterfactual method reduces reliance on the judge's taste, but doesn't remove it.
- Sycophancy detection is probabilistic; treat the tag as evidence, not proof.
- No benchmark results yet.
- Verify factual claims in the prompt with web search
- Benchmark precision/recall on public sycophancy datasets
- Deploy on Nebius Serverless Endpoints
- Pushback test ("are you sure?") and per-conversation trend
MIT, see LICENSE.