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>
|
||
|---|---|---|
| src | ||
| .env.example | ||
| .gitignore | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| tsconfig.app.json | ||
| tsconfig.json | ||
| tsconfig.node.json | ||
| vite.config.ts | ||
Northlake Health — Denials Desk
The operator console for the Denials Investigator app (dev, org 900000109
/ app 900000102). A revenue-cycle manager asks why claim denials rose; an AI
employee — Ava — investigates the hospital's Databricks lakehouse and comes
back with a cause, a dollar figure and a recommendation. The manager approves.
This repo is outside sm2 on purpose: it is a frontgen artifact. A push to
main triggers a build, and the artifact is placed at
https://preview-dev.getzino.in/northlake-health/.
What is where
| Path | What it is |
|---|---|
src/api/config.ts |
Every id: app, workflow, activities, record views, stages, per-stage actions |
src/api/client.ts |
The gateway client. App-scoped routes plus the two rdbms views that carry Ava's trace |
src/screens/QueueScreen.tsx |
A queue — the record view filtered on current_state_name |
src/screens/CaseScreen.tsx |
One investigation: findings, recommendations, Ava's live work, the actions |
src/screens/NewInvestigationScreen.tsx |
Ask a question — the INIT activity's form, read live from view-service |
src/components/AvaLive.tsx |
The demo. Every query Ava runs, as she runs it |
Running locally
npm install
npm run dev # http://localhost:5174 — talks to dev.getzino.in via .env
Sign in as dan.reyes@northlake.example. The org is fixed in config.ts.
Two things that will bite
- No API URL is compiled in.
config.js, written by the server when it places the build, carriesVITE_ZINO_API_URL. A production build with noconfig.jsfails loudly rather than calling whichever backend built it. - Ava's trace does not come from the monitor API. That endpoint needs an
org-scoped studio token; an app sign-in gets "no organization scope on this
account". It comes from two views (
northlake_app.ava_trace,ava_decisions) exposed as ordinary rdbms record views. Seeded bysm2/custom-apps/denials-investigator/07_console_views.sql.