Commit Graph

7 Commits

Author SHA1 Message Date
4087d2c2e0 fix: dates in Ava's prose read as 'Jul 26, 2026', not 2026-07-26
Display-only rewrite (format.prose) on every surface that shows her text —
headline, work statement, full story, recommendations, re-check, queue cards,
slides, notes. Stored text keeps ISO dates so deadline and spike parsers still
read them.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-16 19:17:08 +05:30
e8741f6333 feat: claims explorer — the lakehouse rows behind every number
- /claims: Databricks claims table through the record-view API, server-side
  paging and filters (exact on dimensions, ranges on dates); URL is the filter set
- finding tiles link to the exact rows: affected set, and the unfiled-inside-window
  subset behind 'still recoverable'; kind-aware (expiring, slow payer, underpayment)
- 'What Ava reviewed' work statement shown under the headline
- client: range / multi-value filters

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-16 18:45:34 +05:30
d41583c68b copy: an application, not a transcript
Every user-facing string rewritten from a narrator's voice into an
application's. "What she wants you to approve" is now "Recommended actions";
"Her evidence" is "Query log"; "Watch how she did it" is "Activity trace";
"The full story" is "Analysis"; "Ava is reviewing" is "Review in progress";
"Nothing needs your attention this morning" is "No findings". Chart captions
state what the chart shows ("Gray: 8-week baseline · Blue: last 6 weeks")
instead of commenting on it ("One insurer moved").

The AI is an attribution — "AI analysis · Ava · Confidence 97%" — not a
character the page talks about. Labels are nouns, hints are facts, and the
queue and action names use the workflow's own vocabulary (Approve actions,
Request changes, Resume review, Close case).

Same treatment on the exported slides: Summary, Trend, Comparison, Recovery,
Recommended actions, Method.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-16 15:38:50 +05:30
5df97f989c fix: "$1.56M" is not two sentences, and one attempt is not two
Recommendation titles were cut at the first period, so "$1.56M billed"
rendered as a title of "$1" and a body starting "56M". The split now breaks
only on a period followed by a space, a colon, or a newline — decimals and
codes like CO-197 survive.

Her evidence counted every attempt on the case: a run that failed to submit
leaves its queries in the trace beside the run that succeeded, and 16 + 20
read as "36 database queries". The panel now scopes to the attempt whose
decision was submitted (trace events carry decision_id), so the count is
what she actually did to reach these findings.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-16 15:17:01 +05:30
92ea27d27e fix: her evidence comes from the trace, not from a form field
Case 58325 died submitting findings: the submit_decision call arrived with
no `data` at all. The final model reply was exactly 4,096 output tokens —
the service's cap — so the JSON was cut off mid-call. Asking Ava to paste
16 full SQL statements into sql_log, on top of a summary, root cause, five
recommendations and a scanned-summary, is what pushed one tool call past
the limit and lost the whole investigation.

The platform already records every statement the agentic tool sends,
verbatim, with Databricks' own SUCCEEDED/FAILED and the row count. So
SqlEvidence now renders from the trace and treats sql_log as a one-line
index per step. Her charter gained hard per-field character limits to
match (sm2/custom-apps/denials-investigator/05_ai_employee.sql).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-16 13:56:52 +05:30
e294df6eba design: three questions, three sizes
Rebuilt the two screens for a person with ninety seconds, not an analyst.

Every screen now answers, in order and at descending size: what happened
(one sentence, 21px), how much (three numbers you can read across a
table — claims denied, money at stake, still recoverable with its first
deadline), and what she wants approved (the ranked list, with the decision
buttons directly under it). The full analysis, her SQL and the live trace
sit behind disclosures — one click for the reviewer who wants to check,
zero clutter for the manager who does not.

The queue opens on a briefing strip: "1 decision waiting for you —
$1,091,000 recoverable". A manager who reads only that line has the day.
Cards lead with the verdict sentence and the recoverable figure; a waiting
case says "Needs your decision", not "Awaiting Review".

Jargon translated where a business reader meets it: "data reconciled"
became "Numbers checked against Finance"; "97% confident" became "Ava is
97% sure"; the trace steps read "Asked the data" and "Thought about it".
Ava's SHOUTED recommendation headings are sentence-cased.

While Ava is still working, the trace is the page — there is nothing else
to show yet, and watching her query is the demo.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-16 13:38:09 +05:30
1c1c120202 feat: the denials desk, and Ava working where you can watch her
The operator console for Northlake Health's Denials Investigator (dev, org
900000109 / app 900000102). A revenue-cycle manager asks why claim denials
rose; Ava — an AI employee — investigates the hospital's Databricks lakehouse
and comes back with a cause, a dollar figure and a recommendation. He approves,
and she re-checks on her own two minutes later.

THE POINT OF THE SCREEN is that her work is checkable. Anyone can be told an
agent analysed their denials; AvaLive shows the actual SQL she sent to
Databricks, in order, with what came back and how long each query took — and it
does NOT hide a query she got wrong and corrected, because that is the most
convincing thing on the page.

Two decisions worth knowing about:

* Her trace does not come from the AI-employee monitor API. That endpoint needs
  an org-scoped studio token and answers "no organization scope on this
  account" for every user of this console. It comes instead from two views
  (northlake_app.ava_trace / ava_decisions) exposed as ordinary rdbms record
  views, behind a login role that cannot read the aiemployee schema at all.
  Seeded by sm2/custom-apps/denials-investigator/07_console_views.sql.

* Ava's own activities — Record Findings, Confirm Recovery, Flag Still
  Elevated, Escalate — are deliberately absent from STAGE_ACTIONS. Putting them
  on screen would only let a person sign in as the agent and press its button,
  which is a person impersonating an agent rather than an agent working.

Violet is the AI and nothing else is violet; amber is the one queue a human
owns. No API URL is compiled in — config.js carries it at placement time.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-15 23:47:19 +05:30