Drop a viral claim. Get a sourced context receipt.
A deliberately small web app + CLI for screenshots, headlines, and social posts. It reads the exact claim, searches the live web, separates fact from framing, and produces a shareable receipt.
- One job: screenshot in, context card out.
- No account or database: inputs are processed once and not stored by the app.
- Visible state: live/demo mode, verdict, confidence, evidence, and sources are always explicit.
- Local-first history: the browser keeps only the latest receipt in
localStorage. - Same core everywhere: web and CLI call the same analysis module.
- Works now: without an API key the full UI runs in clearly labeled demo mode.
Requires Node.js 20+.
cp .env.example .env
# Add OPENAI_API_KEY to .env for live image + web analysis.
npm startOpen http://localhost:8787.
On Windows, double-click run.cmd. It creates .env, opens the browser, and starts the server. Add your key to .env whenever you want live analysis; without it, the app stays in demo mode.
OPENAI_API_KEY=sk-... node cli.mjs --text "paste the claim"
OPENAI_API_KEY=sk-... node cli.mjs --image screenshot.png
node cli.mjs --text "demo this flow" --jsonAfter npm link, the command becomes:
receipt --image screenshot.pngThis is a plain Node HTTP server with zero runtime dependencies. Deploy it anywhere that can run Node 20+ and set:
OPENAI_API_KEYOPENAI_MODEL(optional; defaults togpt-5.6-luna)PORT(optional; defaults to8787)ALLOWED_ORIGINS(optional, comma-separated)
The API key stays server-side. The server applies same-origin checks, a request-size cap, a basic in-memory rate limit, and restrictive browser security headers.
- Someone sees a wild screenshot.
- They drop it into Context Receipt.
- The app produces a compact verdict card.
- They share that card back into the same conversation.
- The card itself advertises the action: get the receipt.
- Public, immutable receipt links with cryptographic hashes.
- Browser share target / extension: right-click a screenshot → Print receipt.
- Original-post recovery for X/Reddit screenshots.
- Source-quality badges and date mismatch warnings.
- Challenge button that reruns the claim with a counterargument.
npm test