Client name withheld. Figures are from our deliverables on the stated dates.
Business: a PR/media outreach operation managing relationships with journalists, bloggers, and placement intermediaries across multiple markets.
The problem
Years of outreach correspondence sat scattered across roughly 30 separate export archives, in two different data schemas, with no single source of truth for who had actually replied, who was a live contact versus a dead one, and who was reachable only through a third-party broker rather than directly.
What we built
A consolidated, multi-user cloud database, built with a deterministic Python/pandas pipeline — no language model in the extraction path, and no field filled with an invented value where the source data had none. Every row was checked against inclusion rules before being kept: a contact needed evidence of an actual reply — appearing in a list alone did not qualify.
Final delivered tables: 6,305 media entries, 1,051 contacts, 420 intermediaries, each row tagged with a confidence tier (high, medium, or low) based on the strength of that evidence.
The single largest judgment call in the build was flagged to the client rather than resolved silently: 96% of the media table's rows were reachable only through a shared placement-broker address rather than an address native to that outlet's own domain. A broker's reply proves the broker is reachable — it does not prove that specific outlet engaged. Those rows were kept, at low confidence, with a flag distinguishing them from the smaller set of domain-native, vetted contacts, so the client could filter a ready-to-use outreach list from a long-tail lead pool rather than treating the whole table as equally solid.
Enrichment pass
Separately, we ran a research pass over 71 journalist profiles that had incomplete records — one isolated research task per profile, each required to cite primary sources before a fact was accepted. Of the 71, 69 were identified and filled in (38 at high confidence, 30 at medium, 1 at low); country of residence was confirmed for 66. Two profiles could not be identified with enough confidence and were left untouched rather than filled with a guess.
What we delivered
The three tables as a live multi-tab site plus a spreadsheet workbook, so the client's team could work from either the browser view or their own tools.
Status
Delivered and live at handoff. We do not have usage data from after the handoff to report.