- {summary || question || `Scope: ${scope || 'all payers'}`} + {summary || + (quiet ? scanned : '') || + question || + (isSweep ? 'Ava is reviewing every payer, department and desk…' : `Scope: ${scope || 'all payers'}`)}
{(atRisk || recoverable) && ( diff --git a/src/screens/RunReviewScreen.tsx b/src/screens/RunReviewScreen.tsx new file mode 100644 index 0000000..29156d4 --- /dev/null +++ b/src/screens/RunReviewScreen.tsx @@ -0,0 +1,104 @@ +import { useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { Brain, Database, Moon, Radar } from 'lucide-react'; +import { useZino } from '../api/provider'; +import { ACT, LAKEHOUSE, QUIET_MORNING_AS_OF, WORKFLOW } from '../api/config'; +import { Button, Card, ErrorNote } from '../components/core'; + +/** + * Run the daily review, now. + * + * There is no form. This is the same activity a scheduler performs at 6am; + * the button exists so a room does not have to wait until 6am. Nothing is + * asked of Ava — she decides what, if anything, is worth a person's time. + * + * The second button anchors the sweep on a date before the August spike. The + * demo data is static, so without it every run flags the same thing; with it, + * one run can genuinely come back "nothing to report" — which is what most + * mornings look like, and the contrast is the point. + */ +export function RunReviewScreen() { + const navigate = useNavigate(); + const { client } = useZino(); + const [busy, setBusy] = useState<'now' | 'quiet' | null>(null); + const [err, setErr] = useState+ Ava looks at every payer, department and front desk, and only opens a case if + something clears the bar. Most mornings she reports nothing. +
+What she checks
++ The bar: a denied count up more than 40% on meaningful volume, or more than $100K + expiring. Below it, she watches and says nothing. +
+
+
+ Normally fires at 6am on its own. This is the same activity. +
++ Anchored on {QUIET_MORNING_AS_OF}, before anything went wrong — to see what + “nothing to report” looks like. +
+