<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: paulo de vries</title>
    <description>The latest articles on DEV Community by paulo de vries (@paulomdevries).</description>
    <link>https://dev.to/paulomdevries</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3934863%2Fc6b491f1-caf2-469a-9afd-9033450ac434.jpg</url>
      <title>DEV Community: paulo de vries</title>
      <link>https://dev.to/paulomdevries</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/paulomdevries"/>
    <language>en</language>
    <item>
      <title>Stop hallucinating: a developer API for grounding LLM responses with signed, sourced claims</title>
      <dc:creator>paulo de vries</dc:creator>
      <pubDate>Sat, 16 May 2026 13:00:59 +0000</pubDate>
      <link>https://dev.to/paulomdevries/stop-hallucinating-a-developer-api-for-grounding-llm-responses-with-signed-sourced-claims-35ae</link>
      <guid>https://dev.to/paulomdevries/stop-hallucinating-a-developer-api-for-grounding-llm-responses-with-signed-sourced-claims-35ae</guid>
      <description>&lt;p&gt;TL;DR: I just shipped SourceScore VERITAS — a free-tier-friendly API that returns hand-verified AI/ML claims with their primary sources, an HMAC-SHA256 signature, and a ready-to-paste citation. 51 claims at launch; expanding to 5,000+ this year. curl &lt;a href="https://sourcescore.org/api/v1/claims.json" rel="noopener noreferrer"&gt;https://sourcescore.org/api/v1/claims.json&lt;/a&gt; and you're in.&lt;/p&gt;

&lt;p&gt;If you've built anything on top of an LLM in the last two years, you've watched it confidently invent facts that don't exist. You've seen GPT-4 cite papers that were never written. You've watched Claude give the wrong release date for a model that came out last month. You've fixed RAG pipelines where the retriever pulled the right document but the model still produced a number nobody can find anywhere on the source page.&lt;/p&gt;

&lt;p&gt;The grounding problem isn't going away. It's the hardest unsolved problem in production AI today, and the bigger your model gets, the more confidently it lies when it lies.&lt;/p&gt;

&lt;p&gt;Last week I shipped VERITAS — a developer API I wish existed two years ago.&lt;/p&gt;

&lt;p&gt;What it does (in one curl)&lt;br&gt;
curl -X POST &lt;a href="https://sourcescore.org/api/v1/verify" rel="noopener noreferrer"&gt;https://sourcescore.org/api/v1/verify&lt;/a&gt; \&lt;br&gt;
  -H 'Content-Type: application/json' \&lt;br&gt;
  -d '{"claim": "Llama 3.1 was released in July 2024"}'&lt;br&gt;
{&lt;br&gt;
  "apiVersion": "v1",&lt;br&gt;
  "query": "Llama 3.1 was released in July 2024",&lt;br&gt;
  "bestMatch": {&lt;br&gt;
    "id": "...",&lt;br&gt;
    "subject": "Llama 3.1",&lt;br&gt;
    "predicate": "released_on",&lt;br&gt;
    "object": "2024-07-23",&lt;br&gt;
    "statement": "Llama 3.1 released on: 2024-07-23.",&lt;br&gt;
    "confidence": 1.0,&lt;br&gt;
    "detailUrl": "&lt;a href="https://sourcescore.org/api/v1/claims/....json" rel="noopener noreferrer"&gt;https://sourcescore.org/api/v1/claims/....json&lt;/a&gt;"&lt;br&gt;
  },&lt;br&gt;
  "signature": {&lt;br&gt;
    "algorithm": "HMAC-SHA256",&lt;br&gt;
    "signedBy": "did:web:sourcescore.org",&lt;br&gt;
    "signedAt": "2026-05-16T...",&lt;br&gt;
    "signature": "..."&lt;br&gt;
  }&lt;br&gt;
}&lt;br&gt;
Three things make this useful for grounding LLMs:&lt;/p&gt;

&lt;p&gt;Every claim has 2+ primary sources — the official Meta AI blog, the model card on Hugging Face, the arXiv preprint, etc. Not "according to an article on TechCrunch."&lt;br&gt;
Every response is signed — HMAC-SHA256 with did:web:sourcescore.org. Your client can prove the answer came from SourceScore and wasn't tampered in transit.&lt;br&gt;
Every claim has a stable id — paste it into your LLM context, link to it from a paper, embed it in a prompt template. It won't move.&lt;br&gt;
Why I built it this way&lt;br&gt;
There are great academic fact-checking datasets. There are great benchmark leaderboards. There's Wikipedia. None of them are an API you can call from your RAG pipeline at request time with a 30ms response.&lt;/p&gt;

&lt;p&gt;I picked a narrow vertical to start — AI/ML research. 51 claims at launch covering:&lt;/p&gt;

&lt;p&gt;12 foundational papers (Transformer, RLHF, RAG, LoRA, DPO, Chinchilla, PPO, Adam, AlexNet, BERT, Chain-of-Thought, FlashAttention, MoE, Switch Transformer, Mamba, T5, CLIP, Constitutional AI, InstructGPT, ResNet)&lt;br&gt;
22 model releases with dates, parameter counts, context windows (GPT-2/3/4/4-Turbo/4o, Claude 3/3.5, Llama 1/2/3/3.1, Mistral 7B, Mixtral 8x7B, Gemini Pro/1.5, Whisper, DALL-E 3, Stable Diffusion 1, Sora, ChatGPT, ChatGPT Plus)&lt;br&gt;
6 organizational facts (Anthropic, OpenAI, Mistral, HuggingFace, Stability AI, DeepMind)&lt;br&gt;
Every claim is hand-verified against the primary source. If a claim is below 0.85 confidence, it's not published. Performance-comparison claims are intentionally excluded for v0 because benchmark numbers depend on version + prompt format — too much surface for "actually that's not quite right" pushback.&lt;/p&gt;

&lt;p&gt;The plan is to grow the catalog to ~500 claims by Day 30 and ~5,000 by Year 1, all under the same methodology.&lt;/p&gt;

&lt;p&gt;Free tier, no signup&lt;br&gt;
The free tier is 1,000 claims/month, no auth required. Just curl. Get familiar with the data shape, the signature format, the search behavior. If you outgrow it, paid tiers are €19 (Indie) / €99 (Startup) / €499 (Scale) — Stripe metered billing.&lt;/p&gt;

&lt;p&gt;OpenAPI 3.1 spec at /api/v1/openapi.json. Full docs at /docs/.&lt;/p&gt;

&lt;p&gt;What's next&lt;br&gt;
I've got two open questions I'd love feedback on:&lt;/p&gt;

&lt;p&gt;What claim types are most valuable? Right now I'm at release-dates + parameter-counts + paper-introductions + organizational-facts. Operator-suggested adds welcomed.&lt;br&gt;
Vertical expansion direction. AI/ML is the v0 wedge. Next likely candidates: scientific instrumentation specs, software release dates + versions, regulatory deadlines. What would you actually use?&lt;br&gt;
Try it; break it; tell me what's missing. &lt;a href="mailto:contact@sourcescore.org"&gt;contact@sourcescore.org&lt;/a&gt; or comment below.&lt;/p&gt;

&lt;p&gt;Built with: Next.js 15 (static export) · Cloudflare Pages + Pages Functions · TypeScript · Web Crypto API for HMAC · Plausible Analytics. 100% serverless, ~100ms cold-start globally. Source-rating product (the original SourceScore Index, 130 hand-scored sources) lives alongside at the same domain — both products under one methodology.&lt;/p&gt;

&lt;p&gt;Links to bookmark:&lt;/p&gt;

&lt;p&gt;Catalog: &lt;a href="https://sourcescore.org/claims/" rel="noopener noreferrer"&gt;https://sourcescore.org/claims/&lt;/a&gt;&lt;br&gt;
Docs: &lt;a href="https://sourcescore.org/docs/" rel="noopener noreferrer"&gt;https://sourcescore.org/docs/&lt;/a&gt;&lt;br&gt;
OpenAPI spec: &lt;a href="https://sourcescore.org/api/v1/openapi.json" rel="noopener noreferrer"&gt;https://sourcescore.org/api/v1/openapi.json&lt;/a&gt;&lt;br&gt;
Pricing: &lt;a href="https://sourcescore.org/pricing/" rel="noopener noreferrer"&gt;https://sourcescore.org/pricing/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>api</category>
      <category>typescript</category>
    </item>
  </channel>
</rss>
