Desert Ant Labs

Schemer: On-device Text to Structured JSON

Structured extractionClosed beta

On-device structured extraction that turns free text plus your JSON Schema into a typed JSON object, with explicit absence detection instead of hallucinated fields.

Schemer takes free text and a developer-supplied JSON Schema and returns a JSON object that matches it, with type guarantees instead of generative text. Plain JSON Schema in (OpenAI and Gemini compatible), typed JSON out. Its edge is absence detection: knowing when a field is simply not in the text, at 0.91 against 0.18 to 0.43 for prompted LLMs, which is exactly where generative extractors fail. The model is general; the launch reference is task creation.

Demo

Schemer is in closed beta. The model card and weights are public. Early access on request.

Performance

0.77 accuracy on unseen, out-of-distribution schemas at just 211M parameters and 111 MB on disk, plus 0.91 absence detection where prompted LLMs score 0.18 to 0.43.

0.776
Accuracy
0.911
Absence detection
8.1 ms
Per forward
111 MB
On disk

9,021 held-out records across seven usage slices, 13 languages (internal)

ModelAccuracyAbsenceParamsDisk
Gemma 4 26B A4B0.8340.42826.6B17.2 GB
Claude Haiku 4.50.8160.431n/aAPI
Qwen 3.5 9B0.8120.4349.1B9.1 GB
Ministral 3 8B0.7900.4308.0B17.8 GB
Gemma 4 E2B0.7800.4275.1B8.3 GB
Schemer (int8)0.7760.911211M218 MB
Schemer (int4)0.7690.908211M111 MB
Qwen 3.5 0.8B0.6510.3510.87B1.75 GB
NuExtract-2.0-2B0.6430.3932.2B4.4 GB
GLiNER2-multi0.5850.374307M309 MB
GLiNER2-base0.5240.368205M834 MB
NuExtract-tiny-v1.50.3340.2220.5B954 MB
FunctionGemma 270M0.2880.1810.27B540 MB

Internal evaluation on 9,021 held-out records; competitors run on the same held-out set.

Use cases

Natural language to calendar entry

Turn "Lunch with Priya next Thursday at 1, about an hour" into a typed event: title, start datetime, duration, and recurrence. Runs in a keyboard or notes app, on device and offline.

Messages into structured records

Turn a chat message, email, or scanned note into a CRM lead, order, or invoice: names, emails, amounts, and dates, each decoded to its real type, with missing fields returned as null instead of guessed.

Cleaner input for on-device LLMs

Pre-structure messy text into validated, typed fields before it reaches an on-device LLM. Clean structured input instead of raw prose cuts hallucination and token cost and lifts accuracy, all without leaving the device.

On-device agents and form-fill

Hand a local agent a JSON Schema and free text and get typed JSON back to trigger an action or prefill a form, with no cloud LLM and no per-call cost.

Reviews and feedback into ratings

Score a free-text review into a typed star rating, a sentiment label (positive, mixed, negative), and flags like would-repurchase, ready to sort or route without reading each one.

Normalize messy records

Batch-convert inconsistent free-text records, notes, logs, or exported spreadsheets into one clean typed schema, with absent fields flagged rather than invented, on device.

What it does

  • Plain JSON Schema in (OpenAI and Gemini compatible), typed JSON out
  • Decodes strings, numbers, booleans, datetimes, labels, and arrays to their real types
  • Explicit absence detection: reports a field as missing instead of inventing a value
  • Works across 13 languages from a single model, with no per-language setup

Specs

Parameters
211M (pruned mmBERT-base encoder)
Accuracy
0.776 (int8), 0.911 absence detection
Size
111 MB (int4 AWQ), 218 MB (int8)
Formats
Core ML and ONNX, cross-platform

Early access

Tell us what you are building and we will get you set up.