Research and verification for AI work

Keep your model.
Raise the standard.

Bring evidence, independent checks, and useful corrections into the work your model already does. Keep the reasoning behind the result, so you can pick it up, question it, and move it forward.

Open the playground

See what a check catches

Good yesterday.
Still good today?

Recorded check

A check passes. The work moves on. Then the evidence changes—and the old approval no longer holds. Explore a real bug we fixed in Grainulator: catching that mismatch before a stale brief goes out.

Follow the evidence

Real compiler and guard results, using example release evidence. Switch between the steps to see what changed.

output/release-brief.mdLoading trace

Inspecting the recorded check…

The trace is a small local file. There are no model requests or timed animations.

Current evidence

Checked content
Current content

Where Grainulator fits

A stronger process.
With your existing tools.

Your model brings the intelligence. Grainulator brings a record of the evidence, checks you define, and a way to turn failures into the next useful step.

  1. 01

    Start with the work

    Bring your question, task, and constraints. Keep the model and workspace you already use.

  2. 02

    Make “done” testable

    Choose an independent test or verifier. See what passed, what failed, and what remains uncertain.

  3. 03

    Give the next attempt a reason

    Feed failed checks back to the model. Set limits on retries and keep the record of each attempt.

From playground to real work

Find your setup.
Take it with you.

Choose your model and research settings in the playground. Export the session, then continue from your local checkout with the context and completed passes intact.

node bin/grainulator.js research --session session.json --dir ./research-session

Download session.json from the playground, then run this from your local checkout. Uses your provider key and continues the remaining passes.

What you can verify today

The trace reproduces an evidence freshness bug and verifies that the updated guard blocks stale output. The command runner can send failed checks back to an adapter for another attempt. Support for a particular model depends on that adapter or host.

Local comparisons on Astra and Fable measured answer correctness, formatting, elapsed time, and model usage. Some runs improved formatting; the results do not establish a general accuracy or speed advantage. The verifier rejected candidates that failed its checks.

Reproduce the trace with node scripts/record-handoff.mjs. The adapter contract is in docs/ADAPTERS.md in the dogfood checkout.