Xata
Start fresh or branch an existing Postgres in seconds, and scale to zero when it is idle.
AI translation
Political money & policy provenance. Receipts, not conclusions.
Translation pending
DataTypeScript · PythonGitHub @albert239825OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Political money & policy provenance engine. DNHacks 2026 (Sept 5–6), Station DC. Team: Eric, Albert, Patrick.
We don't tell you who to vote for. We show you the receipts.
Public records — FEC filings, congressional votes, ad libraries — fused into one navigable system. Every number links to
its government record. Adjacency, never causation.
• Every visible number has a source_url. No exceptions.
• Money edges (contributions, transfers) and targeting edges (iRead the full README ↗Political money & policy provenance engine. DNHacks 2026 (Sept 5–6), Station DC. Team: Eric, Albert, Patrick.
We don't tell you who to vote for. We show you the receipts.
Public records — FEC filings, congressional votes, ad libraries — fused into one navigable system. Every number links to its government record. Adjacency, never causation.
contracts/ Zod schemas + TS types for every JSON file the app reads. THE interface between pipeline and web.
pipeline/ Python: FEC bulk → DuckDB → filtered Parquet → static JSON. Offline only.
data/fec/ Filtered FEC Parquet per race (committed, small).
data/out/ JSON the web app reads (committed). races.json + <race_id>/{ledger,ads,stories}.json + entities/ chains/ dossiers/
web/ Next.js 15 app. Reads data/out at build time. No backend, no runtime fetches.
docs/ README.md (index) · FAQ.md · LOG.md · ONTOLOGY.md · QUESTIONS.md (open) · DECISIONS.md (log) · PLAN.md · CONTRACTS.md · SATURDAY.md
# web (works immediately against data/out)
cd web && npm install && npm run dev # http://localhost:3000
# Money Trails graph mode (optional; D-82) — the ask box answers route-only without it
docker run -d --name cc-neo4j -p 7474:7474 -p 7687:7687 -e NEO4J_AUTH=neo4j/<password> neo4j:5
cd web && node --env-file=.env.local --import tsx scripts/load-graph.ts pa-sen-2024 --reset # NEO4J_URI/USER/PASSWORD + XAI_API_KEY in web/.env.local
# contracts
cd contracts && npm install && npm run validate # validates data/out against schemas
npm run jsonschema # regenerate contracts/jsonschema/ after schema edits
# pipeline
cp .env.example .env # add FEC_API_KEY, CONGRESS_GOV_API_KEY
cd pipeline && make setup && . .venv/bin/activate
make mock # regenerate mock fixtures
make all # ingest ledger chains vendors ads ads-enrich issues dossier chains-out search validate (RACE=pa-sen-2024)
source_url. No exceptions.data_status: "mock" files are placeholders; the pipeline overwrites them in place.