{"schema_version":"1","site":"https://decosa.ai","id":"denial-appeal-packet","num":"60","name":"Claim denial appeal packet","tool_name":"Appeal a denial","short":"Denial appeal packet","blurb":"For billing, revenue-cycle and denials staff, and patient advocates. Give it the denial (EOB, remittance or letter with its CARC/RARC codes), the chart excerpts and the payer's coverage criteria. It computes the next appeal level's deadline with the federal rule and the arithmetic (ERISA and ACA, Medicare, Medicare Advantage, Medicaid managed care) and marks each criterion met, not met or undocumented, with a quote from the chart. It drafts a letter only when the chart supports every criterion, and checks every sentence against the chart and the policy. When the chart doesn't support it, it says don't appeal, or what to get first. The packet is signed.","status":"live","labels":{"industry":["healthcare","finance"],"job":["draft","review"],"input":["text","files"],"deploy":["selfhost"],"status":"live","output":["text","record"],"data":["phi"],"hardware":"gpu-96","licence":"permissive"},"industries":["healthcare","finance"],"runs_in":["selfhost"],"part_of":[],"built_from":["grounding","typed-judgment","signed-record","formfill"],"models":"Qwen3.8-27B","where":"Self-host for real patients (hosted demo: synthetic cases only)","hardware":"1x RTX PRO 6000 (96 GB) for Qwen3.8-27B; the deadline rules and the signed packet need no GPU","final_artifact":"A recommendation, the filing deadline with its rule, a criteria checklist with quotes, a draft letter when the chart supports it, a Markdown packet and a signed record.","self_host_first":true,"verification":{"receipt_coverage":"full","summary":"Receipt per model call; every criterion quote found word for word in the chart; every letter sentence grounded; signed hash-chained packet","manual_qa":{"hosted":{"date":"2026-09-26","result":"pass","p50_ms":12900,"p95_ms":null,"runs":null,"receipts_per_run":21,"cost_per_run_usd":0.0139},"selfhost":{"date":"2026-09-26","result":"pass","method":"fresh clone of decosa-api into a clean directory on our server, api image built from docker/api/Dockerfile, compose api service with a named data volume, direct route, local signing; torn down after","notes":"The assembly prompt's smoke tests passed against the already-running local Qwen3.8-27B vLLM (network_mode host instead of the compose llm service): deadline 2027-01-11, cpap-appeal appeal with a letter in 11.9 s (21 attested receipts, AHI criterion quoting 11.2), cpap-no-appeal don't appeal with no letter, admin-missing-npi fix the claim, record verified; the rehearsal bundle passed 10/10. Model-server startup was not re-run."},"known_limits":["Hosted verification ran on the pre-release server (decosa-api the pre-release branch on our server, gateway route). The production API gets this vertical when the branch merges.","Measured on 98 synthetic, templated cases written by the building agent; not on real denials or with a denials specialist's labels.","Federal deadline rules only; state external review, plan documents and provider contracts can differ. Deadlines other than external review are not moved off weekends.","Criteria come only from the policy text pasted in; non-covered indications are not mapped, and nested alternatives (an option with its own list of options) are read as one option.","Changes after the test2 run (a template opening line, stray reference markers stripped, alternatives worded as accepted options, source titles in the number guard) were checked on the demo samples only."],"nightly_covers":null},"nightly":"https://api.decosa.ai/verify/status"},"eval_summary":{"metrics":[{"name":"Recommendation right, fresh held-out set","value":"36 of 40","unit":null,"n":40,"split":"test","note":"test2, run once after the date check moved into code; 4 misses said don't appeal where gold says get documentation first"},{"name":"Unsupported cases with no appeal and no letter","value":"26 of 26","unit":null,"n":26,"split":"test","note":"test2; the earlier test set: 21 of 22"},{"name":"Supported cases with an appeal and a letter","value":"11 of 11","unit":null,"n":11,"split":"test","note":"test2; the earlier test set: 14 of 15"},{"name":"Recommendation right, first test set","value":"36 of 40","unit":null,"n":40,"split":"test","note":"Run once before the date check; one wrong appeal from a date misread"},{"name":"Criteria status right per policy requirement","value":"126 of 133","unit":null,"n":133,"split":"test","note":"test2; test 125 of 133; every requirement was found in the policy"},{"name":"Deadline right (next level and date)","value":"80 of 80","unit":null,"n":80,"split":"test","note":"test and test2; gold computed by separate code"},{"name":"Notice date read from the denial","value":"40 of 40","unit":null,"n":40,"split":"test","note":"cases where the request did not give it"},{"name":"Kept letter sentences with an unsupported clinical fact","value":"0 of 245","unit":null,"n":245,"split":"test","note":"Read by the building agent; 2 kept sentences overstated the policy"},{"name":"Held-out phrasing cases, recommendation right","value":"34 of 40","unit":null,"n":40,"split":"heldout","note":"Sentences never seen while the prompts were written: test 18 of 20, test2 16 of 20 (template phrasing: 18 of 20 and 20 of 20)"}],"dataset":"Synthetic denials, chart excerpts and policies from scripts/appeal_cases.py: dev 18 cases, test 40 and test2 40 (half with held-out phrasing), plus 5 demo samples; CMS NCD excerpts (public domain) and an invented commercial policy.","held_out":true,"caveats":["Synthetic, templated cases written by the same author as the prompts; real charts and commercial policies are longer and messier. These numbers do not predict accuracy on a provider's denials.","The unsupported-sentence count is the building agent's own reading of the letters, not an independent rater's.","After the first test run, date windows were moved into code; the fresh test2 set measures that change. Later small changes were checked on the demo samples only.","Four policies and five denial types; the gold for undocumented versus not met is a judgement call in a few chart phrasings.","Federal deadline rules only; state programs, plan documents and provider contracts are not modelled."],"date":"2026-09-26","doc_url":"https://decosa.ai/metrics/evals/denial-appeal-packet"},"stack":{"summary":"For billing, revenue-cycle and denials staff, and patient advocates. Give it the denial (EOB, remittance or letter with its CARC/RARC codes), the chart excerpts and the payer's coverage criteria. It reads the codes, computes the next appeal level's filing deadline from the notice date with the federal rule and the arithmetic (ERISA and ACA plans, Medicare Parts A and B, Medicare Advantage, Medicaid managed care), splits the policy into criteria and marks each one met, not met or undocumented, with the policy quote and a chart quote the code finds word for word. The recommendation is a rule: every criterion met means appeal; a criterion the chart contradicts means don't appeal on this record; a criterion the chart doesn't show means get the documentation first; a billing or eligibility code means fix the claim. Only an appeal gets a letter, and every sentence in it is checked against the chart, the policy and the denial by the grounding judge and a number guard; unsupported sentences are cut and listed. Everything is sealed in a signed, hash-chained packet. A drafting aid: a person checks it and files.","tagline":"A denial, the chart and the payer's criteria in; the appeal deadline, a criteria checklist with quotes, and a letter only when the chart supports it.","deployment":"self-host-first","regulatory_note":"Charts are protected health information under HIPAA: run it on the provider's own hardware; the hosted demo takes synthetic cases only. Deadline rules read on 26 Sep 2026 from eCFR (titles current to 24 Sep 2026): ERISA group health plans, at least 180 days after receipt of the denial to appeal (29 CFR 2560.503-1(h)(3)(i)), with plan decisions due in 72 hours (urgent), 30 days (pre-service) or 60 days (post-service) (2560.503-1(i)(2)); ACA individual coverage, the same rules with one internal level (45 CFR 147.136(b)(3)); federal external review, four months after receipt of the final internal denial, the first day of the next month when that day does not exist, moved off weekends and federal holidays (29 CFR 2590.715-2719(d)(2)(i), 45 CFR 147.136(d)(2)(i)); state processes must allow at least four months. Medicare Parts A and B: redetermination 120 days, reconsideration 180 days, ALJ hearing, Council review and court 60 days each, all from receipt presumed 5 days after the notice (42 CFR 405.942, 405.962, 405.1002, 405.1102, 405.1130/405.1136); amount in controversy $200 for an ALJ hearing and $1,960 for court in 2026, $2,000 for court from 1 Jan 2027 (Federal Register, 4 Dec 2025 and 16 Sep 2026). Medicare Advantage: reconsideration 60 days after presumed receipt (42 CFR 422.582(b)); ALJ 60 days (422.602(b)). Medicaid managed care: plan appeal 60 days from the date on the notice (42 CFR 438.402(c)(2)(ii)); state fair hearing 90 to 120 days as the state sets (438.408(f)(2)). These are federal minimums: plan documents, state programs and provider contracts can differ. Criteria come only from the policy text pasted in; the demo uses CMS National Coverage Determinations (public domain) and an invented payer policy. CARC/RARC labels are our own summaries; the official descriptions belong to X12. Not legal or medical advice, and it never predicts an outcome.","components":[{"id":"llm","role":"Reads the denial (notice date, reasons, service), splits the payer policy into criteria, checks each criterion against the chart, drafts the letter when the chart supports it, and judges every letter sentence (the grounding judge)","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 pipeline 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 charts and dense payer policies","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":"recommendation and criteria accuracy","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 denial, maps and checks the criteria and drafts the letter; the deadline, the quote checks and the recommendation are plain code. Every model call receipted.","components":["llm"],"hardware":"1x RTX PRO 6000 Blackwell 96 GB","quality_evidence":[{"metric":"fresh held-out set (test2, 40 synthetic cases, run once): recommendation right","value":"36/40; all 4 misses said don't appeal where the gold says get documentation first","source":"decosa-api docs/evals/denial-appeal-packet.md, measured on our server 2026-09-26, gateway route; prompts frozen on an 18-case dev set; half the cases use phrasing never seen while writing the prompts"},{"metric":"planted unsupported cases (test2 / test): no appeal and no letter","value":"26/26 / 21/22 (the one miss: the model read a 53-day gap as 23; date windows are now checked in code, which test2 measures)","source":"decosa-api docs/evals/denial-appeal-packet.md, measured on our server 2026-09-26"},{"metric":"supported cases (test2 / test): appeal with a letter","value":"11/11 / 14/15","source":"decosa-api docs/evals/denial-appeal-packet.md, measured on our server 2026-09-26"},{"metric":"criteria status right, per policy requirement (test2 / test)","value":"126/133 / 125/133; every requirement was found in the policy (133/133)","source":"decosa-api docs/evals/denial-appeal-packet.md, measured on our server 2026-09-26"},{"metric":"deadline (next level and date) right / notice date read from the denial","value":"80/80 / 40/40","source":"decosa-api docs/evals/denial-appeal-packet.md, measured on our server 2026-09-26; gold deadlines computed by separate code with hard-coded holidays"},{"metric":"letter sentences kept after the check that state a clinical fact the chart doesn't support (read by the building agent)","value":"0/245; 2 kept sentences overstated the policy (said PSG is required where the NCD lists alternatives); 32 of 260 draft sentences were cut or marked [CHECK] by the check","source":"decosa-api docs/evals/denial-appeal-packet.md, test and test2 letters, 2026-09-26"},{"metric":"real, de-identified denials rated by a denials specialist","value":"not measured yet","source":null}],"latency_note":"measured on our server under a shared gateway: seconds per packet, under a minute at the slow end; a packet with a letter makes a couple of dozen model calls","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 charts and dense payer policies.","components":["llm-best"],"hardware":"2x RTX PRO 6000 96 GB","quality_evidence":[{"metric":"recommendation and criteria accuracy","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. Patient records 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":"recommendation and criteria accuracy","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":"Intake, the codes, the deadline rules, the quote checks, the recommendation rule, grounding, signing and the HTTP API (/appeal/*). 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":"decosa grounding (vertical 17)","url":"https://decosa.ai/apps/grounding","license":"AGPL-3.0-or-later (decosa-api)","purpose":"Judges every letter sentence against the chart, the policy and the denial, and cites the span; imported, not copied."},{"name":"decosa typed-judgment (vertical 24)","url":"https://decosa.ai/apps/typed-judgment","license":"AGPL-3.0-or-later (decosa-api)","purpose":"Answer parsing and the stated-confidence probability for each criterion check."},{"name":"claims dates module (vertical 54)","url":"https://decosa.ai/apps/claims-conduct-pack","license":"AGPL-3.0-or-later (decosa-api)","purpose":"Date parsing, calendar days and US federal holidays for the deadline arithmetic; imported."},{"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 packet; anyone can re-check it."},{"name":"eCFR: 29 CFR 2560.503-1, 2590.715-2719; 45 CFR 147.136; 42 CFR 405 subpart I, 422.582-602, 438.402-408","url":"https://www.ecfr.gov/current/title-29/section-2560.503-1","license":"public law","purpose":"The deadline rules, quoted in /appeal/info with the date they were read."},{"name":"CMS Medicare National Coverage Determinations Manual (Pub. 100-03)","url":"https://www.cms.gov/Regulations-and-Guidance/Guidance/Manuals/downloads/ncd103c1_Part4.pdf","license":"US government work (public domain)","purpose":"The demo's coverage criteria: NCD 240.4 (CPAP), 100.1 (bariatric surgery) and 50.3 (cochlear implants), excerpted."},{"name":"X12 CARC and RARC code lists","url":"https://x12.org/codes/claim-adjustment-reason-codes","license":"X12 (codes referenced; labels are our summaries)","purpose":"Grouping denial codes into clinical, authorization, documentation, exclusion and administrative routes."}],"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 deadline rules (POST /appeal/deadlines), the codes, the signed packet and verification need no GPU; reading the chart needs the model."}],"latency":[{"lane":"one packet, busy shared gateway","typical_ms":12900,"source":"decosa-api docs/evals/denial-appeal-packet.md, test2 median on our server 2026-09-26 (max 32.7 s; 41.3 s median on the earlier, busier test run), gateway route"},{"lane":"one packet with a letter, self-hosted direct route","typical_ms":11900,"source":"measured on our server 2026-09-26, self-host sandbox, cpap-appeal (21 model calls)"},{"lane":"deadline rules only","typical_ms":50,"source":"estimate: no model call"}],"benchmark":{"title":"Does it say no when it should?","intro":"98 synthetic cases from a generator with a structured truth: Medicare CPAP, cochlear-implant and bariatric denials against CMS coverage determinations, lumbar MRI denials against an invented payer policy, and billing denials. Some charts support every criterion; others contradict one or leave one out. Prompts were written on an 18-case dev set; a 40-case test set was run once, a date check was added in code, and a fresh 40-case set was run once.","rows":[{"label":"Unsupported cases with no appeal and no letter","value":"47 of 48","detail":"test2 26/26, test 21/22"},{"label":"Supported cases with an appeal and a letter","value":"25 of 26","detail":"test2 11/11, test 14/15"},{"label":"Deadlines right","value":"80 of 80","detail":"next level and date, test and test2"},{"label":"Cost per packet with a letter","value":"about $0.014","detail":"21 model calls, 34,908 tokens on the CPAP demo case, gateway list price"}],"points":[{"heading":"Where it fails","text":"It reads a criterion the chart leaves out as not met rather than undocumented (6 of 8 wrong recommendations across both sets): the advice becomes don't appeal where it should be get the documentation first. Once, before the date check moved into code, it read a 53-day gap as 23 and recommended an appeal the chart did not support."},{"heading":"What it does not show","text":"The cases are templated and synthetic, written by the same author as the prompts. Real charts are longer, scanned and messier, and commercial policies are denser than these excerpts. Measure it on your own closed denials before relying on it."}],"source":"decosa-api docs/evals/denial-appeal-packet.md, 26 Sep 2026"},"notes":[]},"buyer_facts":[{"label":"What it gives you","value":"A recommendation (appeal, don't appeal, get documentation first, fix the claim), the next level's filing deadline with its CFR rule and arithmetic, each criterion met, not met or undocumented with quotes, a draft letter when the chart supports it, a Markdown packet and a signed record."},{"label":"What it does not do","value":"It does not file, fax or submit to a portal, predict outcomes, read plan documents or provider contracts, know state rules, or fetch payer policies (paste the criteria). Non-covered indications are not mapped. Scanned charts need OCR first."},{"label":"Data retention","value":"Nothing kept on the server. Denials, charts and packets live in memory for the request; logs carry counts only. You keep the signed packet with the claim."},{"label":"What leaves the box (hosted demo)","value":"The denial, chart excerpts and policy go to Qwen3.8-27B through the Decosa API, whose receipts hold hashes, not text. Self-hosted, nothing leaves. The hosted demo is for synthetic cases only."},{"label":"Model calls per packet","value":"One denial read, one criteria map, one check per criterion; with a letter, one draft and one grounding call per letter sentence: about 1 to 21 calls on the demo cases."},{"label":"Typical run cost","value":"A fraction of a cent at the gateway list price for the CPAP case with a letter (a couple of dozen calls); less when it says don't appeal. Each run shows its own measured cost."},{"label":"Deadlines","value":"Federal minimums for ERISA and ACA plans, Medicare A/B, Medicare Advantage and Medicaid managed care, from the notice date (Medicare presumes receipt 5 days later). Give the receipt date and any shorter provider-contract window; the earlier date wins."}],"hosted_now":{"needs":["qwen3.8-27b"],"off":[],"live_by_default":true,"live_status":"https://api.decosa.ai/status"},"data_handling":{"page":"/data#denial-appeal-packet","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. Denials, charts and packets live in memory for the request; logs carry counts only. You keep the signed packet with the claim.","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":"/clinics/denial-appeal-packet","input":"appeal","lanes":[{"id":"deadline","title":"Deadline","kind":"list"},{"id":"criteria","title":"Criteria checklist","kind":"list"},{"id":"recommendation","title":"Recommendation","kind":"list"},{"id":"letter","title":"Draft letter","kind":"markdown"},{"id":"record","title":"Signed packet","kind":"json"}],"samples":[{"n":1,"id":"cpap-appeal","title":"Cpap appeal","deep_link":"/clinics/denial-appeal-packet?sample=1&autorun=0"},{"n":2,"id":"cpap-no-appeal","title":"Cpap no appeal","deep_link":"/clinics/denial-appeal-packet?sample=2&autorun=0"},{"n":3,"id":"bariatric-gather","title":"Bariatric gather","deep_link":"/clinics/denial-appeal-packet?sample=3&autorun=0"},{"n":4,"id":"mri-external-review","title":"Mri external review","deep_link":"/clinics/denial-appeal-packet?sample=4&autorun=0"},{"n":5,"id":"admin-missing-npi","title":"Admin missing npi","deep_link":"/clinics/denial-appeal-packet?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/denial-appeal-packet-hosted.md","selfhost":"/prompts/denial-appeal-packet-selfhost.md","assemble":"/prompts/denial-appeal-packet-assemble.md","mac":null},"rehearsal":{"bundle":"/samples/denial-appeal-packet.zip","bundle_url":"https://decosa.ai/samples/denial-appeal-packet.zip","folder":"/samples/denial-appeal-packet/","expected":"/samples/denial-appeal-packet/expected.json","files":["/samples/denial-appeal-packet/expected.json","/samples/denial-appeal-packet/inputs/policy.json","/samples/denial-appeal-packet/inputs/supported-denial.json","/samples/denial-appeal-packet/inputs/supported-records.json","/samples/denial-appeal-packet/inputs/unsupported-denial.json","/samples/denial-appeal-packet/inputs/unsupported-records.json"],"bytes":5680,"checks":["the redetermination deadline is the notice date + 5 days presumed receipt + 120 days (no model)","the supported case is recommended for appeal","the notice date is read from the denial and gives the same deadline","the AHI 5 to 14 criterion is met with the study's AHI quoted","a letter is drafted and cites the AHI","the unsupported case is not recommended for appeal","and no letter is drafted for it","the signed packet verifies","a packet whose recommendation was changed no longer verifies","every model call has a signed receipt"],"licence":"Synthetic cases (CC0): the patients, notes, providers and payer are invented (scripts/appeal_cases.py). Policy: an excerpt of CMS NCD 240.4 (US government work, public domain). Part of decosa-api, which will be released under AGPL-3.0-or-later; until then the source is on request.","about":"Two synthetic Medicare CPAP denials (CO-50 N386, AHI under 15) against CMS NCD 240.4. In the first, the home sleep test shows an AHI of 11.2 and the chart documents daytime sleepiness and hypertension, which meets criterion 5b: the packet must recommend an appeal, draft a letter, and compute the redetermination deadline (notice date + 5 days presumed receipt + 120 days). In the second, the AHI is 10.4 and the chart says the patient has no daytime sleepiness, insomnia, hypertension, heart disease or stroke, while a physician letter asserts the criteria are met: the packet must recommend not appealing and draft no letter. The signed packet must verify, and fail once changed.","run":{"containers":"docker compose exec api python scripts/rehearse.py denial-appeal-packet","checkout":"python scripts/rehearse.py denial-appeal-packet --bundle denial-appeal-packet.zip --base-url http://127.0.0.1:8445","mac":".venv/bin/python scripts/rehearse.py denial-appeal-packet"},"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=denial-appeal-packet","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":"/clinics/denial-appeal-packet","json":"/use-cases/denial-appeal-packet.json","metrics":"/metrics/denial-appeal-packet","console":"/clinics/denial-appeal-packet","console_sample":"/clinics/denial-appeal-packet?sample=1&autorun=0","stack":"/clinics/denial-appeal-packet#stack","try_live":"/clinics/denial-appeal-packet","watch":"/clinics/denial-appeal-packet","build":"/clinics/denial-appeal-packet#build","self_host":"/clinics/denial-appeal-packet#self-host","prompts":{"hosted":"/prompts/denial-appeal-packet-hosted.md","selfhost":"/prompts/denial-appeal-packet-selfhost.md","assemble":"/prompts/denial-appeal-packet-assemble.md","mac":null}}}