A password-reset question does not necessarily need an agent to work out a plan. In AgentRun’s support example, code searches the help system first. A model judges whether the answer fits the request. If the answer has text, a source and a sufficiently confident yes, the workflow returns it. Only a request that fails that gate reaches the investigating agent.
That is the concrete idea inside Grep’s pitch for turning recurring agent work into reusable workflows. The retained object is an executable procedure: which evidence to fetch, what to ask a model, which rule accepts the result, and where unresolved cases go. A new request supplies new input to that procedure. The agent need not reconstruct every step.
Grep’s public site, inspected October 13, presents a larger self-improving platform. Its public AgentRun repository lets us inspect the workflow layer and its Pi and Jev integrations. Those are a useful window into the design; they are not an audit of the hosted platform’s complete optimization system.
Three jobs that need not belong to one model
An AgentRun workflow is a JSON document with input and output contracts and a tree of steps. A TypeScript builder can produce the same document. The interpreter supports sequences, branches, parallel work, loops and nested workflows. At the application boundary, three separate interfaces do different jobs: runEffect executes tools, runJudge answers bounded questions, and runNode performs generative work such as investigation or writing.
The question compiler turns suitable schema fields into named choices, Boolean probabilities or scores on a rubric. It can ask whether an answer resolves a request or how well a proposal fits a brief. Producing a new explanation belongs in a generative step.
The Jev adapter sends those questions and their evidence to TypeSafe, validates the response and handles bounded retries. TypeSafe describes its model as trained for calibrated decisions rather than sequential prose. The adapter establishes the calling contract, not the closed service’s training or accuracy. Its default jev-latest alias also means an evaluation should record which model actually answered.
This arrangement makes the division of labor explicit. Software owns exact bookkeeping and permitted routes. The decision model supplies judgments. An agent remains available when the procedure calls for investigation.
Follow one support request
The first support gate requires nonempty answer text, at least one source, a yes judgment and choice confidence of at least 0.8. If any part fails, the agent gets one investigation attempt with the declared support tool. Another judgment checks its answer. An insufficient or uncertain result escalates for review. The example returns a result; it does not send a customer reply or alter an account.
We ran the interpreter with the repository’s scripted adapters on October 12. Password-reset and invoice-download fixtures each returned the existing help answer after one judgment and no agent invocation. A failed-payment fixture invoked the agent once and the judge twice. A second payment fixture without enough account information took the same route but ended in review.
Those responses were fictional and prewritten. They demonstrate branching, not Jev’s accuracy, live latency or customer-resolution rate. One agent invocation may contain several internal model and tool calls. The observed count is not a billable-request count.
The support tests also make the policy visible: a low-confidence yes still investigates, as does an apparently confident answer with missing text or sources. The 0.8 threshold is authored policy. It does not establish an 80% chance of correctness on an unfamiliar task.
Let the model judge similarity. Let code count.
A second example ranks proposals. The judge supplies semantic fit and duplicate judgments. JavaScript sorts, breaks ties, applies category quotas and records why an item was cut.
The scripted run scored twelve proposals, shortlisted ten and asked 45 pairwise duplicate questions before returning five. Those 57 questions traveled in two scripted requests. This is a useful engineering distinction: a model can judge whether two proposals cover the same ground while code enforces an exact category limit.
The comparison set still needs a budget. Pairwise checks grow as k × (k − 1) / 2: ten proposals mean 45 pairs; a hundred mean 4,950. A smaller shortlist reduces work but can discard a good proposal before comparison. Faster judgment does not eliminate that design choice.
The fair comparison has three designs
The tempting comparison is “agent loop versus decision workflow.” It leaves out a substantial middle ground. LangGraph’s official guide already shows both an agent choosing tools dynamically and a fixed workflow that routes a structured LLM answer through code.
- A dynamic agent loop lets a model choose the next tool after reading the evolving conversation. That flexibility is useful when the procedure is not known in advance.
- A fixed workflow with an LLM judge can perform the same search, check and return sequence as the support example. Code can own the branches and acceptance rules.
- A fixed workflow with Jev substitutes a typed decision call at that judgment boundary while retaining generative investigation where needed.
To measure the value of keeping a procedure, compare either fixed workflow with dynamic planning. To measure Jev’s contribution, hold the procedure, inputs and acceptance rules constant and change the judge. A rules-only baseline is also appropriate for exact matches. AgentRun’s replaceable judge interface supports that distinction; it does not establish that all these adapters ship in the inspected package.
What survives the next run—and an interruption
In the Pi integration, an agent can author a workflow and a person can inspect and save an immutable definition revision. Loading a saved definition supplies neither the old input nor permission to execute. Reuse means retaining the procedure for a new case; it is not model retraining.
An October 12 addition supplies something different: a journal for live runs. Returning to an interrupted or failed run in the same Pi session, with the same workflow, input, tool names and procedure text, can recover completed steps. A tool whose outcome is unknown stops for reconciliation instead of being repeated. An unanswered judgment is asked again; an interrupted agent step starts over; a completed run starts afresh.
The subprocess tests describe kills after a completed tool and during an in-flight tool. We inspected those tests without executing them. Some tool-description text still says every run restarts, despite the shared implementation’s recovery path. This is a source-level capability with a documentation inconsistency, not a demonstrated exactly-once delivery guarantee.
Decision receipts provide another kind of continuity. When the interpreter has an awaited recorder, a judgment is recorded before it affects execution. But a receipt for that judgment does not automatically describe every later arbitrary code rule. In the support example, the 0.8 acceptance gate is a separate code step. Keeping the answer and keeping the full policy consequence are different jobs.
Measure the work that disappeared
Grep reports average model cost falling from $2.89 to $0.25 per alert in a 100-alert AML comparison with a Claude agent. Its separate illustration of one 24-record alert shows about three minutes instead of 51, about 30 tool calls instead of 826, and two records researched instead of 24. Those time and tool figures are not averages for the full evaluation.
They are vendor-reported results, not results reproduced here. The linked methodology post was unavailable during our check. Crucially, the workflow investigated fewer records: assessing the result requires checking whether the skipped work changed the outcome, as well as what each model call cost. The public support and ranking examples do not reproduce the AML comparison.
Our offline support and ranking test files passed 15 and seven cases respectively. Three broader CLI-runner checks remained unresolved, so the full integration suite did not pass. No live Jev inference, production Grep account or customer data was used. The refreshed source was inspected through October 13; package distribution and hosted behavior were not verified.
The practical opportunity is clear enough to test: keep a recurring procedure, then spend generative work on the cases it cannot settle. The decisive comparison now needs held-out cases, identical evidence and explicit correctness criteria. Count wrong automatic answers, successful resolutions, human escalations, complete-task cost and latency—including retries, tools and maintaining the workflow. The question is how much work can disappear while the required answer stays right.