Skip to content
Simulation · not operational100% synthetic data · the demos’ human decisions were simulated in batch
planlang

Demo A · what travels to the personal showcase

The records: repeat it, and tell it in two minutes

One record for whoever wants to repeat the run and check the report; two for whoever visits the hoja-de-vida showcase and wants to know in two minutes what planlang is and what its agent does.

The records at a glance

Read as

Reading as leader. You see the three records as each reader will.

Reading as expert. You also get the steps to repeat the run and, under each showcase record, where each figure comes from and the check of every field against the v1.3.1 contract.

Takes

  • done
    The plan, the run and the reportwith their fingerprints
  • done
    The product visionfor the groups of the app's record
  • done
    The v1.3.1 technical-record contractfrom hoja-de-vida: blocks, limits and rules

Does

  1. 1
    Gathers versions, fingerprints, seed, model and date
    done
  2. 2
    Writes each record for its reader, in Spanish and in English
    done
  3. 3
    Gives every figure its source: measured, calculated or declared
    done
  4. 4
    Checks every field against the contract's limits
    done

Delivers

  • The reproducibility recordlives in planlang: here and in section 9 of Gap
  • brochure-export.jsonthe app's facts, from which hoja-de-vida builds its record
  • planlang-demo-a.ficha-tecnica.jsonagent A's record, for the Agents front
  • No linkthey travel to hoja-de-vida by copy, in a content PR

1Reproducibility record

real · run v1.5

Everything it takes to get this same report again, byte for byte: versions, fingerprints, seed, model and date. No links: the fingerprints are enough to check that a file is what it claims to be.

Reproducibility record · demo A

real · run v1.5
Plan
plan-demo-a 1.5.2 · 2dc1affac8e97d19d991fe9a89fc2f2c26d1ee7cad72be13ecfdd1ea90e4051d
Plan it ran with
plan-demo-a 1.5.0 · e1dc89c72a37bf780bd3ddd5225dff84284da6bedabe6aae9f8b3bc670c57ee1
Cases
planlang-a-002-200 · seed planlang-a-002 · n = 200 · 5e76ef4cf562852c25aab2e041d55f17f809043450fe48e35c045cb419c8e62f
Generator
recipe estandar · version 1.1.0 · adversarial 20 · edge case 30 · missing data 30 · normal 120
Run
suscripcion-planlang-a-002-200-v1.5 · 2026-10-04 · subscription / sonnet · multi-agent · fdbffe765fc0e8309284bbc5c606dc67bc80b61b53cbf8a3772b3447eb8d71a0
Compiled graph
056407bf4c1238ca0448c11575ea9228d050596d02162cd0613f8c5090cc9117
Baseline
suscripcion-planlang-a-002-200-v1.5-base · 1ab219ded7ae9d1ce14f4d7ff0e699b517926564afda1ac73c74301ea6cff5f7
Environment
Python 3.12.14 · langchain 1.4.2 · langgraph 1.2.12 · langchain-core 1.6.5 · langsmith 0.14.1 · pydantic 2.13.5 · Claude Code 2.1.282 · Darwin
Execution
10 sessions · 200 cases · 0 provider errors · 0 usage limits
Applied thresholds
U1 0.75 · U2 1000 · U3 2 · U4 off — the plan’s
Human review
In batches, the simulated reviewer follows the case's known truth (DA-04); the showcase discloses it.
Verifier
1.3.0 · planlang-informe/v1
The report’s fingerprint
20c0b4ae85a8b635a979996db42fb58b21e1a1d7c390343ce975ca5ba30451e6

Expert

How to repeat it, in order

  1. 1pnpm plan:validar --verificar plans/demo-a/v1.5.2.json validates the plan and checks its fingerprint
  2. 2pnpm casos:generar --versionados regenerates the cases from the seed; the fingerprint must match
  3. 3pnpm lote:demo --plan plans/demo-a/v1.5.json --casos data/casos/demo-a/planlang-a-002-200.json runs the batch on the author's machine, outside CI, with their subscription: the same command 10 times, 20 at a time and spaced out, until all 200 cases are done (it resumes where it stopped)
  4. 4pnpm trazas:verificar checks fingerprints, applied thresholds and RF-09.2
  5. 5pnpm brecha:informe --corrida runs/demo-a/suscripcion-planlang-a-002-200-v1.5 --plan plans/demo-a/v1.5.2.json --salida data/vitrina/demo-a/suscripcion-planlang-a-002-200-v1.5 --verificar redoes the report and compares it with the published one: it comes out identical byte for byte

Repository scripts. Only the batch needs the model; everything else is deterministic and runs the same on any machine.

2The app's record

for the showcase's Apps front

planlang · this is how hoja-de-vida paints it, in CV Viva's skinplanlang.ficha-tecnica.json · technical-record contract v1.3.1

The showcase · Technical sheet

  • Unsealed
  • H1
  • 4 sprints
  • v0.1.0
  • Data as of 2026-10-11

planlang

I planned, built and measured the gap.

  • Next.js static export: the showcase: seven screens in Spanish and English, no server
  • Strict TypeScript: the deterministic core: plan, verifier, playground and viewer, the same in Node and in the browser
  • Python 3.12 · LangGraph 1.2: both demos' agents, with the human pause as an interrupt
  • Claude Code by subscription: the agents' model, in batches outside CI; never in the core or the showcase
  • Canonical JSON + SHA-256: plans, cases, traces and reports with a fingerprint, checkable byte for byte
  • Vitest · Playwright · axe: the tests, including the edge cross-check between Python and TypeScript

What nobody else does

An agent's plan is written as a contract, and a verifier with no AI publishes, case by case, the gap between what was planned and what the agent did, with its failures in view.

  • 16

    criteria met across the plans of 2 demos, of 16

    measured (Demo A: 10 of 10, in verifier 1.3.0's report on run suscripcion-planlang-a-002-200-v1.5. Demo B: 6 of 6, in verifier 1.3.0's report on run suscripcion-planlang-b-001-20.)
  • 1,204

    decisions redone in another language, with 0 differences

    measured (RF-09.2 cross-check over 4 runs of 2 demos: the TypeScript edge interpreter redoes every decision Python recorded.)
  • 220

    synthetic cases with a known answer, across 2 demos

    measured (Demo A: 200 cases in run suscripcion-planlang-a-002-200-v1.5 and the single-agent baseline. Demo B: 20 cases in run suscripcion-planlang-b-001-20 and the single-agent baseline.)
  • 0

    model calls when visiting the showcase

    declared (Set by the architecture: the showcase is a static export with precomputed data; the package is tested without a single request outside its origin.)
  • 5.214US$

    nominal cost of running each demo once (220 cases)

    computed (Demo A: US$ 4.9206 for 200 cases. Demo B: US$ 0.293 for 20 cases. Sum of the nominal cost the CLI declares per call, over each run's traces; through the subscription it was not paid separately.)
01

Who it's for, and what it solves

The person before the technology.

Who it's for

For whoever plans, builds or approves an AI-agent project and today measures what the agent does without having written down first what it was supposed to do: they look at traces, run loose evaluations and decide by eye when a result is enough.

The promise

You write the plan as a contract —decisions, risks, assumptions, criteria and thresholds, each one measurable— and planlang uses it to build the agent, run it on cases with a known answer and publish the gap. Then you move a threshold and see what it would have cost.

02

What it has

6 groups · 20 features.

  • Plan

    4 features

    The plan as a contract: the interview, the templates, the validator and the builder's contract.

  • Run

    6 features

    Cases with a known truth, both demos and batch runs.

  • Measure

    5 features

    The gap verifier and assumptions measured for real.

  • Play

    1 feature

    Move the thresholds over the real traces.

  • Understand

    1 feature

    The real graph, node by node, against the plan.

  • Show

    3 features

    The bilingual showcase and its records.

03

Limits, and what it never does

What it chose not to be counts as much as what it is.

Limits, on purpose
  • It is a simulation: it handles no real cases and decides on no one.
  • The interviewer runs in the console, not in the showcase: here you see the plan it drafted for demo B, reviewed and approved by a person.
  • It measures what the plan declared; what it did not foresee shows up as a gap, not as a verdict.
Never
  • Uses real data: every case, member, physician, applicant and watchlist is synthetic.
  • Lets a model decide whether the agent got it right.
  • Denies or rejects a case without a person reviewing it.
  • Hides an unfavorable result.
04

Where it stands

The pinned version, not real time.

  1. H1cycle
  2. 4closed sprints
  3. —build closed
  4. v0.1.0repo version
  5. 16recorded decisions

In hoja-de-vida, the app's waiting list goes here, and it promises no date. Shown here; not handed over.

hoja-de-vida builds the app's record when it compiles: the facts come from docs/brochure-export.json and the curation (headline, featured figures, limits, never) from its complement. Here it is painted with the complement planlang proposes.

“How it works” does not appear: the app's record carries no process (optional in v1.3.1) and the section is renumbered. The blocks follow the six groups of the product vision.

Expert

What is delivered: docs/brochure-export.json

planlang delivers the export (brochure-export contract 1.0.0); with it and the complement, hoja-de-vida builds this record, checked here against technical-record contract v1.3.1. One file per language; the Spanish one is delivered.

Where each figure comes from

  • 16 criteria criteria met across the plans of 2 demos, of 16 · measuredDemo A: 10 of 10, in verifier 1.3.0's report on run suscripcion-planlang-a-002-200-v1.5. Demo B: 6 of 6, in verifier 1.3.0's report on run suscripcion-planlang-b-001-20.
  • 1,204 decisions decisions redone in another language, with 0 differences · measuredRF-09.2 cross-check over 4 runs of 2 demos: the TypeScript edge interpreter redoes every decision Python recorded.
  • 220 cases synthetic cases with a known answer, across 2 demos · measuredDemo A: 200 cases in run suscripcion-planlang-a-002-200-v1.5 and the single-agent baseline. Demo B: 20 cases in run suscripcion-planlang-b-001-20 and the single-agent baseline.
  • 0 calls model calls when visiting the showcase · declaredSet by the architecture: the showcase is a static export with precomputed data; the package is tested without a single request outside its origin.
  • 5.214 US$ nominal cost of running each demo once (220 cases) · computedDemo A: US$ 4.9206 for 200 cases. Demo B: US$ 0.293 for 20 cases. Sum of the nominal cost the CLI declares per call, over each run's traces; through the subscription it was not paid separately.
tagline (es · en)Measure34 · 38Limit≤ 80StatusFits
titular (es · en)Measure174 · 176Limit≤ 240StatusFits
para_quien (es · en)Measure223 · 244Limit≤ 400StatusFits
intro (es · en)Measure265 · 267Limit≤ 400StatusFits
stack[]Measure6Limit1–8StatusFits
cifras[] · fuenteMeasure5 · 5Limit3–5 · allStatusFits
bloques[]Measure6Limit2–10StatusFits
limites[] · nunca[]Measure3 · 4Limit2–4 · 2–5StatusFits
hitos[]Measure5Limit3–5StatusFits
linksMeasure0Limit0StatusFits

FitsThe whole record validates against the schema and the process rules.

3Agent A's record

for the showcase's Agents front

Agent A · medical prior authorizations · this is how hoja-de-vida paints it, in CV Viva's skinplanlang-demo-a.ficha-tecnica.json · technical-record contract v1.3.1

The showcase · Technical sheet

  • Unsealed
  • H1
  • 4 sprints
  • v1.5.2
  • Data as of 2026-10-05

Agent A · medical prior authorizations

Approves in full or in part, denies or escalates; never fully denies alone.

  • LangGraph 1.2: the agent's graph: typed state, conditional edges and the human pause with interrupt
  • LangChain 1.4: the model adapter and schema-bound structured output
  • Python 3.12: the nodes, the guard and the trace exporter
  • Claude Code · sonnet: extracts and drafts; the official binary, through the author's subscription, no API key
  • Deterministic rules: coverage, output guard and adverse document, no model
  • planlang-trace/v1: the traces' own format, with a fingerprint; the only thing the verifier reads

What nobody else does

A medical prior-authorization agent built to a verifiable plan: every path it takes is written in the plan, and a person reviews every full denial with the full case in front of them.

  • 96.2%

    extraction accuracy, in one run

    measured (The plan's criterion C5: the extracted fields are the known truth's in this share of the 159 cases that have one, in one run. The plan asks for 3 runs in a row only in batches of 20 cases; this one is larger.)
  • 8.1seconds

    median per case, end to end

    measured (The plan's criterion C7 over 200 cases: the median of the total latency recorded in each trace.)
  • 70

    of 200 cases went through a person

    measured (Human pauses recorded in the traces: the auditor saw the full case before deciding.)
  • 0

    full denials without a person

    measured (The plan's criterion C1 over 200 cases: every full denial went through the human pause.)
  • 0.025US$

    nominal cost per case

    computed (US$ 4.9206 for the run over 200 cases: the nominal cost the CLI declares per call, summed over the traces. Through the subscription it was not paid separately.)
01

Who it's for, and what it solves

The person before the technology.

Who it's for

For an insurer —a synthetic one— that receives prior-authorization requests with the physician's free text and today reviews them by hand, one by one, without knowing which could be decided alone and which needed an auditor.

The promise

The agent reads the request, asks for what is missing, applies the benefit plan's rules and approves what the plan allows, up to each service's cap; every full denial and every doubtful case goes to an auditor with the evidence and the counter-evidence, and it answers the member with an AI notice.

02

How it works

The process in BPMN: one lane per actor, the decision where it is made, and the loop in plain sight.

One authorization request

Here CV Viva draws the diagram with its BPMN engine, from these steps and flows. This preview does not draw it: it shows what the record hands over, lane by lane and in reading order.

Physician
  1. step 1start: A request
  2. step 2Sends the request
  3. step 8Answers the clarification
The agent
  1. step 3Classifies the care
  2. step 4decision: Urgent or exempt?
  3. step 5Extracts the fields
  4. step 6decision: Missing?
  5. step 7Asks for clarification
  6. step 9Applies the coverage rules
  7. step 10decision: Escalate?
  8. step 12Drafts with an AI notice
  9. step 13The guard filters the output
Auditor
  1. step 11Reviews the full case and decides
Member
  1. step 14Receives the reply
  2. step 15end
  1. step 11No full denial goes out without the auditor; in this demo, the auditor was simulated in batch.
  2. step 7If something is still missing after the maximum of clarifications, the case goes to the auditor.
  3. step 13The case's text never decides which action runs.

Process declared by the app itself in its export.

03

What it has

8 groups.

  • Router

    Separates emergencies and exempt services, authorized without a coverage check.

  • Extractor

    Turns the physician's text into fields, with their confidence.

  • Clarification

    Asks for what is missing, up to the maximum the plan sets.

  • Coverage checker

    Applies the benefit plan's rules, no model.

  • Decision

    The rules written in the plan decide whether the case escalates.

  • Human pause

    An auditor sees the full case before denying it outright.

  • Drafter

    Writes the reply and the adverse-decision document.

  • Output guard

    Fixed rules: no sensitive data, no injected order.

04

Limits, and what it never does

What it chose not to be counts as much as what it is.

Limits, on purpose
  • It decides on synthetic cases: it is a demonstration, not a service.
  • Its human auditor was simulated in batch, following the known truth.
  • It runs in batches of 20 cases, outside CI and with breaks between batches.
Never
  • Fully denies without a person reviewing it.
  • Obeys instructions hidden in a case's text.
  • Lets a member's data out in the reply.
  • Asks for authorization for an emergency.
05

Where it stands

The pinned version, not real time.

  1. v1.5plan version
  2. 2026-10-04published run
  3. 8 of 8contract pieces
  4. 1124verified decisions

Shown here; not handed over.

Expert

What is delivered: content/agentes/planlang-demo-a.ficha-tecnica.json

Checked against hoja-de-vida's technical-record contract v1.3.1. One file per language: the contract takes the record in one language; the Spanish one is delivered.

Where each figure comes from

  • 96.2% extraction accuracy, in one run · measuredThe plan's criterion C5: the extracted fields are the known truth's in this share of the 159 cases that have one, in one run. The plan asks for 3 runs in a row only in batches of 20 cases; this one is larger.
  • 8.1 seconds median per case, end to end · measuredThe plan's criterion C7 over 200 cases: the median of the total latency recorded in each trace.
  • 70 of 200 cases went through a person · measuredHuman pauses recorded in the traces: the auditor saw the full case before deciding.
  • 0 full denials without a person · measuredThe plan's criterion C1 over 200 cases: every full denial went through the human pause.
  • 0.025 US$ nominal cost per case · computedUS$ 4.9206 for the run over 200 cases: the nominal cost the CLI declares per call, summed over the traces. Through the subscription it was not paid separately.
tagline (es · en)Measure71 · 75Limit≤ 80StatusFits
titular (es · en)Measure193 · 183Limit≤ 240StatusFits
para_quien (es · en)Measure214 · 224Limit≤ 400StatusFits
intro (es · en)Measure299 · 298Limit≤ 400StatusFits
stack[]Measure6Limit1–8StatusFits
cifras[] · fuenteMeasure5 · 5Limit3–5 · allStatusFits
bloques[]Measure8Limit2–10StatusFits
limites[] · nunca[]Measure3 · 4Limit2–4 · 2–5StatusFits
hitos[]Measure4Limit3–5StatusFits
proceso.pasos[].textoMeasure33Limit≤ 60StatusFits
proceso.carriles[]Measure4Limit1–5StatusFits
linksMeasure0Limit0StatusFits

FitsThe whole record validates against the schema and the process rules.