Thirteen days to the primary.
Underperforming.
Sixty-six of one hundred sits in the underperforming band. This is an unusual case: the on-page work is among the strongest reviewed all cycle (Person plus PoliticalCandidate dual-type schema, AI crawlers explicitly welcomed in robots.txt, an llms.txt file, six languages declared, an Event entity for the primary itself, Chinese-language news coverage already wired in as subjectOf NewsArticle). What lags is the external authority signal. The candidate is missing from the CalMatters voter guide that lists seven candidates, missing from the Wikipedia article on the race, and not yet classified by AI assistants as one of the leading candidates. The site is doing the technical work right. The third-party authority is not yet returning the favor. Closing that gap inside thirteen days is the entire remit of this report.
Executive Summary
The condition of the campaign's digital presence, what it is doing well, and the three strategic priorities that compound fastest in the days remaining.
seanlee4california.com is a more technically advanced campaign site than any of the other ten candidates in the race. The schema graph is rich, the AI crawlers are welcomed by name, an llms.txt file has been published, the sitemap includes image annotations, and the candidate's biography is reinforced by a Caltech alumni declaration and a memberOf California Republican Party reference inside the structured data itself. The Chinese-language press coverage is wired into the schema as subjectOf NewsArticle entries with publisher and date. Most contested races would treat any one of these as a stretch goal.
What is not yet working is third-party authority. The CalMatters voter guide that voters open in the final two weeks names seven candidates including three other Republicans and does not name the candidate. The Wikipedia article on the race has empty candidate sections. The single AI assistant query 'who is running for California Insurance Commissioner 2026' returns five named candidates and the candidate is not among them. The technical foundation is doing its job. The external authority signals have not yet caught up. With thirteen days to the primary, closing that gap is what this audit is calibrated to do.
- Reclaim the voter-guide SERP before voters open one. CalMatters, KQED, KPBS, Ballotpedia, and Wikipedia are where undecided voters narrow eleven names to two. The candidate is currently invisible in the first three of those. Getting added is a thirteen-day push of targeted outreach, journalist briefings, and structured submissions, not a six-month editorial campaign.
- Win the AI classification query. The candidate already wins direct-name and policy queries. The query he loses is the one that matters most for an undecided voter: 'Who is running for California Insurance Commissioner 2026.' Closing that gap is a content surface play (declarative classification statements on the homepage), a third-party citation play (voter guide additions), and a Wikipedia push.
- Claim the Korsgaden opening. The California GOP's insurance pick brought Jan 6 baggage to the race. There is now an opening for a Republican who runs as the credible, science-credentialed, industry-experienced alternative without that liability. The site does not yet make that case in declarative, schema-extractable, AI-citable language. Making it before the primary closes the Republican lane.
Field Notes
Observations from sitting with the site, not from running a crawler. The things a table cannot quite catch.
The site is doing the technical work that almost no campaign does.
Person plus PoliticalCandidate dual-type schema. Event schema for the primary itself. subjectOf NewsArticle entries pointing at World Journal, HuarenOne, and AMTV Chinese-language coverage. llms.txt published. AI crawlers explicitly welcomed in robots.txt. Six languages declared in inLanguage. This is the highest schema sophistication reviewed this cycle. The site is making AI assistants the campaign's allies, not its blockers.
Voter guides do not see the candidate.
The CalMatters California Voter Guide, the canonical reference voters open in the final two weeks, names seven candidates in its insurance commissioner write-up. Three of those seven are Republicans (Merritt Farren, Robert P. Howell, Stacy Korsgaden). The candidate is not among them. The Wikipedia article on the 2026 California Insurance Commissioner election has section headers for each party's candidates and currently contains zero names. Voter guides are how undecided voters narrow eleven candidates to two. The candidate is being narrowed out before voters meet him.
The other Republican brought Jan 6 baggage to the race.
Stacy Korsgaden, the candidate the California GOP elevated as its insurance pick, is the subject of national insurance press coverage on her attendance at the January 6 rally. That is a structural opening: there is now a Republican in this race who can credibly run as the GOP option without that liability. The opening exists. The site does not yet claim it.
Two JSON-LD blocks tell two slightly different stories.
The homepage carries two separate JSON-LD script tags. Block one declares Person with @id #sean-lee and an Organization with @id #campaign. Block two declares Person with @id #person and an Organization with @id #committee. Same human, same committee, four different @ids. Block one declares six languages in inLanguage. Block two declares only en-US. Google will deduplicate where it can, but the conflicting signals are quiet noise where every signal should be clean.
Chinese-American outreach is real and structured.
World Journal, HuarenOne, and AMTV have all covered the candidacy in Traditional and Simplified Chinese. Those articles are wired into the schema as subjectOf NewsArticle entities with publication dates and the publisher's full Chinese name. The site declares 李先進 and 李先进 in alternateName. This is the most credible Chinese-American campaign positioning seen this cycle. The work has been done. It now needs to be matched in Spanish, Korean, and Vietnamese where the schema declares the languages but the visible content has not been verified.
The calculator is a real asset hiding in plain sight.
The /calculator/ page is a premium interactive widget. Most campaigns do not have one. It demonstrates technical sophistication and gives voters a reason to spend three to five minutes inside the campaign's own pages. It does not appear in the primary navigation in a way that would surface it to the average voter who lands on the homepage. The asset exists. The pathway to the asset is missing.
The headline lands. The headline above the headline does not.
Stop the rate hikes. Stop the cancellations. That is one of the strongest H1s in the field. It names the actual problem in voter-facing language. What sits above it (the eyebrow, the navigation choices) does not yet do as much work. A voter who lands cold on the page sees the strong H1 in the second viewport, not the first. The first viewport is the harder lift.
The site is built for the long game. The election is in thirteen days.
Every choice in the underlying architecture (the schema graph, the multilingual declarations, the calculator, the Event entity that lasts beyond the primary) reads as a campaign that intends to be governing in January, not just winning in June. That is the correct posture. It also means the work in the next thirteen days is not building the foundation. It is using the foundation already built to win the next two weeks of voter attention.
Refusing insurance industry contributions is the platform's clearest line.
The candidate's pledge to refuse insurance industry contributions is one of the most differentiated positions in a field of eleven candidates, and it is the kind of declarative line AI assistants quote when voters ask comparative questions. That line currently lives in candidate questionnaire interviews on third-party sites. It belongs more prominently on the campaign's own pages, in declarative phrasing, so the candidate's site is the source AI engines cite, not InsuranceNewsNet.
Keyword Opportunities
The terms California voters will actually type. Opportunity scores are directional, calibrated to statewide California search demand and SERP intent. The candidate already wins his own name; the work is in the comparative and classification queries.
| Keyword | Opportunity | Rank | Intent |
|---|---|---|---|
| sean lee california insurance commissioner | High | #1 | Navigational |
| dr sean lee insurance commissioner | High | #1 | Navigational |
| sean lee 4 california | High | #1 | Navigational |
| who is running for california insurance commissioner 2026 | High | Not in top 5 | Research |
| republican candidate california insurance commissioner | High | Not ranked | Research |
| sean lee vs stacy korsgaden | High | Not ranked | Research |
| california insurance commissioner candidates compare | High | Not ranked | Research |
| california insurance commissioner primary june 2 2026 | High | Not ranked | Transactional |
| california vote by mail 2026 | Medium | Not ranked | Transactional |
| ccrp california catastrophe reinsurance | High | Not ranked | Informational |
| fix california fair plan | High | Not in top 10 | Informational |
| stop california insurance premium hikes | High | Not in top 10 | Informational |
| california home insurance crisis | Medium | Not ranked | Informational |
| wildfire insurance california fix | Medium | Not ranked | Informational |
| sean lee caltech phd | Medium | Not ranked | Research |
| first chinese american california insurance commissioner | High | Off-site | Research |
| 李先進 加州保險廳長 | High | Off-site | Navigational |
| 李先进 加州保险厅长 | High | Off-site | Navigational |
| comisionado de seguros california 2026 | Medium | Not ranked | Research |
| candidato republicano comisionado de seguros | Medium | Not ranked | Research |
| california insurance commissioner debate 2026 | Medium | Not ranked | Research |
| sean lee endorsements california | Medium | Not in top 5 | Research |
| california insurance commissioner ballot 2026 | Medium | Not ranked | Transactional |
On-Page Issues
Where the campaign's existing pages can be tightened. Severity is calibrated to the thirteen-day window. Most items are quick wins because the foundation is already strong.
| Page | Issue | Severity | Impact if Unaddressed |
|---|---|---|---|
| Homepage | Two duplicate JSON-LD blocks with conflicting Person and Organization @ids | High | Search and AI engines see two slightly different versions of the candidate and the committee. Authority and signal weight that would otherwise consolidate around one entity gets split between two. Quiet noise where every signal should be sharp. |
| Homepage | Three other Republican candidates appear in major voter guides; this one does not | Critical | Voters opening the CalMatters guide narrow the field to seven candidates including three Republicans. The candidate is not among them. The same omission appears in Wikipedia. Voters narrow by what they find in voter guides, not by who runs the most sophisticated website. |
| Homepage | First viewport does not declare the party affiliation in voter-facing copy | Medium | The Republican Party membership is declared in the JSON-LD schema, not in the rendered HTML above the fold. A voter who lands cold on the page cannot tell which side of the aisle this candidate is on without scrolling. AI assistants extracting classification answers do not benefit from schema-only declarations as much as schema plus visible text. |
| Homepage | Headline above the H1 (eyebrow and nav) does not yet reinforce the proposition | Medium | The H1 is one of the strongest in the field. The space above it does less work than it could. A voter who scans the first viewport sees a navigation bar but not the proposition. |
| Homepage | Calculator is not surfaced in the primary navigation in a way most voters will see | Medium | The /calculator/ page is a premium interactive that demonstrates the candidate's analytical credibility. It is not currently linked from the primary nav in a way that catches a first-time visitor. The asset is built; the pathway to it is missing. |
| /about/ | Caltech credential and 'first Chinese American candidate' framing not as prominent as schema implies | Medium | The schema declares Caltech alumni and the historic first explicitly. The visible page narrative could lean harder on both. Both are differentiated credentials in a field of eleven candidates, and both are quote-ready for AI assistants and reporters. |
| /plan/ | CCRP plan is the centerpiece policy but does not yet have a dedicated extractable page | High | The California Catastrophe Reinsurance Partnership is the most differentiated policy in the field. AI assistants quote it when asked about the candidate's plan. The plan currently lives across the plan subpages without one canonical address. Citation patterns benefit from a single canonical URL per policy. |
| /plan/fair-plan/, /plan/wildfire/, /plan/affordability/, /plan/accountability/ | Issue pages depth and declarative phrasing not yet AI-optimized | Medium | Pages describe positions in narrative prose. AI assistants reward declarative statements ('Sean Lee will create the CCRP. Sean Lee opposes X. Sean Lee will require Y.') because they extract cleanly. Narrative paragraphs do not extract as well. |
| Site-wide | Six languages declared in WebSite.inLanguage; translated content coverage unverified | High | The site's structured data tells search engines and AI assistants that content exists in Spanish, Simplified Chinese, Korean, Vietnamese, and Japanese. If a voter follows that signal and finds only the English site, the trust signal breaks. Either the content is there and not yet linked, or the declaration overshoots the delivered work. |
| Site-wide | No standalone /vote page consolidating voter logistics for the June 2 primary | Critical | Voters in the final two weeks search for vote-by-mail deadlines, polling place lookup, ballot drop-off locations, ID requirements, and same-day registration. That high-intent traffic currently flows to the Secretary of State's site and to county registrars, not to the campaign. The candidate is absent from the moment a voter decides to act. |
| Site-wide | No comparison page positioning Sean Lee against the GOP-pick Republican | High | Voters in a top-two primary inevitably compare candidates head to head. The most strategically relevant comparison in the Republican lane is Sean Lee vs. Stacy Korsgaden. That SERP is currently unowned. Whichever candidate publishes the comparison page first shapes the framing. |
| Site-wide | No verified Google Knowledge Panel claim | High | Branded searches for 'Sean Lee' or 'Dr. Sean Lee' show only blue links. Other candidates in the race have verified knowledge cards. The authoritative entity panel Google reserves for politicians is empty for this candidate. |
| Site-wide | Refusing insurance industry contributions is the candidate's clearest differentiator and lives mostly off-site | Medium | The pledge to refuse insurance industry contributions appears in candidate questionnaire interviews on InsuranceNewsNet and similar publications. The candidate's own site does not yet make this declarative claim in a single canonical, schema-friendly format. AI assistants quote the third-party source instead of the campaign. |
| /news/ or /blog/ | Six posts published, content cadence not signaled in schema | Low | Six blog posts is real cadence. The posts are not currently wrapped in Article or NewsArticle schema in a way that makes Google Discover and AI summaries surface them at peak. |
| Sitemap | 23 URLs declared, image annotations present, no news sitemap segment | Low | The sitemap already references image schema. With six blog posts, a news segment would qualify the site for Google News inclusion if the candidate were to publish frequently enough. |
Content Gaps
The pages that should exist but do not, sequenced by what compounds before June 2 versus what positions for November 3.
Pre-primary the next thirteen days
Pre-general the next ninety days
Technical Review
Crawlability, structured data, and the infrastructure that determines whether the rest of this work can rank at all.
| Check | Status | What this means |
|---|---|---|
| HTTPS | Pass | Site is served securely with HSTS preload behavior. Cloudflare edge handles certificates and modern TLS. |
| Mobile-friendly | Pass | Mobile rendering is responsive, viewport-fit=cover is set for notch devices. |
| robots.txt present and welcoming AI crawlers | Pass | GPTBot, ClaudeBot, anthropic-ai, Claude-Web, PerplexityBot, Google-Extended, CCBot all explicitly allowed. This is the gold-standard 2026 posture and almost no campaigns have it. |
| llms.txt published | Pass | An llms.txt file at the domain root signals to AI assistants what content to read and how. Vanishingly rare on the open web, and a 2026-tier AEO signal. |
| XML sitemap with image annotations | Pass | Twenty-three URLs declared. Image:image annotations on key pages with image:title. Better than nearly every other campaign site. |
| Canonical tags | Pass | Self-referential canonical declared on the homepage and subpages. |
| Page speed | Warning | Modern stack with preconnect to fonts.gstatic.com and deferred font loading via onload. Core Web Vitals not measured live in this pass. |
| Core Web Vitals | Warning | Real-user metrics not measured. Inferred performance is strong based on markup but should be verified before primary. |
| Structured data | Warning | Best-in-class schema: Person plus PoliticalCandidate dual-type, Organization, WebSite, Event for the primary, FAQPage, subjectOf NewsArticle in three languages. The one defect is two JSON-LD blocks declaring the same entities with different @ids. |
| Open Graph metadata | Pass | og:type, og:url, og:title, og:description, og:image all declared. og:image uses a dynamic /og endpoint that generates per-share previews. |
| Twitter Card | Pass | summary_large_image card with title, description, image all set. |
| Title tags | Pass | Title leads with 'Dr. Sean Lee for California Insurance Commissioner · Primary June 2, 2026.' Strong, specific, election-aware. Almost no campaigns include the primary date in the title. |
| Meta descriptions | Pass | Homepage description leads with the candidate, the office, the experience claim, and the primary date. Strong. |
| Image alt text | Pass | Every image on the homepage carries an alt attribute. Accessibility and SEO both benefit. |
| theme-color | Pass | #002868 (Old Glory blue) declared. Mobile browser chrome adopts the brand color. Almost no campaigns set this. |
| Internal linking | Warning | Twenty-three pages give the site real depth, but internal cross-linking between pages (especially between /plan/ subpages and /blog/ posts) is not fully exploited. |
Competitor Analysis
The candidate the California GOP elevated as its insurance pick, head to head with this campaign, on the dimensions that determine which Republican advances out of the June 2 primary.
| Dimension | seanlee4california.com | stacykorsgaden.com | Winner |
|---|---|---|---|
| Schema sophistication | Person+PoliticalCandidate dual-type, Organization, WebSite, Event, FAQPage, subjectOf NewsArticle in 3 languages | Basic WordPress, no detected JSON-LD | Sean Lee |
| AI crawler access | Explicit allow for GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot | Default WordPress robots.txt | Sean Lee |
| llms.txt | Published at root | Not present | Sean Lee |
| Pages indexed | 23 (Plan + 4 sub, blog with 6 posts, calculator, press, endorsements, etc.) | Estimated under 10 from public surface | Sean Lee |
| Multilingual presence | 6 languages declared, Chinese coverage wired in schema | English only | Sean Lee |
| Premium interactive (calculator) | /calculator/ widget | None | Sean Lee |
| Blog cadence | 6 posts | Light cadence externally | Sean Lee |
| FAQ schema | FAQPage with substantive answers | Not detected | Sean Lee |
| Sitemap quality | XML with image annotations | Default WordPress | Sean Lee |
| Brand search rank | #1 for 'Sean Lee insurance commissioner' | #1 for 'Stacy Korsgaden' | Tie |
| CA GOP endorsement | Not the official GOP-elevated pick | Elevated by CA GOP | Korsgaden |
| CalMatters voter guide naming | Not named | Named | Korsgaden |
| KQED voter guide naming | Not externally verified | Verified named | Korsgaden |
| Wikipedia race article naming | Not named (empty section) | Not named (empty section) | Tie |
| Press coverage tone · shadow search 'controversy' | Clean SERP | InsuranceNewsNet Jan 6 coverage on page one | Sean Lee |
| Scientific credentials surfaced | Caltech PhD declared in schema and content | Insurance agent license | Sean Lee |
| Industry contributions stance | Pledged refusal of insurance industry money | Stance not externally documented | Sean Lee |
Performance & Speed
How quickly seanlee4california.com loads, renders, and becomes interactive on the devices voters actually use.
| Check | Status | What this means |
|---|---|---|
| Mobile Performance | Warning | Modern stack signals strong performance: deferred font loading, preconnect to font CDN, mobile viewport-fit=cover. Live PageSpeed Insights not measured this pass. |
| Largest Contentful Paint (LCP) | Warning | The candidate hero portrait is the likely LCP element. Without preload hint or measured render time, the score is inferred not verified. |
| Image Optimization | Warning | Asset paths use .png for the hero and the sitemap declares .png. WebP variants and responsive srcset have not been confirmed. |
| Render-Blocking Scripts | Pass | Google consent mode v2 is loaded synchronously but is small. Font loading is deferred via media swap. No obvious render-blocking culprit beyond standard analytics. |
| Font Loading | Pass | preconnect to fonts.googleapis.com and fonts.gstatic.com is declared. Font loading uses media swap technique to avoid render blocking. Strong. |
| Cumulative Layout Shift (CLS) | Warning | Web fonts loaded asynchronously can cause CLS during font swap if explicit dimensions are not set on images and text containers. |
| Caching and CDN | Pass | Cloudflare edge with HSTS, HTTP/2, modern TLS. Assets served with appropriate cache-control. The /og dynamic endpoint allows per-share OG image generation. |
| Mobile Viewport | Pass | viewport-fit=cover set for notched devices. Mobile-first markup throughout. |
| PageSpeed Insights Live Test | Warning | Not measured in this pass. Should be measured as a Phase I baseline. |
Local Presence
How the campaign and the candidate show up in local discovery surfaces. For a statewide California race, 'local' means major metros (Los Angeles, San Diego, Orange County, Bay Area, Sacramento, Central Valley) and the in-language communities inside each.
| Check | Status | What this means |
|---|---|---|
| Google Business Profile (Campaign) | Warning | Campaign GBP status not externally verified. A statewide race benefits less than a city council race from GBP, but Orange County voters searching 'sean lee campaign office irvine' should find a result. |
| Apple Maps Listing | Warning | No campaign Apple Maps listing identified. Approximately half of mobile map queries on iPhone route through Apple Maps. |
| Bing Places | Warning | No campaign Bing Places listing identified. Bing serves DuckDuckGo, Yahoo, ChatGPT search, and older desktop traffic. |
| NAP Consistency | Pass | Campaign address (300 Spectrum Center Drive, Irvine, CA 92618), phone, and FPPC committee number consistent across the JSON-LD blocks and externally referenced where verifiable. |
| Chinese-Language Press Geo-Coverage | Pass | World Journal (San Francisco edition), HuarenOne, AMTV (Los Angeles area) cover Orange County and broader California Chinese-American communities. The schema-wired subjectOf NewsArticle entries anchor local relevance. |
| Local Directory Citations | Warning | California-specific civic directory listings (CalMatters voter guide, KQED voter guide, KPBS election center, Cal Local) are mixed in coverage. Some include the candidate; the highest-traffic do not. |
| County Registrar Listings | Pass | The candidate is officially on the June 2 primary ballot. Secretary of State and county registrars list him correctly. |
| NextDoor Presence | Warning | NextDoor reaches hyperlocal voters in California's neighborhoods. Orange County and Bay Area NextDoor communities are active. Campaign presence not externally verified. |
| Local News Citations | Warning | Insurance trade press (InsuranceNewsNet, Insurance Journal) and Chinese-language press cover the candidacy. Mainstream California regional press (LA Times, Sacramento Bee, San Diego Union-Tribune) coverage thinner. |
| Town Hall and Forum Engagement | Warning | Multiple insurance commissioner forums and debates are scheduled. The campaign attended the AMTV launch event in Irvine and a Clark County Republican Convention. Documentation on the site is light. |
AEO · Answer Engine Optimization
How the campaign shows up when voters research the race through AI assistants (ChatGPT, Claude, Perplexity, Google AI Overviews, Gemini). The site does most of the technical work other campaigns ignore. The gap is in third-party authority.
| Check | Status | What this means |
|---|---|---|
| AI Crawler Access | Pass | Every major AI crawler explicitly welcomed in robots.txt: GPTBot, ClaudeBot, anthropic-ai, Claude-Web, PerplexityBot, Google-Extended, CCBot, cohere-ai, FacebookBot, meta-externalagent, Applebot-Extended. The gold-standard 2026 posture. |
| llms.txt | Pass | Published at the domain root. Signals to AI assistants what content the candidate has authorized for citation. Vanishingly rare on the open web. |
| Structured Data Schema | Warning | Person plus PoliticalCandidate dual-type. Organization. WebSite. Event for the primary. FAQPage. subjectOf NewsArticle in three languages. Two JSON-LD blocks with conflicting @ids is the one defect. |
| Google Knowledge Panel | Fail | No verified knowledge card for the candidate. Other candidates in the race have one. Branded searches show blue links instead of the entity panel Google reserves for politicians. |
| Wikipedia Entry | Fail | The Wikipedia article on the 2026 California Insurance Commissioner election exists with empty candidate sections. No personal article for the candidate. AI assistants weight Wikipedia disproportionately; absence reads as 'not yet notable.' |
| CalMatters Voter Guide | Fail | CalMatters' insurance commissioner voter guide names seven candidates including three other Republicans. The candidate is not among them. CalMatters is the highest-traffic California voter guide and AI assistants cite it heavily. |
| Ballotpedia Profile | Warning | Profile exists at ballotready.org/people/sean-lee. Detail and completeness not at parity with the other Republicans in the race who have more developed profiles. |
| FAQ Coverage and Schema | Pass | FAQPage schema present on the homepage. Substantive answers covering 'Who is Dr. Sean Lee,' 'When is the primary,' 'What is the CCRP plan,' 'Why are California premiums so high.' AI assistants extract from these formats more cleanly than from prose. |
| Cross-Profile sameAs Links | Pass | Person schema declares sameAs links to Instagram, TikTok, Facebook, LinkedIn. Two blocks declare these slightly differently. Consolidating fixes that. The signal coverage is otherwise strong. |
| Chinese-Language News subjectOf | Pass | subjectOf NewsArticle entries pointing at World Journal, HuarenOne, and AMTV in Traditional and Simplified Chinese. This is rare schema sophistication and a strong signal for Chinese-American voter discovery via AI assistants. |
| AI Assistant Live Test | Warning | Tested live on May 20, 2026 against three queries voters actually ask. Query one (navigational, 'Sean Lee California Insurance Commissioner 2026'): the campaign site ranked first and the AI synthesis covered the candidate's Caltech credentials, the CCRP plan, and the refusal-of-industry-money pledge accurately. Win. Query two (classification, 'Who is running for California Insurance Commissioner 2026'): the AI named five 'leading candidates' including Ben Allen (D), Steven Bradford (D), Jane Kim (D), Stacy Korsgaden (R), and Patrick Wolff (D). The candidate was not named. Loss. Query three (policy, 'Sean Lee California Insurance Commissioner FAIR Plan position'): site ranked first, CCRP three-pillar plan extracted accurately. Win. Two of three. |
Tracking & Measurement
Whether the campaign can measure what it is already paying for. The site has GTM installed (a strong start). The question is what is measured and what is acted on.
| Check | Status | What this means |
|---|---|---|
| Google Tag Manager (GTM) | Pass | GTM container is loaded. The orchestration layer for every other tracking script is in place. Adding pixels later is a config change, not a code change. |
| Google Consent Mode v2 | Pass | Consent default declared before GTM loads. ad_storage, ad_user_data, ad_personalization, analytics_storage all default to denied. Compliance-aware setup that handles California CCPA and EU/UK visitor consent. |
| Google Analytics 4 (GA4) | Warning | Likely installed via GTM but conversion event configuration not externally verified. |
| Facebook / Meta Pixel | Warning | Not verified in the homepage source. Required to retarget Meta visitors and measure Meta ad conversion. |
| Google Ads Conversion Tracking | Warning | Not verified. Required to measure ROI on Google search ads or YouTube ads. |
| LinkedIn Insight Tag | Warning | Not verified. Statewide California campaign donor audiences include high-net-worth Bay Area and OC tech, legal, and finance professionals reachable via LinkedIn. |
| X / Twitter Pixel | Warning | Not verified. Lower priority than Meta but relevant for the political reporter audience X concentrates. |
| Conversion Events Defined | Warning | Specific conversion events not externally enumerable. The calculator page is a high-value engagement signal that should be tracked. |
| UTM Parameter Strategy | Warning | UTM convention not externally verifiable. Donation links and social posts should carry consistent utm_source / utm_medium / utm_campaign / utm_content tags. |
| Server-Side Tracking (Conversions API) | Warning | Not externally verifiable. iOS 14+ and browser privacy have eroded client-side tracking. Server-side is the modern fix. |
Brand SERP & Reputation
What a voter actually sees when they Google the candidate's name. The first page of search results is the campaign's de facto landing page, whether the campaign controls it or not.
| Check | Status | What this means |
|---|---|---|
| Brand Search Rank | Pass | seanlee4california.com ranks first for 'Sean Lee California Insurance Commissioner' and 'Dr. Sean Lee Insurance Commissioner.' Foundational win. The base to build defensive real estate from. |
| Google Knowledge Panel | Fail | No verified knowledge card. Other candidates in the race have one. Voters searching the candidate's name see only blue links instead of the authoritative entity card. |
| Image Pack | Warning | Image carousel for the candidate's name is sparse. The visual band Google reserves for recognizable figures has limited candidate imagery. Image schema is declared in the sitemap which helps but does not fill the carousel alone. |
| People Also Ask | Warning | Google's PAA questions for the candidate route to InsuranceNewsNet, BallotReady, and factually.co. The site's own FAQPage schema is positioned to capture this but has not yet displaced the third-party content. |
| First Page Result Mix | Warning | Top ten results for 'Sean Lee California Insurance Commissioner' include the campaign site, BallotReady, factually.co, InsuranceNewsNet (twice), LinkedIn, the Secretary of State voter guide. The campaign site is first but it shares the page with content the campaign does not control. |
| factually.co Coverage | Warning | factually.co has a 'Who Is Sean Lee and What Is His Plan' fact-check article ranking on page one. Fact-check sites are read carefully by AI assistants. Coverage tone and accuracy should be monitored. |
| Shadow Search · 'controversy' | Pass | Google search for 'Sean Lee insurance commissioner controversy' returns no significant negative content. Notable contrast: the same shadow search for Stacy Korsgaden returns the InsuranceNewsNet Jan 6 coverage at top of page. |
| Shadow Search · 'ethics OR scandal' | Pass | No ethics-related negative content surfaces. Clean reputation surface for a candidate at this stage of a statewide race. |
| Wikipedia Race Article | Fail | Wikipedia article 2026_California_Insurance_Commissioner_election exists with empty candidate sections. Sean Lee is not named. Wikipedia is the single most-weighted authority signal for both Google and AI assistants. |
| CalMatters Voter Guide Coverage | Fail | CalMatters guide names seven candidates including three other Republicans. The candidate is not named. CalMatters is the highest-traffic California voter guide. |
Accessibility & Compliance
Where the site sits against WCAG 2.1 AA, ADA exposure, and the campaign-specific compliance obligations (FEC, FPPC, SMS, cookies). For a public office candidate in California, this is legal risk in addition to UX risk.
| Check | Status | What this means |
|---|---|---|
| Image Alt Text | Pass | Every image on the homepage carries an alt attribute. Confirmed in the On-Page section. The most-cited WCAG violation in complaints is handled. |
| Color Contrast (WCAG 2.1 AA) | Warning | Site uses Old Glory blue (#002868) and red (#BF0A30) as primary brand colors against white. Contrast against body text is generally strong but per-element verification has not been run. |
| Keyboard Navigation | Warning | Tab order, focus indicators, and skip links not externally tested. Required for ADA compliance. |
| ARIA Labels on Interactive Elements | Warning | Custom buttons, the donation CTA, calculator inputs, and form fields likely have variable ARIA coverage. Required for screen reader access. |
| Form Accessibility | Warning | Forms (contact, volunteer, newsletter when added) need programmatically associated labels. |
| FEC 'Paid for by' Disclaimer | Warning | FPPC committee #1489551 is declared in the JSON-LD Organization schema. Visible 'Paid for by' disclaimer placement across every page not externally verified. |
| California FPPC Disclosure | Warning | California has state-level disclosure requirements separate from federal FEC obligations. Coverage on the site not externally audited. |
| Cookie Consent and Privacy Posture | Pass | Google consent mode v2 is implemented with denied defaults across all categories. Strong CCPA and broader privacy posture for a California candidate. |
| SMS Compliance (TCPA, A2P 10DLC) | Pass | /sms-privacy/ page exists. Political SMS is heavily regulated; having a public terms page is the first compliance signal. |
| Privacy Policy | Pass | /privacy/ exists. Coverage against CCPA and any California campaign-specific obligations not externally audited. |
| Accessibility Statement | Warning | No /accessibility page identified. Best practice for any public-facing site and a defensive document for an ADA complaint. |
Crisis Preparedness
How prepared the campaign is for the moment a reporter, opponent, or news cycle puts it under pressure. A campaign with no crisis infrastructure becomes the story on the day a crisis hits.
| Check | Status | What this means |
|---|---|---|
| /press URL | Pass | /press/ returns 200. The page exists. Most challenger campaigns do not have one. |
| Press Release Quality | Warning | Six blog posts read more as campaign storytelling than AP-style press releases. Reporters who need quote-ready, boilerplate-ready material may not find it in the current format. |
| Downloadable Bio and Headshot | Warning | The /press page exists; the presence of downloadable assets (bio in three lengths, headshot in web and print resolution, logo files) not externally verified. |
| Rapid Response URL | Warning | No /response, /facts, /clarification URL externally identified. When false claims circulate, the campaign needs a canonical rebuttal URL. |
| Media Contact Surface | Pass | Email contact DrLee@SeanLee4California.com declared in JSON-LD Organization schema. /contact page exists. |
| Pre-Approved Statements Library | Warning | No internal library of pre-approved candidate positions externally visible. When a question lands during a press hit, the response is improvised. |
| Korsgaden Response Readiness | Warning | Stacy Korsgaden's Jan 6 baggage will inevitably surface in coverage that mentions both candidates. The campaign needs a calibrated, civil, factual response prepared in advance. Improvisation under pressure tends to overplay or underplay. |
| Social Pinned Crisis Capacity | Warning | When a crisis hits, social profiles need pinned-post infrastructure to push a unified message. The campaign has multiple social accounts; the coordination protocol is the question. |
| Defensive SERP Real Estate | Warning | Without owned content density on the first page of Google, a negative news cycle dominates the SERP and the campaign cannot push back. |
| SMS Rapid Notification | Pass | /sms-privacy/ page exists, indicating TCPA-aware SMS program is at least set up. List size, opt-in volume, and rapid-send protocol not externally verifiable. |
| Owned Domain Variant Defense | Warning | Whether seanlee4california.org, .net, drseanlee.com, and similar variants are owned by the campaign is not externally visible. Variant domains are how opposition attack sites get registered. |
Phased Methodology
Three phases, sequenced for the calendar. Each phase is defined by outcomes, not tasks. Together they describe the arc of work between today and November 3.
Foundation
Now through May 25Consolidate the schema graph, claim third-party authority surfaces, ship the voter-information page, position the campaign as the credible Republican in the lane, and surface what is already excellent on the site.
- A single consolidated JSON-LD @graph replaces the two competing blocks. Entity authority consolidates around one Person, one Organization, one WebSite, with the Event, FAQPage, and Chinese-language subjectOf NewsArticles carried forward.
- The candidate is named in CalMatters, KQED, KPBS, and Ballotpedia voter guides through direct editorial outreach and structured candidate submissions.
- A dedicated voter-information page (/vote) claims the high-intent search traffic flowing in the final two weeks of the primary cycle.
- A Republican-lane comparison page (/republican-choice) positions the candidate against the GOP-pick Republican with civil, factual sourcing.
- The no-industry-money pledge moves from third-party interview citation to a canonical owned page that AI assistants cite directly.
- Google Knowledge Panel claimed, verified, and populated.
- The first viewport of the homepage declares the party affiliation in voter-facing text, not only in schema.
Penetration
May 26 through June 9Move the campaign into the searches voters actually run in the final stretch, capture late-deciding voters, dominate the AI classification query, and saturate in-language outreach in Spanish and Chinese before primary day.
- A consistent news cadence keeps the campaign fresh in algorithmic eyes and visitor perception.
- The CCRP plan has a single canonical URL with FAQPage schema, internal-linked from every /plan/ subpage.
- Issue pages carry declarative 'Where Sean Stands' blocks that AI assistants extract cleanly.
- Spanish-language /es/votar and /es homepage mirror reach Hispanic voters in their language with hreflang reciprocity.
- Simplified Chinese /zh-Hans mirror joins the existing Chinese-language press coverage as owned canonical content.
- The 'who is running for California Insurance Commissioner' AI query begins surfacing the candidate by name (re-tested weekly).
- Endorsements hub expands with Quotation schema, photographs, and weekly updates.
- Social profiles speak in one coordinated voice across Instagram, TikTok, Facebook, LinkedIn, and (when claimed) X.
Durability
June 10 through November 3Convert the primary's result into a durable digital presence that wins the general election across search engines, answer engines, local discovery surfaces, and the moments of pressure that decide statewide races.
- Wikipedia coverage lands: the 2026 race article names the candidate and a personal article moves through editorial review.
- Full multilingual content ships in Spanish, Simplified Chinese, Traditional Chinese, Korean, Vietnamese, and Japanese, matching every declaration in the inLanguage schema.
- Regional press coverage (LA Times, Sacramento Bee, San Diego Union-Tribune, San Francisco Chronicle) anchors citation density.
- Local presence (GBP, Apple Maps, Bing Places, NextDoor, in-state forums) saturates discovery surfaces voters use to navigate the campaign in every metro.
- Full accessibility remediation closes ADA exposure across the site.
- Crisis infrastructure hardens: rapid-response URL, statements library, defensive domain variants, Korsgaden response language pre-approved by counsel.
- Performance optimization (verified WebP, preload, deferred scripts) lifts measured Core Web Vitals into the green band.
- The candidate's online presence reads, by election day, as the equal or better of every other California statewide candidate across Google, the AI answer layer, every social platform, and every in-language community.
The Reality
Every dollar this campaign spends on social media, mailers, ballot drop literature, paid ads, regional radio, in-language outreach, or canvass operations assumes one thing: that when a voter actually researches the candidate, what they find reinforces the message. The on-page work has been done at a level few campaigns reach. The third-party authority signals have not yet caught up. A radio spot that drives a Hispanic voter to look up the candidate sends them to a CalMatters voter guide that does not name him. A Chinese-American voter who hears about the race opens ChatGPT and gets a five-candidate list the candidate is not part of. A donor who Googles his name reads about him in InsuranceNewsNet rather than on his own canonical pages. This is the hamster wheel. Velocity without compounding. Activity without leverage.
This audit is not a tactical to-do list. It is the description of how to convert an already-excellent technical foundation into the voter-guide presence, the AI classification slot, and the regional press coverage that decide statewide primaries. The work in Phases I through III does not replace the campaign's broadcast, field, or in-language outreach. It makes those investments work. Without this foundation closing, the campaign spends harder and converts less, and the gap between dollars in and votes out widens with every cycle of activity. With it, every channel compounds.
One dimension this audit deliberately did not address, because it warrants its own engagement, is the candidate's professional online presence. Voters who take a statewide candidate seriously do not stop at the campaign site. They look at LinkedIn. They look at the businesses the candidate has built and led. They look at academic coverage from the Caltech and JPL years. They look at personal social profiles that predate the candidacy. Today, those surfaces have not yet been deliberately aligned with the campaign's story. A voter who reaches the LinkedIn profile finds a financial services executive. A voter who reaches the campaign site finds a candidate for statewide office. They are the same person. The two narratives have not been merged. This is an unaddressed alignment problem and a quiet credibility risk that becomes audible the day a reporter, an opponent, or an undecided voter starts looking past the homepage.
Given the depth of execution, the statewide scale, and the thirteen-day window to primary, $85,000+ is a very conservative market value for this scope. Everything described in this report sits within Integrity Agency's scope to deliver, in partnership with Nexcite. Where specialist hands are required: campaign counsel for FEC, FPPC, and TCPA compliance review, a Wikipedia editor for the encyclopedic articles, formal accessibility certification, and professional photography of the candidate.
We front-end load the value.
This document was prepared by Integrity Agency in partnership with Nexcite Entertainment. Volumes and difficulty estimates are directional and calibrated to publicly available California search data. The candidate's professional online presence (LinkedIn, business entities, Caltech and JPL era coverage, personal social profiles) is not covered in this report and is recommended as a separate engagement.
Social & Cross-Channel
How the campaign coordinates across platforms voters live on. A campaign that speaks in one voice across six channels is harder to dismiss than one that exists as six disconnected accounts.