I built a Telegram bot to split dinner bills because I hate Splitwise
A few weeks ago I was having dinner with 5 friends. The check came — crumpled thermal paper, foreign language, nobody has cash. Usually what happens: One person stares at the calculator app looking depressed. Someone says "let's just split equally" , even though two people only had tea and one ordered a $30 steak. Someone suggests Splitwise. But two people don't have it, one forgot their…
A few weeks ago, the speaker was having dinner with five friends. The check arrived, crumpled thermal paper and foreign language, no one had cash. The usual approach was for one person to stare at a calculator app, feeling depressed. Someone suggested splitting the bill equally, even though some people only had tea and one ordered a $30 steak.
Someone proposed using Splitwise, but two people didn't have it, one forgot their password, the App Store required an update, and nobody wanted to spend 10 minutes setting up an account at midnight to pay for noodles. The speaker, looking at the receipt, thought phone cameras and vision models were quite good. Why were they still manually typing numbers into spreadsheets?
Over the past few weeks, they ended up building a Telegram bot to automate this process. The bot uses a vision LLM to parse the receipt in Telegram, translating foreign dish names on the fly. The bot drops a Telegram Mini App link into the group chat. People open it inside Telegram and tap what they ordered, no signups, no passwords needed.
The backend then calculates who owes what and collapses all debts into minimum payments. The real challenges were in bill math: proportional tips, handling the missing cent, and simplifying debt. The backend computes net balances and matches the biggest debtor with the biggest creditor, guaranteeing at most N-1 transfers for N people. The bot is now live and free to use both on the web and via the Telegram bot @spbill_bot.
Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.