{
  "id": 13471475,
  "title": "Stop Asking AI to 'Pull Out the Key Details': Use a Schema-First Extraction Contract",
  "url": "https://urgent.news/2026/10/10/stop-asking-ai-to-pull-out-the-key-details-use-a-schema-first",
  "topic": "ai",
  "section": "AI",
  "published": "2026-10-10T17:09:23.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/blobxiaoyao/stop-asking-ai-to-pull-out-the-key-details-use-a-schema-first-extraction-contract-2b86"
  },
  "original_language": "en",
  "account": "An extraction contract is a better approach than asking AI to summarize a meeting transcript. When you request key details, the model often includes irrelevant information or fills in gaps with plausible values. This can lead to issues when parsing the results for code or database use.\n\nThe solution is to specify exactly what valid output should look like. Break the prompt into four parts: the raw source text, the attributes to extract, the required output format, and how to handle missing data. Then, the model follows a fixed procedure to extract evidence, normalize formats, apply missing data rules, and serialize to the schema. This approach eliminates chatter, format drift, and fabrication.\n\nThe missing data policy is crucial. Instead of forcing the model to fabricate values, allow nulls and flags for unconfirmed items. This way, downstream code can identify missing or uncertain information instead of mistakenly treating it as valid data. While forcing structured output may slightly reduce reasoning ability, the benefits outweigh the cost for extraction tasks.\n\nTo implement this, validate the output with an actual parser before using it. Most importantly, the prompt contract should be separate from instructions. Keep the source text, field list, and rules in distinct slots so the model knows exactly what to extract. This structured contract provides consistent, reliable results for downstream systems.",
  "summary": "Paste a meeting transcript into ChatGPT, type \"pull out the key details\", and you get a friendly paragraph. It reads well. It is also useless to your code, because a script cannot parse \"Sarah from Acme seems keen to move around 420 seats by mid-November.\" So you add \"return JSON\". Now you get a code block, but it opens with \"Sure! Here's the extracted data:\", the dates are in three different…",
  "key_points": [],
  "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."
}