Veritix

Audit your data where it lives.

Point Veritix at a folder of CSV exports or an Excel workbook. It profiles every column, works out which files are supposed to join to which, checks that those joins actually hold, and reports what is wrong — with the query that proves each finding, so you can check it rather than take it on trust.

It runs on your machine or in your own cloud. There is no vendor in the middle of your commercially sensitive data.

Windows and Linux, 64-bit. One file — no installer, no runtime to install alongside it, no account, nothing to register. Free and open source under the AGPL; commercial terms for anyone who needs them.

The Veritix web interface showing a completed audit: counts of errors, warnings and notes, a notice that verbatim cell values are omitted, and a list of findings such as “signup_date mixes 2 date formats”.
A finished audit in the built-in web interface. The same report downloads as HTML, JSON or SARIF, and the command line prints it as text.

What it finds

Most of what is wrong with a business export is not wrong in a way that makes anything fail. It is wrong in a way that makes the next thing downstream quietly produce a different number.

Inside a column

Values that contradict what the column claims to be. Placeholders like N/A, -1 and 999 that defeat every null check downstream. Dates written in two formats, where a single-format reader will either fail on the rest or — worse — parse them into the wrong day.

Between files

A directory is one dataset, not a pile of files. Veritix infers the keys that join your exports to each other and checks that the references resolve. That is where most real defects live, and no tool looking at one file at a time can see them.

Against your own rules

Expectations you write down once, in a YAML file, and have checked on every audit afterwards. A rule that matched nothing is reported as such — silence means either “your data is fine” or “this never ran”, and the second is dangerous when somebody is relying on it.

Since the last audit

What this export broke that the last one did not, including rows and columns that quietly stopped arriving. A build can fail on the direction rather than the state, so a team with fifteen years of accumulated mess can still refuse to make it worse.

Every finding carries its evidence

A finding names the statement that produced its number. Veritix re-runs all of them before it writes the report, and a finding that no longer reproduces is dropped rather than printed.

An expanded finding: the title “signup_date mixes 2 date formats”, an explanation of why it matters downstream, a recommended fix, the affected row count, and the SQL statement that produced that count.
The count, why it matters downstream, what to do about it, and the statement a reader can run themselves. Actual cell values stay behind a button that has to be pressed for one finding at a time.

Your data does not leave the process

By default, nothing is sent anywhere

A fresh install talks to nobody. No model provider is configured, telemetry export is off, and a scheduled audit tells nobody until you give it somewhere to tell. Reports omit verbatim cell values unless you ask for them, and say so in the output.

Columns are described by derived shapes instead: CUS-004417 is reported as XXX-999999 — precise enough to reason about, and useless to anyone who obtains the report.

With a model, the guard is a type, not a promise

The optional agentic auditor is off until you switch it on. When it is on, the model sees schemas, aggregates, distributions and shapes — never cell values. That boundary is enforced by the type system rather than by diligence: a tool that tried to return raw values would fail to compile into a leak.

Afterwards you can read every payload that left the machine, verbatim, on the run's trace. Or point it at a model on your own hardware and have no network egress at all.

The model explores; the engine measures

Veritix with no model is a complete deterministic auditor, and that is the default. Turning the agent on adds a second kind of finding — one that needed reasoning rather than a rule — without adding a second kind of trust.

The model decides what to investigate and writes the explanation. It never reports a number it made up. To record a finding it has to supply the query that would demonstrate the claim and state what that query returns. Veritix runs the query. A disagreement records nothing: it hands back the real figure and asks again.

What survives that is then re-run alongside the deterministic findings before the report is written, so it is measured twice. A model-proposed finding can sit in the same list as a rule-based one precisely because neither of them got there by being believed.

Ways to run it

On a Windows desktop

Unzip and double-click Start Veritix. It starts the server and opens your browser on the interface, which is the whole of the setup. The interface is the primary interface: the people this is for do not have a terminal.

In a build

Non-zero exit on what you decide is unacceptable.

veritix audit ./data --fail-on error
veritix audit ./data --baseline last-report.json \
    --fail-on-regression error

On a server, on a clock

A dataset can carry a standing instruction to audit itself overnight and send a webhook when the export gets worse. A container image and a Kubernetes base ship with it — one replica, egress denied by default.

From an assistant

Veritix is an MCP server, so Claude Code or Claude Desktop can audit a dataset and read the findings. An audit started that way is the same run, recorded in the same place, and shows up in the browser alongside the rest.

Licensing

Veritix is dual licensed, and it is not the kind where the free version is crippled. The AGPL build is the whole product. A commercial license sells different terms, not different code.

AGPL-3.0-or-later

Free. No registration, nobody to tell.
  • Run it on your own data, inside your own organization — on a laptop, on a build server, in your own cloud.
  • Modify it as much as you like for your own internal use.
  • Your data, your reports and your rules files are yours. The license is about the program's source, not its output.

This is very likely fine for you, and it is the case Veritix was built for.

Commercial license

Terms a public license cannot give.
  • Ship Veritix, or code derived from it, inside a product you distribute under terms of your own.
  • Run a modified Veritix as a service for people outside your organization without publishing your modifications.
  • Link it into a larger system whose source you cannot release.
  • Get a warranty, an indemnity, a support commitment, or a signed document your procurement department will accept.

Write to russell.wallace@gmail.com. Getting a license is usually quicker than getting an opinion on whether you need one.

Documentation