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.

Built With

Share this project:

Updates