Super Intelligence Systems
Home/Automation/Verified research case study
Back to automation
Superintelligence Systems · Case studyOctober 2026

Verified research pipeline

A research batch that checks itself before the client sees it. Sixty rows in, fifty-two delivered, eight held back with the reason attached.

Research and list-building jobs fail in a quiet way: the file looks complete. Missing sources, dead links, placeholder emails and duplicate rows all survive an eyeball check and only surface after the campaign is sent. This build puts the checking in code, before delivery, and sends anything unverifiable to a person instead of padding the batch.

The brief

A repeat research brief arrives through a form: topic, batch size, minimum source quality. The pipeline creates a batch record, sources the rows, and runs every row through a deterministic gate. Rows that pass are filed to the delivered list. Rows that fail are written to an exception queue with defect codes, and a pending decision row is created for each one. Nothing is silently dropped and nothing is silently accepted.

Evidence from the demo run

60rows in the batch
52verified and filed
8held for a person
8/8gate tests passing

Batch RB-470309, topic "Industrial suppliers in Ontario", minimum source quality "company website, dated in the last 90 days". Arithmetic closes: 52 verified plus 8 exceptions equals 60. All 52 clean rows passed; all 8 seeded defects were caught.

The n8n workflow: form, batch record, verification gate, verified and exception branches, pending decisions
The workflow. The gate is plain code, not a model call. Every rule can be read and tested.
Demo environment · sample data · no client names1 / 2
Verified research pipelineHow it works

The rules, in code

DefectRule that catches itSeeded in the run
missing_companyEvery required field must be non-empty1 row
missing_source_urlEach row must carry the URL it came from1 row
dead_sourceSource host must not be a dead or placeholder domain1 row
placeholder_emailEmail domain must not be example, test or invalid1 row
duplicate_idStable ID must be unique inside the batch1 row
name_mismatchContact name must be a plausible full name1 row
bad_categoryCategory must be one of the brief's allowed values1 row
stale_sourceSource date must be inside the freshness window1 row

The gate runs on the batch, not one row at a time, so duplicates are caught against the whole batch. Each pass writes a stable row ID, the source URL and the checked timestamp into the audit tab, so a later reviewer can re-check any row without trusting the file.

Three audit tabs: 52 verified rows, 8 exceptions with defect codes, 8 pending decisions
Live run: 52 verified rows, 8 exceptions with the rule that failed, 8 decisions waiting for a person. The reviewer sees the reason, not just a rejection.

When it breaks

The workflow has a failure alert wired to every run. A deliberately injected fault produced a failed execution and an email naming the workflow and the node that threw, with the error message. A silent partial batch is the failure mode that matters here, so the run fails loudly rather than delivering less than it should.

What this does not do. It does not browse the public web by itself in this demo: the enrichment step reads a fixed fixture so the run is repeatable. In a client install the same node points at the approved sources or paid data provider. It does not guess a missing field, and it does not send anything to a list until a person has decided on the exceptions.
What it proves. A batch of 60 rows can be delivered with the 8 bad rows visible, explained and queued for a decision, instead of hidden in the file. That is the difference between a list and a verified list.

Where it fits

  • Research and list-building batches where a wrong row costs a campaign.
  • Ongoing sourcing with a fixed quality bar and a reviewer who should only see exceptions.
  • Any hand-off where "looks complete" has been mistaken for "is complete".
Built with n8n, Google Sheets, deterministic validation2 / 2
Start a conversation