One pipeline, eight languages, three channels
A citizen speaks to an IVR line, types on WhatsApp, or sends an SMS. Setu turns that into a structured, geotagged, deduplicated civic record that a planning ministry can aggregate. Pick a real-world sample or write your own.
Simulate an incoming request
The classifier below is a lexicon matcher that runs entirely in this page — the same logic we ship to the edge so district offices with no connectivity can still triage. Production swaps in a fine-tuned multilingual encoder behind the identical interface.
Pipeline trace
Every stage is auditable. Low-confidence outputs route to a human queue rather than silently entering the index.
Emitted civic record
Open schema, signed and appended to the district ledger. This is the unit every downstream chart consumes.
Where demand concentrates
Requests per 100,000 residents, by sector and sub-national unit. Rate rather than raw count, so a metro of 12 million does not drown out a district of 900,000.
Orbital demand view
Each pillar is a sub-national unit. Height is its live priority score, so the planet re-extrudes when you move a weight on the priority engine. Drag to orbit, click a pillar to inspect, or select a member state to fly to it.
Use the left and right arrow keys to rotate, up and down to tilt, and Enter to step through units. Every value shown here also appears in the table below.
LOW → CRITICAL
KEYBOARD: FOCUS THE GLOBE, THEN ← → TO ROTATE, ↑ ↓ TO TILT, ENTER TO STEP THROUGH UNITS
Pillar height reads from the same scoring function as page 03 — this is a view onto the model, not a separate illustration.
Sectoral demand intensity
Darker cells carry more requests per capita. Read down a column for a cross-border sector signal; read across a row for a district's own priority order.
Bands are quintiles of the cohort, not a linear ramp: request rates are right-skewed, and a linear scale would colour four fifths of this matrix identically. Synthetic data. Sector taxonomy aligns to the UN SDG 6/7/9 infrastructure families so records stay comparable across member states.
Priority engine
Citizen demand alone is a popularity contest. Setu scores each unit against four weighted terms and reports how far the ranking diverges from money already committed in the national plan.
Weights
Move these to encode a government's stated doctrine. Nothing is hidden.
Capital plans are held in each state's currency of record. The console converts at an indicative rate so units stay comparable across borders; a deployment reads live central-bank rates.
Latent demand correction
Scoring function
All terms min–max normalised to 0–100 across the cohort. Funding gap is the inverse of committed capital per capita, so well-funded units are damped, not excluded.
Recommended investment order
Δ compares Setu's rank against the unit's rank by committed capital per capita. A red Δ means the plan is currently underweighting a place the evidence favours.
Top recommendation, written for a cabinet note
The voice gap
The known way a citizen-feedback platform fails: it hears the connected and funds them, while silent districts with worse infrastructure stay invisible. Setu measures that gap explicitly instead of assuming it away.
Participation against need
Horizontal: how loudly a unit reports. Vertical: how badly it scores on the infrastructure deficit index. Bubble area: capital already committed per capita, in the display currency you select on the priority engine. The lower-right quadrant is where naive demand-ranking sends the money; the upper-left is where it should also go.
Units in the upper-left file few requests yet carry the worst deficits — the correction on the previous page is what lifts them into the recommendation list.
Most under-heard units
Expected requests (from population × deficit) minus observed requests, normalised.
What we do about it
- Impute, then flag. Imputed demand never silently replaces real demand; the record carries an imputed:true field and the rank shows the uplift.
- Actively sample. Units above a gap threshold trigger outbound IVR surveys in the local language, turning a passive channel into a stratified one.
- Weight by census, not by traffic. Rates per 100k, never raw counts.
- Publish the gap. The voice-gap table is part of the public dashboard, so a district can contest its own invisibility.
Did the money change anything?
A platform that only ranks is an opinion generator. Setu holds a matched-control design so a ministry can state, with evidence, whether units it funded on this advice improved faster than comparable units it did not.
Infrastructure deficit, funded cohort against matched controls
Units funded in the top decile of Setu's ranking, paired with units of similar baseline deficit, population band and sector mix that were not funded. Lower is better.
Illustrative design, not observed results. These curves show the evaluation this prototype is built to support; no real programme has been run through it. The number that matters is the gap at Q8, and it is only credible if the control group was matched before allocation, not selected afterwards.
Why matched controls, not before-and-after
- Infrastructure improves anyway. A before-and-after chart credits the platform with every road the state would have built regardless.
- Ranking creates selection. High-scoring units differ systematically from low-scoring ones, so the comparison group has to be built on baseline covariates, not convenience.
- Pre-register the pairing. Matches are fixed and published before allocation, which is the only thing that stops a ministry from choosing flattering controls later.
Reported alongside every recommendation
Coverage and voice-gap variance are process metrics — they say the platform is being used fairly. Only the deficit gap says it worked.
Build and DPG posture
What exists in this prototype, what production needs, and why the design qualifies as a Digital Public Good rather than a vendor product.
Reference architecture
Digital Public Good criteria
- Open licence. AGPL-3.0 for the platform, CC-BY-4.0 for the schema and taxonomy.
- Open standards. OpenAPI, ISO 3166-2 sub-national codes, SDG-aligned sector taxonomy.
- Platform independence. No managed-cloud primitives; Postgres, object storage, containers.
- Do-no-harm by design. PII split at ingest, data-minimised aggregation store, published scoring weights.
- SDG relevance. Targets 6.1, 7.1, 9.1, 16.7 — the last one, responsive and participatory decision-making, is the direct one.
Status and next 30 days
- Working now: multilingual lexicon triage, sector and urgency tagging, geotagged records, demand aggregation, the weighted priority engine, latent-demand correction, plan-divergence reporting.
- Stubbed: ASR (samples are pre-transcribed), translation (pivot strings are fixed), dedup clustering.
- Next: wire Whisper and NLLB behind the existing interface; validate the classifier against a hand-labelled set of 2,000 real grievances with per-language F1 reported separately, because an aggregate score would hide failure in low-resource languages; back-test the priority ranking against three years of completed projects to check whether high-scoring units actually showed larger outcome gains.
How we would know it worked
- Coverage: share of districts filing at least 50 requests per 100k per quarter, and the voice gap's variance falling over time.
- Classifier quality: macro-F1 per language, not pooled; a floor of 0.75 on the weakest language before any recommendation ships.
- Alignment: rank correlation between Setu's order and the next budget cycle's actual allocations.
- Outcome: change in the infrastructure deficit index in funded units against matched unfunded controls, 24 months out.
The fourth metric is the only one that proves the platform mattered. The first three are necessary conditions, not evidence of impact.