← Back to AAI for MerusCase

Which Cases Need Attention

A firm-wide urgency ranker. Every open case scored against four signals — overdue tasks, missing future events, days since last activity, HIGH-priority backlog — and the worst ones surfaced first. Built to find the cases that went quiet, not the ones that screamed the loudest yesterday.

The case names, file numbers, and scores in this page are fictitious demonstration data. Your install runs against your real caseload.

On this page

What it is

At the prompt:

aaicase> which cases need attention

Or any of:

aaicase> case triage
aaicase> worst cases
aaicase> check all cases

About thirty seconds later you have a ranked list of every open case that scored above zero on the urgency rubric, with the top 15 expanded inline. It is the skill an attorney runs when they want to confront the cases they’ve been avoiding — not the ones with hearings this week (that’s morning brief), but the ones that went silent and haven’t been touched in months.

The problem this exists to solve

Workers’ Comp practice has a structural failure mode: the loud cases get attention; the quiet ones drift. A case with a hearing tomorrow surfaces in every workflow. A case where the QME came back six weeks ago and nothing has happened since does not.

The quiet cases are where malpractice lives. SOLs expire on cases nobody is looking at. Cases get reassigned to attorneys who don’t realize they exist. PD ratings come back and sit untouched until the client calls and asks why settlement is taking so long. The morning brief shows you what’s on fire today; this skill shows you what’s rotting in the corner.

How it runs (under the hood)

One bash block, four parallel fetches:

node bin/merus-fetch.mjs /caseFiles/index     → all open cases
node bin/merus-fetch.mjs /tasks/index         → every open task
node bin/merus-fetch.mjs /events/index        → every future event
node bin/merus-fetch.mjs /activities/index    → recent activity (global)

All four endpoints feed the score — partial data would mislead the triage, so the skill stops with a clear error if any of the four fails. Everything lands in a per-run mktemp -d temp directory locked to chmod 700; deleted at the end.

The cases iterated are filtered to open status — closed, archived, and held cases are excluded. The score is computed in JavaScript directly from the fetched data; no second LLM pass, no string matching, no prompts.

The scoring algorithm

Four signals, deliberately small in number so the ranking stays explicable. Each case’s score is the sum of the points from each signal that fires:

SignalTriggerPoints
Days since last activity> 90 days+40
30–90 days+15
Overdue tasks (any priority)1–3 overdue+10 each
4+ overdue+30 (capped)
HIGH-priority overdue tasksAny HIGH overdue+20
No upcoming eventsZero future events on the calendar+20

The weights are intentionally chosen so:

Cases scoring zero (no signals firing) are not shown. The skill reports both the count of surfaced cases and the total open caseload so you know the denominator (“14 of 287 open cases need attention”).

CRITICAL vs. NEEDS ATTENTION

The output splits surfaced cases into two brackets by score:

BracketScoreInterpretation
CRITICAL50+Multiple signals firing. Likely going-cold + overdue tasks + no upcoming events. These are the cases that need a touchpoint this week.
NEEDS ATTENTION20–49One or two signals firing. Not crisis-level, but on the path. A health check or a single phone call usually resolves the flag.

Below 20 are still flagged but only listed by number — not expanded inline — so the top 15 critical/needs-attention cases get the screen real estate.

Noise filter on tasks

Merus auto-generates “REVIEW (auto…),” “VERIFY (auto…),” and “Review filed orphan” tasks as side effects of various operations. The skill explicitly filters these out before counting overdue tasks. Otherwise a case with five autogenerated noise tasks looks identical to a case with five real overdue tasks — and the noise cases would surface first because they accumulate faster.

The same noise filter is documented in skills/status.md and shared with morning brief, process my tasks, and the case-level health check. Conservative by design: it filters only the prefixes that have never produced a real, attorney-actionable task in practice.

Example output

CASE TRIAGE — 14 of 287 open cases need attention
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

CRITICAL (score 50+):

   1. #[FILE-#]  Doe, Jane v. Sample County Agency (score: 95)
        145d since last activity, 5 overdue tasks,
        2 HIGH priority overdue, no upcoming events

   2. #[FILE-#]  Roe, Maria v. Sample Industries (score: 75)
        112d since last activity, 3 overdue tasks,
        1 HIGH priority overdue, no upcoming events

   3. #[FILE-#]  Sample, Alex v. Sample Distribution (score: 60)
        92d since last activity, 4 overdue tasks

NEEDS ATTENTION (score 20-49):

   4. #[FILE-#]  Doe, John v. Sample Foods (score: 45)
        38d since last activity, 2 overdue tasks,
        no upcoming events

   5. #[FILE-#]  Sample, Lee v. Sample Logistics (score: 35)
        45d since last activity, no upcoming events

   [...]

   15. #[FILE-#]  Doe, Pat v. Sample Manufacturing (score: 22)
         33d since last activity, 1 overdue task

Want me to run a full health check on #[file] Doe, Jane?

Vs. morning brief

Which cases need attentionMorning brief
ScopeEvery open case in the firmCases with hearings/QMEs this week
Time horizonMonths of going-coldToday and this week
SurfacesThe cases nobody’s touchedThe cases that are about to break
OutputTop 15 ranked by scoreDanger-scored cases with prep status
CadenceWeekly or monthlyDaily

They’re not substitutes — an attorney runs both, at different rhythms. Morning brief is the daily scan of what’s on fire. Which-cases-need-attention is the periodic confrontation with what got buried.

The workflow this fits into

The pattern is the same in each case: surface the worst three to five, run a health check on each, decide one specific action per case (call the client, file the DOR, schedule the QME, write to defense), and create the task. Don’t boil the ocean. The skill ranks fifteen; you act on three.

Troubleshooting

“0 of N open cases need attention” on a firm I know has problems

Possible the activity index returned a thin global slice (it’s capped at ~2700 entries across all cases). For firms over a few hundred cases, the global slice may miss enough activity to make days-since-activity wrong on the longest-quiet cases — in which case the cases that should score 40+ might score 0 if recent activity outside the slice would have lowered the count. Run audit [case] on one or two cases you suspect are quiet — the audit fetches per-case activity unbounded.

A case I closed yesterday is still showing

The case is still in “Open” status (case_status_id 9413 by default). Flip its status in Merus — the skill filters open-only.

Cases with hearings this week show up as needing attention

If they have overdue tasks or no other future events past the hearing, yes. That’s correct — an upcoming hearing doesn’t excuse overdue prep tasks. Run prep for hearing on them and clear the gap flags.

The score for case X seems wrong

Read the flags string — the score is the sum of the listed flags. If “5 overdue tasks” shows but you’ve closed all five, the closes haven’t synced or the noise filter isn’t catching auto-generated tasks the firm uses. Run process my tasks on the case to walk through the open list and confirm.

Want to see ALL cases, not just the top 15

The skill shows 15 expanded plus the total count. For the full list, run run report — Merus’s built-in “stale cases” report has the full surface.

Part of AAI for MerusCase — code-guarded AI case intelligence for California Workers’ Comp attorneys.