Skip to main content
Orux AIOruxAI
Back to articles

Orux AI / Model notes

Claude Sonnet 5.5 JSON extraction: keep missing museum inventory fields as null

One real response turns three synthetic museum loan notes into JSON. Check missing values, numbers, dates and the difference between a prompt and schema enforcement.

Orux AIUpdated ≈ 3 min read
Claude Sonnet 5.5 JSON extraction: keep missing museum inventory fields as null
On this page

A museum loan spreadsheet can become misleading when a missing insurance valuation is turned into zero. This Claude Sonnet 5.5 case asks a narrower question: can three short notes become explicit records while unknown information stays unknown? We ran one request with synthetic exhibits, not a real museum collection.

The exact request and observed answer

The published Orux form accepts messages and max_tokens. We sent the following English instruction with max_tokens=600:

You are preparing a museum loan inventory. Extract only facts explicitly stated below. Return one JSON object with an items array; each item must have exactly id, title, gallery, insurance_usd, and arrival_date. Use a JSON number for insurance_usd and YYYY-MM-DD for a stated date. Use null for every missing field. Do not invent a valuation, date, gallery, or item. Return JSON only, without Markdown.

A1: Brass compass. Display in Gallery A. Insured for USD 12000. Arrives on 2026-11-14.
B2: Silk route map. Display in Gallery B. Insurance valuation is still awaiting approval. Arrives on 2026-11-16.
C3: Ceramic sherd. Insured for USD 850. The arrival date and gallery have not been confirmed.
Swipe horizontally to view the full content

The saved response was valid JSON and contained the three requested records:

{
  "items": [
    {
      "id": "A1",
      "title": "Brass compass",
      "gallery": "Gallery A",
      "insurance_usd": 12000,
      "arrival_date": "2026-11-14"
    },
    {
      "id": "B2",
      "title": "Silk route map",
      "gallery": "Gallery B",
      "insurance_usd": null,
      "arrival_date": "2026-11-16"
    },
    {
      "id": "C3",
      "title": "Ceramic sherd",
      "gallery": null,
      "insurance_usd": 850,
      "arrival_date": null
    }
  ]
}
Saved Claude Sonnet 5.5 JSON response for three synthetic exhibit records
Saved Claude Sonnet 5.5 JSON response for three synthetic exhibit records

Editorial typesetting of the original text response. Claude generated the JSON text, not this graphic. Observed on 2026-10-28.

Read the missing values before importing

IDTitleGalleryInsurance, USDArrival date
A1Brass compassGallery A120002026-11-14
B2Silk route mapGallery Bnull — unapproved2026-11-16
C3Ceramic sherdnull — unconfirmed850null — unconfirmed

Swipe horizontally to view the full table.

The response preserves the absent B2 valuation and the two unknown C3 fields as null. That distinction matters: zero would be a claimed valuation, while a blank date must not become a guessed shipping deadline. These are checks on this answer, not a claim about the model’s error rate.

Which parameters actually mattered here?

SettingRole in this case
messagesCarries the source notes, exact keys, number/date requirements and the no-inference instruction
max_tokens=600Limits output generation; it does not impose a 600-character limit or validate JSON

Swipe horizontally to view the full table.

The response reports 278 input tokens and 161 output tokens, ending with stop. Those are the recorded usage values from one call; they are not a latency test or a quality benchmark. We did not send a JSON Schema parameter. A prompt that asks for JSON is not schema-constrained generation; native schema controls are separate API features.

Add deterministic checks after the model

Before import, parse the text; require an items array of three objects; check the exact five keys; reject duplicate IDs; and validate number-or-null and date-or-null fields. Then reconcile each non-null value with its source line. A syntactically valid JSON object can still contain a wrong fact.

For a real collection, treat valuations, movement dates and gallery assignments as approval-controlled data. This example demonstrates extraction from supplied notes, not valuation, shipping advice or permission to publish collection records.

Load the “Museum loan inventory · text response” template on Claude Sonnet 5.5. The template preserves this prompt and answer; loading it does not run the model. Start with a small redacted batch and review exceptions before connecting an importer.

Related articles

Browse all articles →