The workflow before
Capital One relied on third-party bidding tools and qualitative reviews to judge its Google Ads keywords. Last-click attribution missed most of the customer journey, and analysts adjusted bids by hand after the fact. With millions of keywords across thousands of campaigns, the team could not reliably tell which spend to scale and which to cut.
What we built
We built a neural network attribution model in TensorFlow that predicts the conversion value of each keyword, trained on more than 3 years of keyword performance joined with conversion and CRM data in Amazon Redshift.
The model feeds a bid adjustment engine through the Google Ads API. High performers get higher bids, underperformers get lower bids, and campaigns that keep missing benchmarks are flagged for review and paused if they do not recover. Daily limits cap how far any bid can move.
Dashboards and alerts show keyword performance, prediction accuracy and every bid change, so the marketing team can see why the system made each move.
Before and after
| Measure | Before | After |
|---|---|---|
| Attribution | Last click, from third-party tools | Keyword-level, multi-touch model |
| Bid changes | Manual, after the fact | Automated daily within set limits |
| Data freshness | Days to weeks | Hourly Google Ads extracts |
| Underperforming campaigns | Judged case by case | Flagged against benchmarks for review |
What's next
The same data and model serving pattern can extend attribution to display, social and video spend, so budget moves across channels follow the same evidence as search.



