← All workflow templates

Workflow templateMeasured reference

Automate loan application entry in Frappe Lending

The lending reference: a loan application entered once on Frappe Lending, compiled into deterministic local replay, and accepted only when a separately authenticated read-only REST read agrees with direct SQL field readback and an exact table-delta contract.

This reference workflow has published run evidence. The trial count, oracle, exact version, and limits appear below.

Published results

Trials
6
Verified / expected halts
6 / 0
Silent incorrect successes
0
Over-halts
0
Model API calls per run
0

Source: Compiled-replay arm across the pinned baseline and a cosmetic-drift variant. Measured on openadapt-flow benchmark files; see the public aggregate and method files in benchmark/frappe_lending.

Separate small-N paid-agent run: 6/6 correct writes (5/6 clean), 1/6 post-write cost-cap over-halt, 0/6 silent incorrect, $0.4240 in estimated model API charges per run; baselines were not matched, so this remains engineering evidence rather than a publication benchmark

Runs on

Frappe Lending v16.2.0, run locally as a pinned, fully synthetic fixture — every trial restores the same SHA-256-bound database snapshot. Frappe exposes a good REST API, so a real deployment should prefer the API; the browser arm isolates what compiled replay is worth when a UI path is required.

Source in openadapt-flow →

Demonstrated steps

  1. 1On the Loan Application opened for the fixture customer, enter the applicant contact email
  2. 2Enter the applicant contact phone
  3. 3Scroll from the contact inputs to the lower loan controls — the demonstrated navigation is preserved in the compiled program, not hidden
  4. 4Select the loan product, waiting for the exact visible suggestion before confirming
  5. 5Enter the loan amount
  6. 6Enter the number of repayment periods
  7. 7Save exactly one application

Parameters: email · phone · loan product · amount · repayment periods — recorded values are the defaults; every replay can override them.

How the outcome is verified

A separately authenticated read-only REST read checks the saved application. Direct SQL field readback confirms the target values, while the exact table-delta contract permits one new Loan Application row and no other table changes. A duplicate write, a wrong-customer write, or a collateral insert fails the run. Pixels and actor self-report never establish success.

  • separately authenticated read-only REST
  • direct SQL read-back
  • exact table-delta audit (tabLoan Application: +1, all else +0)

Evidence and scope

6/6 compiled trials were correct across the pinned baseline and a cosmetic-drift variant. The result had 0 silent incorrect successes, 0 over-halts, zero recorded model API calls, and $0 in estimated model API charges. A separate small-N paid-agent run completed 6/6 correct writes (5/6 clean), with 1/6 post-write cost-cap over-halt, 0/6 silent incorrect, and $0.4240 in estimated model API charges per run. The baselines were not matched, so this remains engineering evidence, not a publication benchmark.

Questions about this template

Why these checks instead of checking the screen?

The writer can paint a successful screen without saving the intended record. A separately authenticated REST read checks the saved application. Direct SQL field readback confirms the target fields, and the exact table-delta contract permits one new Loan Application row with no other table changes. A duplicate write, a wrong-customer write, or a collateral insert fails.

Source: benchmark/frappe_lending

What did the compiled trials cost?

$0 in estimated model API charges with zero recorded model API calls across all six compiled trials. A separate small-N paid-agent comparison arm averaged $0.4240 in estimated model API charges per run, but the baselines were not matched.

Source: Benchmark method and public aggregate

Try it from the command line

The compiler and runtime are open source and MIT licensed. The default healthy path runs locally and makes no generative-model API calls.

pip install openadapt

Install the OpenAdapt launcher, compiler, and included browser capability.

openadapt flow record --url https://your.app --out rec

Record one browser tab and same-origin route set; Ctrl-C to finish. A task that crosses an origin, tab, application, or backend needs separately qualified bundles and external orchestration.

openadapt flow compile rec --out bundle --name my-task

Compile the recording into a deterministic bundle with auto-classified risk per step.

openadapt flow lint bundle --strict

Report coverage gaps. Complete the required identity, effect, idempotency, and postcondition contracts before governed use.

openadapt flow replay bundle --url https://your.app

Rehearse locally. This command does not certify the bundle. Governed certification and execution also require a deployment configuration with the declared policy, identity, effect, and runtime bindings.

Qualify this workflow

Bring your version of this workflow and the record that proves its outcome. We'll map the deployment, verification, shadow run, and supervised rollout.