Blog · June 30, 2026 · 7 min read
Shipping Civic Tech Solo: What Building MarkSafe Taught Me
Building MarkSafe.net alone — civic hazard reporting for all 141 districts of Pakistan with auto-tagging of 1,000+ officials on X. Product lessons from civic tech.
MarkSafe.net is a civic hazard-reporting platform I built solo: anyone in Pakistan can drop an anonymous GPS pin on a pothole, an open manhole, or exposed wiring, and the report auto-posts to X tagging the exact MNAs and MPAs accountable for that constituency. It covers all 141 districts with 1,000+ officials mapped, fully bilingual in English and Urdu. Building it taught me more about product than any client project.
Accountability needs a name attached
Generic complaint portals fail because reports vanish into a queue nobody owns. MarkSafe's core design decision was to make every report *public* and *addressed to a person*. Mapping constituencies to officials' X handles turned a database row into social pressure. The technical work — geocoding a pin to a constituency, resolving it to current officeholders — exists to serve that one loop.
Anonymity is a feature you must engineer
Citizens won't report hazards if it means registering an account and attaching their identity to criticism of authorities. MarkSafe takes reports with zero signup: no accounts, no stored personal identifiers. The trade-off is spam risk, handled with rate limits and lightweight validation instead of identity. Trust design like this is invisible when done right and fatal when skipped.
Bilingual isn't a translation file
Urdu support meant RTL-aware layouts, Urdu-first content for every route (36 URLs fully bilingual), and category names that make sense colloquially rather than as literal translations. Half the audience judges credibility by whether the Urdu feels native. If you're building for a market like Pakistan, i18n is product work, not an npm package.
Solo shipping discipline
- One loop, polished: report → pin → post → pressure. Features that didn't serve the loop got cut.
- Boring stack (Next.js, OpenStreetMap, a queue for X posting) so all novelty budget went to the product itself.
- A ~30-second end-to-end report flow, because civic goodwill dies in slow UIs.
- Distribution built-in: every report is a public post, so usage *is* marketing — the same thinking as engineering visibility into a site.
Civic tech rarely pays, but it compounds: it's proof you can identify a real problem, scope it ruthlessly, and ship alone. The full technical breakdown is in the MarkSafe case study.
Haider Farooq is an AI engineer and data scientist based in Lahore, Pakistan — core engineer on TryCook.ai, developer at Aligno, and creator of MarkSafe.net. He builds agentic AI systems, RAG pipelines, and automation for teams worldwide. Work with him.
RELATED WORK