{
  "id": 10194872,
  "title": "Nebula Agent: An AI That Surfaces Contradictions in Structured Content",
  "url": "https://urgent.news/2026/09/27/nebula-agent-an-ai-that-surfaces-contradictions-in-structured-content",
  "topic": "ai",
  "section": "AI",
  "published": "2026-09-27T10:27:07.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/vicarioy/nebula-agent-an-ai-that-surfaces-contradictions-in-structured-content-3760"
  },
  "original_language": "en",
  "account": "This submission for the Sanity Challenge creates an AI agent that queries structured content in a Sanity Content Lake to answer questions and identify contradictions between sources. The agent, built for the fictional board game Nebula, doesn't simply search for keywords. Instead, it writes GROQ queries against Sanity in real time, reads the retrieved structured articles, and presents any conflicting information side by side with their source URLs.\n\nThe core question posed is: According to the Nebula rulebook and errata, how many energy tokens do players start with? The agent's answer reveals a contradiction - the rulebook states players start with 5 energy tokens, while the official errata corrects this to 8 tokens. A keyword search would have retrieved both articles but would not have known which was authoritative or that the errata corrected the rulebook.\n\nThe agent's functionality stems from the structured content model defined in Sanity Studio using TypeScript. It includes a single document type called \"article\" with fields for title, slug, body, and source. The agent populates this dataset with three documents, deliberately creating a contradiction between the Nebula Core Rulebook and the Nebula Official Errata.\n\nTo run the agent, users need to install dependencies, set up API keys for Gemini and Sanity, and then query the agent using a command-line interface. The agent's core functionality relies on function calling with Gemini, using a primary tool that runs GROQ queries against the Sanity dataset. It returns JSON results and uses the provided source URLs to present any contradictions it uncovers.",
  "summary": "This is a submission for the Sanity Challenge, Path One: Ship an Agent That Queries Real Content What I Built A Sanity-powered AI agent that answers questions about a fictional board game called Nebula and, crucially, surfaces contradictions between sources . The agent doesn't just search for keywords. It writes its own GROQ queries(Graph Relational Object Queries) against a Sanity Content Lake…",
  "key_points": [
    "AI agent queries Sanity Content Lake in real time",
    "Identifies contradiction: 5 vs 8 energy tokens in Nebula game",
    "Uses GROQ queries and Gemini function calling to present findings"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}