An AI-assisted n8n workflow that takes a raw campaign performance export, runs it through five parallel rules-based checks, hands the flagged rows to an LLM for plain-language explanations, and queues everything for human sign-off. Walked through end to end below.
Campaign reports are often reviewed under deadline pressure. Small data issues can be missed, then treated as real performance changes. This agent is designed to catch those issues before analysis starts, explain them clearly, and route them to a human rather than acting on them automatically.
Every campaign report goes through the same shape: structured checks first, language model second, human last. The rules catch what's mechanically wrong; the model explains what that means; a person still signs off before anything is treated as fact.
campaign_qa_review_queue Google Sheet, one row per flag.This is a portfolio build. I designed the workflow architecture, implemented the QA logic, defined the LLM narrative step, structured the human review process, and set up the evaluation approach.
A sanitized, illustrative example of the shape the Campaign QA Agent produces — a raw campaign row on the left, what the pipeline generates from it on the right.
Illustrative example built to match the structure the Campaign QA Agent processes, not a live production row.
Same shape as everything else in the logbook: the problem, the approach, and what changed because of it.
Campaign performance reports get skimmed under time pressure, so the same handful of errors (misaligned dates, duplicated rows, a metric that quietly went to zero) slip through and get treated as real trends.
Push the mechanical checking to rules, not a model. Five deterministic checks run in parallel over every row before any AI is involved, so the flags are reproducible and explainable on their own.
The five check outputs merge into one summary per row, then pass through a Basic LLM Chain node (GPT-4o, temperature 0.2) that writes a plain-language explanation for each flag and attaches a confidence score, rather than a raw pass/fail code a reader has to interpret.
A clean JSON array of flagged items with explanations and confidence scores, parsed directly with no markdown or prose wrapping to strip out.
The flagged, explained items are written to an campaign_qa_review_queue sheet rather than acted on automatically. A human confirms or dismisses each one before it becomes a finding anyone reports on.
The agent's job is to surface and explain, not decide. That boundary is what makes the output usable in a real reporting workflow, where a wrong flag treated as fact is more costly than a missed one.
Flagged items are scored automatically against a ground-truth set, so accuracy is tracked as a number over time rather than assumed from a handful of spot checks.
Full pipeline is built and running end to end: rules checks, LLM narrative layer, human review gate, and automated eval scoring.
The pipeline is evaluated against a labelled ground-truth set so performance can be measured rather than assumed. The fields below are intentionally left as placeholders until the latest evaluation run is ready to publish.
The interesting part isn't that a workflow runs on its own. It's what it's allowed to decide, and what it isn't.
An automation case study with before/after time saved, and a lightweight AI governance toolkit, both built the same way: real workflow, real constraints, human judgment kept in the loop.