Own product · AI in your chats
Bruno: AI finds the promises in your chats and reminds you of them
“I’ll send the documents tomorrow” — and then you forget. Bruno connects to your Telegram, AI finds promises in your messages and reminds you in a bot with “done” and “cancelled” buttons. Before every model or prompt change, quality is checked on a reference set of phrases.
What it looks like
Mock-ups with demo data, no real data
Bruno
Reminder
You promised Ethan: “I’ll send the documents tomorrow”
· Due: today
[ ✅ Done ] [ ✖ Cancelled ]
09:00
At a glance
- Product
- My own, bruno.nooka.pro
- Status
- In production, subscription in Telegram Stars
- Role
- Product, architecture, development — solo
Results
63
phrases in the reference set: 27 promises and 36 non-promises, Russian and English
1.0
precision and recall on the reference set — the gate no change ships without
2
messengers: Telegram and Max
🧪Eval runs
| Model | Phrases | Precision / Recall | Latency | Cost |
|---|---|---|---|---|
| gpt-4o-mini | 60 | 1.0 / 1.0 | 764 ms | $0.06 |
| gpt-5.2 | 63 | 1.0 / 1.0 | 1,203 ms | $0.063 |
Before
- Promises are made across dozens of chats and get lost in the flow of messages.
- A task tracker cannot see your chats, and nobody copies every “I’ll do it” by hand.
- AI recognition is easy to break with a model change — and not notice.
What was built
Account connection
Telegram connects as a full account via TDLib: phone, code, two-factor or QR. The second messenger is Max.
Finding promises
Your messages go into a queue for analysis; AI decides whether each is a promise and by when, and the result is stored in the database.
Reminders with buttons
The bot reminds you in Telegram, and a promise is closed with one button: done or cancelled. There is also a Todoist export.
Reference set
Every model or prompt change runs against 63 labelled phrases: precision, recall, latency and cost. A drop in metrics stops the release.
Covered separately →Stack
- TypeScript
- Fastify
- React + Vite
- TDLib
- BullMQ
- PostgreSQL + Drizzle
- OpenAI
- Telegram Bot API
- Telegram Stars
Questions
Does Bruno read all my chats?
It analyses your own messages — that is where your promises live. Other people’s messages are not analysed.
Why is precision 1.0 not “perfect accuracy”?
It is the result on a small labelled set. We use it as a gate: a change that makes the metrics worse does not ship. Accuracy in real chats is below 100%, and that is expected.