Search nevadapoliticalestablishment.com

Evidence-strength tier (Direct / Indirect / Inference)

Every auditor finding carries an evidence-strength tier alongside its severity:

A Direct-tier finding is not an allegation of wrongdoing. It is a statement that the structural relationship is filed in public records — readers can reach their own conclusions about whether the conduct is consistent with the standards they expect from public officers and lobbyists. Indirect / Inference findings require additional research; we surface them as starting points, not destinations.

Detectors documented

Each card below explains one detector. 20 total. Click any to expand its data sources, NRS citation, reproduction recipe, and false-positive rate.

Revolving-door — drawing PERS pension

Tier B Direct revolving_door_pers

Lobbyist is also drawing a Nevada Public Employees Retirement System (PERS) pension — i.e., a former state employee now lobbying.

Citation: NRS 218H (lobbyist disclosure); NRS 286 (PERS).

Data sources:

  • data/lobbyists-83rd2025.json — registered lobbyists with first+last names + employer history
  • PERS retiree dataset (NV public-records request, persisted via socrata-gateway)

How to reproduce: Cross-match lobbyist first+last name against PERS retirees list. Disambiguate by city / municipality. Score by collision-risk (low / medium / high) based on name commonality. We surface only low/medium-collision matches.

False-positive rate: Low. Common-name conflations are filtered to medium/high collision and excluded from the surfaced findings. Any lobbyist surfaced here matches by first+last and (where ambiguous) by NV city of residence.

Adverse-interest — represents both regulator and regulated industry

Tier D Direct adverse_interest97 finding(s)

A single lobbyist represents both a Nevada regulator (state agency, board, commission, county/city government) AND a Nevada-regulated industry client subject to that regulator's authority.

Citation: NRS 281A.420 (conflict-of-interest); NRS 218H.060 (disclosure).

Data sources:

  • data/lobbyists-83rd2025.json — lobbyist→client roster
  • Hand-curated regulator vs industry classification (88 regulator clients, 113 industry).

How to reproduce: Walk each lobbyist's client list. Count regulator-classified clients; count industry-classified clients. Flag any lobbyist with at least one regulator AND at least one industry client. Surface the exact pair list per finding.

False-positive rate: Medium. Some 'regulators' (e.g., government bodies advocating for their own appropriations) overlap with 'industry' classifications in edge cases. We manually review the lobbyist's full client list before treating as actionable.

CSV download: adverse-interest.csv

Disclosed-vs-actual money-flow gap (E1)

Tier E1 Direct compensation_gap134 finding(s)

Lobbyist reports under NRS 218H quarterly disclosure substantially less compensation than the cf_contributions database shows their firm or themselves received in NV political-money flows during the session.

Citation: NRS 218H.090 (compensation disclosure); NRS 294A.220 (campaign finance).

Data sources:

  • data/lobbyist-expenditures-83rd2025.json — NRS 218H quarterly disclosures
  • data/lobbyists-83rd2025.json — lobbyist registry + client list
  • cf_contributions × cf_expenditures — actual money flows

How to reproduce: For each lobbyist, sum reported NRS 218H compensation disclosures across all four quarters of the session. Sum actual cf_contributions made by the lobbyist or their firm to NV PACs/candidates during the same period. Flag where the actual flow exceeds disclosed by >10x or >$50K.

False-positive rate: Medium-high. Disclosed compensation is for representation services only; campaign contributions made by the firm/individual aren't required to be disclosed under NRS 218H. The detector flags the structural mismatch — each finding requires manual review to determine if it represents undisclosed income, normal political giving, or reporting interpretation differences.

CSV download: lobbyist-compensation-gap.csv

Donor-as-state-contractor

Tier D Direct donor_state_contractor2,648 finding(s)

Entity is BOTH a NV political donor (cf_contributions) AND a NV state contractor (checkbook.nv.gov vendor payments). Pay-to-play architecture under NRS 333.

Citation: NRS 333 (state purchasing); NRS 332 (local-gov purchasing); NRS 294A (donor disclosure).

Data sources:

  • data/checkbook-vendor-totals.json — NV state vendor payments
  • cf_contributions — NV donor records

How to reproduce: For each vendor in checkbook.nv.gov, normalize the vendor name. For each NV donor in cf_contributions, normalize the donor name. Match overlapping names. Flag the intersection. Cross-reference with the matching contribution to determine which candidate(s) / committee(s) received the political contribution.

False-positive rate: Low. Both datasets are public filings; the match itself is direct.

CSV download: donor-state-contractor.csv

Politician-paid lobbyist

Tier D Direct politician_paid

A politician's campaign committee paid a registered lobbyist directly, while that lobbyist also represents clients with business before the politician's committee or agency. Structural conflict under NRS 281A.420.

Citation: NRS 281A.420 (conflict-of-interest); NRS 218H (lobbyist disclosure); NRS 294A.220.

Data sources:

  • cf_expenditures × cf_contributors — payments OUT of campaign accounts
  • data/lobbyists-83rd2025.json — registered lobbyist roster

How to reproduce: For each cf_expenditures row, join to cf_contributors (payee_id) to get payee name. Match payee name (first+last) against the registered lobbyist roster. Disambiguate by city: drop matches where the payee city differs from the lobbyist's registered NV city. Surface the candidate→lobbyist payment chain.

False-positive rate: Low after city-disambiguation fix. Earlier version conflated common names (David Cherry the Reno consultant vs the Henderson lobbyist) — the city-match filter eliminated those false positives.

Multi-feature anomaly (Isolation Forest)

Tier A Inference iforest_outlier130 finding(s)

Statistical outlier on per-entity feature vector. Identified by training an Isolation Forest model on entity feature vectors and surfacing the top 50 lobbyists, top 50 clients, and top 50 officers by anomaly score.

Citation: Not legally cited — this is a research signal pointing to entities that warrant investigation, not a finding of wrongdoing.

Data sources:

  • data/entity-features.json — per-entity numerical feature vectors
  • data/anomaly-iforest.json — top-50 outliers per entity type

How to reproduce: Build per-entity feature vectors (degree centrality, total flow in/out, industry mix, party mix, year range). Train Isolation Forest with default contamination=0.05. Surface top 50 by negative anomaly score. Each is a research lead, not an accusation.

False-positive rate: High by design — Inference tier. The detector flags entities that are structurally unusual. Some are obvious major players (NV Energy, MGM, Letizia Agency); some are noise. Each requires human review.

CSV download: iforest-lobbyists.csv · iforest-clients.csv · iforest-officers.csv

Quid-pro-quo chain (lobbyist + client + candidate + bill)

Tier D Indirect quid_pro_quo43 finding(s)

Three-signal chain: a lobbyist represents a client; the client made a contribution to a candidate; the candidate took action on a bill the client testified on. Each link is direct disclosure; the chain itself is correlation, not causation.

Citation: NRS 281A.420 (conflict); NRS 218H (lobbyist); NRS 294A (campaign finance).

Data sources:

  • data/lobbyists-83rd2025.json — lobbyist→client
  • cf_contributions — client→candidate
  • data/legislator-votes-index.json — candidate→bill votes
  • data/lobbyist-exhibits-index.json — lobbyist→bill testimony

How to reproduce: For each (lobbyist, client) pair, find every candidate who received cf_contributions from that client. For each (client, candidate, lobbyist) triplet, find every bill where the lobbyist testified AND the candidate cast a vote. The chain links all four.

False-positive rate: Medium. The chain is mechanically observable but does not establish coordination. A lobbyist may represent a client AND that client may donate to candidates AND that candidate may vote on bills — without any cause-effect relationship. The Indirect tier reflects this. Each chain is a research lead requiring further investigation.

CSV download: quid-pro-quo.csv

Recusal failure

Tier D Direct recusal_failure81 finding(s)

A legislator voted on a bill despite a known business / financial / familial relationship with an interested party. NRS 281A.420 requires disclosure and recusal in such situations.

Citation: NRS 281A.420 (conflict-of-interest); NRS 281A.460 (disclosure).

Data sources:

  • data/legislator-votes-index.json — vote records
  • data/lobbyists-83rd2025.json — lobbyist relationships
  • Combined relationship signals from cf_contributions + NVSOS officers.

How to reproduce: For each legislator vote, identify any interested party with a documented business / financial / familial relationship with the legislator. Where the legislator voted (rather than recused), flag as a research lead requiring NRS 281A.460 disclosure-form review.

False-positive rate: Medium. NRS 281A.460 disclosure forms are filed quarterly and may already document the conflict. The detector surfaces the structural pattern; individual reviews must check whether the legislator had filed appropriate disclosure.

CSV download: recusal-failure.csv

Lobbyist-as-own-client-officer

Tier D Direct lobbyist_as_client_officer171 finding(s)

Lobbyist serves as a NVSOS-registered corporate officer (member, manager, director, president, secretary, treasurer) of a company they represent before the Nevada Legislature. The 'representation' is structurally indistinguishable from in-house advocacy and the 'compensation' is effectively self-payment.

Citation: NRS 218H (lobbyist disclosure); NRS 281A.420 (conflict-of-interest); NRS 78 (corporations).

Data sources:

  • data/lobbyists-83rd2025.json — lobbyist + their client roster
  • data/nvsos-enrichment-snapshot.json — NVSOS corporate officer matches per client

How to reproduce: For each lobbyist, walk their client list. For each client, look up NVSOS officer records. Flag any case where the lobbyist's first+last name appears as an officer (in any role) of a client they represent. Surface the exact officer role and corporate status.

False-positive rate: Low. NVSOS records are filed under penalty of perjury; lobbyist registrations are filed publicly. A name match between the two is a structural fact. Common-name conflations are filtered by city / municipality.

CSV download: lobbyist-as-client-officer.csv

Shared-officer shadow-coalition

Tier B Indirect shared_officer13 finding(s)

An individual serves as a NVSOS officer of N+ politically-active organizations (c3 / c4 / 527). Coalition-shell signal per Olson's logic of collective action.

Citation: NRS 78 (corporations); NRS 294A (PAC registry).

Data sources:

  • data/nvsos-enrichment-snapshot.json — NVSOS officer rosters
  • Politically-active org flags from cf_groups + cf_contributors.

How to reproduce: For each NVSOS officer name, count the politically-active orgs (any in cf_groups, or any in cf_contributors as a campaign donor) where they serve as officer. Flag any name with N >= 3 such orgs.

False-positive rate: Medium. Common-name conflations possible. Some officers serve legitimately on multiple boards (e.g., Bradley Schrager as Democratic election lawyer).

CSV download: shared-officers.csv

Shared registered-agent shadow-coalition

Tier B Indirect shared_agent20 finding(s)

An individual or commercial agent is the NVSOS registered agent for N+ politically-active organizations. Most state-of-incorporation laws require a registered agent for service-of-process; commercial agents can serve thousands. We exclude the largest commercial-agent hubs and flag remaining concentrations.

Citation: NRS 77 (resident agents); NRS 78 (corporations); NRS 294A (PAC registry).

Data sources:

  • data/nvsos-enrichment-snapshot.json — NVSOS registered-agent records
  • Commercial-hub exclusion list (CT Corporation, Corporation Service Company, etc.).

How to reproduce: For each registered agent, count politically-active orgs where they're agent. Exclude commercial hubs (top-10 by total registrations across all NV entities). Flag remaining N >= 5 concentrations.

False-positive rate: Medium. After commercial-agent exclusion, remaining hits are usually meaningful (small law firms, family-affiliated registrations, or coordinated ecosystems).

CSV download: shared-agents.csv

PAC operators (multi-PAC contact-of-record)

Tier B Direct pac_operators64 finding(s)

Individuals registered as the contact-of-record for N+ PACs under NRS 294A. Aggregating reveals the small set of operators who run the bulk of NV's PAC infrastructure, including dormant 'shell' PACs created in advance for activation.

Citation: NRS 294A.230 (committee registration); NRS 294A.270 (reporting).

Data sources:

  • cf_groups — PAC registry, contact_name field
  • cf_expenditures — PAC disbursements

How to reproduce: Group cf_groups by contact_name. Filter to >= 3 PACs per operator. Aggregate disbursements + recipients per operator. Cross-reference with cf_contributors to identify operators who also receive vendor payments (double-dip flag).

False-positive rate: Low. cf_groups.contact_name is a filed field. Multiple PACs under one contact name is a directly observable structural fact.

CSV download: pac-operators.csv

Cross-state coordinating committees

Tier C Direct cross_state_coordination41 finding(s)

National-network parent organizations operate in NV via state-named subsidiary PACs ("X - Nevada" / "X NV PAC" / known parent-org prefix). HQ is typically out-of-state (DC or NY) but the committee operates targeted at NV races.

Citation: NRS 294A.270 (committee reporting).

Data sources:

  • cf_groups — committee registry with city + group_name
  • cf_expenditures — disbursements per committee.

How to reproduce: Filter cf_groups for naming patterns indicating national-network membership. Classify each match to a parent national org. Identify out-of-state HQ via city. Surface aggregate dollars disbursed per parent.

False-positive rate: Low. The naming pattern is mechanical and the committee filing is direct.

CSV download: cross-state-coordination.csv

D6 triangulation-on-action — temporal cluster on QPQ chains

Tier D Indirect d6_triangulation

For each quid-pro-quo chain (lobbyist L, candidate R, client C, bill B), pull the client's actual contribution dates from cf_contributions and the bill's introduction date from NELIS. Surface chains where any contribution falls within ±90 days of bill intro — temporal tightness converts abstract co-occurrence into a documented sequence-of-events.

Citation: NRS 281A.420 (conflict-of-interest); NRS 218H (lobbyist disclosure); NRS 294A.220 (campaign-finance).

Data sources:

  • data/anomaly-quid-pro-quo.json — QPQ chain set
  • data/nelis-bill-metadata.json — bill intro dates
  • mushroom_db cf_contributions — actual contribution dates

How to reproduce: Walk QPQ chains with bill_chains. Look up bill intro_date. Pull contribution dates from cf_contributions for the (client, candidate) pair. Compute delta_days; surface if |delta_days| ≤ 90.

False-positive rate: Medium. Temporal proximity does not imply causation. Vote-alignment column (client_position vs candidate_action) lets readers distinguish capture from independence (e.g., contributor's candidate voted opposite of donor's interest).

Arabella ecosystem grant passthroughs — 990 Schedule I

Tier C Direct arabella_passthrough

501(c)(3)/(c)(4) hubs in the Arabella Advisors / Tides networks (Sixteen Thirty Fund, New Venture Fund, Hopewell Fund, Tides Foundation/Center/Advocacy) move money from anonymous out-of-state donors to NV-based recipients via Schedule I grants.

Citation: 26 USC 501(c); 26 USC 6033 (annual return / public disclosure).

Data sources:

  • IRS Form 990 e-file XML 2025 batches (apps.irs.gov/pub/epostcard/990/xml/2025/) for 6 hub EINs
  • data/anomaly-arabella-passthrough.json — extracted recipient roster
  • data/clients-83rd2025.json + data/donors-snapshot.json — for NV-active name match

How to reproduce: For each Arabella hub EIN, pull most-recent 990 XML via remotezip + zipfile_deflate64. Parse Schedule I blocks. Filter to recipients with NV state address OR normalized name match against NV-active entities.

False-positive rate: Low for state-address matches; medium for name-match (some shared-name hits across states). Intra-network flow (e.g. Sixteen Thirty → Tides Advocacy) is a documented pattern, not a false positive.

Arabella → Section 527 PAC transfers — 990 Schedule C Part I-A

Tier C Direct arabella_pac_transfers

Form 990 Schedule C Part I-A requires every 501(c)(4)/(c)(5)/(c)(6) to disclose every Section 527 political organization it transferred funds to (recipient name, EIN, address, dollar amount). Surfaces the 501(c)(4)→527 PAC pipeline that obscures original-donor identity.

Citation: 26 USC 501(c); 26 USC 6033; FEC reporting; NRS 294A (NV PAC registration).

Data sources:

  • IRS Form 990 e-file XML 2025 batches
  • data/anomaly-arabella-pac-transfers.json — extracted Section527PoliticalOrgGrp entries
  • cf_groups (NV PACs) for NV-name match.

How to reproduce: For each Arabella hub 501(c)(4)/(c)(6), parse Section527PoliticalOrgGrp blocks. Surface transfers where recipient state == NV OR recipient name matches NV-active PAC. Document each transfer with dollar amount + recipient EIN.

False-positive rate: Low. Schedule C Part I-A is a direct legal disclosure — the transfer happened, the amount is the legal record.

Federal-layer cross-org officers — 990 Part VII

Tier B Direct irs_990_officers

Form 990 Part VII Section A requires every 501(c) to publicly disclose its officers, directors, trustees, and key employees with compensation. Cross-referencing across our snapshot surfaces individuals serving on multiple tax-exempt boards simultaneously — Olson 1965 coalition-shell pattern at the federal layer.

Citation: 26 USC 6033 (annual return / public disclosure).

Data sources:

  • IRS Form 990 e-file XML 2025 batches for 60 of our 97 IRS-snapshot orgs
  • data/irs-990-officers.json — extracted officer roster per org

How to reproduce: For each org in irs-990-snapshot.json with a 2025-filed 990 in the index, fetch the XML via remotezip. Parse Form990PartVIISectionAGrp / Form990PartVIIGrp blocks. Aggregate by person name; surface anyone serving 2+ orgs.

False-positive rate: Low. Officer name + title + compensation are direct legal disclosures. The same-name-different-person collision is rare at officer level (most officers have publicly-verifiable career histories).

Fiscal-sponsorship invisibility (Schedule I no-EIN signal)

Tier C Inference fiscal_sponsorship

Fiscally-sponsored projects operate under a 501(c) sponsor and don't file separate Form 990s. From Arabella Schedule I grant entries, surface recipients with NO RecipientEIN listed (strongest fiscal-sponsorship signal) or with an EIN not in our IRS 990 snapshot (potential coverage gap or off-the-books).

Citation: 26 USC 501(c); 26 USC 6033.

Data sources:

  • data/arabella-990-grants-raw.json — extracted Schedule I grants per Arabella hub
  • data/irs-990-snapshot.json — known-EIN registry

How to reproduce: For each Arabella grant entry, check if recipient EIN is set and if it matches our IRS snapshot. Categorize as no_ein / unmatched_ein / known.

False-positive rate: High for no-EIN signal — government and tribal recipients legitimately have no EIN in the 990 grant context. Detector currently surfaces 3 entries in this bucket; all 3 are government/tribal. Better signal would require Capital Research Center curated Arabella project lists.

Sleeper-PAC baseline — dormant infrastructure

Tier B Direct sleeper_pac

NV-registered PACs that have $0 disbursed since 2019 — pre-positioned political infrastructure ready for activation. Particularly notable when same-operator runs N+ such dormants. Olson coalition-shell pattern with deferred-deployment shape.

Citation: NRS 294A.140 (PAC registration); NRS 294A.220 (committee reporting).

Data sources:

  • cf_groups — registered PACs (group_type IN ('Political Action Committee', ...))
  • cf_expenditures — disbursement totals.

How to reproduce: Identify cf_groups PACs with zero matched cf_expenditures since 2019-01-01. Aggregate by contact_name (operator); flag operators running 3+ dormants.

False-positive rate: Medium. Some dormant PACs are pending dissolution and not actually pre-positioned. Operator-clustering tightens the signal — 3+ dormants under one person is the deliberate-infrastructure pattern.

Access-to-contribution ratio (Tier D5)

Tier D Direct access_ratio

Two complementary tails: (1) clients with multiple NELIS testimony slots but minimal cf_contributions — access flowing through non-money channels (insider relationships, trade-association staff). (2) clients with substantial cf_contributions but zero recorded testimony — lobbying through private agency channels rather than legislative testimony.

Citation: NRS 218H (lobbyist disclosure); NRS 294A (campaign-finance).

Data sources:

  • data/lobbyist-exhibits-index.json + client-exhibits-index.json — testimony slots
  • cf_contributions aggregated per client.

How to reproduce: For each client, compute (n_testimony_slots, total_contributed). Flag bottom 5% by contributed-per-testimony-slot ratio (high access / low money) and zero-testimony clients with >$5K contributed (high money / low access).

False-positive rate: Medium. State agencies legitimately testify without contributing. Trade associations testify on behalf of members who contribute through their own committees not the association. Manual review of the surfaced list is recommended; Tier D5 is a starting point, not an allegation.

Found an error? Submit a correction

Every finding on this site is a research lead. If you have evidence that contradicts a finding — either because we got the underlying records wrong, or because the structural pattern has a legitimate explanation we missed — submit it. We will update findings within 5 business days of a verified correction. The corrected version will note the original claim and the verified replacement, with a timestamp.

If anonymity is needed: submit via SecureDrop at nevadawhistleblowers.com instead of this form. The form above transmits via formsubmit.co (verified email forwarding) and logs your email if you provide one. SecureDrop runs over Tor with no browser logging.