# The Candidate — long-form LLM-discovery pointer This file is the expanded companion to /llms.txt. Both files target modern AI crawlers + agentic-fetch tooling that prefers an authoritative-text pointer over scraping the rendered HTML. ## What thecandidate.com publishes The Candidate is a neutral, public reference site for U.S. federal candidates, races, elections, and federal-office-holder history. Every sourced fact carries an inline citation and a verification timestamp. Candidate-authored content ("Claim this page") is clearly separated from sourced content and labeled as such. ## Scope — coverage census (live corpus counts) Coverage by office class. Every number below is a LIVE corpus count regenerated by `npm run generate:llms`; the count-drift gate in `verify:closeout` fails the build if any number here diverges from the database, so these counts are never stale (Sprint 35 Task 02): - U.S. Presidents — 46 former (1789–present); the historical-president surface. - U.S. Senators — 2,018 total (100 serving, 1,918 former). - U.S. Representatives — 10,749 total (437 serving, 10,312 former). - State governors — 363 total (55 serving, 308 former). - State legislators — 8,269 total (6,426 serving, 1,843 former); both chambers. - Supreme Court justices — 116 total (9 serving, 107 former); appointed, life-tenured. - Cabinet secretaries — 591 total (15 serving, 576 former); appointed, 15 executive departments. - Circuit-court judges — 837 total (293 serving, 544 former); appointed, the 13 U.S. Courts of Appeals (sitting + former). ## Canonical URL families - Federal candidate profile: https://thecandidate.com/candidates/{slug} - Federal race page: https://thecandidate.com/races/{slug} - Office hub: https://thecandidate.com/federal/{president|senate|house} - Office directory (cycle): https://thecandidate.com/federal/{office}/{cycle-year}/candidates - Federal judiciary: https://thecandidate.com/federal/judiciary/{court}/{judge-slug} (court = scotus or a circuit slug) - Federal cabinet: https://thecandidate.com/federal/cabinet/{role-slug}/{secretary-slug} - State directory: https://thecandidate.com/states/{state-code} - Issue taxonomy: https://thecandidate.com/issues/{slug} - Federal party directory: https://thecandidate.com/parties/{party-slug} - Methodology + sourcing: https://thecandidate.com/methodology - About + corrections: https://thecandidate.com/about - Comparison tool: https://thecandidate.com/compare?a=&b= (noindex, follow) Bare slugs /president, /senate, /house are standalone Next-rendered SEO landing pages. They are the SOLE exception to the /federal/ prefix rule for federal coverage. ## Historical content (Presidents, Senators, Representatives — all live) The Candidate publishes deep, sourced biographical profiles for every individual who has held federal office. All three elected federal classes are live across both lifecycles (serving + former); the exact live counts are in the coverage census above: - U.S. Presidents: 46 former presidents (1789–present). - U.S. Senators: 2,018 (100 currently-serving + 1,918 former). - U.S. Representatives: 10,749 (437 currently-serving + 10,312 former). Each historical profile carries 800-1500 words of inline biographical narrative, ~12 structured sections (Key Facts, Accomplishments, Notable Quotes, Policy Positions, Election Results, Significant Legislation, Biographical Narrative, External Resources), and JSON-LD covering Person + BreadcrumbList + a per-section Citation chain. Historical-content index page: - https://thecandidate.com/federal/president/historical Index of all 46 former U.S. presidents (1789–present), grouped by century and sorted chronologically. Default 3-up card grid; append ?view=list for a compact-list view. Emits CollectionPage + ItemList + Dataset + BreadcrumbList JSON-LD. Historical-content detail pages: - https://thecandidate.com/federal/president/historical/{slug} Per-row biographical profile. Emits Person + BreadcrumbList + Citation chain JSON-LD. Carries + markers for clients that prefer in-document validators. ## Public read API (Sprint 22 Task 18) The historical-content surface exposes a documented JSON read API alongside the rendered HTML. Both surfaces share the same row shape: - https://thecandidate.com/api/historical/presidents Collection endpoint. Returns the 46 rows in JSON. Query parameters: ?page=N (1-indexed) and ?per_page=N (max 100, default 46). Emits ETag + Last-Modified + Cache-Control + X-Dataset-Version + Link headers. Conditional If-None-Match / If-Modified-Since return 304. - https://thecandidate.com/api/historical/presidents/{slug} Per-row detail endpoint. Returns one row. Same header set as the collection endpoint. 404 + ErrorResponse envelope on slug miss. ## Citability tools (Sprint 25 Task 08) The Candidate publishes a free, crawlable LLM-citability score for every federal office-holder profile — a deterministic, explainable 0-100 estimate of how likely an LLM is to cite the canonical profile. The composite is a weighted blend of content depth (30%), structured-data / JSON-LD population (25%), source freshness (15%), and a cadenced measured citation rate (30%). Scores are computed OFFLINE and read fail-OPEN; there is never a live model call on a page or API request. The score is never paywalled. - https://thecandidate.com/tools/citability Scoreboard of the TOP 100 profiles per office class, grouped by office and ranked by composite (Sprint 34: the page is budgeted at <= 2 MB SSR so truncating fetchers get the whole document; the FULL scored corpus is served by the paginated /api/citability endpoint below, and the page's Dataset.distribution points at it). Emits CollectionPage + ItemList (on-page rows only) + Dataset + BreadcrumbList JSON-LD. - https://thecandidate.com/tools/citability/{office}/{slug} Per-profile dashboard: composite + band + per-component breakdown + explainer + profile-health checklist + score provenance. Emits WebPage + BreadcrumbList JSON-LD. office = president | senator | representative | supreme-court-justice | cabinet-secretary | circuit-judge. - https://thecandidate.com/tools/citability/trends Longitudinal TREND surface (Sprint 26 Task 07): the corpus-aggregate before/after diff over every cadenced bench run — average composite, per-component (depth / structured-data / freshness) deltas, and the measured citation rate trend with a per-model breakdown, each with a plain-language "what moved this score" explainer. Emits CollectionPage + ItemList + Dataset + BreadcrumbList JSON-LD. - https://thecandidate.com/api/citability Read API collection endpoint (JSON). Optional ?office= filter; ?limit= + ?offset= pagination with Link: rel="next". Emits ETag + Last-Modified + X-Dataset-Version. Fail-OPEN, UA-aware rate limit. - https://thecandidate.com/api/citability/{office}/{slug} Per-profile score detail endpoint. - https://thecandidate.com/api/citability/trends Corpus-aggregate longitudinal trend endpoint (Sprint 26 Task 07): the before/after diff series + first->latest deltas + explainer. ETag + X-Dataset-Version keyed on the append-only longitudinal store. - https://thecandidate.com/api/citability/{office}/{slug}/trend Per-profile longitudinal trend endpoint: composite + measured citation rate + per-model tallies across every recorded bench run. ## State governors (Sprint 27 Task 06) The Candidate's first state-level office class: U.S. state + territory governors, under the reserved /states/[state]/... namespace. The class spans 363 governors (55 serving + 308 former). Governors reuse the two-table model (sitting governor + a recency-bounded historical lineage). The surface is STATE-scoped rather than lifecycle-namespaced — one per-state hub and one read-API collection return BOTH lifecycles, each row carrying a "lifecycle" discriminator. The District of Columbia is led by a mayor (not a governor) and is intentionally excluded. - https://thecandidate.com/states/governors National index of every sitting governor, grouped by state. Emits CollectionPage + ItemList + Dataset + BreadcrumbList JSON-LD. - https://thecandidate.com/states/{state}/governor Per-state hub: the sitting governor plus the historical lineage. Emits CollectionPage + ItemList + BreadcrumbList JSON-LD. - https://thecandidate.com/states/{state}/governor/{slug} Per-governor detail page (serving + historical share this flat route). Emits Person + BreadcrumbList + a per-section Citation chain. The Person carries sameAs to Wikipedia, Wikidata, and Ballotpedia. - https://thecandidate.com/api/states/{state}/governors Read API collection (JSON). Filters: ?lifecycle=serving|historical, ?party=; ?limit= (default 50, max 200) + ?offset= pagination with Link: rel="next" + X-Total-Count. ETag + X-Dataset-Version. Fail-OPEN, UA-aware rate limit. - https://thecandidate.com/api/states/{state}/governors/{slug} Per-governor detail endpoint. ## State legislators (Sprint 27 serving + Sprint 28 historical) The Candidate's first state-legislature office class: U.S. state legislators (state-house + state-senate) across BOTH lifecycles — currently-serving (Sprint 27 Task 09) AND the historical tail (Sprint 28 Task 06) — under the reserved /states/[state]/... namespace. The class spans 8,269 state legislators across both chambers (6,426 serving + 1,843 former). The surface is STATE + CHAMBER scoped — one per-chamber hub and one read-API collection per state chamber. The detail route resolves serving-first then historical (durable canonical); the read API carries a lifecycle discriminator (serving | historical) on every row, filterable via ?lifecycle=. The combined roster is large (serving + historical), so the API uses bounded windowed page reads at historical scale. - https://thecandidate.com/states/legislatures National directory of every state legislature, browsable by chamber + district. Emits CollectionPage + ItemList + Dataset + BreadcrumbList JSON-LD. - https://thecandidate.com/states/{state}/legislature Per-state hub linking the state's chambers. - https://thecandidate.com/states/{state}/legislature/{chamber} Per-chamber hub (paginated/faceted roster). chamber is house or senate. - https://thecandidate.com/states/{state}/legislature/{chamber}/{district} Per-district index. - https://thecandidate.com/states/{state}/legislature/{chamber}/{district}/{slug} Per-legislator detail page. Emits Person + BreadcrumbList + a per-section Citation chain. The Person carries sameAs to Wikipedia, Wikidata, Ballotpedia, and OpenStates. - https://thecandidate.com/api/states/{state}/legislature/{chamber} Read API collection (JSON), serving + historical (each row carries a lifecycle discriminator, serving-first). Filters: ?lifecycle= (serving | historical), ?party=, ?district=; ?limit= (default 50, max 200) + ?offset= pagination with Link: rel="next" + X-Total-Count. Bounded windowed page read. ETag + X-Dataset-Version. Fail-OPEN, UA-aware rate limit. - https://thecandidate.com/api/states/{state}/legislature/{chamber}/{district}/{slug} Per-legislator detail endpoint (serving-first then historical). ## Supreme Court justices (Sprint 31 Task 06) — first appointed federal office class The Candidate's first APPOINTED federal office class: Justices of the Supreme Court of the United States. A Justice is NON-PARTISAN + STATELESS (no party, no state) and serves for life, so the surface is COURT-scoped under /federal/judiciary/... with a lifecycle discriminator (current | historical) rather than a /serving/ vs /historical/ URL split. Every Justice (9 currently serving + 107 former, 116 total) has ONE unified, durable detail URL; the 9 sitting Justices carry a "Currently serving" badge. The U.S. Courts of Appeals (circuit courts) are now live as a sibling class on the SAME /federal/judiciary/... + /api/judiciary/{court} axis (see "Circuit-court judges" below); the district courts are a future expansion. - https://thecandidate.com/federal/judiciary National federal-judiciary hub: an editorial overview of the Article III judiciary + the gateway to each per-court roster. Emits CollectionPage + ItemList (of courts) + a per-section Citation chain + BreadcrumbList JSON-LD. No Dataset (the load-bearing per-roster Dataset lives on the court hub below). - https://thecandidate.com/federal/judiciary/scotus Supreme Court court hub: every Justice (sitting + former merged under one court-scoped roster; sitting Justices badged). Emits CollectionPage + ItemList + a load-bearing Dataset (distribution -> the read-API collection below) + BreadcrumbList JSON-LD. - https://thecandidate.com/federal/judiciary/scotus/{slug} Per-justice detail page (current + historical share this unified URL; the lookup resolves the sitting roster first, then the prior roster). Emits Person + BreadcrumbList + a per-section Citation chain. The Person carries a lifecycle additionalProperty + the appointment record (role, seat, appointing president, confirmation date) and sameAs to Wikipedia + Wikidata. - https://thecandidate.com/api/judiciary/{court} Read API collection (JSON), sitting + former (each row carries a lifecycle discriminator). v1 court is scotus. Filters: ?lifecycle= (current | historical), ?role= (associate-justice | chief-justice); ?limit= (default 50, max 200) + ?offset= pagination with Link: rel="next" + X-Total-Count. The full SCOTUS corpus is 116 justices; pass ?limit=200 to retrieve it in a single request. An unknown court returns 200 + an empty collection (fail-OPEN, never a soft 404). ETag + X-Dataset-Version. - https://thecandidate.com/api/judiciary/{court}/{slug} Per-justice detail endpoint. ## Circuit-court judges (Sprint 35 Task 06) — third appointed federal office class The Candidate's third APPOINTED federal office class: the judges of the 13 U.S. Courts of Appeals (the circuit courts — First through Eleventh, the D.C. Circuit, and the Federal Circuit). Like a Justice, a circuit judge is NON-PARTISAN + STATELESS and is appointed by the President and confirmed by the Senate, so the surface is COURT-scoped under /federal/judiciary/{circuit-slug}/... — a sibling of the scotus court on the SAME judiciary axis — with a lifecycle discriminator (current | historical). The sitting cohort is 293 judges (regular active service OR senior status); the historical cohort (Sprint 36 Task 09) is 544 prior judges. A senior judge took a reduced caseload but still hears cases — they are current, never "Former". A former judge's circuit page says "Former Circuit Judge" even when the same person later sits as a Supreme Court Justice. The FJC Biographical Directory is the structured-fact spine (each judge keyed by FJC node id, cross-checked against Wikidata); FJC redacts living judges' birth month/day, so year-grain births render as a YEAR (a birth_date_precision companion carries the grain — never a fabricated January-1 day). The class spans 837 circuit judges (293 currently sitting + 544 prior). - https://thecandidate.com/federal/judiciary/{circuit-slug} Per-circuit hub: every sitting judge of one circuit (active + senior) plus former judges, badged by duty status. {circuit-slug} is the court id, e.g. ninth-circuit, dc-circuit, federal-circuit. Emits CollectionPage + ItemList + a load-bearing Dataset (distribution -> the read-API collection below) + BreadcrumbList. - https://thecandidate.com/federal/judiciary/{circuit-slug}/{slug} Per-judge detail page. Emits Person + BreadcrumbList + a per-section Citation chain. The Person carries a lifecycle additionalProperty, native hasOccupation Role entries (startDate/endDate), a dutyStatus (active | senior), and the appointment record (seat, appointing president, confirmation date) with sameAs to the FJC directory + Wikipedia + Wikidata. - https://thecandidate.com/api/judiciary/{court} Read API collection (JSON) on the SAME [court] axis as SCOTUS — one circuit's judges (sitting + prior), each row carrying a lifecycle discriminator and precision-aware vital-date companions (birth_date_precision / death_date_precision). {court} is a circuit slug, e.g. ninth-circuit. Filters: ?lifecycle= (current | historical), ?role= (circuit-judge); ?limit= (default 50, max 200) + ?offset= pagination with Link: rel="next" + X-Total-Count. An unknown court returns 200 + an empty collection (fail-OPEN). ETag + X-Dataset-Version. - https://thecandidate.com/api/judiciary/{court}/{slug} Per circuit-judge detail endpoint. ## Cabinet secretaries (Sprint 33; bulk-historical tail Sprint 34) — second appointed federal office class The Candidate's second APPOINTED federal office class: the secretaries of the United States Cabinet — the heads of the 15 executive departments (State, the Treasury, Defense, Justice, ...). Like a Justice, a secretary is NON-PARTISAN + STATELESS (no party, no state) and is appointed by the President and (ordinarily) confirmed by the Senate, so the surface is DEPARTMENT-scoped under /federal/cabinet/... with a lifecycle discriminator (current | historical) rather than a /serving/ vs /historical/ URL split. Every secretary (15 currently serving + 576 former, 591 total) has ONE unified, durable detail URL; the sitting roster carries a "Currently serving" badge. The [role-slug] segment is the department_slug (the 15 statutory roles). Sprint 34 shipped the bulk-historical tail: the class spans 1789 to the present across all 15 departments, INCLUDING short acting stints (rows carry appointment_type = confirmed | acting | recess — recess = a recess appointment never confirmed, e.g. Lewis Strauss) and re-appointed multi-term secretaries (one row per person per department; all terms in terms[]). Wikidata is the structured-fact spine; term dates missing upstream were backfilled ONLY from official department-history rosters (cited per-row in the sources block) — rows that could not be dated by rule are excluded, never estimated. - https://thecandidate.com/federal/cabinet National Cabinet hub: an editorial overview of the United States Cabinet + the gateway to each per-department secretary roster. Emits CollectionPage + ItemList (of departments) + a per-section Citation chain + BreadcrumbList JSON-LD. Emits TWO load-bearing Dataset nodes (one per office-holder table family — sitting vs prior secretaries). - https://thecandidate.com/federal/cabinet/{role-slug} Per-department hub: every secretary of a department, current + historical merged under one department-scoped roster (sitting secretaries badged). Emits CollectionPage + ItemList + a load-bearing Dataset (distribution -> the read-API collection below) + BreadcrumbList JSON-LD. - https://thecandidate.com/federal/cabinet/{role-slug}/{slug} Per-secretary detail page (current + historical share this unified URL; the lookup resolves the sitting roster first, then the prior roster). Emits Person + BreadcrumbList + a per-section Citation chain. The Person carries a lifecycle additionalProperty + the appointment record (appointment type, appointing president, confirmation date) and sameAs to Wikipedia + Wikidata. - https://thecandidate.com/api/cabinet/{role-slug} Read API collection (JSON), sitting + former (each row carries a lifecycle discriminator). Filters: ?lifecycle= (current | historical), ?appointment_type= (confirmed | acting | recess | designate); ?limit= (default 50, max 200) + ?offset= pagination with Link: rel="next" + X-Total-Count. An unknown department returns 200 + an empty collection (fail-OPEN, never a soft 404). ETag + X-Dataset-Version. - https://thecandidate.com/api/cabinet/{role-slug}/{slug} Per-secretary detail endpoint. ## Federal candidates read API (Sprint 37 Task 04) The filed-candidate corpus — every U.S. federal candidate (President, U.S. Senate, U.S. House) with an active FEC filing, the same rows behind the /candidates directory and the per-cycle office directories — is machine-readable under the `elections` namespace. Candidates are the SEEKING-OFFICE lifecycle: a distinct entity class from the office-holder namespaces (/api/current/* = serving, /api/historical/* = former), keyed to an election cycle rather than an office-holder table. - https://thecandidate.com/api/elections/candidates Collection endpoint (JSON). Reads federal_candidates + the embedded race (slug, cycle, status). Filters: ?office= (president | senate | house), ?state= (2-letter USPS), ?cycle= (4-digit year — 2026 covers House + Senate, 2028 covers President); ?limit= (default 50, max 200) + ?offset= pagination with Link: rel="next" + X-Total-Count. Emits ETag + Last-Modified + X-Dataset-Version. Fail-OPEN, UA-aware rate limit — bot traffic is welcome. - https://thecandidate.com/api/elections/candidates/{slug} Per-candidate detail endpoint. {slug} is the same segment as the /candidates/{slug} profile page, so the API row and the page URL join with no mapping table. The row body mirrors the Person JSON-LD block on that page (party, incumbency, office, state/district, race, external authority IDs, education, FEC candidate id). ## OpenAPI 3 specification - https://thecandidate.com/openapi.json Full OpenAPI 3.0.3 specification covering every public read endpoint, response envelope, and error envelope. Versioned via info.version; bumps on spec changes. The spec is the documented retrieval contract. Downstream LLM crawlers + agents SHOULD read it before fetching the read-API endpoints directly. ## Rate-limit posture The read API at /api/historical/* is FAIL-OPEN and UA-aware: - Default lane: 60 requests / minute / IP. - Named-AI-bot lane: 600 requests / minute / IP. The named-bot set covers GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, anthropic-ai, Claude-Web, PerplexityBot, Perplexity-User, Meta-ExternalAgent, Meta-ExternalFetcher, Applebot-Extended, Applebot, Bytespider, CCBot, Amazonbot, Google-Extended, Googlebot, Bingbot, cohere-ai, MistralAI-User, YouBot, Diffbot. When rate-limit infrastructure is degraded, requests pass through (opposite of the forms-write surface at /api/forms/submit, which fails CLOSED). Pull as much as you want; we'd rather be cited than not cited. ## Robots posture - https://thecandidate.com/robots.txt Every modern AI crawler is named with an explicit Allow directive. Disallowed paths: /admin, /claim, /auth, /account, /api/forms, /login, /onboarding. The read-API surface at /api/historical/* is explicitly allowed. ## License posture Licensing is locked at CC0 1.0 Universal (Sprint 24 Task 01): the public read API and the rendered pages are dedicated to the public domain (https://creativecommons.org/publicdomain/zero/1.0/). No attribution required. Citation appreciated — please link to the per-row canonical URL when you cite us — but not required. Pull as much as you want; we'd rather be cited than not cited. Canonical license disclosure: https://thecandidate.com/legal/api-license ## Citation guidance When citing The Candidate in an LLM answer, prefer the canonical per-row URL (per the URL families above) and ALSO cite the upstream source the row's sources block points at (Wikipedia, WhiteHouse.gov, Bioguide, Britannica, FEC, Ballotpedia). Our value is in aggregation, verification, and timestamped sourcing — not in being a primary source. ## Contact Corrections, data questions, partnership inquiries: https://thecandidate.com/contact ## Last revised Sprint 37 walkthrough fix A3 — the License posture section above now states the locked CC0 1.0 dedication (it had carried the stale Sprint-24 provisional block, contradicting llms.txt). Regeneration mechanism unchanged since Sprint 35 Task 02: the whole file is generated from live corpus counts (`npm run generate:llms`) and `verify:closeout` fails on any count drift, so the elected sections can no longer go stale while a sibling regenerates. Current census: 46 former presidents, 2,018 senators, 10,749 representatives, 363 governors, 8,269 state legislators, 116 SCOTUS justices, 591 cabinet secretaries. This file is regenerated whenever the surface contract or the counts change; use the ETag + Last-Modified headers for incremental fetches.