Christian Koustrup · Data scientist, specialised in AI

I bring strong knowledge of the whole process from data cleaning to analysis. That carries into how I design AI systems: methodologically sound, and transparent enough that every step of an analysis can be checked.

Project overview

Auditable AI Data Analysis

An AI pipeline that turns a raw dataset and a business question into a finished, checked analysis, with no code written by the user. Every number is calculated by code, every step is checked automatically, and every judgment call is explained so a person can review it and change it.

The machine does the coding. People keep the judgment.

01

How it works: three steps

1 · You describe

A short brief

The questionWhat you want to know
The contextWhere the data comes from; steers every choice
The datasetCSV, Excel, Parquet or JSON
2 · The AI team works

Clean, then analyse

Clean the dataAI finds and fixes problems; a second AI reviews
AnalyseAI plans and interprets; code calculates
Checked four timesAutomatic checkpoints between the stages
3 · You receive

A checked result

The answerUp to four findings, each with a chart
Data qualityWhat was wrong, what was fixed
Every decisionReasons shown, reversible

↻ Disagree with a decision? Write your choice into the brief and run again. Your expertise corrects the machine.

02

Why the result can be trusted

Code calculates every number

The AI decides what to look at; tested code produces every figure. The AI never calculates a number: every figure it writes is traced to a tool result.

Four automatic checkpoints

Work only moves forward if it passes. Problems are flagged for a person, or the run stops and says why.

Every decision is visible

Each judgment call shows the options, the choice, the reasoning and the AI's confidence.

People stay in control

Uncertain choices are marked for review, and any decision can be overruled and the analysis re-run.

03

What you get: one answer, with more depth on demand

Layer 1 · The report

The answer in plain words

Up to four findings with charts, suggested actions, and a green / yellow / red rating of how far to trust it.

For decision makers · HTML or PDF · open a live example

Layer 2 · The details

The full reasoning

All charts and results, every data problem and fix, every decision with its effect, and a cost overview.

For analysts and reviewers · e.g. the decisions

Layer 3 · The audit trail

The evidence

The cleaned data, removed rows with the reason, and a complete log of every step and every AI attempt.

For audit and reuse

For technical readers
04

Architecture

Like a well-run analysis team: AI specialists make the judgment calls, code does the arithmetic, and checkpoints sign off each stage.

5 AI specialists · decide

Each has one job: find problems, fix them, review the fix, plan the analysis, interpret the results.

Code · computes

Reads the data and calculates every number with tested tools. Same input, same answer.

4 checkpoints · approve

Automatic, rule-based inspections between stages. Nothing moves on without passing.

Stage 1 · Cleaning Make the data fit to use
Output: clean data + a record of every change
Brief + dataYOU
Question, context and file
→
Read & profileCODE
Reads the file and describes every column
→
1
File read correctly?
→
DiagnosticAI
Finds problems, makes the judgment calls
→
CoderAI
Writes and runs the fixes in a safe sandbox
⇄
ReviewerAI
Checks the work independently
→
2
Clean data safe?
⇄ Reviewer can send the work back to the coder, at most twice
Stage 2 · Analysis Answer the question
Output: the report
Clean dataFROM STAGE 1
With a record of what was done
→
PlannerAI
Turns the goal into concrete questions
→
3
Plan feasible?
→
AnalystAI
Chooses methods, reads results, writes findings
⇄
11 toolsCODE
Summaries, groups, trends, regressions
→
4
Write-up backed by evidence?
→
ReportTO YOU
PDF + HTML
⇄ Analyst asks the tools for numbers, up to three rounds
You AI specialist (decides) Code (computes) Checkpoint (approves)

The four checkpoints: what each one protects against

◆ CHECKPOINT 1
Was the file read completely and correctly?

Counts every row, catches broken lines and wrong encoding. Stops a bad file before any AI cost.

What it checks
  • Lines in the file = rows loaded + rows rejected
  • Rejected lines: flag above 0.1%, block above 1%
  • Unique column names; file hashes recorded
  • Every column has a type, or a reason why not
  • Statements in the brief hold in the data
◆ CHECKPOINT 2
Is the cleaned data safe to analyse?

No rows lost or values blanked without explanation; re-running the fixes gives the same result.

What it checks
  • Types and columns match the diagnosis
  • Every changed cell and removed row is accounted for, with a reason
  • Untouched columns are identical to the raw data
  • Row loss: flag above 5%, block above 20%
  • The target is never filled in; replaying the log reproduces the result
◆ CHECKPOINT 3
Can the analysis plan actually run?

The columns exist, the methods can run on this data, and excluded data is not used.

What it checks
  • Every column exists; every method is a tested tool
  • The target is the brief's; IDs, personal data and excluded columns are not analysed
  • A column that gives the answer away is excluded
  • Enough rows for each question, or it is marked not possible
◆ CHECKPOINT 4
Is every claim backed by a calculation?

Each number in the text is traced to a tool result; no overclaiming. Only checked text reaches the report.

What it checks
  • Every question in the plan is answered
  • Every finding cites tool results that ran
  • Every number matches a logged result; a number the AI worked out itself is rejected
  • A finding without real evidence cannot be called strong
PASS all good, continue
FLAG continue, shown for review
BLOCK stop, and explain why

Why this design matters

AI is good at judgment but can make up numbers. Here the two are separated: the AI never calculates a figure, and code never makes a judgment call. Each hand-over between stages follows a fixed format, so the checkpoints can verify it mechanically.

Where the person comes in

Every judgment call is written to an editable decision list (decisions.yaml), and the analysis plan can be edited too. Change a choice, or write it into the brief, and run again. The machine redoes the work; your call is the one that counts.

05

Monitoring every AI call

Each run folder is the audit trail of one analysis. On top of that, every AI call can be traced in Langfuse: which specialist made it, with which model, what it was sent and answered, the tokens, the cost and the time. That shows where money and time go, and what changed after a model or prompt was swapped. Tracing is optional and can never stop a run.

Where the cost of one analysis goes
Fraud run, total $0.87 · Analyst and Diagnostic on Claude Opus, the others on Claude Sonnet
Analyst
$0.57 · 65%
Analyst: $0.565 · 5 calls · 113 s
Diagnostic
$0.13 · 15%
Diagnostic: $0.126 · 1 call · 39 s
Reviewer
$0.10 · 12%
Reviewer: $0.100 · 2 calls · 23 s
Planner
$0.04 · 5%
Planner: $0.041 · 1 call · 20 s
Coder
$0.03 · 4%
Coder: $0.034 · 1 call · 9 s
Show as a table
SpecialistCallsCostShareTime
Analyst5$0.56565%113 s
Diagnostic1$0.12615%39 s
Reviewer2$0.10012%23 s
Planner1$0.0415%20 s
Coder1$0.0344%9 s

What it shows, and what it is for

  • Cost control: the analyst is two thirds of the cost, because each round of tool calls re-sends the earlier results. That is the first place to save.
  • Model choice: each specialist has its own model. On the cheaper model, the coder, reviewer and planner cost about half of what they did in an earlier all-Opus run (on a different dataset, so a first indication, not a measurement).
  • Debugging: the exact prompt and reply behind a weak finding or a blocked checkpoint.
  • Next: attach checkpoint outcomes as scores, so quality and cost sit side by side.

Only what the AI is sent is traced: column names, summaries and the brief, never the rows.

06

Validation: how I know it works

I tested the pipeline the way you would test a new analyst: on public datasets that many people have already analysed, comparing what it found and decided with what others report.

3 datasetsTelco churn, Titanic and mobile money fraud: results in line with human analysts
3 of 3runs passed all four checkpoints (one with a flag shown for review)
$0.84–1.27AI cost per analysis
3–5 minof AI time per run

How it was validated

  • Three well-studied public datasets from Kaggle: customer churn, Titanic survival and mobile money fraud, each with many published analyses to compare against.
  • The findings: the pipeline found the same main drivers as public analyses, with closely matching figures. For example, 42.7% churn for month-to-month contracts, where about 43% is commonly reported.
  • The cleaning decisions: compared with common practice. Unclear values were kept and explained rather than silently dropped, and in the fraud data it excluded misleading balance columns because the dataset's own notes warned about them.

Limits of this validation

  • Informal: compared with common practice, not scored against a fixed answer key.
  • Well-known data: the AI may have seen analyses of these datasets; unseen data is the real test.
  • Few runs: three datasets, one run each, so consistency across repeated runs is not yet measured.
  • Scope: it shows associations, not causes, and is a prototype: local, single user, files only.

Next step: a systematic evaluation on data with known answers, including unseen data.

Let's work together

I would look forward to collaborating on implementing it for an organisation's needs: adapting it to your data, your rules and your review process.

Get in touch on LinkedIn