← Back to AAI for MerusCase

Run Report

The front door to Merus’s 21 built-in reports. Stale cases, overdue tasks, the full cases list (including archived), dates of injury, tasks per case — all computed server-side by Merus, returned authoritative, presented cleanly. When Merus already has the report, AAI runs it rather than reimplementing the query.

The case names, dates, and counts in this page are fictitious demonstration data. Your install runs against your real Merus report engine.

On this page

What it is

At the prompt:

aaicase> run report
aaicase> stale cases report
aaicase> overdue tasks report
aaicase> what reports are available

The skill maps the request to a Merus report ID, runs /reports/view/[ID], and presents the rows formatted for the report type. If you ask “what reports are available,” it lists the useful ones. If you name a report, it runs it directly.

Why tap Merus instead of computing

Merus computes these reports server-side, against the complete dataset, with logic the firm can see in the Merus UI. Reimplementing them client-side would mean AAI’s “stale cases” could disagree with Merus’s “stale cases” — a recipe for confusion.

Several reports return data that the index endpoints can’t:

For these, running the native report is more authoritative than anything AAI could compute from the index endpoints. When Merus already does the work correctly, AAI defers to it.

The reports worth running

IDReportUse
1Cases ListEvery case, including archived. Broader than the index. 600+ rows — the skill shows summary counts, not all rows.
2Stale CasesCases with no recent activity, by Merus’s own detection. The most actionable report — shown ranked by staleness.
6Dates of InjuryDOI data across all cases. Useful for SOL cohort analysis (“which cases have a DOI approaching 5 years”).
8Tasks Per CaseTask counts by case — surfaces the cases carrying the most task load.
19Overdue TasksEvery overdue task, server-side filtered. Not subject to the index cap.

Merus has 21 reports total; these five are the ones with practical case-management value. The skill knows these by name; for the others, you can run by ID (run report 14) and the skill displays whatever comes back.

How it runs (under the hood)

One fetch, parameterized by report ID:

node bin/merus-fetch.mjs /reports/view/[REPORT-ID]

The response shape varies by report — some return arrays, some return keyed objects. The skill handles both: arrays get row-counted and sampled; objects get key-counted and sampled. No AI, no temp directory — just fetch, parse, present.

For the named reports, the skill applies report-specific formatting (stale cases ranked by staleness, overdue tasks grouped by case). For unrecognized report IDs, it falls back to a generic row dump so the data is at least visible.

Report selection

The skill maps natural-language requests to report IDs:

You ask forReport run
“stale cases”Report 2
“overdue tasks”Report 19
“all cases including archived”Report 1
“tasks per case”Report 8
“dates of injury” / “DOI list”Report 6
“what reports are available”Lists the table above
“run report [N]”Report N directly

If the request is ambiguous (“run a report” with no specifier), the skill lists the available reports and asks which one.

Handling large reports

Report 1 (Cases List) returns 600+ rows on a firm of any size. Dumping all of them to the terminal is useless. The skill:

For the actionable reports (Stale Cases, Overdue Tasks), the full result is usually small enough to show in entirety — and the skill does, ranked by the relevant key (staleness, days-overdue).

Vs. AAI-computed analyses

run reportAAI-computed (e.g. which cases need attention)
Source of logicMerus server-side report engineAAI’s own JavaScript scoring
Authoritative forWhat Merus considers stale/overdue (matches the Merus UI)AAI’s multi-signal urgency rubric
CustomizableNo — Merus defines the reportYes — the scoring weights are in the skill
Includes archivedYes (Report 1)No — open cases only
When to use“What does Merus say?” / firm-management reporting“What needs my attention?” / triage

The two are complementary. Which cases need attention applies AAI’s own urgency scoring (days-since-activity + overdue tasks + missing events + HIGH backlog). The Stale Cases report applies Merus’s definition. They’ll overlap heavily but not perfectly — and when they disagree, the difference is informative (a case Merus calls stale but AAI doesn’t, or vice versa, is worth a look).

Example output

STALE CASES REPORT (from Merus)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

23 cases with no recent activity:

  #[FILE-#]  Doe, Jane v. Sample County Agency      last activity 2025-11-12   Open
  #[FILE-#]  Roe, Maria v. Sample Industries        last activity 2025-12-03   Open
  #[FILE-#]  Sample, Alex v. Sample Distribution    last activity 2025-12-18   Open
  #[FILE-#]  Doe, John v. Sample Foods              last activity 2026-01-05   Open
  [...19 more, ranked by staleness]

Suggest: "Want me to run a health check on any of these?"

And overdue tasks:

OVERDUE TASKS REPORT (from Merus)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

17 overdue tasks across 11 cases:

  Doe, Jane v. Sample Co.      File QME objection           due 2026-05-20   7d overdue
  Roe, Maria v. Sample Inc.    Request benefits log         due 2026-05-12   15d overdue
  Sample, Alex v. Sample Dist. Send TD demand               due 2026-05-08   19d overdue
  [...14 more, grouped by case]

Suggest: "Want me to walk these in process my tasks?"

When to run it

Troubleshooting

“Report not found” or empty report

The report ID may not exist on this firm’s Merus instance (the 21 reports are mostly standard but firms can have custom configurations). Run “what reports are available” to see the known list, or check the Merus UI’s Reports section for the exact IDs.

Stale cases report disagrees with which-cases-need-attention

Expected — they use different definitions. Merus’s staleness is its own server-side logic; AAI’s attention scoring is a multi-signal rubric. A case in one but not the other is worth investigating: usually it means the case has recent activity (so AAI doesn’t flag it) but Merus considers it stale by a different measure, or vice versa.

Cases List report is huge and slow

Report 1 returns every case including archived — 600+ rows on most firms, sometimes thousands. The skill shows summary counts and a sample; for the full data, export it to a file (export) rather than scrolling the terminal.

The report format looks raw / unformatted

For the five named reports, the skill applies specific formatting. For other report IDs run by number, it falls back to a generic row dump — the data’s there, but not pretty. If you regularly use an unformatted report, it can be added to the named set.

Overdue tasks report shows tasks I’ve completed

The report reflects Merus’s state at fetch time. If you completed tasks recently and they still show, either the completion didn’t save or there’s caching latency. Re-run; cross-check with show tasks on the specific case.

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