Overview
Produce the evidence-bundle manifest for a denial-appeal or prior-authorization packet: required vs. optional attachments by denial category, service setting, and specialty; which items are attached; which are missing; and the structured manifest persisted to the workspace. Enforces inpatient-specific rules (complete medical records for acute inpatient appeals) and DMEPOS documentation lists. Consumes the normalized case record plus the drafted LOMN/appeal letter and their evidence map; produces the checklist, the packet-manifest JSON, and the human-readable packet index.
What it covers
- Denial-category-driven checklist. The required set is driven by the denial category, not by specialty. A step-therapy denial, a DRG/level-of-care denial, and a coding edit produce three different packets even at the same clinic.
- Anthem inpatient-records rule. When
service_setting='inpatient', the complete inpatient medical record (H&P, daily progress notes, operative notes, discharge summary) is added to the required set. Anthem makes this explicit; most commercial payers follow. - DMEPOS overlay. When
specialty='dmepos', the face-to-face encounter note, detailed written order, proof of delivery, condition-specific medical-necessity documentation, and the LCD/NCD excerpt are added as required items. - Missing-required gating.
attachment_manifest_writerreturnsisError: truewhile any required item is unmatched — the packet cannot be exported until the gap is closed or the item is explicitly acknowledged and replaced. - Audit-ready manifest JSON. Every packet writes
./packet/packet-manifest-{case_id}.jsonwith the checklist, attachments, missing-required list, and warnings — the record a HIPAA-sensitive buyer shows when asked to prove the packet was complete at submission. - Claim-to-source index integration. The rendered
./packet/packet-index-{case_id}.mdappends theclinical-claim-evidence-mapperoutput so the reviewer can follow every clinical claim in the appeal letter back to a chart excerpt.
Example conversation
You: The appeal letter and LOMN for case 2026-0417-A are both drafted and the claim-to-source index is clean. Build the packet for me — it’s the Anthem inpatient spinal fusion.
Agent: Reading
case.json. Branchclinical-appeal, appeal level1st-internal, categories["not-medically-necessary", "lack-of-prior-auth", "drg-level-of-care"], service settinginpatient, specialty overlaymsk. Callingpacket_checklist_generatornow.Agent: Checklist returned. Required set has 11 items: appeal letter, denial-letter copy, LOMN, diagnosis confirmation, prior-therapy records, objective findings, FDA label or specialty-society guideline, authorization-attempt timeline, no-auth explanation, InterQual/MCG/Milliman/LSIP criteria mapping, attending physician’s clinical summary, and complete inpatient medical record (Anthem inpatient rule). Optional set includes peer-reviewed publications and the payer policy excerpt. Excluded: generic medical-necessity prose for the DRG/level-of-care block.
You: Uploading what I have now — appeal letter, LOMN, the denial letter, MRI 2026-02-03, PT evaluation 2026-03-10, ED note 2026-03-28, NASS 2024 excerpt, pharmacy fills for gabapentin and duloxetine, and the InterQual LSIP worksheet. The inpatient record upload is coming separately from our HIM team.
Agent: Calling
attachment_manifest_writerwith 9 attachments and the checklist. Result:isError: true.missing_requiredhas three items — “Complete inpatient medical record” (inpatient-medical-record), “Attending physician’s clinical summary” (attending-clinical-summary), and the H&P + operative note + discharge summary that normally ship inside the complete record. Warnings flag that Anthem’s rule expects all three inpatient source documents; a partial record will be read as incomplete. Packet export blocked.You: HIM just dropped the full inpatient record at
./uploads/inpatient-record-2026-03-28-to-2026-03-31.pdf(208 pages). The attending’s summary letter is at./uploads/attending-summary-dr-shah-2026-04-19.pdf.Agent: Adding both attachments with categories
inpatient-medical-recordandattending-clinical-summary. Re-runningattachment_manifest_writer. Result:ok: true,missing_required: [], 0 warnings. Manifest written to./packet/packet-manifest-2026-0417-A.json.Agent: Rendering
./packet/packet-index-2026-0417-A.mdwith the submission-order attachment list grouped by category, page counts, and the claim-to-source index fromclinical-claim-evidence-mapper. Appending the audit-log entry: packet manifest finalized, 11/11 required items matched, 208-page inpatient record included. Ready forsubmission-companion-sheet.
Sample output excerpt
The skill produces two artifacts: the structured manifest JSON at ./packet/packet-manifest-{case_id}.json and the reviewer-first packet index at ./packet/packet-index-{case_id}.md.
{
"case_id": "2026-0417-A",
"written_at": "2026-04-21T19:42:08Z",
"denial_categories": ["not-medically-necessary", "lack-of-prior-auth", "drg-level-of-care"],
"appeal_branch": "clinical-appeal",
"service_setting": "inpatient",
"specialty": "msk",
"checklist": {
"required": [
{ "item": "Appeal letter", "category": "appeal-letter", "rationale": "Top letter of the packet; names the denial and the rebuttal." },
{ "item": "Denial letter or EOB copy", "category": "denial-letter-copy", "rationale": "Reviewer must cross-reference the case file by denial date and payer reference number." },
{ "item": "Letter of medical necessity", "category": "lomn", "rationale": "Clinical spine of the appeal; reviewer reads this after the top letter." },
{ "item": "Prior-therapy records", "category": "prior-therapy-records", "rationale": "Progress notes or pharmacy fills supporting each prior-therapy entry in the LOMN." },
{ "item": "Objective findings (labs, imaging, disease scores)", "category": "objective-findings", "rationale": "Backs the specific findings the LOMN cites." },
{ "item": "Authorization-attempt timeline", "category": "auth-attempt-timeline", "rationale": "Call records, portal screenshots, fax receipts showing the PA request was initiated." },
{ "item": "Complete inpatient medical record", "category": "inpatient-medical-record", "rationale": "Anthem and most commercial payers require the full record for DRG / level-of-care appeals." },
{ "item": "InterQual / MCG / Milliman / LSIP criteria mapping", "category": "level-of-care-criteria", "rationale": "Maps severity-of-illness + intensity-of-service to the acute-inpatient criteria." },
{ "item": "Attending physician's clinical summary", "category": "attending-clinical-summary", "rationale": "Supports acute inpatient over observation." }
],
"optional": [
{ "item": "Peer-reviewed publication excerpts", "category": "peer-reviewed-publications", "rationale": "Strengthens off-label or emerging-indication use." },
{ "item": "Payer policy / coverage-criteria excerpt", "category": "payer-policy-excerpt", "rationale": "Maps the LOMN against the payer's own definition." },
{ "item": "Peer-to-peer review transcript", "category": "peer-to-peer-transcript", "rationale": "Include when a P2P was held before the formal appeal." }
],
"excluded": [
{ "item": "Entire chart dump", "reason": "Reviewers skip over padding; attach focused excerpts the LOMN cites." },
{ "item": "Generic medical-necessity prose", "reason": "Level-of-care disputes require specific criteria-mapping language (InterQual/MCG/Milliman/LSIP), not general necessity language." }
]
},
"attachments": [
{ "label": "Appeal letter — case 2026-0417-A", "doc_path": "drafts/appeal-2026-0417-A.md", "category": "appeal-letter", "pages": "1-3", "date": "2026-04-21" },
{ "label": "Letter of medical necessity", "doc_path": "drafts/lomn-2026-0417-A.md", "category": "lomn", "pages": "1-4", "date": "2026-04-20" },
{ "label": "Anthem denial letter 2026-04-12", "doc_path": "denials/anthem_20260412.pdf", "category": "denial-letter-copy", "pages": "1-3", "date": "2026-04-12" },
{ "label": "Complete inpatient record 2026-03-28 to 2026-03-31", "doc_path": "uploads/inpatient-record-2026-03-28-to-2026-03-31.pdf", "category": "inpatient-medical-record", "pages": "1-208", "date": "2026-03-31" },
{ "label": "Attending clinical summary — Dr. P. Shah", "doc_path": "uploads/attending-summary-dr-shah-2026-04-19.pdf", "category": "attending-clinical-summary", "pages": "1-2", "date": "2026-04-19" },
{ "label": "InterQual LSIP 2026.1 worksheet", "doc_path": "uploads/interqual-lsip-worksheet-2026-03-28.pdf", "category": "level-of-care-criteria", "pages": "1-6", "date": "2026-03-28" },
{ "label": "MRI lumbar spine 2026-02-03", "doc_path": "inputs/mri-2026-02-03.pdf", "category": "objective-findings", "pages": "1-2", "date": "2026-02-03" },
{ "label": "PT evaluation 2026-03-10 (ODI 56%)", "doc_path": "inputs/pt-eval-2026-03-10.pdf", "category": "objective-findings", "pages": "1-2", "date": "2026-03-10" },
{ "label": "Gabapentin + duloxetine pharmacy fills", "doc_path": "inputs/pharmacy-fills-2025-08-to-2026-02.pdf", "category": "prior-therapy-records", "pages": "1-4", "date": "2026-02-28" },
{ "label": "NASS 2024 Lumbar Fusion Coverage Criteria", "doc_path": "inputs/nass-2024-lumbar-fusion.pdf", "category": "guideline-or-label", "pages": "12-18", "date": "2024-11-01" },
{ "label": "Authorization-attempt timeline (fax + portal)", "doc_path": "uploads/auth-attempt-timeline-2026-03-28.pdf", "category": "auth-attempt-timeline", "pages": "1-3", "date": "2026-03-28" },
{ "label": "No-auth explanation — emergent admission", "doc_path": "drafts/no-auth-explanation-2026-0417-A.md", "category": "no-auth-explanation", "pages": "1", "date": "2026-04-21" }
],
"missing_required": [],
"warnings": [],
"claim_to_source_index_path": "clinical-claims/2026-0417-A.json"
}
Rendered packet index (./packet/packet-index-2026-0417-A.md):
# Appeal packet — case 2026-0417-A
**RE:** Level 1 internal appeal — medical-necessity + retroactive-authorization + DRG / level-of-care
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
Payer: Anthem Blue Cross Blue Shield — Anthem Clinical Appeals
Packet manifest: `packet/packet-manifest-2026-0417-A.json`
Attachments: 12 documents, 238 pages total.
## Attachments (submission order)
### Denial correspondence
1. Anthem denial letter 2026-04-12 — 3 pages — `denials/anthem_20260412.pdf`
### Appeal + clinical spine
2. Appeal letter — case 2026-0417-A — 3 pages — 2026-04-21 — `drafts/appeal-2026-0417-A.md`
3. Letter of medical necessity — 4 pages — 2026-04-20 — `drafts/lomn-2026-0417-A.md`
4. Attending clinical summary — Dr. P. Shah — 2 pages — 2026-04-19
### Clinical records
5. Complete inpatient record 2026-03-28 to 2026-03-31 — 208 pages
6. MRI lumbar spine 2026-02-03 — 2 pages
7. PT evaluation 2026-03-10 (ODI 56%) — 2 pages
8. Gabapentin + duloxetine pharmacy fills — 4 pages
### Payer forms
9. Authorization-attempt timeline (fax + portal) — 3 pages — 2026-03-28
10. No-auth explanation — emergent admission — 1 page — 2026-04-21
### Evidence
11. InterQual LSIP 2026.1 worksheet — 6 pages — 2026-03-28
12. NASS 2024 Lumbar Fusion Coverage Criteria — pages 12-18
## Claim-to-source index
(Appended from `clinical-claims/2026-0417-A.json` — 12 of 12 clinical claims cited, 0 orphans.)
| # | Claim | Type | Source document | Page |
|---|---|---|---|---|
| 1 | The patient carries a diagnosis of chronic low back pain (M54.16). | diagnosis | inputs/chart-note-2026-02-12.pdf | 2 |
| 2 | The patient failed a 12-week trial of gabapentin at 900 mg TID. | prior-therapy | inputs/chart-note-2025-11-03.pdf | 1 |
| 3 | MRI lumbar spine (2026-02-03) demonstrated L4-L5 disc extrusion with right S1 nerve-root impingement. | lab-or-imaging | inputs/mri-2026-02-03.pdf | 2 |
| 4 | ODI score was 56% on 2026-03-10, indicating severe functional limitation. | clinical-score | inputs/pt-eval-2026-03-10.pdf | 1 |
Extension tools and validations
The skill registers two deterministic tools. Both key off case_id and are workspace-scoped — paths resolving outside the project root are rejected.
packet_checklist_generator
- Inputs:
denial_categories[](fromdenial_classifier; pass[]for PA requests with no denial yet),appeal_branch(clinical-appeal,claim-reconsideration,nomnc-expedited-determination, orpa-request),service_setting(inpatient,outpatient,post-service), optionalspecialty(msk,oncology,gi-biologics,dermatology,rheumatology,behavioral-health,pulmonary,dmepos). - What it produces: a
{ required, optional, excluded }object with one entry per item. Eachrequiredandoptionalitem carries{ item, category, rationale }; eachexcludeditem carries{ item, reason }. The required set is the union of the branch’s cross-cutting items (appeal letter + denial-letter copy for clinical appeals; claim-reconsideration form + PRA for reconsiderations; BFCC-QIO form + NOMNC/DENC + plan of care + progress notes + functional-status docs for NOMNC; PA request form for PA requests), the denial-category-driven items (13 categories covering medical necessity, experimental/investigational, step-therapy, off-formulary, DRG/level-of-care, coding-edit, COB, timely-filing, and others), the inpatient overlay (complete inpatient medical record whenservice_setting='inpatient'), and the specialty overlay (DMEPOS face-to-face + DWO + proof of delivery + LCD/NCD whenspecialty='dmepos'). Deduplicated by category. isError: does not error; it is pure computation. Downstream gating happens in the manifest writer.
attachment_manifest_writer
- Inputs:
case_id,attachments[](each withlabel,doc_path,category, optionalpagesanddate), thechecklistfrompacket_checklist_generator, and optional pass-throughdenial_categories,appeal_branch,service_setting,specialty. - What it does: writes
./packet/packet-manifest-{case_id}.jsonwith the full manifest (checklist + attachments + missing_required + warnings). Matches each required item against the supplied attachments by exact category match or case-insensitive label substring. Emits warnings for off-checklist categories (possible typos), missing-on-disk doc_paths, inpatient records under 20KB (likely incomplete), and commonly-expected-but-absent items (e.g., a step-therapy appeal without the payer’s step-therapy policy excerpt). isError: true: whenmissing_required[]is non-empty. The drafting workflow must close the gap before rendering the packet index or callingsubmission-companion-sheet.
Validation invariants
- Required items by denial category cannot be silently skipped. The checklist is deterministic and deduplicated by category; the manifest writer matches exact categories or label substrings and surfaces every unmatched required item in
missing_required[]. There is no “override” flag. - Anthem inpatient appeals require the complete inpatient medical record unless
already_submittedis flagged. Whenservice_setting='inpatient', theinpatient-medical-recorditem is added to the required set. A < 20KB attachment at that category triggers a warning that reviewers expect the complete record (admission H&P through discharge summary). - DMEPOS PA packets require the face-to-face encounter note and the detailed written order. When
specialty='dmepos', both are added to the required set along with proof of delivery (post-delivery packets) and the LCD/NCD excerpt for the HCPCS code. - Path-traversal outside workspace rejected.
case_idmust match^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$; both the manifest output path and every attachmentdoc_pathare resolved and required to sit under the workspace root. - Every attachment must declare its category from the controlled vocabulary. Attachments with an unknown category are accepted but raise a warning so a typo cannot mask a missing required item. The vocabulary is the union of categories used by
packet_checklist_generatoracross all branches and overlays.
Getting started
- Run
denial-intake-normalizerfirst. The packet checklist is driven offcase.denial.classified_categories,case.branch,case.service.inpatient_vs_outpatient, and the service codes — without the normalized case record the checklist has no category to drive off and the generator rejects the call. - Draft the appeal letter with
appeal-letter-builderand the letter of medical necessity withletter-of-medical-necessity-builder. Both drafts must exist before the packet is assembled — the checklist treats them as required top-of-packet items. - Gather the supporting exhibits into the workspace: chart excerpts cited in the LOMN, imaging and lab reports, prior-therapy records (pharmacy fills or progress notes), the payer policy excerpt naming the plan-preferred agents or coverage criteria, and the prior-auth attempt history (call logs, portal screenshots, fax receipts).
- Invoke the skill with the denial categories and the service setting — “build the packet for case 2026-0417-A, inpatient spinal fusion” or “generate the checklist for this step-therapy denial.” The skill calls
packet_checklist_generatorand walks the required set with you, collecting each attachment’s label, path, and category. - Address every entry
attachment_manifest_writerreturns inmissing_required[]. The manifest writer returnsisError: trueuntil the list is empty; the packet cannot be exported with a gap. - Pair with
clinical-claim-evidence-mapperbefore export —clinical_claim_check_draftmust returnexport_ready: truefor the appeal letter and LOMN, andclinical_claim_render_indexproduces the claim-to-source table appended to the packet index.
The skill does not draft letters and does not submit the packet. It is the assembly and completeness gate that makes every packet defensible to a payer reviewer — no missing required attachment leaves the workspace.