The Problem
Karachi is a city of 20+ million people. Finding reliable, hyper-local information — the best biryani spot in Saddar, the fastest route from Clifton to Gulshan during rush hour, or the history of a specific landmark — is surprisingly hard. Generic AI assistants speak textbook Urdu and don't know the difference between Burns Road and Boat Basin.
The Approach
I built Jani (Urdu slang for "friend") — an AI guide trained specifically on Karachi's geography, food scene, culture, and traffic patterns. The entire spec was written before a single line of code, covering:
- User personas (residents, visitors, foodies)
- Conversation flows in Roman Urdu + English
- Knowledge graph of 200+ Karachi locations
- Response tone — friendly, slang-friendly, always helpful
Tech Stack
- Frontend: Next.js with Tailwind CSS
- AI: Google Gemini for natural language understanding
- Database: Neon DB for location data and conversation history
- Auth: NextAuth for user sessions
Key Challenges
Roman Urdu Understanding
Gemini handles Roman Urdu well, but we needed to guide it with few-shot prompts containing common Karachi slang.
Response Consistency
We built a response template system that ensures every answer includes: the direct answer, a local context note, and a follow-up suggestion.
Results
- Launched with 200+ Karachi locations in the knowledge base
- Handles 15+ conversation types (food recs, directions, history, culture)
- Response time under 2 seconds
What I Learned
Building domain-specific AI requires more than just prompting. A well-structured spec, a carefully curated knowledge base, and iterative testing with real users made all the difference.