$ FOLLOW THE MONEY Florida Campaign-Finance Knowledge Graph
Investigative campaign-finance intelligence

Follow the money.
Find the conflict.

A knowledge-graph explorer over Florida's complete Division of Elections contribution record. Resolve donors and recipients, map money between candidates, committees, judges, and attorneys, and cite every dollar to a filed report.

Free to join. You only pay for the AI analyst's usage — fund your account from $10, pay as you go. Built for litigators, investigators, journalists, and compliance teams.

6.1M+
Contribution records loaded
4 cycles
Election cycles covered
1.5M+
Resolved entities (donors & recipients)
100%
Figures traceable to filings
See it in action

Money, mapped. Every dollar traced to a filing.

Drop any donor, committee, candidate, judge, or law firm onto the canvas and watch the money fan out — then ask the AI analyst who's really behind it.

The money-flow map: clusters of donors and recipients around the Florida Democratic Party, Republican Party of Florida, and Trulieve, with directional money-flow arrows.
The money-galaxy map — resolved entities, real contributions, directional flow arrows.
The AI analyst answering 'Who are the biggest donors to the Republican Party of Florida?' with a ranked, sourced list.

Ask the analyst

Plain-English questions, answered from the real records — ranked, sourced, and plotted on the map.

For voters & the courtroom

See who your judge's friends are.

Judges in Florida run campaigns and raise money like any other candidate — and a striking share of it comes from the very people who appear before them: law firms, attorneys, and even clerks of court. Most of it is perfectly legal. All of it is public. Almost none of it is easy to see. We connect the dots so you can ask, in plain language, who funded the judge hearing your case — and whether the lawyer on the other side is one of them.

The money map showing Judge Michelle Pruitt Studstill and the law firm Platt Hopwood Russell & Cole, connected by a money-flow line — the firm contributed to the judge's campaign.
Follow the line: a law firm (Platt Hopwood Russell & Cole) and the circuit judge it helped fund (Michelle Pruitt Studstill) — the connection drawn straight from filed reports.

When an attorney contributes to a judge's campaign, the meaningful signal is rarely the dollar amount. A $500 contribution does not buy a ruling, and framing the ethics question as "votes for dollars" misses what the data actually reveals. The contribution is a trace of relationship — evidence that the attorney and the judge share enough professional context that one was either invited to a fundraiser, asked directly, or felt sufficient affiliation to give unprompted. That context typically includes shared bar-association membership, shared American Inns of Court participation, shared continuing-education circuits, and overlapping firm or alumni networks. Empirical research bears this out: studies by Damon Cann, Joanna Shepherd at Emory, and the American Constitution Society's "Skewed Justice" series consistently find that judges rule more favorably toward their contributors, with effect sizes too large to attribute to individual contributions but entirely consistent with relational ties shaping how arguments are heard. This is the concern the Supreme Court identified in In re Murchison, 349 U.S. 133 (1955) — "justice must satisfy the appearance of justice" — and revisited in Caperton v. A.T. Massey Coal Co., 556 U.S. 868 (2009), where the Court held that disproportionate campaign support can create a constitutionally intolerable probability of bias.

For litigants outside the legal profession, this embeddedness operates as a one-way disadvantage. A represented party brings their attorney's relational legibility into the courtroom — the judge knows the lawyer, has shared meals with them at inn-of-court dinners, recognizes them from prior cases, has prior information about their credibility and character. A pro se litigant or an outsider to the local bar brings none of that. Even when a judge acts in complete good faith, credibility judgments lean on prior information, and when the prior information is entirely one-sided the outcomes are asymmetric. Campaign-finance records are the only public dataset that approximates who knows whom on the bench — not because the contributions themselves are wrongful, but because the donation graph makes visible a professional network that otherwise leaves no public trace. The money is small; what the money proves is large.

Law firms

Why would a law firm give to every judge in their circuit?

Law firms show up directly in judges' contribution records — and not just for one judge. Map a firm's giving and a telling pattern emerges: the same firm donating to every judge in the circuit where it practices — and no one else. We let you see that spread at a glance.

Firm donationsCircuit-wide patterns
Attorneys

The lawyer arguing before the judge they funded

Before a hearing, find out whether the attorney appearing in your case contributed to the judge presiding over it. The graph surfaces direct donations and the indirect routes a name search misses — a spouse, a firm PAC, a shared giving circle — the kind of tie that supports a recusal motion or, at minimum, disclosure.

Recusal motionsConflict checks
Clerks & court staff

The whole courthouse, mapped

It isn't only the litigants. Clerks of court and other court-adjacent officials show up in the contribution record too. Mapping who in the courthouse funds whom reveals the social and financial circle around a bench that a single-name lookup will never assemble.

Clerk donationsGiving circles

Every dollar links back to its filed Division of Elections report — so what starts as "who are my judge's friends?" ends as a source-cited record you can act on. Explore all the use cases →

What it's for

Questions a knowledge graph can answer that a spreadsheet can't.

Contribution data is public, but it's fragmented across filings, spelled inconsistently, and disconnected. We resolve identities and rebuild the network so you can ask relationship questions directly. Each scenario below starts with a question you'd otherwise answer by hand across dozens of filings, and ends with a source-cited finding you can act on.

Scenario 01

A litigator checks whether opposing counsel's firm funded the presiding judge.

You're assigned a case before a circuit judge. Opposing counsel is a large local firm. Before the hearing you need to know: did that firm (its partners, or its PAC) contribute to this judge's campaign? If so, in what amount, and is it enough to support a motion for recusal or, at minimum, disclosure?

A name search on the state portal misses the indirect routes: a partner who gave through the firm's PAC, a spouse's contribution, or a bar group the partners belong to that backed the bench collectively. The graph resolves those identities and follows the edges for you.

Why it's hard by hand

Contributions are filed under inconsistent name spellings, split across cycles, and routed through committees. Reconstructing the full picture manually is slow and easy to under-count: exactly the gap an opposing party will exploit if your motion is incomplete.

Scenario 02

Detecting the social circle behind a judicial campaign.

A judge raised a substantial war chest. Who funded the campaign, and do those donors share an affiliation? Coordinated giving by an Inn of Court, a bar association, or a cluster of firms can signal an influence relationship worth documenting.

Cluster detection on the graph surfaces the group, not just the individual checks: it finds donors who repeatedly fund the same set of candidates together, then names the overlap.

Output

A ranked list of co-funding blocs, the candidates each bloc backs, and the aggregate dollars, with every contribution traceable to its source filing.

Scenario 03

Tracing money through committees to its true origin.

A candidate's largest "donor" is a committee with an anodyne name. Where did that committee's money actually come from? A funds B, B funds C, C funds the candidate, and the public-facing report only shows the last hop.

Path-finding walks the directed money-flow graph backward through PACs and committees to reveal the upstream sources, across multiple cycles if the money moved over time.

Where it matters

Pass-through and bundling patterns are often legal but rarely obvious. Surfacing them is the difference between reporting "Committee X gave $50k" and "Committee X relayed money that originated with three named industry donors."

Scenario 04

Vetting opposing counsel, experts, and public officials.

Before retaining an expert witness, deposing opposing counsel, or relying on a public official's neutrality, build a quick, defensible picture of their political giving and the relationships it implies.

The same resolution and graph machinery that powers recusal vetting applies to any named individual or entity: who they fund, who funds them, and whose circles they sit in — with a citation behind every claim.

Used by

Litigation teams, compliance and ethics officers, and anyone who needs a conflict check that holds up when challenged.

Scenario 05

Opposition research and investigative journalism, source-cited.

Newsrooms and research teams live and die by sourcing. A claim about who funded whom is only publishable if it traces to a primary record. The analyst is built so that every figure it returns links to a filed contribution — no aggregated mystery numbers.

Start broad ("biggest donors this cycle"), then drill: expand a donor's network, follow a path between two players, or pull the full contribution history behind a single relationship.

Deliverable

A reproducible, cited analysis another reporter or attorney can independently verify against the same public filings.

Scenario 06

Same-day, same-amount pass-through laundering.

The classic way to hide a source: a donor routes money through an intermediary committee that, on the same day, passes the same dollar amount to the target campaign. The money is channeled through a third party so the public report shows only the conduit — never the real origin.

The graph flags same-day, same-amount in→out pairs through a conduit and reconstructs the true source via multi-hop tracing. What looks like a clean committee donation resolves back to the donor who actually wrote the check.

Why it matters

This pattern hides who's really behind a candidate, and it's effectively invisible on the official flat-file portal: the timing and amount match that give it away only emerge once the contributions are resolved into a connected graph.

Scenario 07

Grassroots, or corporate-funded?

Is a candidate genuinely grassroots — many small, in-state individual donors — or corporate and PAC-funded, carried by a few large industry checks? The campaign rhetoric rarely tells you. The money does.

The app computes a 0–100 grassroots score from the donation-size distribution, the individual-versus-PAC share, and the in-state share of every dollar raised. A high score means broad, small-dollar, local support; a low score means concentrated, institutional money.

What it reveals

Candidates who campaign populist but are corporate-funded — the contradiction between message and money base, surfaced as a single comparable number.

Scenario 08

Who funds whom — and who controls the network.

Which big donors and industry PACs back which politicians? Start there, then ask the harder question: who actually controls the money network — the brokers and hubs the money flows through — not just who wrote the single biggest check.

PageRank centrality over the directed money-flow graph surfaces exactly those influential entities. A donor with a modest raw total can sit at the center of the network if everyone else's money routes through them — a position a dollar-total leaderboard completely misses.

Two directions

Rank the top entities by network influence statewide, or pivot to a single politician and ask who their biggest backers and industries really are.

Scenario 09

Research a whole race in one question.

Don't profile candidates one at a time. Ask about an office or race — "the agriculture commissioner race," "state senate district 9" — and get every candidate's funding profile side by side in a single shot: total raised, number of donors, grassroots score, corporate-versus-individual split.

Layered on top: coordinated funding blocs. An Inn of Court, a bar association, or an industry group collectively backing the same slate of candidates shows up as a cluster, so you see not just who's running but who's underwriting the field.

Output

A full-field race profile and the blocs spanning it — every figure traceable to its filing.

Start here

What is a knowledge graph?

It's the idea at the heart of this platform. Here it is two ways: plainly, then technically.

In plain terms

Imagine a giant web of pins on a wall. Each pin is a real thing: a donor, a candidate, a committee. Each string between pins is a real connection: "gave money to," "is the same person as," "funded the same campaign."

A spreadsheet just lists transactions in rows. A knowledge graph turns those rows into the web of who's connected to whom, so instead of reading line by line, you can follow the strings and see how the money moves.

In technical terms

A knowledge graph is a directed, typed graph G = (V, E): vertices V are resolved entities (donors, recipients, committees) and edges E are typed, weighted relations (e.g. donated(amount, date), same_as).

Raw filings are normalized, de-duplicated by entity resolution, and modeled as this graph, making it queryable with graph algorithms (shortest path, centrality, community detection) rather than flat table joins.

What makes it so powerful?

Because the relationships are first-class data (not buried inside rows), you can ask questions that span many hops at once: "trace every dollar from this donor to this candidate, even through three committees in between," or "which groups quietly fund the same people?" A spreadsheet can't answer those without hours of manual cross-referencing; the graph answers them in one traversal.

It also unifies fragmented identities: the same donor spelled a dozen ways collapses into one node, so totals are complete and connections that name-matching would miss become visible. That's the difference between data and understanding.

Why we built this

A public records system that's a public disservice.

Florida's campaign-finance record is, by law, the public's to inspect. But the only official way to search it is a 1990s CGI program at dos.elections.myflorida.com. The interface is hostile and the data is unusable without hours of manual cleanup. Two problems, though, go beyond inconvenience, and we can show you both with the official site's own output.

Security & integrity concern

It leaks raw database errors to the public

A bad input doesn't fail gracefully — the official search returns the database engine's own words: "Incorrect syntax near '='. Error Number = -2147217900." That single message tells the world the backend is Microsoft SQL Server, that user input is pasted straight into the query (the hallmark of a SQL-injection weakness), and that there is no error handling between the visitor and the database.

On the system of record for who funds Florida's elections, that is the worst place for it: an app that surfaces its own SQL errors is one crafted input away from someone reading — or altering — the very contribution data the public is meant to trust. A modern build parameterizes every query and never lets the database speak to the browser. This one does.

Raw ODBC SQL Server error returned by the official Florida campaign-finance search
Live on the official site: a raw ODBC / SQL Server error returned straight to the browser.
Abandonware

Untouched since the year 2000

The results page the public depends on still carries a leftover developer comment in its very first line of source: <!-- Revised 01/07/2000 by RNix Div of Elections -->. It's an HTML comment, so it never shows on screen — but it's right there in the page the state serves today, posting to a CGI binary at /cgi-bin/contrib.exe.

The window into a quarter-century of campaign money has, by the system's own record, not been meaningfully revised since January 2000. Don't take our word for it — here is the source.

View-source of the official results page: the first line is an HTML comment reading 'Revised 01/07/2000 by RNix Div of Elections'
The official results page's own source — first line: Revised 01/07/2000.

It leaks raw database errors

The TreSel.exe entry point returns an unhandled ODBC failure straight to the browser: "Incorrect syntax near '='. Error Number = -2147217900."

Push the record-limit field too high and it answers Overflow Error Number = 6: an integer overflow no one validated. Follow the Money fails gracefully and never exposes the database.

One letter scatters the data

Matching is exact-substring or Soundex only. "Smith" returned exactly 500 rows (a silent cap). "Smyth" returned only 24. The Soundex fallback for "Smyth" returned 500 rows polluted with false positives like SAINATO and SENNETT.

No entity resolution

The same business is filed as ADAM SMITH ENTERPRISES INC and ADAM SMITH ENTERPRISES, INC.: two separate rows for one entity, with nothing linking them. We resolve those fragments back into a single donor.

Results that punish the reader

Results come back as a fixed-width <pre> ASCII block, not even an HTML table, in tiny gray monospace with no columns you can sort, no links, and no relationships between entities. A citizen trying to follow the money is handed a wall of text and left to parse it by eye.

Truncated, single-year, by hand

A default 500-row cap is silently truncated, with no "X of Y" total. Searches are scoped to a single election year via a 97-option dropdown, so a donor's full history is fragmented across cycles you must stitch together yourself.

An interface built to be guessed at

You must already know the exact name you want. Dates are free-text mm/dd/yyyy boxes with no picker; three dropdowns carry 37, 47, and 97 options; there is no autocomplete anywhere. Get one field wrong and the search silently fails, with no guidance and no suggestions.

Unusable on a phone

The page has no viewport meta tag and forces a fixed 980px layout, so on a phone the entire form renders zoomed-out and tiny — every field needs pinch-zoom. In 2026, the public's window into election money is desktop-only, and even split across two hosts (dos.fl.gov docs vs the dos.elections.myflorida.com engine).

The archaic official Florida Division of Elections contribution search form
The search form — free-text date fields, giant dropdowns (37 / 47 / 97 options), no autocomplete, and name matching limited to "Containing / Starts With / Sounds Like."
The official site's flat fixed-width ASCII results dump
The results — a flat fixed-width <pre> text dump, capped at 500 rows, with no relationships between any of the entities listed.
Capability Official state search Follow the Money
Name matching Exact substring or Soundex only — one typo scatters the data Semantic search with resolved identities
Duplicate entities "ADAM SMITH ENTERPRISES INC" and "…, INC." are two separate rows Entity resolution collapses variants into one donor
Relationships None — a flat ASCII text dump Interactive money-flow graph with multi-hop tracing
Result limits Silent 500-row cap, no total shown Pagination with real "X of Y" totals
History span One election year per search (97-option dropdown) Full multi-cycle history, unified per entity
Devices No viewport meta; fixed 980px, unusable on a phone Responsive across desktop and mobile
Errors Raw ODBC / overflow errors leaked to the public Graceful errors; the database is never exposed
Last rebuilt Template marked "Revised 01/07/2000" Modern stack, actively developed

Why this is hard

Florida runs its disclosure on the honor system.

The contribution record is public — but it's typed in by hand, candidate by candidate, with no donor ID, no standardized names, and no validation. The same donor ends up shattered into dozens of fragments that no keyword search will ever total. Resolving those identities back into one entity is the whole problem — and our core capability.

  1. 1

    One donor, shattered into fragments

    Trulieve gave roughly $126 million across the record — but never as one clean donor. Candidates and committees type the company's name and its self-described "occupation" differently every time, so a single contributor splinters into dozens of look-alike strings. Total them by keyword and you under-count by an order of magnitude. Our entity resolution stitches the fragments back into one.

  2. 2

    No donor ID, no validation — the honor system

    Disclosure depends on filers self-reporting names and occupations by hand. There is no standardized identifier and no validation step — nothing reconciles "TRULIEVE INC." with "TRULIEVE, INC." or a freehand "MANUFACTURER." Whether the fragmentation is accidental or convenient, the effect is the same: tracking who really gave what becomes guesswork unless you resolve identities computationally.

  3. 3

    The public record is available — but built to resist research

    The state's official campaign-finance portal lets you search only by recipient (you must already know the committee), offers no semantic or fuzzy matching, and gives you no way to follow money across multiple hops. The record is technically public yet practically unusable for real analysis. We make it usable.

    State portal

    • Search by recipient only
    • No semantic / fuzzy search
    • Inconsistent, unresolved names
    • No multi-hop money tracing

    Follow the Money

    • Search any entity, semantically
    • Donors & recipients resolved
    • A→B→C tracing, automated
    • Mapped on an interactive 2D graph

The pipeline

How it works.

From raw state filings to a navigable network, with an AI analyst and an interactive 2D node map working off the same resolved data.

1

Load the record

Ingest Florida's complete Division of Elections contribution data — millions of donations across cycles, preserved without loss.

2

Resolve entities

Reconcile inconsistent names and addresses into stable donor / recipient identities, so the same person isn't five different nodes.

3

Graph + AI analysis

Explore on an interactive node map while an AI analyst expands networks, traces paths, ranks power brokers, and detects funding blocs on command.

4

Cite the findings

Every figure links back to the underlying filed report — ready to drop into a motion, memo, or story.

The science

Knowledge graphs, AI, and the management of complexity.

A primer — conceptual, not implementation-specific — on the ideas that make it possible to turn millions of disconnected records into a network you can question in plain language.

From Tables to Networks: Representing, Resolving, and Reasoning over Large Relational Records

Abstract

Public records are usually published as flat tables: rows of transactions with inconsistent, free-text identifiers and no explicit links between them. This shape is easy to store but hard to reason about, because the questions people actually ask — who is connected to whom, through what, and how strongly — are questions about relationships, not rows. This overview describes the conceptual stack that converts such records into a knowledge graph: a model in which real-world entities are nodes and the facts that relate them are edges. We sketch why entity resolution is the load-bearing step, how graph algorithms answer relationship questions that table queries cannot, how modern language models translate natural-language intent into precise retrieval over millions of records, and the techniques that keep all of this tractable at scale.

1. Knowledge representation: why a graph

A knowledge graph represents information as a set of entities (people, organizations, accounts) connected by typed, directed relationships (gave-to, paid, affiliated-with). The structure mirrors how the facts actually join together, so a relationship that would require many self-joins in a relational table becomes a single edge traversal. Crucially, the graph makes indirect connections first-class: a path of several edges (A relates to B, B to C) is as queryable as a direct one. This is the difference between asking "what rows contain this name" and asking "what is connected to this entity, and by how much."

2. Entity resolution: the hard, foundational problem

Real records do not come with stable identifiers. The same entity appears under many surface forms — spelling variants, abbreviations, punctuation differences, transcription errors, and differing free-text descriptions. Entity resolution (also called record linkage or deduplication) is the task of deciding which of these surface forms refer to the same underlying entity, and collapsing them into one canonical node.

Conceptually it combines several signals: deterministic rules for obvious matches, approximate string similarity (fuzzy matching) for near-duplicates, and semantic comparison — often via vector embeddings, numeric representations of meaning where similar entities sit close together in space. Getting this step right is what separates an under-counted, fragmented view from a faithful one: a single actor scattered across dozens of variant strings is invisible to keyword search until it is resolved back into one node.

3. Reasoning with graph algorithms

Once data is a graph, a body of well-studied graph algorithms answers relationship questions directly. Shortest-path and reachability search trace how one entity connects to another through intermediaries. Centrality measures rank which nodes are structurally important — the hubs through which influence or value flows. Community detection (clustering) exposes densely connected groups that behave as a bloc, even when no single member stands out. Flow propagation models how a quantity spreads through the network, splitting at each node, to estimate where it ultimately lands. These are general techniques: the same algorithms illuminate financial networks, supply chains, citation graphs, and social structures alike.

4. Language models as an interface to retrieval

A large language model (LLM) is a system trained to predict and generate text; its practical power here is translation of intent. A user asks a question in ordinary language; the model maps that intent onto precise, structured operations — which entity to locate, which relationship to traverse, which analysis to run — and then narrates the result. This pattern, often called tool use or retrieval-augmented generation, keeps the model grounded: it does not invent figures, it orchestrates queries against the authoritative data and reports what comes back. The heavy lifting — scanning millions of records — is done by indexes and the database; the model decides what to ask and explains what it means, returning answers in seconds rather than hours of manual cross-referencing.

5. Managing complexity at scale

A graph of millions of nodes cannot be drawn or queried naively. Several techniques keep it tractable. Indexing and pre-aggregation turn relationship lookups that would scan entire tables into near-instant seeks. Level-of-detail rendering and lazy loading fetch only what is in view and only when needed, so an interface can sit atop a graph far larger than any screen. Bounded, ranked expansion ensures that when an entity has thousands of connections, the most significant ones are surfaced first rather than an arbitrary slice. Together these let a person explore an enormous network interactively — zooming from a single actor to a whole community and back — without ever loading the whole thing at once.

6. Provenance and verifiability

Analysis is only trustworthy if it can be checked. The principle of provenance holds that every derived figure should decompose back to the primary records that produced it. In a knowledge graph this means an aggregated edge is never a dead end: it can always be expanded into the individual source transactions behind it. Resolution decisions — which surface forms were merged into one entity — should likewise be inspectable rather than hidden. This makes computational findings defensible: a claim is not "the system says so" but "here are the underlying filings, see for yourself."

Methods & algorithms
Probabilistic record linkage

Candidate pairs are scored with the Fellegi–Sunter model; per-field agreement weights are w = log2( m / u ) with m/u estimated by Expectation–Maximization. Names are blocked and compared with Jaro–Winkler simjw and Levenshtein edit distance, then unified by union–find over the match graph.

Fellegi & Sunter (1969); Winkler (1990); Dempster–Laird–Rubin EM (1977)
Embedding similarity

Residual ambiguity is resolved with transformer sentence embeddings and cosine similarity cos(θ) = (a·b) / (‖a‖‖b‖), retrieved via approximate nearest-neighbor (HNSW) search in sub-linear time.

Vaswani et al., “Attention Is All You Need” (2017); Malkov & Yashunin, HNSW (2018)
Graph algorithms

Money-flow paths use Dijkstra / bidirectional BFS on the weighted digraph G = (V, E, w); influence is ranked by eigenvector / PageRank centrality PR(v) = (1−d)/N + d·Σ PR(u)/L(u); clusters via Louvain modularity maximization Q = (1/2m) Σ [Aij − kikj/2m] δ(ci,cj).

Dijkstra (1959); Brin & Page, PageRank (1998); Blondel et al., Louvain (2008)
LLM tool-use & retrieval

Natural-language queries are grounded by retrieval-augmented generation over the graph: the model plans tool calls, retrieves entities/edges, and answers only from retrieved evidence — constraining hallucination to the provenance set.

Lewis et al., RAG (2020); Schick et al., Toolformer (2023)
Scalable interactive rendering

A 1.05M-node / 3.0M-edge graph is explored at interactive frame rates via spatial indexing, viewport culling, and level-of-detail; layout uses the ForceAtlas2 force-directed embedding Fr ∝ k²/d,  Fa ∝ d²/k.

Fruchterman & Reingold (1991); Jacomy et al., ForceAtlas2 (2014)

Instant search over millions

Ask in plain language and the AI analyst locates an entity among millions of records and returns it in seconds — work that would take hours of manual cross-referencing.

🔗

Resolve fragmented identities

One actor scattered across dozens of name and description variants is stitched back into a single node — so totals are complete, not under-counted.

🧭

Trace multi-hop connections

Follow a relationship through intermediaries — A to B to C — to surface indirect ties and ultimate origins that no single-table lookup can reach.

See the whole network

Explore an interactive map that scales from one entity to an entire community, expanding the most significant connections first.

Detect coordinated groups

Community-detection surfaces blocs that act together — groups funding the same target — even when no individual member stands out.

Verify every figure

Drill any aggregate down to the individual source records behind it. Findings are defensible because the primary evidence is one click away.

Signature feature

Follow the Money — project where a dollar would go.

Enter a hypothetical amount and an entity, and the model projects how that money would most likely flow onward — distributed across the recipients that entity has historically funded, weighted by its observed giving behavior. It turns the static record into a forward-looking what-if.

The projection is a transparent, evidence-based estimate derived from prior money flow — not a prediction of intent. Every weight traces back to filed contributions you can inspect.

How the split is computed

For a source entity s giving a hypothetical amount A, each historical recipient r receives a share proportional to the prior flow along that edge:

share(r) = A · w(s→r) / Σk w(s→k)

where w(s→r) is the recipient's historical weight (total given, optionally decayed by recency). The split then propagates along the money-flow graph, so you can trace a hypothetical dollar multiple hops downstream — donor → committee → candidate — not just the first recipient.

Credibility

Defensible by construction.

"Show me whether anyone appearing before this judge — directly or through a firm PAC — funded the campaign, and cite the filings."

Analyst response: a resolved sub-graph, ranked contributions, shared-circle flags, and a record-level citation for each dollar.

Source: Florida Division of Elections, Campaign Finance Database (public filings).

Get started

Open the graph. Follow the money.

Create an account and start with free analyst tokens. No data wrangling — the record is already loaded and resolved.

Create Account Log In