I was learning about Jev, TypeSafe's model for making fast, typed decisions, when I came across Browser Use's jev-ultrafast demo, in which Jev drives a web browser and books a ticket from Zurich to London in 7.1 seconds. It is fast because each step is one question to Jev: here is everything on the screen, which one do I click? That's super cool, but a booking site is made to be understood at first sight, without a manual. Enterprise software is made for experts, and it comes with one.

So I pointed it at ADIT, the mock mining exploration app I made for testing AI agents, with a request an exploration manager might make: bellamy ridge's maiden resource has to go out this week, tomasz has finished his QP review so do his step as him and then release it as me. Jev got as far as the release request and stopped. Nothing on that screen says that you act as Tomasz by switching user in the account menu; you'd have to read the manual. So I gave Jev the manual, in a form it can use on every step: an atlas of the app.

On five tasks, Jev finished 1 without the atlas, 4 with it, and all 5 after the atlas learnt from the one it still failed.

The Bellamy Ridge task, without the atlas and then with it.

The atlas is a shim. It sits between Jev and the application and adds to what Jev sees, without changing Jev or the question it is asked.

A frontier AI model reads ADIT's user manual and visits its screens, draws an atlas of the app, and the atlas is inserted between Jev and ADIT. ADIT Jev Frontier AI model User manual Atlas
  1. Jev sees each screen as a numbered list of labelled controls, and picks one.
  2. A frontier AI model reads ADIT's user manual and goes through every screen.
  3. It writes an atlas: a digest of each page, a note on each control, and scripts that read live facts off the page.
  4. The atlas goes in between. On every step, what Jev sees is annotated from it.

What's in the atlas

A frontier AI model wrote it: seven agents, one for each area of ADIT, read the app's user manual and went through every screen without changing anything, and wrote down what each screen and control is for. None of them saw the tasks I tested with. The atlas covers 88 screens and dialogs and 593 controls, and on each step it adds three things to what Jev sees:

  • a digest of the page, at the level of the user manual: what the screen is for, and where the jobs it doesn't do are found ("Tenement renewal: the Tenure tab");
  • a note on each button and link, saying what it does and sometimes what it is not for; and,
  • live facts about the page in front of it, such as who is signed in, who else Jev could sign in as, and which project is open.

The live facts come from small pieces of JavaScript that the model wrote into the atlas. They run on the page at every step, so part of the atlas is generated code rather than documentation.

Here is one step of another task, where I asked Jev to "park" the Sable Dome project at its gate. The manual's word for that is a stage-gate decision, and no button says "park" or "hold".

Tasksable dome's gate is coming up and i don't want to hand it over yet, the phase two results were too thin, just park it where it is for now

Without the atlas

  1. Editbuttonpicked0.45
  2. On hold 1link0.41
  3. Watchingbutton0.07
  4. Stage-gate decisionbutton0.02

Edit opens a dialog with no way to hold a project. Jev saved it unchanged, then kept clicking the On hold filter on the project list, and gave up after 7 steps.

With the atlas

Page digest

Project record, Overview tab. One project's summary: fiscal-year budget and spend, area under tenure, holes drilled … The header carries Watch, Edit and Stage-gate decision … Tenement renewal (Lodge renewal): the Tenure tab. Deciding a request: the request's own page in Approvals.

Live facts, read by the atlas's scripts

  • Signed in as Marguerite Okonkwo, Exploration Manager
  • Project in view: Sable Dome (PRJ-0433) · Gold · active · Stage-gate decision · gate 2026-09-30 (in 9 days)
  • Project header actions shown to the signed-in user: Watching, Edit, Stage-gate decision
  1. Editbutton0.00

    Opens the Edit dialog for the project's name, project geologist, next gate date, year-end forecast and description.

  2. On hold 1link0.00

    Cuts the register to projects whose status is on hold. The number is how many there are.

  3. Watchingbutton0.00

    Toggles whether you watch this project (notifications about it).

  4. Stage-gate decisionbuttonpicked0.99

    Opens the Stage-gate decision dialog to advance, hold, resume or relinquish the project.

Jev opened the dialog, chose Place on hold, typed a reason and recorded the decision, in 6 steps.

Outlined in blue: added by the atlas. The numbers are Jev's probabilities for 4 of the 48 controls on this screen.

Learning from failures

With the atlas, one of the five tasks still failed: creating a resource estimate as Tomasz. Jev went round in a loop between the project and the Resources section for 60 steps, and then gave up. So I added a learning loop. When a task fails, a frontier model reads the failed run as Jev saw it, step by step, along with the manual, and proposes up to three lessons about the app. Code throws out any lesson that copies values or wording from the task, or that doesn't attach to something Jev actually saw, and the rest wait for a person to accept them before the atlas is rebuilt.

Here the model found that the atlas described All estimates as a list of the estimates that exist, when it is also where you start a new one:

Before: the note on All estimates

Opens the list of every resource estimate, any status; the number is how many there are.

After one learning round

Opens the estimate register, where New estimate starts an estimate for a project.

One of the three lessons from that failed run. The other two made the same point on the Resources landing page and on the Projects link in the top bar.

The next run finished the task in 14 steps. Here are three of the five tasks through all three stages:

TaskWithout the atlasWith the atlasAfter learning
Park Sable Dome at its gate Failed Done Done
Release Bellamy Ridge's estimate, as Tomasz and then as me Failed Done Done
Create a resource estimate as Tomasz Failed Failed Done
One run of each task at each stage. Done or failed is checked in ADIT's own data, not taken from Jev's word for it. It is a demonstration on five tasks, not a benchmark.

The code, the atlas and the demo are at github.com/alejandroerickson/jev-atlas.