“Got Salary” vs “Got Phone”
Intent detection is everything when one phrase can mean income and another means expense.
Two phrases. Same verb. Opposite money directions. “Got salary” is income. “Got phone” is expense. That tiny linguistic trap is why naive keyword bots fail in personal finance.
Early BolKharcha prototypes misclassified constantly. The model loved the word “got” and guessed. Guessing is unacceptable when balances are involved. We needed intent, not token matching.
The breakthrough was a 3-mode system: Income, Expense, and Account setup. Modes shrink the hypothesis space. When the user is in Expense mode, “got phone” is far less ambiguous.
Prompt engineering still mattered. Examples, counter-examples, and explicit rules about Nepali salary language versus purchase language improved classification. But prompts without product modes were never enough.
We also added soft confirmations with editable fields. Even a correct parse should be easy to tweak. UX forgiveness is part of NLP quality.
Evaluation was practical: a growing set of real Nepali/Hinglish sentences with expected intents. If accuracy dropped after a prompt change, we rolled back. Vibes are not metrics.
The takeaway for builders: language understanding is a product architecture problem. Models help. Boundaries save you.