Go to file
Yashas 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
src fix: her evidence comes from the trace, not from a form field 2026-09-16 13:56:52 +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.