Gadoes makes citations prove themselves

The dispumike fork adds a one-click way to re-check whether a cited source actually says what the AI claimed it said.

searchcompliance

Every citation the assistant produces now gets a stable identity and a verification state - pending, verified, unverified, or unavailable - shown as a small badge on the citation card. When a user hits "Verify & read," the backend goes back to the original source, re-runs the same lookup that produced the citation, and compares. The answer comes back as a status the reader can actually trust at a glance.

This is the move that separates grounded legal AI from a chatbot that footnotes confidently and hopes nobody checks. It's also the piece most teams skip, because it's quieter to build than a new chat feature and harder to demo. Gadoes shipped it anyway. One honest caveat from the fork's own notes: every verification call hits the underlying source again, so cost and rate limits matter - caching is effectively required alongside it.

So what If you're evaluating any legal AI tool, this is the capability to ask vendors about - and a useful reference point for what "trustworthy citations" looks like in practice.

View this fork on GitHub →

Spotted something wrong? Or know the PR text has fresher detail than the writeup above?

Commits in this thread

5 commits from Gadoes/dispumike, oldest first. Source extracted verbatim from the harvested git log.

SHA Subject Author Date
0ba14c89 feat(chunk20): migration 006, citation DB saving with IDs, verification_status type Gadoes 2026-05-02 ↗ GitHub
1e0939c2 feat(chunk20): CitationVerifier service with unit tests Gadoes 2026-05-02 ↗ GitHub
85e53476 feat(chunk20): POST /citations/:id/verify route with tests Gadoes 2026-05-02 ↗ GitHub
0681ec54 Chunk 20 Task 8: CitationCard verification badge Gadoes 2026-05-02 ↗ GitHub
commit body
- VerificationBadge component shows pending/verified/unverified/unavailable
- handleVerify calls POST /api/citations/:id/verify and updates badge state
- Button hidden when citation has no id
- makeCitation helper defaults to id="cite-default" for pre-Chunk-20 tests

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
20b226cd Merge Chunks 19-20: Telemetry Dashboard + Citation Verification Gadoes 2026-05-02 ↗ GitHub
commit body
Chunk 19 - MCP Telemetry:
- migration 005_mcp_events.sql
- Telemetry logging in McpClientManager.callTool (latency, cache_hit, success, error_type)
- GET /admin/mcp-telemetry route with per-source aggregation
- Frontend /admin/mcp-telemetry dashboard with auto-refresh

Chunk 20 - Citation Verification:
- migration 006_citations_verification.sql (verification_status column)
- Citation DB saving with IDs before SSE emit; chat_message_id linking
- CitationVerifier service (fetch + HTML text normalize, 10s timeout)
- POST /citations/:id/verify route
- CitationCard VerificationBadge component with live API updates

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

Capture this thread into my fork

Download a single Markdown prompt that tells Claude how to port every commit above into your working tree — adapting paths and structure to match your repo. Run it via claude -p < capture-thread-20.md from inside the repo you want the changes in.

⬇ Download capture-thread-20.md