Inspiration:
Trust in institutions erodes when promises aren’t tracked. Citizens hear “we will build X by Y,” but outcomes live in separate datasets. We wanted a simple, auditable way to connect promises → delivery using only open data (SDG16: Peace, Justice & Strong Institutions).
What it does:
Civic Mirror extracts “promises” from official announcements, pulls outcome indicators from the World Bank WDI API, and computes a 0–100 Transparency Index per sector (Health, Education, Environment). It visualizes results (bar + scatter), shows peer-country comparisons, and generates a 1-page policy brief with sources and downloadable CSV annexes.
How we built it:
Jupyter (Python): pandas, requests, BeautifulSoup, lxml Data: World Bank WDI; ministry press pages (scraped) NLP (rules): regex to detect promise statements + parse targets/years Scoring: Index = 50% fulfillment + 30% timeliness + 20% confidence Viz/UI: plotly charts + a lightweight Gradio notebook app Reproducibility: outputs to data/processed/ (CSV annexes + policy_brief.md)
Challenges we ran into:
- Messy sources: different site structures/selectors; some APIs flaked or returned 404/500.
- Unit/target parsing: % vs counts, missing target years, inconsistent phrasing.
- Data sparsity/lag: not every indicator updates yearly; needed sensible fallbacks.
- Keep it portable: avoid heavy stacks; run fully inside a single notebook.
Accomplishments that we're proud of:
End-to-end pipeline from promises → outcomes → index → visuals. Reproducible deliverables: annex CSVs + auto policy brief for reviewers. Clear, explainable formula and sector insights that non-technical audiences can trust. Clean GitHub repo + simple setup (works in Colab, no devops needed).
What we learned
Open data is powerful but standardization matters (naming, units, dates). Small, transparent methods beat black boxes for accountability use-cases. Building inside Jupyter with exportable artifacts (CSVs, brief) speeds review and adoption. Diplomacy angle: this approach can help compare delivery across countries and institutions fairly.
What's next for Civic Mirror
- Smarter promise extraction: multilingual (Arabic/French/English) NLP with spaCy/transformers; better number/date parsing; unit normalization (% vs counts).
- Evidence strength & citations: triangulate across multiple sources, show confidence badges, and link every claim to its URL.
- More indicators & countries: add broader WDI sets and peer groups; SDG16/SDG17 mapping for diplomacy and donor reporting.
- On-time forecasting: simple time-series models to predict likelihood of meeting targets.
- Human-in-the-loop review: quick approve/flag workflow inside the UI to reduce false positives.
- Deploy & integrate: Hugging Face Spaces demo, Docker image, and a minimal REST API to serve the index and sources.
- Data quality & ethics: robots.txt compliance, rate-limits, deduping, QA checks, and full change logs for reproducibility.
- UX polish: mobile-friendly views, per-sector shareable links, CSV/PNG exports, and keyboard-first navigation.
- Partnerships: pilot with NGOs/think tanks/embassies to produce diplomatic briefs and country scorecards.
- Open science: publish a methods note, add tests, and release versioned dataset snapshots with a CITATION file.

Log in or sign up for Devpost to join the conversation.