All work

A family budget in Telegram: an expense is one line in a chat

kopim is personal and family expense tracking right inside Telegram. You can simply write an expense to the bot and the category fills itself in; reports, budgets and net worth live in the Mini App.

Context

It started as a personal setup of n8n, Google Sheets and a Telegram bot used by one family. Then it grew into a separate app for families and groups of friends.

What was built

An expense is one line. The main input is a plain message to the bot: “groceries 1500”. A leading plus means income, several lines mean several expenses at once. The bot understands pasted bank text messages (Sber, T-Bank, Alfa-Bank, VTB), and quick add also works from iPhone Shortcuts and Tasker.

Shared groups. All data belongs to a group, members join by code or invite link. Income can be split between members in proportion to their salaries and sent into category budgets.

Budgets and reports. Category budgets per week, month, quarter or year, separate event budgets such as a trip. Monthly and annual reports, money flow, net worth across accounts with a projection.

Many currencies. Rates come from an open source and are stored month by month.

AI hints. Once a week, a short review of spending in Russian or English. The model receives only category totals, not individual transactions; the result is stored encrypted.

History import. CSV and TSV up to 5000 rows: the delimiter and header are detected automatically, with a preview before loading.

Notifications. A new expense in the group, a budget overrun, a large transaction, daily and weekly summaries.

How it works

Sign-in goes through Telegram: the Mini App data signature is verified on the server, there is no registration. In a browser, sign-in uses the Telegram widget with replay protection.

Amounts, balances, salaries, budgets, notes and names are encrypted in the database (AES-256-GCM). So the database cannot sum amounts itself — everything is added up in the application. A deliberate price: a database dump or a backup says nothing without the key.

Every change passes the tests — 514 on the server, 294 in the frontend, 147 end-to-end — and ships automatically to my own infrastructure.

Scale: 378 commits from March to September 2026, about 19 thousand lines of C# and 35 thousand of TypeScript.

What it looks like

kopim.abrahamden.dev
The public page of the app: expense tracking in Telegram for yourself and your family
The public page of the app: expense tracking in Telegram for yourself and your family, mobile version
The public page of the app: expense tracking in Telegram for yourself and your family
Other case studies

Case studies and personal projects