- §4.1LVEF documented below threshold
- §4.2income within program bounds
- §7.asigned within 90 days
- §9prescriber NPI valid
Fax, mail, web, email. One intake. Verdikt reads the case, cites the rules, issues a verdict of approve, deny, or missing_info. Two artifacts out: a byte-identical reply package (decision letter plus the guidelines and any pre-populated forms the case needs) and a JSON verdict for downstream ops.
Built solo. The pipeline isn't the point. The seam between AI and determinism is.
Templates, renders, publishes, and failures. Every row scoped to a tenant. The same admin surface a compliance officer would review during an audit.
AI reads the case. Human-authored rules decide the outcome. A frozen, human-approved template supplies the words. That's the shape of trustworthy agent output for the next five years, and the only shape a bank or a payer will sign off on.
Verdikt is the decision layer for that shape. Every stage's output is a structured artifact a reviewer can read: intake, retrieved rules with rerank scores, verdict with citations, rendered letter. Every reply is bound to a version_hash a human approved, on a tenant a human provisioned. Supervision path, not hot path.
Three NVIDIA Nemotron models and two Apache-2.0 open models, every call served by Nebius Token Factory through one endpoint and one key. MIT-licensed source.
Executive overview linking to the features, tests, code-review, and security-review dashboards. Every verdict at a glance, drill-down on each card.
An email arrives with an application. Verdikt extracts the case, retrieves the rules, issues a verdict with citations, and merges a byte-identical reply. Everything after the model is deterministic.
Anyone can render a template. What's harder is the pipeline that reads the case, retrieves the rules, and stays byte-identical at the seam where the letter leaves the building.
Every channel normalizes into one inbox and routes to tenant + program.
Case type: new intake, refill, appeal, missing-info, or not-decidable.
Refills short-circuit to Pharmacy OMS; missing-info goes to CRM outreach; new intakes continue to Decide.
Rules matched by embedding + rerank against a versioned pack.
Structured verdict: approve, deny, or missing_info. Citations attached.
Verdict + frozen template → deterministic bytes.
Two artifacts: byte-identical reply letter, plus JSON verdict for downstream systems.
Every stage preserved: intake, rules, decision, letter, downstream handoff.
Repin an earlier template version. No re-decision. No drift.
{
"case_id": "asp-201-…",
"outcome": "approve",
"citations": ["CV-INC-01", "CV-CLIN-01"],
"letter": {
"hash": "sha256:9b4c…",
"pdf": "s3://verdikt/replies/…pdf"
},
"handoff": {
"crm": "crm://case/00X…",
"call_center": "queued",
"case_mgmt": "casemgr://work/A-4429"
}
}
Every case writes a row. Which program, which rules fired, which outcome, which letter, for which tenant, at which second, with which citations. Reproducible on demand. Discoverable in a subpoena. Boring in the good way.
If a compliance officer has to defend how a document came out the door (to a payer, an auditor, a regulator, or a patient), the reply path can't include an LLM. Verdikt is built for buyers who already knew that and couldn't find a vendor who agreed.
No. The reply path is a deterministic template merge. No model, ever. Given the same frozen template and the same verdict, the output bytes are identical, forever. The boundary is enforced by a build-failing test, not a comment.
Three stages, all in front of the reply: extract (vision reads the inbound case into structured intake slots), retrieve (rules matched by embedding + rerank against a versioned pack), and reason (structured verdict over the retrieved rules). Every stage's output is a structured artifact a reviewer can inspect.
As data, not code. A row in the programs table carries the extraction schema, the rules pack, and the reply template. The OncoBridge cameo proves it: same code, opposite verdict, no new deployment.
No. Replies require a frozen template and a versioned rules pack. An agent can hand off a case over MCP; it can't publish a template or edit a rule. Publish and freeze are admin-scoped.
Row-level tenant_id on every business table, API-key auth per tenant, subject-tag routing on inbound email, and a CI-enforced tenant-scope audit script that fails the build on any query that could cross a tenant boundary.
Repoints the "current" version to a prior frozen template. Nothing is re-decided, no drift is introduced, and prior version_hash values remain valid for reproducibility.