Campaign reporting was a weekly export nobody could ask a follow-up question of. Sales outreach ran from a separate contact sheet. Nothing showed which target accounts had warmed up, who to contact there, or who had already been approached.
So the question wasn't "how is the campaign doing?" It was "which accounts should we talk to next, and through whom?"
The platform combines LinkedIn engagement with the target account list, the contact database and the connection log. Marketing sees account movement. Outreach gets a ranked list of who to contact next.
The target list lives in Google Sheets and is re-read on every refresh, so new accounts appear without a code change.
Both teams read the same tiers, and only on-list companies count, so off-target engagement can't inflate the result.
Clicked accounts are matched to a person-level contact database, producing 181 named contacts ranked by account clicks, impressions and seniority.
Anyone in the connection request log is excluded by LinkedIn profile, and contacted accounts leave the "reach next" queue.
Dated snapshots show new companies and new clicks since the last run, so the team starts with what moved.
CEO, Co-Founder and Founder were the top three titles clicking, so the targeting reached buyers.
These are planned, not live: Clay enrichment for accounts with no mapped contact, two-way CRM sync, scheduled refreshes and Slack alerts to account owners.
Built with Python, FastAPI, the LinkedIn Ads API and Google Sheets.