For pollsters & survey research firms

Standardized poll-result maps for survey research

Take the crosstabs file you already produce and render a publication-grade regional, congressional-district, or county map in four steps. Statewide topline, regional vote intent, methodology coverage — embeddable in your client deliverable PDF or your press release page. The toolkit your interns can't make a mistake with.

What it looks like

A typical workflow for pollsters & survey research firms teams. Each line is one operation; together they take a few minutes and produce a published map plus a downloadable dataset.

# Pattern: a polling-firm analyst publishes a county-level
# margin map from a crosstabs file. Bring your own data — the
# call shape stays the same across polls and waves.

# Step 1: ingest the crosstabs CSV as a workspace dataset
mcp.call("ingest_dataset", {
  slug: "<your-poll-slug>",
  name: "<Poll label> — <state> <race> margin",
  collection: "us-counties", version: "tiger-2024",
  records: countyRows.map(r => ({
    external_id: r.county_fips,
    data: {
      candidate_a_pct: r.candidate_a_pct,
      candidate_b_pct: r.candidate_b_pct,
      margin: r.candidate_a_pct - r.candidate_b_pct,
      n_sub: r.n_subsample,
    },
  })),
})
  // → workspace dataset, one row per county in your crosstab

# Step 2: render a diverging choropleth (red / blue) bound to the margin field
mcp.call("create_report", {
  slug: "<your-poll-slug>-margin",
  name: "<Poll label> — county margin",
  public: true,
  config: {
    collection: "us-counties", version: "tiger-2024",
    datasets: [{
      slug: "<your-poll-slug>",
      field: "margin",
      label: "Candidate A − Candidate B (pts)",
      palette: "diverging",
      classify: { method: "equal_interval", bins: 7 },
    }],
    description: "Replace with the poll's own methodology block " +
                 "(n, field dates, sample frame, MoE).",
    tooltip_fields: [
      { field: "name", label: "County" },
      { field: "candidate_a_pct", label: "A %" },
      { field: "candidate_b_pct", label: "B %" },
      { field: "n_sub", label: "Subsample n" },
    ],
  },
})
  // → /v/<your-poll-slug>-margin (embed in the press release)

# Step 3: describe_report can draft the press-release paragraph
# once the dataset is bound to a real crosstab.
mcp.call("describe_report", { slug: "<your-poll-slug>-margin" })

What you can build

The tools you'd actually use

ingest_poll_crosstabs
One call: poll metadata + per-region crosstab rows → workspace dataset + public report with auto-derived margin, palette, and methodology description
ingest_dataset
Spreadsheet → workspace dataset, joined to any U.S. boundary (lower-level alternative when ingest_poll_crosstabs is overkill)
create_report
Render config + dataset → published report URL
describe_report
Claude narrates the map for the press release
render_map_bivariate
Two-variable map (e.g. margin × turnout)
compare_shape_versions
Difference between congressional-district boundaries across redistricting cycles
build_geojson
Reproducible appendix file for the methodology PDF
disaggregate_acs
Enrich your precinct-level crosstabs with Census tract demographics — area-weighted interpolation in one call
list_shape_collections
States, counties, congressional districts (113th–119th), state legislative districts, Census tracts (~84,000), ZIP code areas (~33,000), unified school districts, voting precincts
set_workspace_secret
Store routing-engine keys (Mapbox, Census) once, reference everywhere

How it differs from the alternative

vs. designing each release map by hand in Adobe Illustrator: same crosstab file in, publication-grade map file out, in seconds. vs. Datawrapper: the geography is pre-pinned to a specific Census edition and your data stays in your workspace. vs. building it on top of D3 + raw Census files: every join is one call, not a notebook.

Pricing for pollsters & survey research firms teams

Mid-size polling firms run on Pro ($50/month) for sub-workspaces — one per client account, fully isolated. National firms with high cadence should email about Enterprise. Full pricing details.

Crosstabs in, publication-grade map out.

Free tier covers a pilot wave — usually one race / region.

Get an API key

The same toolkit also covers grassroots organizing platforms & campaign tooling · healthcare & life sciences · civic tech & journalism · real estate & property tech · retail, consumer brands & site selection · insurance & risk modeling · logistics, delivery & field service · research, academia & think tanks — one U.S.-geography surface for any team whose question comes down to where.