{"schema_version":"1","site":"https://decosa.ai","id":"demand-reader","num":"155","name":"Injury demand reader","tool_name":"Read a demand before the deadline","short":"Demand reader","blurb":"For bodily-injury adjusters at carriers, TPAs and self-insureds. Give it an injury demand package: the lawyer's letter, the medical bills and the records. It shows whether the letter is a time-limited demand and the respond-by date the letter sets, computed in code from its own words and the day you received it, next to the statute's minimum where the state is encoded (California, Georgia, Missouri, Montana, Utah; Florida's safe harbour). Every condition of acceptance is quoted with its page, the state's required elements are checked, each bill line is tied to its page and summed, and the total is reconciled with what the letter claims. It lists providers billed with no records, records with no bill, gaps in treatment, earlier care, and notes on the letter's citations (a statute from another state, a case that isn't at its cite). It never values the claim or recommends paying.","status":"preview","labels":{"industry":["finance","legal"],"job":["review"],"input":["text","files"],"deploy":["selfhost"],"status":"preview","output":["text","record"],"data":["pii","confidential"],"hardware":"gpu-96","licence":"permissive"},"industries":["finance","legal"],"runs_in":["selfhost"],"part_of":[],"built_from":["grounding","signed-record"],"models":"Qwen3.8-27B (reads the letter, the bills and each record page; the grounding judge checks every sentence it writes)","where":"Self-host or confidential access for real claim files; the hosted demo takes made-up packages only","hardware":"1x RTX PRO 6000 (96 GB) for Qwen3.8-27B; the deadline rules and the tie-out need no GPU","final_artifact":"The respond-by date and statute check, the conditions with pages, the required elements, the specials tied to the bills, records against bills, gaps, earlier care, notes on the citations, and a signed record.","self_host_first":true,"verification":{"receipt_coverage":"full","summary":"Every quote and amount found on the page it cites; dates and totals computed in code; receipt per model call; signed record of page hashes and every item","manual_qa":{"hosted":{"date":"2026-09-29","result":"pass","p50_ms":161000,"p95_ms":208000,"runs":8,"receipts_per_run":23,"cost_per_run_usd":0.0197},"selfhost":null,"known_limits":["Hosted verification ran on our pre-release server through the production gateway, before these routes reached the production API.","Measured on 24 synthetic packages written by one author; real packages are longer, scanned and messier.","Typed or pasted page text only in this version; scans go through the document reader first.","Six states encoded; the rest return 'not encoded: check with counsel'."],"nightly_covers":null},"nightly":"https://api.decosa.ai/verify/status"},"eval_summary":{"metrics":[{"name":"Respond-by date exact","value":"7 of 7","unit":null,"n":7,"split":"test","note":"every time-limited letter in the test set; the one ordinary demand was read as not time-limited (8 of 8)"},{"name":"Statute's minimum exact","value":"7 of 7","unit":null,"n":7,"split":"test","note":null},{"name":"Conditions of acceptance found","value":"31 of 31","unit":null,"n":31,"split":"test","note":"precision 33 of 41"},{"name":"Billed totals within $1","value":"8 of 8","unit":null,"n":8,"split":"test","note":"0 invented bill lines"},{"name":"Value or payment language in the tool's own words","value":"0","unit":null,"n":8,"split":"test","note":null}],"dataset":"24 synthetic injury demand packages (letters, bills and records; 406 pages; CA, GA, MO, MT, UT, FL, TX, OH) written blind by a separate author with planted deadlines, conditions, missing elements, specials gaps and citation problems; dev 16, test 8.","held_out":true,"caveats":["Synthetic packages from one author; real ones are longer, scanned and messier.","Small test set (8 packages): wide confidence intervals.","Prompts and rules were tuned on the 16 dev packages.","Six states encoded; the rest are not."],"date":"2026-09-29","doc_url":"https://decosa.ai/metrics/evals/demand-reader"},"stack":{"summary":"For bodily-injury adjusters at carriers, TPAs and self-insureds. It reads the lawyer's letter, the bills and the records and shows whether it is a time-limited demand, the respond-by date the letter sets (computed in code from its words and the day you received it) next to the statute's minimum where the state is encoded, every condition of acceptance with its page, the state's required elements, each bill line tied to its page and reconciled with what the letter claims, providers billed without records, gaps in care, earlier care, and notes on the letter's citations. It never values the claim or recommends paying.","tagline":"An injury demand package in: the respond-by date the letter sets, every condition with its page, and the specials tied to the bills. Never a value.","deployment":"self-host-first","regulatory_note":"Time-limited demand statutes read 28-29 Sep 2026 and encoded with their sources: California CCP 999-999.5 (SB 1155, demands transmitted from 1 Jan 2023: at least 30 days from transmission by email, fax or certified mail, 33 by mail); Georgia O.C.G.A. 9-11-67.1 as amended by SB 83 (2024: at least 30 days from receipt; payment at least 40 days); Missouri RSMo 537.058 (at least 90 days from receipt); Montana MCA 33-18-251 (2023: at least 60 days from receipt, rolled to the next business day); Utah Code 31A-22-323 (S.B. 74, 2026: at least 30 days); Florida 624.155(4) (90-day safe harbour after notice) and 627.4137 (30-day disclosure). Texas (common-law Stowers) and Louisiana were checked and have no such statute; every other state returns \"not encoded: check with counsel\". Deadlines are reminders from the letter's own words, not legal advice. The NAIC AI model bulletin asks insurers to govern third-party AI: the signed record lists every model call.","components":[{"id":"llm","role":"Reads the letter's terms and every condition with quotes, each bill page's charge lines, and each record page's visits (the medical chronology's page extractor); the grounding judge checks every sentence it writes","name":"Qwen3.8-27B (NVIDIA NVFP4)","hf_repo":"nvidia/Qwen3.8-27B-NVFP4","license":"Apache-2.0","params":"27.8B","quant":"NVFP4 (MLP) + FP8 (attention/GDN), FP8 KV cache, MTP speculative decoding k=3","vram_gb":57,"memory_gb_estimate":null,"engine":"vLLM 0.29.0","receipt_coverage":"strong","in_hosted_demo":true,"tiers":["standard"],"alternative_to":null},{"id":"llm-lite","role":"Lite tier: the same reads on a 48 GB card","name":"Gemma 4 26B A4B (instruction-tuned)","hf_repo":"google/gemma-4-26B-A4B-it","license":"Apache-2.0 (model card also links the Gemma 4 licence page)","params":"25.2B","quant":"BF16 weights; FP8 at load time (vLLM --quantization fp8) to fit a 48 GB card","vram_gb":null,"memory_gb_estimate":null,"engine":"vLLM 0.29.0 (Gemma4ForConditionalGeneration is in its model registry)","receipt_coverage":"none","in_hosted_demo":false,"tiers":["lite"],"alternative_to":null},{"id":"llm-best","role":"Best tier: a larger model for packages of several hundred pages","name":"DeepSeek-V4-Flash (NVIDIA NVFP4)","hf_repo":"nvidia/DeepSeek-V4-Flash-NVFP4","license":"MIT","params":"284B","quant":"NVFP4 experts + FP8 (about 159-176 GB of weights)","vram_gb":192,"memory_gb_estimate":null,"engine":"vLLM B12X community build, TP2 on 2x RTX PRO 6000, MTP draft fixed by the kit's patches","receipt_coverage":"none","in_hosted_demo":false,"tiers":["best"],"alternative_to":null},{"id":"glm-wanted","role":"Second judge, from another family","name":"GLM-5.3-Flash","hf_repo":"zai-org/GLM-5.3-Flash","license":"MIT","params":"321B","quant":"NVFP4 on NVIDIA (nvidia/GLM-5.3-Flash-NVFP4, about 170-186 GB, unconfirmed); MLX 4-bit on a Mac (165 GB)","vram_gb":null,"memory_gb_estimate":170,"engine":"SGLang SM120 build, TP2 on 2x 96 GB (vLLM is broken on sm_120 for this model, and the SGLang build hung on our server), or mlx-lm on a Mac with 192 GB or more","receipt_coverage":"none","in_hosted_demo":false,"tiers":["wanted"],"alternative_to":null}],"tiers":[{"id":"lite","label":"Lite · one 48 GB card","summary":"The same pipeline on a smaller mixture-of-experts model. Faster and cheaper; accuracy on this task unknown.","components":["llm-lite"],"hardware":"1x L40S or RTX 6000 Ada 48 GB (not measured)","quality_evidence":[{"metric":"accuracy on this task","value":"not measured yet","source":null}],"latency_note":"not measured yet","in_hosted_demo":false,"receipt_coverage":"partial","receipt_note":"Direct route: calls are attested by the box's key; no gateway receipts.","hosting":null},{"id":"standard","label":"Standard · the hosted demo, one 96 GB card","summary":"Qwen3.8-27B reads the letter, the bills and the records with quotes; the dates, the statute rules, the sums and the matching are code. About 20-25 receipted calls per package.","components":["llm"],"hardware":"1x RTX PRO 6000 Blackwell 96 GB","quality_evidence":[{"metric":"respond-by date exact, held-out test (8 packages, gateway, run once)","value":"7 of 7","source":"decosa-api docs/evals/demand-reader.md, measured on our server 2026-09-29, gateway route"},{"metric":"conditions of acceptance found / billed totals within $1 (test)","value":"31 of 31 / 8 of 8","source":"decosa-api docs/evals/demand-reader.md, measured on our server 2026-09-29, gateway route"}],"latency_note":"measured: a few minutes per package on the shared gateway under load (test set)","in_hosted_demo":true,"receipt_coverage":"strong","receipt_note":"Hosted: gateway-signed receipt per model call. Self-hosted: attested by the box's key.","hosting":null},{"id":"best","label":"Best · DeepSeek-V4-Flash on two more cards","summary":"A larger model for long, multi-claimant files.","components":["llm-best"],"hardware":"2x RTX PRO 6000 96 GB","quality_evidence":[{"metric":"accuracy on this task","value":"not measured yet","source":null}],"latency_note":"not measured yet","in_hosted_demo":false,"receipt_coverage":"partial","receipt_note":"Not a hosted model: calls are attested by the box's key only.","hosting":null},{"id":"wanted","label":"Wanted · two large judges from different families","summary":"DeepSeek-V4-Flash and GLM-5.3-Flash each read the file, and a finding stands when they agree; disagreements go to the reviewer. Claim files stay on your own hardware, never on community providers. Not served yet.","components":["llm-best","glm-wanted"],"hardware":"Your own hardware: 2x 96 GB cards for DeepSeek-V4-Flash plus 2x 96 GB for GLM-5.3-Flash, or one Mac Studio with 512 GB holding both 4-bit builds (156 + 165 GB, sizes from our Mac; not run together yet). Estimate.","quality_evidence":[{"metric":"accuracy on this task","value":"not measured yet","source":null}],"latency_note":"not measured yet","in_hosted_demo":false,"receipt_coverage":"none","receipt_note":"On your own hardware its calls are attested by the box's key only: not a hosted model there, so no gateway receipts. Never sent to community providers.","hosting":"own-hardware"}],"alternates":[],"services":[{"name":"decosa-api","port":8445,"image":"${DECOSA_REGISTRY}/decosa-api:0.1.0","purpose":"Package intake, quote and amount checks, the deadline rules, the sums, the chronology merge, citation look-ups, signing and the HTTP API (/demand/*). No GPU. Binds 127.0.0.1 by default."},{"name":"decosa-llm","port":8000,"image":"${DECOSA_REGISTRY}/decosa-llm:0.1.0","purpose":"vLLM OpenAI endpoint for Qwen3.8-27B. Internal to the compose network."}],"tools":[{"name":"Cal. Code Civ. Proc. §§ 999-999.5","url":"https://leginfo.legislature.ca.gov/faces/codes_displaySection.xhtml?lawCode=CCP&sectionNum=999.1","license":"public law","purpose":"California's rules, quoted in the read."},{"name":"O.C.G.A. § 9-11-67.1 (SB 83, 2024)","url":"https://gov.georgia.gov/document/2024-signed-legislation/sb-83/download","license":"public law","purpose":"Georgia's rules, from the signed act."},{"name":"decosa medical chronology (vertical 73)","url":"https://decosa.ai/legal/medical-chronology","license":"AGPL-3.0-or-later (decosa-api)","purpose":"Its page extractor reads each record page; imported, not copied."},{"name":"Local case-law citation index (CourtListener bulk data, CAP)","url":"https://www.courtlistener.com/help/api/bulk-data/","license":"Public Domain Mark / CC0","purpose":"Checks that a cited case exists at its cite."},{"name":"decosa grounding (vertical 17)","url":"https://decosa.ai/apps/grounding","license":"AGPL-3.0-or-later (decosa-api)","purpose":"Judges every sentence the model writes against the page it came from; imported, not copied."},{"name":"decosa record (vertical 07) and POST /record/verify","url":"https://decosa.ai/apps/record","license":"AGPL-3.0-or-later (decosa-api)","purpose":"The hash chain and the Ed25519-signed record; anyone can re-check it."}],"hardware":[{"tier":"1x RTX PRO 6000 Blackwell 96 GB","fits":true,"notes":"Measured: the hosted demo's Qwen3.8-27B runs on one of these cards on our server."},{"tier":"1x L40S / RTX 6000 Ada 48 GB","fits":null,"notes":"Not measured. FP8 Qwen3.8-27B with a shorter context, or Gemma 4 26B A4B (lite)."},{"tier":"CPU only","fits":true,"notes":"The date rules, the sums, the header checks, signing and verification need no GPU; reading the text needs the model."}],"latency":[{"lane":"one package (15-23 pages), busy shared gateway","typical_ms":161000,"source":"decosa-api docs/evals/demand-reader.md, measured on our server 2026-09-29, gateway route, test set p50 (p95 208 s)"},{"lane":"deadline rules and the sums","typical_ms":50,"source":"estimate: no model call"}],"benchmark":null,"notes":[]},"buyer_facts":[{"label":"What it checks","value":"Time-limited or not; the respond-by and payment dates from the letter's words; the statute's minimum (CA, GA, MO, MT, UT; FL's safe harbour); each condition with its page; the state's required elements; bill lines on their pages, summed and reconciled per provider; records vs bills; gaps; earlier care; citations from another state, cases not at their cite, and misstatements of the law."},{"label":"What it never does","value":"It never values the claim, recommends paying, offering or accepting, or judges the letter's credibility. A sentence that would do so is removed. The adjuster decides."},{"label":"Data retention","value":"Nothing kept on the server: the package lives in memory for the request; logs carry counts only. You keep the signed record with the claim file."},{"label":"What leaves the box (hosted demo)","value":"The pages go to Qwen3.8-27B through the Decosa API, whose receipts hold hashes, not text. Case citations (only the cite) are looked up in the local index and, on a miss, CourtListener. The hosted demo is for made-up packages; real files run on your own box or confidential access."},{"label":"Model calls per package","value":"About 20-25: the letter (three reads), one per bill page, one per record page, and the grounding checks."},{"label":"Cost per package","value":"A few cents or less per package on average at the gateway list price (held-out test). Each run shows its own measured cost."},{"label":"States encoded","value":"California, Georgia, Missouri, Montana, Utah; Florida's safe harbour and disclosure rules. Texas and Louisiana checked with no statute found. Any other state: the letter's own deadline, and 'not encoded: check with counsel'."}],"data_handling":{"page":"/data#demand-reader","self_host":{"level":"confidential","leaves":"identifiers","summary":"Runs on your machine; by default only short identifiers or a digest go to the public services listed in external_calls."},"hosted":{"level":"operator-processed","demo_only":true,"summary":"Hosted demo on sample or public data only; self-host for real data.","gpus":"operator-contracted","third_parties":[],"retention":"Nothing kept on the server: the package lives in memory for the request; logs carry counts only. You keep the signed record with the claim file.","used_for_training":false,"encrypted_while_processed":false},"sealed_tier":{"applies":false,"note":"The sealed tier (raw chat only, never use-case pipelines) is paused at launch (/docs/sealed-tier)."},"external_calls":[{"to":"CourtListener (Free Law Project)","route":"both","sends":"identifiers","what":"A case citation (volume, reporter, page and the case name) when the local citation index doesn't have it; never the letter.","default":"on","off":"Set DECOSA_PREFLIGHT_CL_OFF=1 (self-host prompt sets it) to use the local index only."}]},"console":{"href":"/tools/insurance/demand-reader","input":"chat","lanes":[{"id":"deadline","title":"Deadline","kind":"list"},{"id":"conditions","title":"Conditions","kind":"list"},{"id":"specials","title":"Specials","kind":"list"},{"id":"record","title":"Signed record","kind":"json"}],"samples":[{"n":1,"id":"ga-policy-limits","title":"Ga policy limits","deep_link":"/tools/insurance/demand-reader?sample=1&autorun=0"},{"n":2,"id":"ga-short-deadline","title":"Ga short deadline","deep_link":"/tools/insurance/demand-reader?sample=2&autorun=0"},{"n":3,"id":"ca-mailed-short","title":"Ca mailed short","deep_link":"/tools/insurance/demand-reader?sample=3&autorun=0"},{"n":4,"id":"mt-holiday","title":"Mt holiday","deep_link":"/tools/insurance/demand-reader?sample=4&autorun=0"},{"n":5,"id":"fl-fabricated-case","title":"Fl fabricated case","deep_link":"/tools/insurance/demand-reader?sample=5&autorun=0"},{"n":6,"id":"oh-not-encoded","title":"Oh not encoded","deep_link":"/tools/insurance/demand-reader?sample=6&autorun=0"},{"n":7,"id":"tx-no-deadline","title":"Tx no deadline","deep_link":"/tools/insurance/demand-reader?sample=7&autorun=0"}],"deep_link_params":{"sample":"1-based index into samples, or a sample id","autorun":"1 = start the run once the sample is loaded; 0 (default) = only preselect","reduce-motion":"1 = turn off animations"}},"api":{"base":"https://api.decosa.ai","contract":"/api/contract.json","contract_markdown":"/api/contract.md","reference":"/docs/api","keys":"/account/keys"},"prompts":{"hosted":"/prompts/demand-reader-hosted.md","selfhost":"/prompts/demand-reader-selfhost.md","assemble":"/prompts/demand-reader-assemble.md","mac":null},"rehearsal":{"bundle":"/samples/demand-reader.zip","bundle_url":"https://decosa.ai/samples/demand-reader.zip","folder":"/samples/demand-reader/","expected":"/samples/demand-reader/expected.json","files":["/samples/demand-reader/expected.json","/samples/demand-reader/inputs/claim.json","/samples/demand-reader/inputs/documents.json"],"bytes":3612,"checks":["it is a time-limited demand","respond by 3 Sep 2026, from the letter's 30 days after receipt","the statute's minimum is the same day","the bills total $11,910.00","$19,540.00 claimed is not supported by any bill","the signed record verifies","a record with its respond-by date changed no longer verifies","every model call has a signed receipt"],"licence":"Synthetic: the claimant, insured, firm, insurer and providers are invented. Part of decosa-api.","about":"A synthetic Georgia motor-vehicle demand (two letter pages), two bills and three sets of records, received by certified mail on 4 Aug 2026. The respond-by date must be 3 Sep 2026 (30 days from receipt, O.C.G.A. 9-11-67.1), the $19,540.00 of the $31,450.00 claimed that no bill supports must be found, the letter's '10 days' misstatement and its Florida statute must be noted, and the signed record must verify.","run":{"containers":"docker compose exec api python scripts/rehearse.py demand-reader","checkout":"python scripts/rehearse.py demand-reader --bundle demand-reader.zip --base-url http://127.0.0.1:8445","mac":".venv/bin/python scripts/rehearse.py demand-reader"},"guidance":"Set up with a coding agent (we recommend Claude Code with Claude Opus 5.5; any capable coding agent works) on mock data only, run the rehearsal until every check passes, then run your own data locally yourself. Never give the agent real data during setup."},"hardware_fit":{"check":"/self-host/hardware?use=demand-reader","data":"/api/hardware.json","tiers":[{"id":"lite","gpu_gb":40,"basis":"estimate","unknown":[]},{"id":"standard","gpu_gb":57.6,"basis":"stack","unknown":[]},{"id":"best","gpu_gb":192,"basis":"stack","unknown":[]},{"id":"wanted","gpu_gb":384,"basis":"estimate","unknown":[]}],"mac":null},"links":{"page":"/tools/insurance/demand-reader","json":"/use-cases/demand-reader.json","metrics":"/metrics/demand-reader","console":"/tools/insurance/demand-reader","console_sample":"/tools/insurance/demand-reader?sample=1&autorun=0","stack":"/tools/insurance/demand-reader#stack","try_live":"/tools/insurance/demand-reader","watch":"/tools/insurance/demand-reader","build":"/tools/insurance/demand-reader#build","self_host":"/tools/insurance/demand-reader#self-host","prompts":{"hosted":"/prompts/demand-reader-hosted.md","selfhost":"/prompts/demand-reader-selfhost.md","assemble":"/prompts/demand-reader-assemble.md","mac":null}}}