Inspiration
Young people in Bangladesh make big decisions on information they can't check. A student freelancer can't prove their skills, so they undersell — and Fiverr keeps 20% of every order. Admission dates are scattered across separate university circulars. Prescriptions are hard to read. Household money and farm sales are decided without the full numbers.
[Add 1–2 true sentences here about the moment you saw this yourself — a friend, a relative, your own first client.]
Most AI tools make this worse: they answer confidently even when they are wrong. I wanted to build AI you can check.
What it does
KormoPath is one platform with a four-agent flagship and six everyday apps.
Flagship — from CV to money received
- Auditor — reads a CV, PDF or profile screenshot with Google Gemini. A skill is kept only if Gemini can quote it word-for-word from the CV; code checks every quote. Skills are valued against indicative Bangladeshi rate ranges.
- Examiner — a real bug to fix in a sandboxed Web Worker, then a spoken or typed viva. Pass both to get an HMAC-signed Skill Passport anyone can verify.
- Outreach — drafts a cold pitch and a bilingual English/বাংলা contract, including an internet-shutdown clause. The pitch is rejected if it mentions any dollar amount not in the contract.
- Treasurer — compares payout routes in taka with a live exchange rate. The math is deterministic, unit-tested code — never the model.
Six everyday apps on the same rules
- AdmitBuddy — university matching and an application tracker. It never invents admission dates; students add dates from official circulars with the source.
- MediScan BD — explains a prescription in plain Bangla and exports medicine reminders to the phone calendar. It never diagnoses, and an unknown drug pair is "no data", never "safe".
- Shohoj Budget — voice-first Bangla budget that understands "১২০০ টাকা" and "দেড় হাজার". Nothing is saved until you confirm.
- HaatBazar AI — tells a farmer whether a distant market is worth the trip after transport and commission, with live weather for spraying. No pesticide doses — it refers to the label and Krishi Call Centre 16123.
- Probaho Coach — interview and viva practice with a transparent score and a Gemini coach whose praise must quote your own words.
- FeeGuard BD — shows how much of a freelance payment really reaches you, line by line, with each fee's source.
No sign-up. App data stays on your device, and a privacy page shows exactly what is sent where.
How I built it
- Next.js 15, React 19, TypeScript (strict), Tailwind CSS v4, deployed on Vercel.
- Google Gemini in JSON mode. Every response is validated with Zod; if validation fails, the errors go back to the model for one repair attempt.
- Guardrails inside the schema. For example, a skill's evidence must be one exact quote from the CV, so a shortened quote like "Skills: [...] Node" triggers the repair loop instead of being silently accepted.
- A live trace in the UI logs every model call, schema check, evidence check, retry and fallback, with measured timings.
- Money is never computed by AI. All fee math lives in one pure module, and every route must reconcile exactly:
$$\text{gross} - \sum \text{fees} = \text{net}$$
- Resilience: if Gemini is overloaded (HTTP 429/503) the app retries, switches to a lighter Gemini model, and finally falls back to a rule-based agent — always labelled.
- Testing: 70 unit tests (Node's built-in test runner) and 103 real-browser checks with Puppeteer, including phone width.
Challenges I ran into
- The model shortened its quotes. Gemini wrote evidence like "Skills: [...] Node", so my exact-quote check rejected true skills — 5 of 9 on one demo CV. Instead of loosening the check, I moved the rule into the schema and the prompt. Now every skill on the three demo CVs is verified.
- Free-tier limits. The daily quota and 503 overloads would have dropped judges onto the fallback, so I added retries and a fallback model chain.
- Bangla text. Bangla digits, number words (বারোশো, দেড় হাজার) and characters that can be stored two ways in Unicode — an early version saved "১২০০ টাকা" as 200.
- Removing invented data. Early versions showed made-up deadlines, fake OCR accuracy scores and "real-time" prices. I removed all of them: unverifiable data is now user-entered with a source, or shown as a labelled example.
Accomplishments that I'm proud of
- Every skill Gemini extracts from the demo CVs is backed by a quote found in the CV.
- A health app that never diagnoses, a budget app that never saves unconfirmed voice input, and money math that always reconciles.
- Seven working apps, built solo, live and tested.
What I learned
- Treat model output as untrusted input. The best guardrails sit where the model can see the error and fix it.
- Showing the trace builds more trust than hiding the AI.
- Saying "we don't know" is a feature in health, money and admissions.
What's next for KormoPath
- Pilot with student freelancers at my university and collect real feedback.
- Pharmacist and agronomist review of the medical and crop notes.
- Optional accounts and sync across devices.
- Verified, sourced datasets for admission circulars and market prices.
Try it: kormopath.vercel.app · 2-minute judge tour · Demo video · Source code
Built With
- css3
- gemini-api
- google-gemini
- html5
- next.js
- node.js
- open-meteo
- puppeteer
- react
- rest-api
- tailwindcss
- typescript
- vercel
- web-speech-api
- web-workers
- zod
