diff --git a/STRATEGY.md b/STRATEGY.md new file mode 100644 index 0000000..e8d89b9 --- /dev/null +++ b/STRATEGY.md @@ -0,0 +1,59 @@ +--- +name: Stemwijzer +last_updated: 2026-05-04 +--- + +# Stemwijzer Strategy + +## Target problem + +Voters in the Netherlands lack accessible, data-driven tools to understand how political parties actually vote in parliament versus how they present themselves. Existing voting compasses are either static (updated once per election cycle) or based on party self-assessment rather than real voting records. + +## Our approach + +Build the most transparent, data-grounded political compass by ingesting every parliamentary vote from the Tweede Kamer's public API, computing latent political dimensions via SVD, and letting users vote on real motions to see which parties actually align with their positions — not just what parties claim. + +## Who it's for + +**Primary:** Politically curious Dutch voters who want to move beyond party branding and understand actual parliamentary behavior. They're hiring Stemwijzer to make an informed voting decision based on data rather than rhetoric. + +## Key metrics + +- **Motion coverage** — Percentage of parliamentary motions ingested and available for voting; measured in `data/motions.db` +- **User-session completion rate** — Share of users who vote on at least 10 motions before exiting; measured via Streamlit session state +- **Party-match accuracy** — How well the SVD-derived party positions predict actual voting alignment; measured via cross-validation on held-out motions +- **Pipeline freshness** — Days since last successful pipeline run (fetch → embeddings → SVD); measured via `scripts/health_check.py` +- **Exploration depth** — Average number of tabs visited per session (compass, trajectories, SVD components); measured via Streamlit + +## Tracks + +### Data pipeline reliability + +Make the data ingestion and analysis pipeline robust enough to run unattended and recover from failures. + +_Why it serves the approach:_ The entire product depends on accurate, up-to-date voting data. If the pipeline breaks, the compass becomes stale and untrustworthy. + +### Analytical depth and transparency + +Deepen the SVD analysis and make the political dimensions interpretable and explorable — not just a black-box score. + +_Why it serves the approach:_ Users need to trust and understand why parties are positioned where they are. Raw scores without explanation are no better than party branding. + +### Agent-native architecture + +Restructure the codebase so that agents can safely explore, test, and modify it without human hand-holding — comprehensive tests, clear contracts, and self-documenting structure. + +_Why it serves the approach:_ A data-driven product requires constant iteration on analysis methods, visualizations, and feature experiments. Making the codebase agent-native enables rapid, safe iteration. + +## Not working on + +- Mobile native apps — the web-based Streamlit UI is sufficient for the target audience +- Social features (sharing, leaderboards, discussions) — the product is a research tool, not a social network +- Predictive modeling of election outcomes — the focus is on transparency of past/current voting, not forecasting +- Multi-language support — Dutch parliament, Dutch voters, Dutch UI + +## Marketing + +**One-liner:** Stemwijzer — vote on real parliamentary motions and discover which parties actually match your politics. + +**Key message:** Every vote in the Tweede Kamer is public. We compute the patterns, you discover where you fit.