All case studies
Case Study, Political Campaign

Dusza for Judge: AEO Campaign Site, Under 5 Hours, $500, One Winning Candidate

A judicial campaign cannot use a Google Business Profile. So we found a different path to AI visibility, and the candidate won with over 80 percent of the vote.

$500
Total Cost
Under 5 hrs
Build Time
80%+
Vote Won

The Challenge

Tom Dusza was running for Erie County Common Pleas Judge in Sandusky, Ohio. Voters increasingly ask AI assistants like ChatGPT, Claude, Perplexity, and Google's AI Overviews questions like "Who's running for judge in Erie County?" and "Tell me about Tom Dusza." If the answers come back vague, wrong, or empty, the campaign loses voters before the conversation even starts.

A judicial candidate is not a business, so a Google Business Profile was not an option. We needed a different path to AI visibility.

Scope

What We Built

A clean mobile friendly site with everything a campaign actually needs. Nothing extra.

Single Scroll Home

Seven sections (Bio, Philosophy, Community, Events, FAQ, Contact) on one mobile friendly page.

Live Event Calendar

Pulls from a backend the campaign controls. No code edits required to add an event.

Volunteer & Contact Form

Flags supporters into a filterable admin view the campaign uses every day.

Newsletter Sign Up

Captures supporters for ongoing campaign communications.

WinRed Donations

Integrated giving with QR codes in the navbar popup and footer.

Admin Dashboard

Password protected. Edit content, events, contacts, and subscribers without touching code.

Where the Real Lift Happened

The AEO Work

1

Four interconnected JSON-LD schemas

Person schema for Tom, Organization schema for the campaign committee, WebSite schema, and FAQPage schema marking up all seven Q&As as machine readable question and answer pairs.

2

AI crawler files at the site root

robots.txt explicitly welcoming GPTBot, ClaudeBot, PerplexityBot, Google-Extended, Applebot-Extended, and the major AI crawlers while blocking admin and API routes. sitemap.xml mapping every public URL with priorities. llms.txt as a plain text cheat sheet for AI models.

3

Citation ready content

Every FAQ answer was written to stand alone so an AI model can quote any single answer without needing surrounding context. Questions phrased the way voters actually search: 'Did Tom Dusza win?' 'Where can I find upcoming events?'

4

Redundant signal placement

Critical facts like the election outcome appear in the FAQ, FAQPage schema, and llms.txt so no AI assistant summarizing the candidate can miss them.

5

Clean semantic foundation

One H1 per page, proper heading hierarchy, semantic HTML5 elements, descriptive alt text, canonical tags, Open Graph and Twitter card metadata.

The Result

Tom Dusza won with over 80% of the vote.

When voters now ask any major AI assistant who won the Erie County Common Pleas Judge race, or to tell them about Tom Dusza, the site delivers explicit, structured, citation ready answers instead of forcing the AI to guess from unstructured HTML.

Coverage in the local press: Sandusky Register, "Dusza defeats Riddle"

A judicial campaign does not need a six figure web budget to dominate AI search. It needs the right structure in the right places. Total investment: $500. Under 5 hours of build time. One winning candidate.

Frequently Asked

How can a political campaign show up in ChatGPT and other AI assistants?
A campaign cannot use a Google Business Profile because a candidate is not a business. The path to AI visibility runs through structured data, AI crawler files, and citation ready content. For Tom Dusza we embedded four interconnected JSON-LD schemas (Person, Organization, WebSite, FAQPage), shipped robots.txt, sitemap.xml, and llms.txt at the site root, and wrote every FAQ answer to stand alone so an AI model can quote it without needing surrounding context.
What is llms.txt and why does it matter for a campaign?
llms.txt is a plain text cheat sheet written specifically for AI models. For the Dusza campaign it contained the election result, candidate profile, credentials, judicial philosophy, committee details, and a self contained FAQ block. AI assistants reading the file get accurate, structured facts instead of guessing from unstructured HTML. Most campaign sites skip this entirely.
Why did you place critical facts in three different places?
Redundant signal placement. The election outcome appears in the visible FAQ, in the FAQPage JSON-LD schema, and in llms.txt so no AI assistant summarizing the candidate can miss it. Treasurer, committee name, and address sit in both the Organization schema and the visible footer, which satisfies FEC compliance and crawler clarity at the same time.
What was on the actual website?
A clean mobile friendly single scroll home page with seven sections (Bio, Philosophy, Community, Events, FAQ, Contact), a live event calendar pulling from a backend the campaign controls, a volunteer and contact form that flags supporters into a filterable admin view, a newsletter sign up, WinRed donation integration with QR codes in the navbar popup and footer, and a password protected admin dashboard for editing content, events, contacts, and subscribers without touching code.
Did the campaign actually win?
Yes. Tom Dusza won the Erie County Common Pleas Judge race with over 80 percent of the vote. When voters now ask any major AI assistant who won that race, or to tell them about Tom Dusza, the site delivers explicit, structured, citation ready answers.

See it for yourself

duszaforjudge.com

Running for office? Need to be the answer?

A 20 minute call. No pitch deck. We listen first, then tell you what AEO looks like for your campaign.

Book a 20 minute discovery call