Capstone 3 Student Guide: The Campaign Analytics Plan
Overview
You are Nadia Osei's new analytics associate on the Garza Senate campaign, hired 60 days before Election Day. Nadia is ODA and Meridian Research Group veteran, the Garza campaign's analytics director, and she is depending on you to help build and execute the campaign's complete analytics plan.
This capstone is the practitioner-facing culmination of the entire textbook. Every major analytical framework you have learned — voter file analysis, targeting, polling, field program design, measurement, ethics — is integrated here into a single, coherent campaign plan. You are not analyzing a campaign from the outside. You are building one from the inside.
This capstone is a practical skills exercise. The deliverables produce documents that resemble real campaign materials. Your grade reflects the rigor, coherence, and practical utility of your plan — not whether it exactly matches a model answer. A plan that makes defensible choices, documents its reasoning, and demonstrates genuine understanding of the tradeoffs is a successful plan, even if individual decisions differ from what the "standard" approach would recommend.
Learning Objectives
By the end of this capstone, you will be able to:
- Construct voter universes from a voter file using support score, turnout propensity, and persuadability criteria
- Build a county-level targeting strategy using an expected-value resource allocation model
- Design a contact program (field, mail, phone, digital, text) with realistic timelines and KPIs
- Construct an internal polling and research plan appropriate for a competitive Senate race
- Build a measurement framework with specific KPIs and a weekly reporting cadence
- Develop a realistic campaign analytics budget with per-line-item rationale
- Apply ethics and equity frameworks to a campaign targeting plan, identifying specific concerns and remediations
Required Readings and Resources
Before beginning the capstone deliverables, review:
- Chapter 44 (this capstone's main text) — complete
- Chapter 29 (Voter Targeting and Microtargeting) — especially Sections 3-5
- Chapter 33 (Voter Contact Dashboard) — especially the Python dashboard implementation
- Chapter 14 (Turnout) — especially Sections 2-4
- Chapter 38 (Ethics of Political Analytics) — complete
- Chapter 39 (Race and Data Justice) — complete
- The ODA voter file documentation (this student guide's Data Appendix section)
Optional reading for deeper engagement: - Chapter 28 (Data-Driven Campaigns) — organizational context for your work - Chapter 30 (Field Experiments) — provides research foundation for turnout lift assumptions
Deliverables
This capstone has five deliverables.
Deliverable 1: Voter Universe Analysis (25% of grade)
What you submit: A complete voter universe analysis in two parts — a written document (1,500-2,000 words) and a Python notebook implementing the universe construction.
Written document must include:
-
Universe construction rationale: Explain the decision rules for each universe (persuasion, GOTV, fundraising). For each criterion (e.g., "support score 40-60 for persuasion"), explain why that threshold was chosen, what voters at the boundary look like, and what happens to voters who fall just outside the threshold.
-
Turnout propensity proxy: Document the proxy you constructed from vote history variables and explain your weighting choices. Why is 2022 vote history weighted more heavily than 2018? Why does age receive an adjustment?
-
Priority tier logic: Within each universe, explain the criteria for Tier 1 (highest priority), Tier 2 (medium priority), and Tier 3 (lower priority) designations.
-
County-level strategic analysis: Identify the three most strategically important counties for the Garza campaign based on your universe analysis. For each, explain: Why is this county important? What is the primary program (persuasion vs. GOTV)? What is the strategic goal (maximize margin, limit losses, flip)?
-
Universe overlap discussion: Where do your three universes overlap? How should the campaign handle a voter who appears in both the persuasion and GOTV universes?
Python notebook must implement:
- Turnout propensity calculation from vote history variables
- Persuasion universe construction with priority tiers
- GOTV universe construction with priority designation
- Fundraising prospect identification
- County-level summary table showing universe size and composition for each county
- At least two visualizations (your choice — consider: support score distribution, universe size by county, priority tier breakdown)
Deliverable 2: Targeting Strategy and Contact Program (25% of grade)
What you submit: A complete targeting strategy and contact program plan (2,000-2,500 words).
The plan must specify:
Targeting strategy:
-
The four priority demographic segments, with: current support level (from Meridian polling summary provided in Data Appendix), strategic rationale for prioritization, and primary/secondary message track assignment from the campaign's message matrix.
-
Geographic resource allocation — which three counties or county groups should receive the highest field investment, and why? Show your expected-value reasoning.
-
One ethical constraint on your targeting strategy: describe a targeting approach you are explicitly choosing not to use, and explain why.
Contact program (for each of the five program components — canvassing, phone, mail, text, digital):
- Target universe (which universe tier does each program primarily serve?)
- Timeline (when does this program run? When does it escalate?)
- Projected contacts (how many can you realistically make given realistic contact rates?)
- KPIs (what metrics will you track for this program?)
- Resource requirements (volunteer hours / staff hours / budget in rough terms)
Message matrix: Create a table showing primary and secondary message tracks for each demographic segment, with channel priority for each segment.
Integration note: Explain how digital and field programs will be coordinated so they reinforce rather than duplicate each other.
Deliverable 3: Polling and Measurement Framework (20% of grade)
What you submit: A polling plan and measurement framework (1,500-2,000 words).
Polling plan must specify:
-
The four internal surveys (benchmark, three tracking surveys) with: proposed timing, sample size, proposed methodology (phone CATI? Online? Mixed mode?), key questions for each survey beyond horse race, and how results will be presented to campaign leadership.
-
The split-sample message test you would embed in the 45-day tracking survey. Specify: what two framings are being tested, what question you would use to measure effect, and what you would do differently depending on the result.
-
How you would handle a situation where the Meridian internal poll shows Garza up by 6 but the public aggregate shows a 1-point race. Which number guides campaign strategy, and why?
Measurement framework must specify:
-
KPI tables for each contact program (can reference Deliverable 2 but must be compiled into a single measurement framework document here).
-
The weekly brief format Nadia sends to campaign manager Renata Diaz. Write a sample weekly brief as it would look at 35 days out, using realistic but hypothetical numbers. The brief must follow the four-section format from Section 6 of the main capstone text.
-
Three A/B tests you would run and why. For each: what is being tested, how randomization is assigned, what outcome measure you will use, and what the minimum detectable effect size would need to be to justify the test (approximate — you do not need to do a formal power calculation, but you should reason about whether the test is worth doing given likely effect sizes and sample sizes available).
Deliverable 4: Budget and Ethics/Equity Review (20% of grade)
What you submit: A complete budget memo (600-800 words) and ethics/equity review (600-800 words).
Budget memo (addressed to Campaign Manager Renata Diaz) must include:
-
A budget table with line items across the four major categories: voter contact programs, research and polling, technology and data, and staff. Dollar amounts should be realistic and proportionate (don't need to match the textbook exactly — make defensible choices).
-
For each major category, a one-sentence justification.
-
The "case for analytics investment" argument in three to four sentences. What is Nadia telling Renata to justify the analytics budget?
-
One specific contractor vs. staff decision: What function did you decide to contract out (rather than hire for), and why?
Ethics and equity review must include:
-
Application of Nadia's test ("Would I be comfortable if this plan were public?") to three specific components of your contact program. For each: what is the component, how does it fare on Nadia's test, and if it fails, what do you change?
-
Equity audit of your targeting plan: Does your plan systematically de-prioritize any community? Apply at least three questions from ODA's equity checklist to your plan. For each question, give a specific answer (not just "we are committed to equity").
-
An explicit statement of one constraint you are applying to your microtargeting approach, explained with reference to the ethics discussion in Section 3 of the main capstone text.
Deliverable 5: Executive Summary (10% of grade)
What you submit: The one-page overview and executive summary (as described in Section 9 of the main capstone text) for your complete analytics plan.
One-page overview (maximum one page, structured as described in Section 9): - Strategic situation (three sentences) - Universe summary (one condensed table) - Contact program projections (one condensed table) - Key decisions (three to five bullets) - Risk flags (two to three bullets) - Bottom line (one sentence)
Executive summary (two to three pages, eight paragraphs as described in Section 9): This is the document that would accompany your full analytics plan when submitted to campaign leadership. It must be written for a non-technical audience — no jargon, no methodology details, no code references. It tells the story of what the plan is and why it will work.
The executive summary should feel like a document you would actually be proud to hand to a campaign manager. Not a class assignment. A professional deliverable.
Timeline and Suggested Work Schedule
This capstone is designed for 15-20 hours of work over approximately two weeks.
Days 1-2 (3-4 hours): Read the main capstone text; review key prerequisite chapters (especially Ch. 29, 33, 38, 39); download and explore oda_voters.csv and oda_polls.csv
Days 3-6 (5-6 hours): Complete Deliverable 1 (Voter Universe Analysis) — this is the most time-intensive deliverable and establishes the foundation for all subsequent work
Days 7-9 (3-4 hours): Complete Deliverable 2 (Targeting Strategy and Contact Program) — builds directly on Deliverable 1
Days 10-12 (3-4 hours): Complete Deliverables 3 and 4 (Polling/Measurement and Budget/Ethics) — these can be done somewhat in parallel
Days 13-14 (2-3 hours): Complete Deliverable 5 (Executive Summary) and final review
Important note: Deliverable 5 should be written last — it summarizes the full plan and cannot be written coherently until Deliverables 1-4 are complete. Don't write the executive summary first and then fill in the details.
Working with the ODA Datasets
oda_voters.csv
This is your primary dataset for all universe construction work. Key columns:
| Column | Type | Notes for this capstone |
|---|---|---|
voter_id |
string | Unique identifier |
state |
string | All records are from the race's state |
county |
string | County name; use for geographic analysis |
age |
integer | Use for age-based turnout adjustment |
gender |
categorical | M / F / Other |
race_ethnicity |
categorical | White, Black, Hispanic, Asian, Other |
education |
categorical | Less than HS, HS, Some College, College, Grad |
income_bracket |
categorical | <30K, 30-60K, 60-100K, 100K+ |
party_reg |
categorical | Democrat, Republican, Independent, Other |
vote_history_2018 |
binary | 1 = voted, 0 = did not vote |
vote_history_2020 |
binary | 1 = voted, 0 = did not vote |
vote_history_2022 |
binary | 1 = voted, 0 = did not vote |
urban_rural |
categorical | Urban, Suburban, Rural |
support_score |
float | 0-100 scale; higher = more likely Garza supporter |
persuadability_score |
float | 0-100 scale; higher = more persuadable |
Important: The dataset contains approximately 50,000 rows — a teaching-scale sample of the full voter file. Your universe sizes will be proportionally smaller than a real Senate race (where the full voter file has millions of records), but the relative sizes and compositions should match.
Getting started with the voter file:
import pandas as pd
import numpy as np
voters = pd.read_csv('oda_voters.csv')
# Basic exploration
print(f"Total rows: {len(voters):,}")
print(f"\nColumn types:")
print(voters.dtypes)
print(f"\nParty registration distribution:")
print(voters['party_reg'].value_counts(normalize=True).round(3))
print(f"\nRace/ethnicity distribution:")
print(voters['race_ethnicity'].value_counts(normalize=True).round(3))
print(f"\nSupport score summary:")
print(voters['support_score'].describe())
print(f"\nPersuadability score summary:")
print(voters['persuadability_score'].describe())
# Check vote history patterns
print(f"\nVoters who voted in all three cycles:")
voted_all = ((voters['vote_history_2018']==1) &
(voters['vote_history_2020']==1) &
(voters['vote_history_2022']==1)).sum()
print(f" {voted_all:,} ({voted_all/len(voters)*100:.1f}%)")
print(f"\nVoters who voted in no cycles:")
voted_none = ((voters['vote_history_2018']==0) &
(voters['vote_history_2020']==0) &
(voters['vote_history_2022']==0)).sum()
print(f" {voted_none:,} ({voted_none/len(voters)*100:.1f}%)")
oda_polls.csv
Use this dataset to examine the polling landscape for the Garza-Whitfield race and to calibrate your internal polling plan.
polls = pd.read_csv('oda_polls.csv')
# Filter to the Garza-Whitfield race
gw_polls = polls[polls['race_type'] == 'senate_general'].copy()
gw_polls_sorted = gw_polls.sort_values('date', ascending=False)
print("Most recent polls:")
print(gw_polls_sorted[['date', 'pollster', 'pct_d', 'pct_r',
'sample_size', 'margin_error', 'population']].head(15))
# Calculate polling average (simple unweighted)
recent = gw_polls_sorted[gw_polls_sorted['date'] >= '2024-08-01']
print(f"\nSimple average (recent polls):")
print(f" Garza: {recent['pct_d'].mean():.1f}%")
print(f" Whitfield: {recent['pct_r'].mean():.1f}%")
print(f" Margin: +{recent['pct_d'].mean() - recent['pct_r'].mean():.1f}% Garza")
Common Mistakes to Avoid
On universe construction: - Do not create a persuasion universe that is too large — if you're "persuading" 40% of the voter file, you're not targeting - Do not forget to apply a minimum turnout threshold to the persuasion universe — persuading a non-voter is usually wasteful - Do not overlap your GOTV and persuasion universes without a clear resolution rule for voters who appear in both - The fundraising universe comes from a different logic than persuasion and GOTV — don't just create it as a support score filter
On contact programs: - Be realistic about contact rates — claiming you'll canvass 90% of your universe when realistic contact rates are 25-30% is not a plan; it's a wish - Specify your timeline — "we'll do canvassing" is not a plan; "we'll complete 400 turf assignments per week, starting 55 days out" is a plan - Connect your KPIs to your universe — a KPI of "X contacts per week" should be calculable from your universe size and realistic contact rates
On budget: - Don't underbudget polling — polling is the only way to know if your strategy is working - Don't assume volunteers are free — they require staff time, training, materials, and logistics - Technology platforms have real costs — VAN licenses, digital targeting tools, and cloud computing add up
On ethics and equity: - Nadia's test ("Would I be comfortable if this plan were public?") requires honest self-assessment. If your answer is always "yes, of course," you're not actually applying the test - The equity review should identify real tensions, not just affirm that you care about equity. Real tensions exist — find them
Grading Philosophy
Nadia's standard for an analytics plan: "I need to be able to hand this to Renata and have her understand what we're doing, why we're doing it, and what we'd do if something changes."
Your deliverables will be graded on:
-
Internal coherence: Does your universe construction logically support your targeting strategy? Does your contact program actually cover your target universes? Does your measurement framework track what your programs are doing?
-
Quantitative realism: Are your numbers — universe sizes, projected contacts, budget allocations — internally consistent and realistic? (If your universe has 5,000 Tier 1 GOTV targets and you project 50,000 GOTV contacts, something is wrong.)
-
Strategic logic: Are your choices defensible? When you choose to invest heavily in County B and lightly in County F, is there a clear reason grounded in the data?
-
Professional quality: Is the executive summary something you'd actually hand to a campaign manager? Is the language clear, confident, and appropriately hedged where uncertainty exists?
-
Ethics integration: Is the ethics review substantive? Does it change anything about the plan?
A Note on the Experience
You are completing a capstone that asks you to inhabit the role of a campaign professional. Political analytics is a field where the stakes are high, the timelines are compressed, and the consequences of getting it wrong are real.
This simulation has lower stakes than the real thing — no election rides on your voter universe cutoffs. But the analytical habits you're building here are real. The discipline of documenting your reasoning. The commitment to honest uncertainty. The willingness to apply ethics and equity frameworks to your own work rather than just to others'. The ability to communicate complex analysis to a non-technical audience.
Those habits are what Nadia is trying to build in her new associate. They are what this textbook has been trying to build in you.
You've done the reading. You've worked through the exercises. Now build the plan.