One bot for Telegram and MAX: ads brought in 416 people at 17 ₽ each
The team behind the free AI bot "Liza Petrovna" added MAX without building a second bot. The bridge only receives and sends messages, while memory and agents are shared with Telegram. From 2 to 5 November, Yandex Direct ads costing 6 964 ₽ brought in 416 people, about 17 ₽ each, and roughly 310 of them came to MAX. The lesson for developers: keep the bridge thin and record the traffic source on first start.
AI-processed from Habr AI; edited by Hamidun News
Imagine you have a working Telegram bot and want to launch it in the Russian messenger MAX. The most obvious route is to copy the bot and adapt it to the new API, but a month later you have two memories, two sets of logic and two sets of bugs. The team behind the free AI assistant "Liza Petrovna" took a different path and described it on Habr: in MAX, the same assistant runs with the same memory and the same agents.
The result in money: from 2 to 5 November, ads in Yandex Direct cost 6 964 ₽ and brought 416 people to the bot. That is the "17 ₽ each": the cost of one person who actually reached the bot. Roughly 310 of them came to MAX and about 110 to Telegram.
It is worth reading if you are building a bot for several messengers: the post has the architecture, the numbers and a list of the team's own failures.
One bridge instead of a second bot
The core of the assistant lived in Telegram from the start. It consists of a secretary hub, specialized agents (designer, videographer, lawyer, and vision for photos and documents), memory, a model layer and storage. The requirement for MAX was strict: no separate logic and no separate memory. Only the way a message arrives and the way a reply leaves would change.
To do this, the team built a separate service, the MAX bridge, in the same docker compose setup. It knows nothing about agents and does three things: it fetches an event from MAX, turns it into an internal message and sends the reply. Both the Telegram adapter and the bridge call the same message-stream handler, so the entire pipeline runs in MAX without a single MAX-specific line.
Events are fetched via long-poll, without webhooks. That is simpler for a single bot and needs neither a public HTTPS endpoint nor signature verification. Only two event types are needed: pressing "Start" and a regular message. Errors are caught inside the handling of each event, so one broken update does not stop the loop. There is one catch: MAX does not provide a phone number, so accounts belonging to the same person in the two messengers cannot be merged automatically. For such cases the team keeps a "MAX-id → main account" mapping table, which the bridge re-reads without a restart.
Source tags and deep links
The author calls the marketing part the most useful one. Every link to the bot carries a tag, for example ?start=habr_nov.
On first start the tag is written to the first_ref field, and a repeat start via a different link does not overwrite it. The format is limited to short Latin strings: the parameter comes from the user and can be forged, and the same tag works in Telegram. A source report boils down to GROUP BY first_ref.
That is how the team found out that the previous Habr article brought 6 people, vc.ru brought one, and seeding in Telegram channels brought 43. Direct is evaluated not by clicks in Yandex Metrica, but by the people who reached the bot and wrote to it.
Deep links (links that open an app) turned out to be the most fragile part. A regular max.ru link behaves differently on different phones. The max:// scheme opens the app, but only if it is installed. On Android, an intent link with the app package and a fallback web address is more reliable. The main problem is in-app browsers: in October, 70% of landing-page traffic from VK Ads came from the Odnoklassniki WebView, where jumping to a third-party app barely works. Fewer than 1% of visitors pressed the button, and VK does not accept max.ru links in ads at all. The team shut the campaign down. Direct search ads lead to a regular mobile browser, where everything works.
Money, models and pitfalls
Full figures for 2–5 November: 11 178 impressions, 1 293 clicks, 6 964 ₽ spent, 416 people who reached the bot and 211 who wrote at least once. That works out to about 17 ₽ per person who arrived and about 33 ₽ per person who wrote. The best-performing ad was "AI in MAX without a VPN.
Free": 139 users in the first day. Per active user, MAX is not cheaper than Telegram (38 ₽ versus 34 ₽); the volume is simply larger. The author's explanation, which he himself calls a hypothesis: MAX has few competing AI bots, and "without a VPN" hits a real pain point.
The post also contains slightly different breakdown figures (311 and 126), so we use the rounded values from the table.
Models are split as follows: over 30 days, about 84% of replies (around 5 700) came from the cheap DeepSeek V4.1 Flash, 12% (825 replies) from Claude Sonnet 5.5, and the rest from DeepSeek via CLI and image models. The price of the savings shows in conversations: the cheap model sometimes produces an English service preamble in the designer agent, and images come out right in about 87% of cases.
The costliest mistakes were operational:
- During the move to a new production server, the bridge ran under a separate compose profile. The profile was not enabled, and the MAX bot stayed silent for ten days. The bridge now has its own watchdog: the health of the core says nothing about the health of the transport.
- When the landing page moved from a SPA to static pages, the MAX buttons that had been rendered on the client disappeared, and traffic from the site stopped without anyone noticing.
- A long consent screen at start: of 161 people, 106 accepted, 14 declined and 41 left silently. The team replaced it with a short invitation with a single button.
What remains unsolved
Attracting people is cheap, but retaining them is not working yet. Of the 23–26 October wave (about 190 people), 14 returned on day seven, roughly 7%, and the regular core is about 36 people. The practical takeaway for anyone building bots for several messengers: keep the transport thin, monitor each channel separately, set the source tag at first contact and test deep links from in-app browsers in advance. All figures were provided by the team itself and have not been independently verified.
Key Questions Answered
What are the key details on One bridge instead of a second bot?
The core of the assistant lived in Telegram from the start. It consists of a secretary hub, specialized agents (designer, videographer, lawyer, and vision for photos and documents), memory, a model layer and storage. The requirement for MAX was strict: no separate logic and no separate memory. Only the way a message arrives and the way a reply leaves would change. To do this, the team built a separate service, the MAX bridge, in the same docker compose setup.
What are the key details on Source tags and deep links?
The author calls the marketing part the most useful one. Every link to the bot carries a tag, for example ?start=habr_nov. On first start the tag is written to the first_ref field, and a repeat start via a different link does not overwrite it. The format is limited to short Latin strings: the parameter comes from the user and can be forged, and the same tag works in Telegram. A source report boils down to GROUP BY first_ref.
What are the key details on Money, models and pitfalls?
Full figures for 2–5 November: 11 178 impressions, 1 293 clicks, 6 964 ₽ spent, 416 people who reached the bot and 211 who wrote at least once. That works out to about 17 ₽ per person who arrived and about 33 ₽ per person who wrote. The best-performing ad was "AI in MAX without a VPN. Free": 139 users in the first day. Per active user, MAX is not cheaper than Telegram (38 ₽ versus 34 ₽); the volume is simply larger.
Ship AI Faster with Founders, Engineers & Weekly Architecture Reviews
Inside Vibe Club (hamidun.com/club) — weekly live masterminds with Zhemal Khamidun, Tech Radar, full LMS access, and 370+ production Claude Code skills.
The AI world, distilled — once a week
Seven stories that actually mattered, hand-picked. No noise, no reposts, no press releases.
Done! Check your inbox for a confirmation.