Pre-registered · September 2026

Method: the Odoo AI write-verification census.

This method was written before any listing was looked at, on purpose. Our brand is built to be judged, so the first thing we judge by our own rule is our own research: publish the method, then the results, so nobody can accuse us of drawing the columns after we saw the answer. If a run ever changes a definition after the sweep starts, it says so here, dated, with the reason.

This is the method behind the write-verification census. Corrections welcome at hello@nanti.ai.

The one question the census answers

One question, counted.

Of the public Odoo AI-agent and AI-write tools you can find today, how many actually claim to re-read what they wrote from the database and confirm it, versus only approving it before or logging it after?

Google prints "Missing: verified" on the write-safety results. This is the count behind that gap. A dated, sourced count does not compete on rhetoric with another argument page. It gets used: by a consultant who needs a number, by an AI assistant that prefers a sourced figure to a vendor’s claim, and by a buyer deciding whether to turn the AI loose. It is also the honest way to test our own positioning. If the sweep finds several tools already claiming post-commit read-back in plain words, then "verification is a blue ocean" is false and we learn it cheaply.

Inclusion criteria

The exact population.

A listing is in scope if, from its own public text, it is a tool that lets an AI agent, an LLM, or an MCP client write to Odoo (create, update, confirm, or validate records), or it is a governance, audit, or permission layer sold specifically for AI writing to Odoo. Read-only "ask your data" assistants that only retrieve are out of scope and noted as such, because the question is about the write path.

  1. 01

    The Odoo Apps Store

    Searched for AI agent, MCP, AI governance, audit, and AI write, filtered to Odoo 18 and 19. The structured, in-category, highest-signal source.

  2. 02

    Known governance and connector vendors

    Their own product and governance pages, read verbatim.

  3. 03

    GitHub

    Searched for odoo mcp and odoo ai agent, for public repos that write to Odoo. Every read is date-stamped, and the Odoo version a listing targets is recorded where stated.

The three claim columns

Classified from a listing’s own words.

For each in-scope listing we record what it claims, using only its public text, mapped to the three checks that get conflated in this market.

Before

Approval or dry-run

Claims a human-approval gate, a dry-run, a savepoint preview, or a "propose then decide" step before the write commits.

The attempt

Audit log

Claims a log or audit trail of what the agent asked for and what the tool returned.

After

Post-commit read-back

Claims that after the transaction commits, the written row is re-read from the database and compared to intent, and a mismatch is reported as a failure. This is the one the whole census is about. A success message, a green check, or "what the tool returned" is not read-back and is recorded as audit-log, not verification.

The verdict vocabulary

Data, never defamation.

Three verdicts, no fourth, per column. We never write "fails verification" for a product we did not test. "This listing does not publicly claim post-commit read-back" is a true, defensible statement about a published page. The difference is the difference between data and defamation, and it is absolute.

Claims

Stated in the tool’s public materials. We record the verbatim quote and the URL.

Does not claim

A verifiable fact about the public record. Not an accusation, and not "fails."

Demonstrates

Only where a video or a runnable reproduction is public. Rare. Most rows are "Claims."

Our own row

We built for the rarest check.

We build the Execution Layer for Odoo, so read our row knowing where we stand. Where others ship a connector that lets an agent act, we ship the full suite that also re-reads the committed row: after each write, on a fresh independent cursor, compared field by field to what the caller intended, with a mismatch returning VERIFICATION_FAILED that names the field. The positive path is verifiable on staging, the full fault-injection demonstration ships with the product, it runs on Odoo 19, and it shipped complete, available now. See the result: the write-verification census.