Skip to content
ShiftLens

monitoring for chatbots

Your chatbot changed and nobody told you.

It watches every answer, learns what normal looks like, and when it drifts sends one Slack message with what changed, probably why, and the requests that prove it.

Or try it on your own answers, no code →

An incident, from normal answers to the investigation note

⠋ loading an incident

Math to notice. One LLM call to explain.

01 · detect

Compare with normal

Each answer is embedded and compared with the bot's own normal answers. Plain math (nearest neighbours and CUSUM), no LLM, no cost per answer.

02 · investigate

Gather evidence, then write

Code compares the numbers, clusters the changed answers and lines up version changes. Then one LLM call writes the note, and every claim must cite those results by id.

03 · alert

One incident, not fifty pings

Signals become one incident, with at most 3 Slack messages: opened with the note, escalated, resolved.

Built to catch when your bot's behaviour changes, not to fact-check single answers. Limits

Measured, misses included.

8 scripted scenarios replayed through the production code: 300 normal answers, then 100 changed ones. One seed, so these are single runs, not rates.

causes named right

7 of 8

"not sure" counts right where the cause can't be known

false incidents, normal traffic

0 of 2

more normal answers; a harmless version bump

prompt change caught after

10 answers

when the bot sends prompt_version

weak spot

topic shift

caught after 4 answers, but the note said "unknown"

Full scorecard, including the misses →

Three lines.

Get a key in the app, then post each answer after your bot replies:

install.py
import requests
requests.post("https://sentinelai-qqph.onrender.com/ingest", headers={"X-API-Key": KEY},
              json={"prompt": question, "response": answer})

Have a bot with real traffic?

Send me 50 answers and I'll send back what it finds.

Issues are public: share anonymised answers only, never customer data or keys.

Open a GitHub issue