Case study · Theodore Roosevelt Presidential Library Foundation · 2024–present
An AI-Driven Google Ad Grant Optimizer Pulling 16.46% Average CTR
Google gives qualifying non-profits up to $10,000 / month of free advertising through its Ad Grants program. Most institutions leave most of that money on the table because keeping a Grant account healthy at scale is a full-time job. I built one that runs itself — an AI optimizer that crawls our sitemap, builds and tests campaigns, talks to the Google Ads and Analytics APIs directly, and bids the budget for conversions every week.
The brief
Google’s Ad Grants program is one of the most generous standing offers in non-profit funding: any eligible 501(c)(3) can use up to $10,000 a month of search advertising, free. The catch is that the account has to be actively maintained at a Google Ads professional’s level of care — with a sustained click-through rate above 5%, ad groups under tight quality-score thresholds, conversion tracking wired into Analytics, and a steady drip of new keywords, ad copy, and tests. Most non-profits hire an agency, do it badly themselves, or quietly let the Grant lapse below 5% and lose the spend.
I wanted the third path: turn the entire Grant operation into a weekly, push-button run that audits the account, finds the gaps, proposes a plan, and — after I approve — ships changes via API.
How it works
The optimizer runs as a Claude skill against a live Google Ads account. Every weekly run follows the same loop:
Crawl the sitemap
Pulls the institution’s sitemap.xml, reads every public page, and infers the topical structure of the organization.
Discover campaigns
Maps content clusters to campaign & ad-group structure. Surfaces topics the existing account is missing entirely.
Generate variants
Drafts headline and description variants per ad group, anchored to the page they point at and tuned for Grant compliance.
Pull live performance
Reads click, impression, CTR, conversion, and cost data live from the Google Ads API — plus engagement and revenue from the GA4 API.
Audit & plan
Cross-checks the account against the Grant compliance rules, identifies under-performers, and proposes a change plan in a human-readable report.
Approve & execute
After I sign off on the plan, the optimizer writes the changes back to Google Ads via API mutations — no CSV exports, no Ads Editor, no manual edits.
What it actually does, in detail
Sitemap-driven campaign discovery
The traditional Google Ads workflow starts with a marketer guessing what their organization does and writing campaigns from intuition. This one starts with the institution’s actual website. Every page that gets discovered in the sitemap is a candidate landing destination; every cluster of related pages becomes a candidate campaign. New content that ships during the week gets picked up automatically on the next run.
Ad-unit variants, automatically A/B tested
For every ad group, the optimizer ships at least three responsive search-ad variants — varying headlines, descriptions, and call-to-action phrasing. Google’s own ad-rotation handles serving; the optimizer watches the results in the next run and prunes anything underperforming relative to peers in the same ad group, then drafts replacements. This is a continuous A+B loop, not a one-time setup.
Direct API integration
Earlier versions of this kind of workflow ran on CSV exports through the Google Ads Editor desktop app — brittle, manual, easy to break. This one talks to the Google Ads API and the Google Analytics Data API (GA4) directly. Every read is live; every change is a programmatic mutation; every run is auditable.
Conversion- and revenue-aware bidding
Because the GA4 API is wired in, the optimizer can see what visitors do after they click — donations, ticketing flows, newsletter signups, content engagement. Budget shifts toward the campaigns and keywords that actually convert, not just the ones with the highest CTR.
Grant compliance, automated
Google enforces specific rules on Ad Grant accounts: minimum CTR thresholds, geo-targeting requirements, prohibited single-word and overly generic keywords, mandatory conversion tracking, two ads per group, two ad groups per campaign, and so on. The optimizer treats those rules as first-class constraints — every plan it proposes is pre-validated against them.
Results
The numbers do the talking. The TRPL Foundation’s Ad Grant account has sustained an average 16.46% CTR across all campaigns — more than 3× the Grant minimum and roughly 5× the industry average for Google Ads broadly. The best month hit 25.78%. And because the optimizer is bidding for the available spend each cycle, the Foundation is actually using the Grant rather than letting it sit idle.
The point of an Ad Grant isn’t the badge — it’s the donors, the readers, the ticket buyers, and the researchers it puts in front of your work. An automated optimizer is what turns a passive line on the budget into an active acquisition channel.
Why I built it
The Theodore Roosevelt Presidential Library is opening from a standing start. Every channel we build now — email, social, web, ads — has to be a long-term capability, not a one-off launch. Hiring an agency for the Grant would have meant the work happens at someone else’s pace, on someone else’s clock, with reporting we don’t fully own. Building the optimizer meant the institution’s acquisition channel is something we run ourselves, in a few minutes a week, with all the data and all the decisions inside the building.
It’s also a working argument for what I think AI in non-profit operations should actually look like: an agent that reads your real data, proposes a real plan, and only executes after you approve. Not a chatbot, not a content generator — an analyst-and-operator that compounds your weekly capacity.
What’s next
- Open the optimizer to other Library Foundation programs and other cultural-institution non-profits as a packaged Claude skill.
- Extend the same architecture to paid search (beyond Grants), Meta, and audience-platform CRM — the same sitemap-driven, conversion-aware loop.
- Plug in the Library’s eventual ticketing and membership conversion events so the bidding is steering toward institutional revenue, not just web events.