Portfolio / Evaluating it / The suite
The eval suite, case by case.
Every case the assistant is held to, exactly as it runs: the persona, what they type or call, and the checks on the reply. Then the golden set for policy search. Then the source files, so you can read the real thing.
- test-cases.ts · the 67 cases
- assertions.ts · what each check does
- golden_policy_search.json · the golden set
- run_golden.py · the golden runner
- latest-report.json · a full run, 67/67
- latest-golden-report.json · golden run, 34/47
A persona, a message, and what must be true.
A case is a sequence of steps. Each step is a named persona doing one thing: typing a message, or calling the API the way the screen would. The chips under a step are the checks. Most assert on the reply's structure rather than its wording: which path it took, whether three options came back and which was first, whether a draft is pending, whether anything was submitted. The outlined chips are the leak checks: no locked document title, count, or canary string may appear anywhere in the reply. They run on every persona, on every run. The suite resets the mock data first, so every run starts from the same state. Latest run: 67 of 67 cases, 542 of 542 assertions.
Does each message go to the right place? A question to search, a request to the agent, a stray yes to nothing.
GET /api/requestsDoes each persona see exactly what they have access to, and never a locked title, count, or canary?
Does the document list itself obey the same rule, on the search service and on the local fallback?
GET ${RAG}/api/docs?user=alice@corp.comGET ${RAG}/api/docs?user=contractor@ext.comGET ${RAG}/api/docs?user=ananya@corp.comGET ${RAG}/api/docs?user=bob@corp.comGET /api/policy/docsGET /api/policy/docsGET /api/policy/docsBalances, the best window, blackouts, holidays, short notice, insufficient days.
Both countries, the contractor, the cross-leak, and the draft-to-submit path.
GET /api/notificationsGET /api/notificationsGET /api/notificationsGET /api/manager/dashboardGET /api/manager/dashboardPOST /api/manager/requests/REQ-2026-006/decision { decision: 'approved' }GET /api/requestsNothing is submitted without an explicit yes. Cancel discards. Overlaps are refused.
GET /api/requestsGET /api/requestsRequest, approve, notify, and the balances move.
GET /api/requestsGET /api/notificationsGET /api/manager/dashboardPOST /api/manager/requests/REQ-2026-006/decision { decision: 'approved' }GET /api/notificationsGET /api/requestsPOST /api/manager/requests/REQ-2026-006/decision { decision: 'denied', note: 'Release wrap-up that week' }GET /api/notificationsGET /api/requestsGET /api/manager/dashboardThe queue, coverage math, who may decide, and only once.
GET /api/manager/dashboardPOST /api/manager/requests/REQ-2026-003/decision { decision: 'approved' }POST /api/manager/requests/REQ-2026-003/decision { decision: 'approved' }POST /api/manager/requests/REQ-2026-003/decision { decision: 'approved' }POST /api/manager/requests/REQ-2026-003/decision { decision: 'denied' }POST /api/manager/requests/REQ-2026-003/decision { decision: 'maybe' }GET /api/manager/dashboardPOST /api/manager/requests/REQ-2026-003/decision { decision: 'approved' }GET /api/requestsGET /api/notificationsGET /api/requestsGET /api/manager/dashboardGET /api/requestsHR sees the whole org read-only, and can still request time off.
GET /api/manager/dashboardPOST /api/manager/requests/REQ-2026-001/decision { decision: 'approved' }The article first, the ticket only when the fix fails, the cases like it, the published fix, and a person in the same thread.
GET /api/ticketsGET /api/ticketsGET /api/notificationsGET /api/support/queueGET /api/notificationsGET /api/ticketsGET /api/livechatGET /api/support/queuePOST /api/livechat/CHAT-1/joinPOST /api/livechat/CHAT-1/message { text: 'Hi Alex, roll the agent back to 7.3.9 and restart.' }GET /api/livechatPOST /api/support/tickets/IT-1047/resolve { note: 'Fixed on the call.' }GET /api/ticketsGET /api/livechatPOST /api/support/tickets/IT-1042/resolvePOST /api/support/tickets/IT-1042/reply { text: 'hi' }GET /api/support/queuePOST /api/livechat/CHAT-1/joinGET /api/ticketsReports the assistant must not handle, the pay and accommodation questions it explains without deciding, and the policy question it must still answer.
GET /api/livechatGET /api/livechatGET /api/livechatGET /api/support/queueGET /api/support/queuePOST /api/livechat/CHAT-1/joinPOST /api/livechat/CHAT-1/joinGET /api/livechatGET /api/ticketsGET /api/livechatGET /api/livechatGET /api/livechat47 questions with one right outcome each.
Golden set for the policy search use case: one question, one expected outcome, per persona. Answerable cases name the document(s) that should answer and the facts the answer must contain. Denied and out-of-corpus cases must abstain and must not name the document, quote it, or surface its canary. A runner posts each one to the search service the way the assistant does and scores the served answer. Latest run: 34 of 47. The failures are listed honestly; they are the work a production embedder has to clear.
| Case | Category | Asks as | Question | Expected | Latest |
|---|---|---|---|---|---|
| pto-accrual | in scope | dave | How many PTO days do I get a year? | answer from PTO Policy; must say 20 | pass |
| pto-carryover | in scope | alice | Can I carry over unused PTO? | answer from PTO Policy; must say 5 | pass |
| pto-notice | in scope | dave | How far in advance do I need to request time off? | answer from PTO Policy; must say two weeks | pass |
| sick-days | in scope | sarah | How many sick days do I get? | answer from PTO Policy; must say 10 | pass |
| pto-payout | in scope | alice | Is unused PTO paid out when I leave? | answer from PTO Policy; must say final paycheck | fail |
| parental-birthing | in scope | dave | How much paid leave does a birthing parent get? | answer from Parental Leave Policy; must say 16 weeks | pass |
| parental-nonbirthing | in scope | alice | How much leave does a non-birthing parent get? | answer from Parental Leave Policy; must say 12 weeks | pass |
| parental-notice | in scope | sarah | How much notice does HR need before parental leave? | answer from Parental Leave Policy, Leave of Absence Procedure; must say 30 days | pass |
| loa-routing | in scope | dave | Who approves a leave of absence request? | answer from Leave of Absence Procedure; must say manager, HR | fail |
| loa-hr-sla | in scope | ananya | How long does HR take to respond to a leave request? | answer from Leave of Absence Procedure; must say 5 business days | fail |
| oncall-stipend | in scope | alice | What is the on-call stipend? | answer from Engineering On-Call Policy; must say 1,000 | pass |
| oncall-p1 | in scope | sarah | How fast do I have to acknowledge a P1 page? | answer from Engineering On-Call Policy; must say 15 minutes | fail |
| oncall-frequency | in scope | ananya | How often can I be on call? | answer from Engineering On-Call Policy; must say four-week | fail |
| conduct-report | in scope | contractor | How do I report a code of conduct violation? | answer from Code of Conduct; must say hotline | pass |
| conduct-conflict | in scope | dave | Do I have to disclose an outside investment? | answer from Code of Conduct; must say disclose | pass |
| india-weeks | in scope | ananya | How much maternity leave do I get? | answer from India Leave Supplement; must say 26 weeks | pass |
| india-prenatal | in scope | ananya | How many weeks can I take before my due date? | answer from India Leave Supplement; must say 8 weeks | fail |
| india-eligibility | in scope | ananya | How long do I need to have worked here to qualify for maternity leave? | answer from India Leave Supplement; must say 80 days | fail |
| india-document | in scope | rohan | What document does maternity leave in India require? | answer from India Leave Supplement; must say maternity certificate | fail |
| us-fmla | in scope | sarah | How many weeks of FMLA job protection do I get? | answer from US Leave Supplement; must say 12 weeks | pass |
| us-fmla-service | in scope | alice | How long do I need to have worked here for FMLA to apply? | answer from US Leave Supplement; must say 12 months | pass |
| us-state | in scope | sarah | Does California paid family leave reduce my pay during leave? | answer from US Leave Supplement; must say 100% | pass |
| comp-senior | in scope | bob | What is the salary band for a senior engineer? | answer from Compensation Bands; must say 150,000, 195,000 | pass |
| comp-pm | in scope | bob | What is the band for a Senior PM? | answer from Compensation Bands; must say 170,000 | pass |
| comp-merit | in scope | cfo | What is the cap on merit increases? | answer from Compensation Bands; must say 8% | pass |
| exec-bands | in scope | bob | What are the compensation bands for executives? | answer from Executive Compensation Bands; must say 340,000 | pass |
| exec-bands-cfo | in scope | cfo | What is the band for a Vice President? | answer from Executive Compensation Bands; must say 340,000, 430,000 | pass |
| eq-vesting | in scope | carol | How do executive equity grants vest? | answer from Executive Equity Plan; must say four years | pass |
| eq-refresh | in scope | cfo | How big is the annual executive refresh grant? | answer from Executive Equity Plan; must say 25% | pass |
| para-carryover | paraphrase | dave | If I don't use all my vacation days, do I lose them? | answer from PTO Policy; must say 5 | fail |
| para-birthing | paraphrase | alice | I'm pregnant. How long can I be off? | answer from Parental Leave Policy, US Leave Supplement; must say 16 weeks | fail |
| para-oncall | paraphrase | alice | Do we get paid extra for carrying the pager? | answer from Engineering On-Call Policy; must say 1,000 | fail |
| denied-comp-dave | denied | dave | What is the salary band for a Principal Engineer? | abstain; never 245,000, 310,000, CANARY-COMP | pass |
| denied-comp-alice | denied | alice | Tell me the staff engineer compensation band. | abstain; never 195,000, CANARY-COMP, Compensation Bands | fail |
| denied-exec-alex | denied | alice | What are the compensation bands for executives? | abstain; never 340,000, CANARY-EXEC, Executive Compensation Bands | pass |
| denied-exec-carol | denied | carol | What are the compensation bands for executives? | abstain; never 340,000, CANARY-EXEC, Executive Compensation Bands; never from Executive Equity Plan | pass |
| denied-eq-alice | denied | alice | How do executive equity grants vest? | abstain; never four years, CANARY-EQ, Executive Equity Plan | pass |
| denied-eq-bob | denied | bob | What is the executive equity refresh grant? | abstain; never 25%, CANARY-EQ, Executive Equity Plan | pass |
| denied-oncall-dave | denied | dave | What is the on-call stipend? | abstain; never 1,000, Engineering On-Call Policy | pass |
| denied-pto-contractor | denied | contractor | How many PTO days do I accrue? | abstain; never 20, PTO Policy | pass |
| denied-parental-contractor | denied | contractor | How much parental leave do I get? | abstain; never 16 weeks, Parental Leave Policy | pass |
| cross-us-asks-india | cross country | sarah | What is in the India Leave Supplement? | answer from Parental Leave Policy; never 26 weeks, 80 days, Maternity Benefit Act; never from India Leave Supplement | pass |
| cross-india-asks-us | cross country | ananya | What is in the US Leave Supplement? | answer from Parental Leave Policy; never 1,250, FMLA; never from US Leave Supplement | pass |
| cross-hr-sees-both | cross country | bob | How many weeks of maternity leave in India? | answer from India Leave Supplement; must say 26 weeks | pass |
| oos-401k | out of corpus | dave | What is the 401(k) match? | abstain; never % | pass |
| oos-remote | out of corpus | alice | How many days a week can I work from home? | abstain | fail |
| oos-expense | out of corpus | bob | What is the per-diem for travel? | abstain | pass |
The method behind these: Evaluating it. Back to the portfolio →