Go to file
Yashas 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
src design: three questions, three sizes 2026-09-16 13:38:09 +05:30
.env.example feat: the denials desk, and Ava working where you can watch her 2026-09-15 23:47:19 +05:30
.gitignore feat: the denials desk, and Ava working where you can watch her 2026-09-15 23:47:19 +05:30
index.html feat: the denials desk, and Ava working where you can watch her 2026-09-15 23:47:19 +05:30
package-lock.json feat: the denials desk, and Ava working where you can watch her 2026-09-15 23:47:19 +05:30
package.json feat: the denials desk, and Ava working where you can watch her 2026-09-15 23:47:19 +05:30
README.md feat: the denials desk, and Ava working where you can watch her 2026-09-15 23:47:19 +05:30
tsconfig.app.json feat: the denials desk, and Ava working where you can watch her 2026-09-15 23:47:19 +05:30
tsconfig.json feat: the denials desk, and Ava working where you can watch her 2026-09-15 23:47:19 +05:30
tsconfig.node.json feat: the denials desk, and Ava working where you can watch her 2026-09-15 23:47:19 +05:30
vite.config.ts feat: the denials desk, and Ava working where you can watch her 2026-09-15 23:47:19 +05:30

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

  1. No API URL is compiled in. config.js, written by the server when it places the build, carries VITE_ZINO_API_URL. A production build with no config.js fails loudly rather than calling whichever backend built it.
  2. 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 by sm2/custom-apps/denials-investigator/07_console_views.sql.