Back to experience

INFRRD

DocIQ

One-click test automation for internal teams

An internal platform that put INFRRD’s manual, script-by-script product testing behind a dashboard, built from scope to v1 in two weeks.

2 weeks
from scope to v1 in production

Problem

Teams testing the extraction product ran the whole flow by hand. QA’s BugBuster run was typical: pick a batch of files, push them through the product’s APIs, wait for every document to finish processing, then run the next script to compare the output data against a ground-truth file and produce an accuracy report. Each step sat idle until someone came back and kicked off the next one, so a single run ate hours of babysitting across teams.

Solution

Scoped, designed and shipped DocIQ, an internal platform where a user clicks a button on a dashboard and the entire run completes unattended: file selection, uploads through the product’s APIs, processing, comparison against ground truth, and the final report.

Architecture

A React dashboard drives a Python/FastAPI backend that orchestrates each run. The backend stages the selected files, uploads them through the extraction product’s APIs, polls processing status, then runs the comparison and report generation steps in sequence and stores the results for the team to review.

Engineering decisions

  • Automated the existing scripts’ behaviour end to end instead of rewriting the checks themselves, so teams trusted the results from day one
  • A dashboard over a CLI so QA and non-engineering teams could run it without setup
  • Scoped v1 tightly to one full flow and shipped it in two weeks, using agentic coding practices to keep the pace without dropping review

Technology

Python · FastAPI · React · TypeScript

Results

  • Replaced multi-step manual script runs with a single button on a dashboard
  • Adopted by QA and other internal teams for repeated accuracy testing
  • Scoped, designed and shipped v1 in two weeks using agentic coding practices

What Daniel learned

The two-week deadline only worked because the v1 scope was ruthless: automate the flow people already ran, not the flow you could imagine them wanting.