The problem
When an insurer does not pay a medical claim, the practice has a limited window to appeal, and the window differs by payer: 120 days for Medicare, 60, 90 or 180 days for others, counted from the date on the remittance. The denials arrive inside an electronic remittance file (an X12 835) that mixes them with the claims that were paid. Billing teams work them from spreadsheets and memory, so some appeals are filed late and the money is simply lost. A denied claim that is not appealed in time is, for the practice, the same as a claim that was never billed.
What Denial Desk does
- Reads the remittance file. Upload the 835 file (or paste its text) on the Denial Desk page in Jira. The app parses it inside Forge, finds the denied and reduced claims, and leaves out what needs no work: claims paid as expected, reversals, patient responsibility.
- Creates one work item per denial, with the payer's appeal deadline as the due date, the recoverable amount, the reason in plain language, and the next step. Titles and descriptions never contain the patient's name.
- Explains every reason code (CARC and RARC) in plain words, with the usual way to resolve it, and keeps a packet checklist on the work item panel: what the appeal needs before it can be sent.
- Tracks the appeal: mark the packet sent, record the payer's decision and amount recovered, or close a denial without appeal. A workflow validator can stop a transition while packet items are still missing.
- Drafts the appeal letter from the facts on the remittance, with blanks for what only a person knows.
- Shows the money at risk: recoverable dollars by deadline, payer, reason category and next step, on the Denial Desk page and a dashboard gadget. JQL covers it too:
issue in denialsDueWithin(7),denialStage = "new" AND denialAmount >= 500. - Payer rules hold each payer's appeal window; deadlines recompute when a rule changes, and a daily check reminds the assignee before a deadline passes.
- Rovo agent. Ask "what is due this week", "why was this claim denied", "draft the appeal for DEN-12" or "explain CO-197". Eight actions, a skill file that teaches any agent the appeal workflow, and read-only tools for outside agents through the Atlassian MCP server.
How it is built
Forge only: UI Kit screens, a resolver, triggers, a scheduled daily check, entity properties indexed for JQL, a custom JQL function, a workflow validator, and the Rovo agent, skill and MCP modules. No outside service is called; the manifest declares no egress, so the platform itself blocks any. The 835 parser, reason-code guidance, deadline arithmetic, letter drafting and sample data are pure TypeScript with 141 tests, including hostile-input tests. All sample data is synthetic: the invented payers are named SAMPLE, DEMO and EXAMPLE.
Patient privacy
Patient details appear only in the Denial Desk panel, to people who can open the work item. Agent tools that list or summarize denials return no patient identifiers. The remittance file itself is not kept; parsed claims are held only until the import finishes. The comments the app writes are internal notes, so on a service project a customer never sees them.