{"schema_version":"1","site":"https://decosa.ai","id":"certificate-check","num":"156","name":"Certificate request check","tool_name":"Check a certificate request","short":"Certificate check","blurb":"For commercial-lines account managers at independent agencies. When a general contractor, landlord or lender asks for a certificate of insurance and attaches a long contract, it pulls every insurance requirement out of the contract and the request email and checks each against the insured's policy papers: met by the policy (with the wording quoted), needs an endorsement or a policy change from the carrier, a certificate can't do this, or the papers don't say. It drafts the request to the carrier, a note to the holder, and plain text to paste into your own licensed certificate system. A certificate can't add coverage, so it never suggests putting anything on the certificate that the policy doesn't have. No ACORD form is drawn or reproduced.","status":"preview","labels":{"industry":["finance"],"job":["review","draft"],"input":["text"],"deploy":["selfhost"],"status":"preview","output":["data","record"],"data":["confidential"],"hardware":"gpu-96","licence":"permissive"},"industries":["finance"],"runs_in":["selfhost"],"part_of":[],"built_from":["grounding","signed-record"],"models":"Qwen3.8-27B (reads the contract and the policies; the grounding judge checks every reason it writes)","where":"Hosted demo on made-up papers; self-host or confidential access for client files","hardware":"1x RTX PRO 6000 (96 GB) for Qwen3.8-27B","final_artifact":"A requirements table with statuses and quotes, a carrier request, a holder note, text to paste into your certificate system, and a signed record.","self_host_first":true,"verification":{"receipt_coverage":"full","summary":"Every requirement quoted from the contract or email and every 'met' quoted from the policy; limits compared in code; receipt per model call; signed record for the E&O file","manual_qa":{"hosted":{"date":"2026-09-30","result":"pass","p50_ms":33257,"p95_ms":33845,"runs":5,"receipts_per_run":31,"cost_per_run_usd":0.014522},"selfhost":null,"known_limits":["Hosted numbers are the production smoke check of the sample, run 5 times in a row on 30 Sep 2026 (all passed); with 5 runs the slowest-1-in-20 figure is simply the slowest run.","Measured on 27 synthetic contract, request and policy triples written by one author; real policies run to 100+ pages of forms.","One wrong 'met' on the test set (an umbrella that excludes pollution); blanket waivers of subrogation often come back as needing a person.","Typed or pasted text only; scanned policies need the document reader first."],"nightly_covers":null},"nightly":"https://api.decosa.ai/verify/status"},"eval_summary":{"metrics":[{"name":"Status right on found requirements","value":"109 of 120 (0.91)","unit":null,"n":120,"split":"test","note":"third test run after cold-user fixes (runs: 0.91, 0.84, 0.91); CI 0.88-0.95"},{"name":"Requirements found","value":"120 of 124 (0.97)","unit":null,"n":124,"split":"test","note":"precision 120 of 144"},{"name":"'Met' calls that were right","value":"102 of 103","unit":null,"n":103,"split":"test","note":"a wrong 'met' is the E&O risk"},{"name":"'Met' calls without a policy quote","value":"0","unit":null,"n":103,"split":"test","note":null}],"dataset":"27 synthetic contract, request and policy triples (354 labelled requirements, 17 states), written blind by a separate author; stratified split, dev 18, test 9.","held_out":false,"caveats":["Synthetic papers from one author; 78% of labels are 'met', so read the per-status numbers.","The test set was run three times; the third run followed a fix prompted by the second, so it is not fully held out.","Not a coverage opinion; it compares wording.","Slow under load: about two minutes a request on the shared gateway."],"date":"2026-09-29","doc_url":"https://decosa.ai/metrics/evals/certificate-check"},"stack":{"summary":"For commercial-lines account managers at independent agencies. It pulls every insurance requirement out of the contract and the holder's request email, checks each against the insured's declarations, forms schedules and endorsement wording, and drafts the carrier request, a note to the holder and plain text to paste into your own licensed certificate system. A certificate can't add coverage, so it never suggests putting on the certificate what the policy doesn't have. No ACORD form is drawn or reproduced.","tagline":"Each insurance requirement in the contract checked against the policy papers: met (quoted), needs an endorsement, or a certificate can't do this.","deployment":"self-host-first","regulatory_note":"State certificate-of-insurance laws read 28-29 Sep 2026 (NCOIL Certificates of Insurance Model Act lineage): Texas Ins. Code ch. 1811, N.Y. Ins. Law § 502, Minn. Stat. § 60A.39, 2017 Wis. Act 241, N.H. RSA 412:6-b, La. R.S. 22:890 and Utah Code §§ 31A-22-1701 to -1707 say a certificate may not amend, extend or alter coverage; Georgia, Connecticut and Tennessee from secondary sources. ACORD forms are licensed (acord.org forms FAQ, read 28 Sep 2026): this tool renders no ACORD form and outputs plain text for the agency's own licensed system. Not a coverage opinion and not legal advice; a licensed agent decides and issues.","components":[{"id":"llm","role":"Lists each requirement from the contract and the email with a verbatim quote, then per requirement says whether the policy papers meet it, quoting the policy; the grounding judge checks each reason","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 extraction and checks 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 long contracts with many exhibits","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 lists the requirements and checks each against the policies with quotes; limits, the umbrella rule and 'met needs a quote' are code. 26-29 receipted calls per request.","components":["llm"],"hardware":"1x RTX PRO 6000 Blackwell 96 GB","quality_evidence":[{"metric":"status right on found requirements, test set (9 triples, 120 requirements, gateway; third run, not fully held out)","value":"109 of 120 (0.91)","source":"decosa-api docs/evals/certificate-check.md, measured on our server 2026-09-29, gateway route"},{"metric":"requirements found / 'met' calls that were right (test, third run)","value":"120 of 124 / 102 of 103","source":"decosa-api docs/evals/certificate-check.md, measured on our server 2026-09-29, gateway route"}],"latency_note":"measured: about two minutes per request 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":"Requirement and quote checks, the limits and umbrella rules, the drafts, signing and the HTTP API (/certificate/*). 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":"NCOIL Certificates of Insurance Model Act","url":"https://ncoil.org/wp-content/uploads/2017/07/11212012Certificate-Model.pdf","license":"NCOIL publication (quoted briefly)","purpose":"Why a certificate can't add coverage."},{"name":"State certificate laws (TX, NY, MN, WI, NH, LA, UT)","url":"https://www.nysenate.gov/legislation/laws/ISC/502","license":"public law","purpose":"Cited in the holder note for the project's state."},{"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 request (a contract exhibit and four policies), busy shared gateway","typical_ms":117000,"source":"decosa-api docs/evals/certificate-check.md, measured on our server 2026-09-29, gateway route, test set p50 (p95 141 s)"},{"lane":"one request, direct route","typical_ms":76000,"source":"decosa-api docs/evals/certificate-check.md, dev set p50 on our server 2026-09-29, direct route"}],"benchmark":null,"notes":[]},"buyer_facts":[{"label":"What it checks","value":"Limits (each occurrence, aggregates, auto, umbrella, employers liability, professional, pollution, deductibles), additional insured for ongoing and completed operations, primary and non-contributory, waivers of subrogation per line, notice of cancellation, per-project aggregate, umbrella follow-form, holder wording, carrier rating, and asks a certificate can't do."},{"label":"What it never does","value":"It never issues a certificate, never draws an ACORD form, and gives no coverage opinion. A 'met' always shows the policy wording it rests on; a licensed agent decides."},{"label":"Data retention","value":"Nothing kept on the server: the contract, request and policies live in memory for the request; logs carry counts only. You keep the signed record for the E&O file."},{"label":"What leaves the box (hosted demo)","value":"The papers go to Qwen3.8-27B through the Decosa API, whose receipts hold hashes, not text. Self-hosted, nothing leaves. The hosted demo is for made-up papers."},{"label":"Model calls per request","value":"One to list the requirements, one check per requirement, and one grounding check per reason. Each run shows its own count."},{"label":"Cost per request","value":"Charged at the gateway list price. The page header shows the cost measured on production; each run shows its own."}],"data_handling":{"page":"/data#certificate-check","self_host":{"level":"confidential","leaves":"nothing","summary":"Runs on your machine; nothing is sent to Decosa or a third party by default."},"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 contract, request and policies live in memory for the request; logs carry counts only. You keep the signed record for the E&O 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":[]},"console":{"href":"/tools/insurance/certificate-check","input":"chat","lanes":[{"id":"requirements","title":"Requirements","kind":"list"},{"id":"drafts","title":"Drafts and text to paste","kind":"markdown"},{"id":"record","title":"Signed record","kind":"json"}],"samples":[{"n":1,"id":"tx-framing-gaps","title":"Tx framing gaps","deep_link":"/tools/insurance/certificate-check?sample=1&autorun=0"},{"n":2,"id":"nj-umbrella-not-allowed","title":"Nj umbrella not allowed","deep_link":"/tools/insurance/certificate-check?sample=2&autorun=0"},{"n":3,"id":"fl-condo-email-asks","title":"Fl condo email asks","deep_link":"/tools/insurance/certificate-check?sample=3&autorun=0"},{"n":4,"id":"ca-city-notice","title":"Ca city notice","deep_link":"/tools/insurance/certificate-check?sample=4&autorun=0"},{"n":5,"id":"fl-clean","title":"Fl clean","deep_link":"/tools/insurance/certificate-check?sample=5&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/certificate-check-hosted.md","selfhost":"/prompts/certificate-check-selfhost.md","assemble":"/prompts/certificate-check-assemble.md","mac":null},"rehearsal":{"bundle":"/samples/certificate-check.zip","bundle_url":"https://decosa.ai/samples/certificate-check.zip","folder":"/samples/certificate-check/","expected":"/samples/certificate-check/expected.json","files":["/samples/certificate-check/expected.json","/samples/certificate-check/inputs/contract.json","/samples/certificate-check/inputs/policies.json","/samples/certificate-check/inputs/request.json"],"bytes":3964,"checks":["completed-operations additional insured needs an endorsement","the GL each-occurrence limit is met, quoting the declarations","a carrier request is drafted","the signed record verifies","every model call has a signed receipt"],"licence":"Synthetic: the companies, insurers, form numbers and wording are invented; no ISO or ACORD text. Part of decosa-api.","about":"A synthetic subcontract insurance exhibit, the GC's request email (which adds a lender as additional insured on the certificate) and the framer's GL, auto, umbrella and WC papers. Completed-operations additional insured must come back as needing an endorsement, every 'met' must quote the policy, and the signed record must verify.","run":{"containers":"docker compose exec api python scripts/rehearse.py certificate-check","checkout":"python scripts/rehearse.py certificate-check --bundle certificate-check.zip --base-url http://127.0.0.1:8445","mac":".venv/bin/python scripts/rehearse.py certificate-check"},"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=certificate-check","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/certificate-check","json":"/use-cases/certificate-check.json","metrics":"/metrics/certificate-check","console":"/tools/insurance/certificate-check","console_sample":"/tools/insurance/certificate-check?sample=1&autorun=0","stack":"/tools/insurance/certificate-check#stack","try_live":"/tools/insurance/certificate-check","watch":"/tools/insurance/certificate-check","build":"/tools/insurance/certificate-check#build","self_host":"/tools/insurance/certificate-check#self-host","prompts":{"hosted":"/prompts/certificate-check-hosted.md","selfhost":"/prompts/certificate-check-selfhost.md","assemble":"/prompts/certificate-check-assemble.md","mac":null}}}