# 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 ```bash 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`.