How We Built an Anti-Hallucination AI Content Pipeline with Live Docker Testing
By Omar Bashir
Most AI writing tools will hand you a benchmark number that sounds plausible and was never actually run. Ours is built to refuse that. Every sentence in a draft that states a duration, a percentage, a size, or a named tool version has to trace back to a real artifact from this run, or it doesn't get written at all.
Evidence-gated drafting
The generation step doesn't get to invent a figure. It gets a fixed evidence index for the run and a hard rule: any claim carrying a number needs at least one evidence ID behind it, and that ID has to resolve to something real, not a citation the model made up to look thorough. If nothing in the index supports a number the draft wants to make, the model marks the gap inline instead of filling it with something plausible. A flagged gap reads worse than a smooth paragraph, but it's honest, and that's the trade we made on purpose.
Where the evidence actually comes from
The part that makes this more than a prompting trick is that the numbers come from containers we actually launched, not from the model's sense of what a Docker benchmark usually looks like. For this run, the pipeline measured cold-start container launch overhead using an alpine:latest image and separately using a node:22-slim image, since a minimal base image and a JS-dependent one carry different startup costs and we didn't want to blur that distinction into one number.
We also ran a deliberate timeout case: a container intentionally left to fail, specifically to confirm that cleanup still runs when a job doesn't finish cleanly. That's the scenario that matters most in production, since a pipeline that only cleans up after happy-path runs will leak containers the first time a real job hangs.
These are single runs on this pipeline's own Lab runtime, not a general benchmark of Docker performance.
Note: exact launch-time figures in ms for alpine:latest and node:22-slim weren't cited per-image in the evidence pulled for this section, so they're left out rather than approximated.
The container did complete successfully in both cases; what's missing is the precise number, not the outcome.
Shipping on top of it
The pipeline isn't just an internal exercise, it's the system behind reviewreply.tech, and a live screenshot of that homepage is part of the evidence set for this run. Keeping a real, checkable product in the evidence index is deliberate: it's harder to hand-wave about whether a pipeline works when there's a running site to point at instead of a description of one.
The throughline across all of this is narrow but consistent: a number in the draft either comes from something we ran and can point to, or it doesn't appear. That's a smaller claim than "hallucination-free," and it's the one we can actually back.
Evidence
Live product screenshot — reviewreply.tech homepage
Live product screenshot — reviewreply.tech homepage (ev_screenshot_1af4ae77)
reviewreply.tech homepage — hero viewport (display crop) (ev_screenshot_948f8384)







