Open source, bring your own keys
Know when AI assistants mention your brand
CitePrism asks ChatGPT, Claude, Gemini and Perplexity the questions your buyers ask, on a schedule, and measures how often your brand shows up in the answer and which URLs get cited. It stores every raw answer forever, so a change to what counts as a mention recomputes your whole history instead of orphaning it.
The hosted app runs on your own provider keys: no seat pricing, no markup on the AI spend. MIT licensed, so you can run the same thing on your own Postgres and Redis.
ChatGPT
Responses API with web search
Claude
via OpenRouter, native web search
Gemini
Google Search grounding
Perplexity
Sonar, native citations
How it works
Three moving parts, none of them magic.
-
01
Describe your brand
Point CitePrism at your site. It reads the page, proposes a starter prompt set for your category, and you keep the questions that match how buyers actually ask.
-
02
Sample on a schedule
Every prompt runs against each engine a few times a day. The full raw answer is stored forever, along with the citations, the search queries the engine issued, and what the call cost.
-
03
Read the evidence
Visibility rate, share of voice, average rank, first-mention rate and citation share, per prompt and per engine, over time. Every number is one click from the answer it came from.
What this measures, and what it does not
This category is full of vendors overselling. Here is the plain version.
It measures synthetic sampling
CitePrism asks the questions itself. Every number in the product comes from runs it generated, on a schedule you control, with a sample size shown next to every rate. A rate built on fewer than 10 runs is greyed out rather than dressed up as a trend.
It does not measure real user queries
No provider exposes what real people typed. Anyone selling "real AI search analytics" is either reporting referral traffic, which is a downstream proxy, or making it up. CitePrism will not pretend otherwise.
Sampling is still worth doing, because the alternative is zero visibility. It just means reading the numbers as a directional signal about how the models talk about your category, not as a traffic report.
Hosted, or on your own box
Sign up at app.citeprism.com, paste your vendor keys (or one OpenRouter key for every engine) in Settings, and the first runs land in minutes. Or run the same code yourself: one compose file with Postgres, Redis, the API, the worker, and the dashboard behind nginx. Either way the provider spend is yours and there is no per-seat markup in the middle.
- • Runs entirely on the free deterministic stub provider until you turn real engines on, so you can explore the product before spending a cent.
- • Every run records what it cost in micro-dollars. A per-workspace daily cap and a lifetime install cap are enforced before a job is ever enqueued.
- • Provider keys are encrypted at rest, and the API only ever returns the last four characters back to you.
git clone https://github.com/vernu/citeprism.git
cd citeprism/docker
cp .env.example .env # add two secrets: openssl rand -hex 32
docker compose up -d
open http://localhost:8080 Read the code before you trust the numbers
The matcher, the metric SQL and the cost table are all in the repository. If a definition looks wrong to you, open an issue, or change it and recompute your history.