// forecast
// explore
Forecast a bill
Pick a real 118th-Congress bill to see what the model predicted and what actually happened, or tune the controls to build a hypothetical bill.
✓ model loaded · 16,213 bills · pr-auc 0.484 · committee_grouped dominates shap
// live
Live forecasts
These are real bills currently moving through the 119th Congress whose outcomes are not yet decided. The model forecasts the probability that each will advance past at least one chamber.
A note on scope: the model was trained on the completed 118th Congress, where the House was Republican-majority and the Senate was Democratic. The 119th Congress has Republican majorities in both chambers, which shifts the underlying dynamics the model learned from. These live forecasts are exploratory, not validated out-of-sample predictions. Think of them as what the 118th-trained model sees when it looks at the current Congress, with that caveat in mind.
// how it works
Measured honestly.
A leakage-audited gradient-boosting pipeline trained on 16,213 bills from the full 118th Congress (hr + s only). The train/test split is strictly chronological. The model never sees a bill before its introduction date, and historical features use an expanding window so no future outcome bleeds into the inputs.
Five feature representations were tested against the same 80/20 time-based split. Text embeddings (Legal-BERT), sponsor-history features, and cosponsorship-network centrality each failed to clear the metadata baseline. The metadata baseline, driven almost entirely by committee assignment and bill type, turned out to be genuinely hard to beat.
The GraphSAGE GNN shows a small positive delta (~+0.03 PR-AUC), but the band overlaps the baseline across seeds. It's an honest tie. The GNN is built and benchmarked. It's transductive, so the metadata GBM remains the deployed spine.
GraphSAGE over a leakage-safe cosponsorship graph (5.8M edges). Built, benchmarked, transductive.