Overview
Draft a denial-specific appeal letter grounded in the normalized denial reason, prior-therapy history, and payer policy. Enforces denial-reason rebuttal, plan-preferred-therapy failure arguments, contradiction checks, and appeal-specific completeness (RE line with denial date and reference number, rebuttal section, requested resolution, enclosure manifest including the LOMN). Hands the draft to the clinical-claim-evidence-mapper for citation and export gating.
The appeal letter is the top document in a packet — not the clinical narrative. Reviewers decide whether to open the letter of medical necessity based on whether the appeal letter addresses the denial reason they actually stated. A generic medical-necessity argument in response to a DRG/level-of-care denial or a coding edit is a predictable loss. This skill drafts the top letter, enforces appeal-specific validations, and hands the finished draft to clinical-claim-evidence-mapper so every clinical claim is cited back to a chart excerpt.
What it covers
- Section order enforcement. Header with appeals routing and appeal level, RE line with denial date and payer reference number, introduction referencing the denial, rebuttal section with one block per denial category, clinical summary pointing at the LOMN, prior-therapy and contraindication sections, plan-preferred-therapy rebuttal, specific requested resolution, signature block, enclosure manifest.
- Denial-reason coverage. Every phrase from the verbatim denial-reason text and every category returned by
denial_classifiermust appear in the draft. Unaddressed reasons block export. - Plan-preferred-therapy argument. One structured argument block per plan-preferred agent named in the payer policy, matched against prior-therapy history (by name or class) and documented contraindications.
- Contradiction rules. Coding-edit denials routed to clinical-appeal, CPT/ICD-10 mismatches (spine CPT with a GI diagnosis), DRG/level-of-care rebutted with generic medical-necessity prose, step-therapy rebuttal with no prior-therapy or contraindication evidence, missing RE-line identifiers.
- Enclosure completeness. Medical-necessity appeals must enclose the LOMN; missing denial-letter copy surfaces a warning.
- Claim-citation handoff. The draft is not exported until
clinical-claim-evidence-mapperreturnsexport_ready: truefor every clinical claim asserted in the letter.
Example conversation
You: The Anthem denial for the L4-L5 fusion on case 2026-0412-88174 is normalized. Draft the appeal letter.
Agent: Reading
case.json. Branch isclinical-appeal, appeal level1st-internal, categories["not-medically-necessary", "lack-of-prior-auth"], CPT 22633 + 22840, ICD-10 M51.16 + M48.06. LOMN is atdrafts/lomn-2026-0412-88174.md. Payer policy excerpt on file names gabapentin, duloxetine, and a 12-week PT + ESI trial as the step-therapy path before surgical consideration.Agent: Assembling the appeal record. Header addressed to Anthem Clinical Appeals (PO BOX 5063, Middletown NY); RE line populated with member ID YRK8827461, DOB 1968-05-14, claim C-9918274461, denial date 2026-04-12, payer reference CA-2026-0412-88174. Introduction names this as a Level 1 internal appeal and quotes both denial phrases.
Agent: Running
denial_reason_rebuttal_checkerwith the verbatim denial text and categories. Result:not-medically-necessarymatched via phrase “medical necessity under the plan’s definition”;lack-of-prior-authmatched via phrase “retroactive authorization is appropriate here because”.ok: true.Agent: Running
preferred_therapy_argument_generatorwithplan_preferred_agents: ["gabapentin", "duloxetine", "physical therapy", "epidural steroid injection"]. All four matched the prior-therapy history: gabapentin 900 mg TID x 12 weeks (no functional improvement, somnolence), duloxetine 60 mg QD x 8 weeks (discontinued for intolerable nausea), PT 2x/week x 14 weeks (no change in ODI), right L4-L5 transforaminal ESI 2026-01-18 (< 2 weeks relief).unaddressed: [].Agent: Running
contradiction_checker. One error:rule-6-drg-no-level-of-care-criteriais not tripped (level-of-care is not on this denial), butrule-3-therapy-rationale-mismatchis flagged — my current rebuttal paragraph fornot-medically-necessaryreads as generic medical-necessity prose and does not reference “posterior lumbar fusion” or the specific anatomy. ReturningisError: true. Suggest rewriting the rebuttal to name the requested procedure and cite the conservative-care failures explicitly.You: Right — fix that. And keep the rebuttal tight; the reviewer will see the LOMN for the full narrative.
Agent: Rewrote the
not-medically-necessaryblock to name “posterior lumbar fusion with instrumentation at L4-L5” and to cite the four failed conservative measures by name with durations and outcomes. Re-randenial_reason_rebuttal_checkerandcontradiction_checker; both clean.Agent: Running
appeal_completeness_checkon the assembled record.ok: true, 0 missing, 1 warning (enclosures list did not include a copy of the denial letter — I added it). Handing the draft toclinical-claim-evidence-mapper:clinical_claim_extract_candidatesreturned 9 candidate claims (1 diagnosis, 4 prior therapies, 1 imaging, 1 score (ODI 56%), 1 guideline — NASS 2024 — and 1 outcome). Citing each one now.Agent:
clinical_claim_check_draftreturnedexport_ready: true, 9/9 cited, 0 orphans. Rendering the letter todrafts/appeal-2026-0412-88174.mdand appending the claim-to-source index. Audit log entry written.
Sample output excerpt
The skill produces two artifacts: the normalized appeal-letter record the validators run against, and the rendered appeal letter at ./drafts/appeal-{case_id}.md. Excerpts from the Anthem L4-L5 fusion case after the conversation above.
{
"case_id": "8f3c2a1e-4b9d-4f7c-9e1a-2b6d8c4f1a7b",
"appeal_level": "1st-internal",
"appeal_kind": "medical-necessity",
"header": {
"provider": {
"name": "Mountain Ridge Orthopedics",
"npi": "1659321488",
"phone": "(208) 555-0144",
"fax": "(208) 555-0145",
"address": "500 Alpine Way, Boise, ID 83702"
},
"payer": {
"name": "Anthem Blue Cross Blue Shield",
"plan": "Anthem PPO",
"appeals_address": "Anthem Clinical Appeals, PO BOX 5063, Middletown, NY 10940",
"appeals_fax": "(877) 278-2163"
},
"date_of_letter": "2026-04-21"
},
"re_line": {
"member_name": "Jane D.",
"member_id": "YRK8827461",
"dob": "1968-05-14",
"claim_number": "C-9918274461",
"auth_number": null,
"dates_of_service": ["2026-03-28", "2026-03-31"],
"denial_date": "2026-04-12",
"payer_reference_number": "CA-2026-0412-88174"
},
"denial_categories": ["not-medically-necessary", "lack-of-prior-auth"],
"denial_reason_rebuttal": [
{
"denial_category": "not-medically-necessary",
"denial_phrase_quoted": "does not meet InterQual criteria for surgical intervention",
"rebuttal_text": "Posterior lumbar fusion with instrumentation at L4-L5 is medically necessary under the plan's definition after documented failure of 12 weeks of gabapentin at 900 mg TID, 8 weeks of duloxetine at 60 mg QD (discontinued for intolerable nausea), 14 weeks of physical therapy with no change in ODI, and a right L4-L5 transforaminal epidural steroid injection on 2026-01-18 with less than two weeks of relief. NASS 2024 coverage criteria for lumbar fusion are met; full clinical reasoning is in the enclosed letter of medical necessity.",
"supporting_references": [
{ "kind": "lomn-section", "locator": "Section 3: Conservative care trial" },
{ "kind": "guideline", "locator": "NASS 2024 — Lumbar Fusion Coverage Criteria" }
]
},
{
"denial_category": "lack-of-prior-auth",
"denial_phrase_quoted": "prior authorization was not obtained",
"rebuttal_text": "Retroactive authorization is appropriate here because the service was admitted emergently on 2026-03-28 for acute radiculopathy with progressive foot drop (MRC 3/5 right EHL), and Anthem's Provider Manual §7.4.2 permits retroactive-auth requests within 72 hours for urgent admissions. Documentation of the emergent presentation is included as Enclosure C.",
"supporting_references": [
{ "kind": "policy", "locator": "Anthem Provider Manual §7.4.2" },
{ "kind": "chart", "locator": "ED note 2026-03-28 14:11" }
]
}
],
"requested_resolution": "Overturn the denial and approve the inpatient admission (2026-03-28 to 2026-03-31) and CPT 22633 with 22840 for posterior lumbar fusion at L4-L5; issue retroactive authorization consistent with Anthem Provider Manual §7.4.2.",
"enclosures": [
{ "label": "Letter of medical necessity", "doc_path": "drafts/lomn-2026-0412-88174.md" },
{ "label": "Denial letter (Anthem, 2026-04-12)", "doc_path": "denials/anthem_20260412.pdf" },
{ "label": "MRI lumbar spine 2026-02-03", "doc_path": "inputs/mri-2026-02-03.pdf" },
{ "label": "PT evaluation 2026-03-10 (ODI 56%)", "doc_path": "inputs/pt-eval-2026-03-10.pdf" },
{ "label": "ED note 2026-03-28 (emergent admission)", "doc_path": "inputs/ed-note-2026-03-28.pdf" }
]
}
Rendered appeal letter excerpt (drafts/appeal-2026-0412-88174.md):
Mountain Ridge Orthopedics
500 Alpine Way, Boise, ID 83702
NPI 1659321488 | Phone (208) 555-0144 | Fax (208) 555-0145
2026-04-21
Anthem Clinical Appeals
PO BOX 5063
Middletown, NY 10940
Fax: (877) 278-2163
**RE: Level 1 internal appeal — medical-necessity + retroactive-authorization**
Member: Jane D. | Member ID: YRK8827461 | DOB: 1968-05-14
Claim: C-9918274461 | Dates of service: 2026-03-28 to 2026-03-31
Denial date: 2026-04-12 | Payer reference: CA-2026-0412-88174
Dear Medical Director,
This letter is a Level 1 internal appeal of Anthem's 2026-04-12 adverse benefit
determination (reference CA-2026-0412-88174), which denied coverage for
posterior lumbar fusion at L4-L5 (CPT 22633, 22840) on the grounds that the
service "does not meet InterQual criteria for surgical intervention" and that
"prior authorization was not obtained." Both grounds are addressed below.
**1. Not medically necessary.** Posterior lumbar fusion with instrumentation at
L4-L5 is medically necessary under the plan's own definition. The patient
completed and failed, in sequence: gabapentin 900 mg TID over 12 weeks with no
reduction in VAS or ODI and persistent daytime somnolence; duloxetine 60 mg QD
over 8 weeks, discontinued for intolerable nausea; supervised physical therapy
2x/week over 14 weeks with no change in ODI (56% on 2026-03-10, severe
disability); and a right L4-L5 transforaminal epidural steroid injection on
2026-01-18 with less than two weeks of relief. MRI dated 2026-02-03 demonstrates
L4-L5 disc extrusion with right S1 nerve-root impingement. These facts satisfy
the NASS 2024 Lumbar Fusion Coverage Criteria; the enclosed letter of medical
necessity carries the full clinical reasoning.
**2. Lack of prior authorization.** Retroactive authorization is appropriate
here. The patient was admitted emergently on 2026-03-28 for acute radiculopathy
with progressive right-sided foot drop (MRC 3/5 right EHL). Anthem's Provider
Manual §7.4.2 permits retroactive-auth requests within 72 hours for urgent
admissions; the ED note from 2026-03-28 14:11 (Enclosure C) documents the
emergent presentation.
**Requested resolution.** Overturn the denial and approve the inpatient
admission (2026-03-28 to 2026-03-31) and CPT 22633 with 22840; issue a
retroactive authorization consistent with Anthem Provider Manual §7.4.2.
Sincerely,
[Signature]
Priya N. Shah, MD
NPI 1487220913 | Board-certified, Orthopedic Surgery
Phone (208) 555-0144
**Enclosures:** Letter of medical necessity; denial letter (Anthem 2026-04-12);
MRI lumbar spine 2026-02-03; PT evaluation 2026-03-10; ED note 2026-03-28;
claim-to-source index.
Extension tools and validations
The skill registers four deterministic validators. All run against the normalized appeal-letter record; none draft prose — the LLM renders sentences and the validators gate export.
denial_reason_rebuttal_checker
- Inputs:
denial_reason_text(verbatim from the denial letter),denial_categories(fromdenial_classifier),draft_text(the rendered letter or the concatenated rebuttal sections). - What it checks: splits the denial-reason text into phrases, drops boilerplate tokens, and for each phrase searches the draft by direct substring and by 2-of-N keyword overlap within a 200-character window. Independently, for each denial category it searches the draft for at least one category-specific anchor token (e.g.,
interqual,mcg,lsip,level of carefordrg-level-of-care;prior authorization,retroactive authorization,pre-certificationforlack-of-prior-auth;formulary exception,tried and failedforoff-formulary). - Returns: per-phrase and per-category coverage with matched excerpts, plus
ok: boolean. isError: true: when any phrase or any category is unaddressed — the calling workflow must revise the draft before moving on.
preferred_therapy_argument_generator
- Inputs:
prior_therapies[](name, class, dose, frequency, duration, outcome, discontinuation_reason),contraindications[](type, detail, date),plan_preferred_agents[](agents the payer names in the step-therapy/formulary policy). - What it produces: one structured argument block per plan-preferred agent. Matches each agent against the prior-therapy list by normalized name or class, then falls back to matching against the contraindication list. For matched-tried agents, emits the trial outcome and discontinuation reason and two suggested sentences. For matched-contraindication agents, emits the contraindication detail and two suggested sentences. For unmatched agents, emits a placeholder sentence instructing the caller to supply evidence before the block can be rendered. Also returns
unaddressed[]— agents with neither a prior trial nor a documented contraindication. isError:the generator does not error; it surfaces gaps viaunaddressed[]. The downstreamappeal_completeness_checkandcontradiction_checkerare what block export when evidence is missing.
appeal_completeness_check
- Inputs: the normalized appeal record (see
references/appeal-letter-structure.md). - What it checks: header fields (provider name + NPI, provider phone or fax, payer name, appeals address or appeals fax, date of letter, appeal level); RE-line identifiers (member name + ID, denial date, payer reference number, claim-or-auth number); introduction phrasing (must mention both “appeal/reconsider/overturn” and “denial/adverse determination”); at least one rebuttal block per declared denial category; clinical summary; prior-therapy or contraindication data whenever the denial includes step-therapy, off-formulary, or not-medically-necessary; plan-preferred-therapy rebuttal with per-agent evidence for step-therapy and off-formulary; requested resolution; signature block with physician name + NPI; enclosure manifest including the LOMN for medical-necessity appeals (with a warning when the denial letter itself is not listed).
- Returns:
{ ok, missing[], warnings[] }. isError: true: whenmissing[]is non-empty.
contradiction_checker
- Inputs: the
case_recordfromdenial-intake-normalizerand the normalizedappeal_record. - What it checks: 10 rules across four dimensions. Branch mismatches (coding-edit or COB routed to clinical-appeal; NOMNC not routed to BFCC-QIO; timely-filing dressed up as clinical). CPT/ICD-10 anchor pairs (spine 22xxx CPTs against M43/M48/M50-54/M96/G54/G55.1 spine ICDs; joint injections 20610/20611 against M25.5/M17/M16/M19/M65/M67/M70/M75/M77; cardiac 33xxx/92xxx against I-family; oncology J9xxx against C-family + D37-48 + Z51.1/Z85). Therapy/rationale mismatch — the requested therapy name must appear in the rebuttal, clinical summary, or preferred-therapy rebuttal. Evidence gaps — step-therapy with no prior therapies and no contraindications; off-formulary without formulary-exception grounds; DRG/level-of-care without InterQual/MCG/Milliman/LSIP tokens; experimental/investigational without FDA label, compendia, or specialty-society tokens; out-of-network without in-network-search or No-Surprises-Act framing. RE-line hygiene — missing denial date or payer reference number.
- Returns:
{ contradictions[], ok }withseverity: "error" | "warning"per entry. isError: true: when anyerror-severity contradiction is present.
Validation invariants
- Every denial category must have its own rebuttal block. Collapsing multi-category denials into a single generic medical-necessity argument is rejected by
appeal_completeness_check. - Step-therapy denials require prior-preferred-agent evidence OR contraindications. An empty step-therapy rebuttal is an automatic affirmation for the payer;
contradiction_checkerrule 4 blocks it. - Medical-necessity appeals must enclose the LOMN. The enclosure manifest is checked for “letter of medical necessity” or “lomn”; missing LOMN blocks export.
- DRG / level-of-care denials must reference InterQual LSIP, MCG, or Milliman criteria. Generic medical-necessity language on a level-of-care denial trips
contradiction_checkerrule 6. - RE line must carry the denial date and payer reference number. Appeal windows run from the denial date; the payer uses its own reference number to locate the case file. Rules 10a and 10b block export when either is missing.
- Contradictions block export. Any
error-severity contradiction returnsisError: trueand the drafting workflow must resolve it before handing the draft toclinical-claim-evidence-mapper.
Getting started
- Run
denial-intake-normalizerfirst. The appeal letter builder readscase.jsonat the project root and refuses to draft when the case record is missing, when the branch isgrievance-not-appeal, or when the branch isnomnc-expedited-determination(NOMNC cases follow the BFCC-QIO expedited pathway, not a full appeal letter). - Upload the chart excerpts that ground the clinical claims (chart notes, imaging, PT evaluations, medication lists) and the payer policy excerpt that names the plan-preferred agents or the coverage criteria cited in the denial.
- Tell the skill to draft the appeal — “draft the appeal letter for the denial I just normalized” or “build the step-therapy rebuttal for this denial.”
- Confirm
denial_reason_rebuttal_checkermatched every denial phrase and every denial category before the draft proceeds. Rewrite any unaddressed block. - Resolve every contradiction flagged by
contradiction_checker. Errors block export; warnings do not, but should be reviewed. - Hand the draft to
clinical-claim-evidence-mapper: runclinical_claim_extract_candidates, cite every real claim, and requireclinical_claim_check_draftto returnexport_ready: truebefore rendering. - On success the skill writes the rendered letter to
./drafts/appeal-{case_id}.md, appends the claim-to-source index, and writes an audit-log entry. The letter is unsigned — the physician signs outside this workflow.