Skip to content
asim.dev
all work
hackathon — placedFull-stack developer · 2025

Betterment

Urdu-first civic reporting for Pakistani cities

A civic issue-reporting app built at Build for Pakistan: residents report local problems in Urdu or English, photos are AI-verified through Gemini, and reports route to a Node/Postgres backend from a React Native client.

  • React Native · Expo
  • Node.js
  • PostgreSQL
  • Gemini AI
  • i18n
Betterment civic reporting app

01 / context

Build for Pakistan challenges teams to ship something useful for Pakistani cities in a weekend. Our pick: civic reporting — potholes, broken streetlights, sanitation — where the friction isn't reporting itself, it's trust and language. Reports needed to work in Urdu first, and they needed to be verifiable before they hit a dashboard.

02 / problem

Two hard parts. Verification: a photo of something isn't a photo of the reported issue — we needed a gate that rejected irrelevant images without a human in the loop. Language: forms, prompts and error states all had to feel native in Urdu, not translated-afterthought.

03 / decisions

Gemini as the verification gate

Every submission's photo passes through a Gemini check against the report category before it's accepted — a structured prompt returns pass/fail with a confidence, and borderline cases get flagged for review instead of silently dropped.

Urdu-first i18n, not English-with-translations

Strings, layout direction considerations and typography were designed for Urdu first; English is the fallback locale. RTL-friendly component structure came from enforcing logical CSS properties everywhere in the React Native client.

Thin client, honest backend

A Node/Postgres API with a clean reports domain — the mobile client stays thin and offline-tolerant for flaky networks, queueing submissions locally when connectivity drops.

04 / outcome

  • Placed at Build for Pakistan — recognized in a national field of teams.
  • AI-verified reports with zero manual pre-moderation during the demo.
  • Bilingual UX that felt native in Urdu — judged by Urdu-first users.

05 / what i'd do differently

Hackathon pacing meant the verification prompt went through one iteration; production would need a proper eval set of tricky photos and a feedback loop on false accepts. I'd also spend more on the offline queue — our tolerance for network flakiness was optimism, not engineering.