MILAGPT
Start with “For business”: three steps to launch.
Book a reviewTelegram will open
RU·EN·UZ
Docs · Guest path

Guest path: a trial offer by the third reply at the latest

A guest writes to your bot, gets three questions in a row and leaves. Mila is built against that: she answers in the guest’s language, asks one question about the business and one more, and by her third reply at the latest gives one line of value for that business and a trial button. The invoice comes as a card, and a scenario exam checks all of it after every edit. Every line below links to the code.

For an owner whose bot gets guests from the site, ads, live streams and tracking links.

Six rules

From the first message to the invoice

The guest’s goal is to see in 3–4 turns how Mila helps their business, and to get a trial. Mila’s goal is to bring the guest honestly to a decision: to buy or “not now”. The rules come from Mila Tashkent: after them the “Customer path” exam passed 15 of 15. guest-path:10 guest-path:9 CHANGELOG.md:84-85

01 · LANGUAGE

The guest’s language

Russian, Uzbek or English — judged by all of the guest’s texts in the conversation, not by one word, the @name or the account language. A photo without a caption gets the language of their last text.

guest-path:12-15
02 · THIRD REPLY

Value and a trial

By her third reply at the latest: one line of value for the guest’s business and a trial button. A third reply without an offer is a mistake.

guest-path:17-20
03 · INVOICE

The invoice as a card

A picture and payment methods as buttons. Payment details are not repeated in the text if a button already has them.

guest-path:22-23
04 · SOFT NO

An illegal request

“Find the owners in that chat” gets a soft no, a legal way with the guest’s own contacts and a trial. A bare no is a mistake.

guest-path:28-29
05 · EXAMPLE

“What do I send?”

A one-line example for the guest’s business: “a photo of the menu or three questions guests often ask”.

guest-path:31-32
06 · TAG

The tag’s path

A guest who came by a tracking tag — partner, profession, live stream, gift — continues that topic; the main product is not pushed first.

guest-path:34-35
Three replies

One question, one follow-up — then an offer

Getting to know the guest is one question about the business and one follow-up. If the guest says “it depends” or “I don’t know”, Mila stops asking and proposes. guest-path:17-20

Already offered twice? She does not repeat it a third time and takes another way: a call with people, or an example. guest-path:17-20

The greeting, buttons and tag texts are in the guest’s language too: tags have _uz and _en fields. Nobody is moved to Russian. guest-path:12-15

Done, if
  • The reply is in the guest’s language.
  • By the third reply there is a line of value for their business and a trial button, or they were there earlier.
  • After the guest agrees — the invoice card, with no payment details in the text. guest-path:42-45
Invoice and payment

One card and one phrase

The guest chose the trial — Mila sends the invoice card: a picture and payment methods as buttons. She says one phrase: “Choose a method on the card; if it is a transfer, send the screenshot here”. guest-path:22-23

A guest from abroad gets methods without the local currency, Telegram Stars or USDT; local methods are for those who pay locally. guest-path:24

“We will invoice you tomorrow”, or “pay with the button” when there is no button, she does not say. A transfer screenshot is checked for the amount, the recipient, the date and the status; when in doubt it is “I will check and come back”, not “received”. guest-path:25 guest-path:26

What Mila does not do
  • No service marks — ✅, ⚠, ❌, “my verdict” — in the text to the guest; they go only into the card.
  • Nothing about her internals: sessions, memory, “I can’t start a new conversation”.
  • No invented prices: only the owner’s price list. guest-path:37-40
The exam

One scenario file — two runs

The owner’s word on 17.10.2026: run the fast check often, the live simulation now and then. Scenarios live in one yaml file: id, title, say — the guest’s lines in order, must, must_not, required. The fast run and the live run read the same file, otherwise the scores do not compare. exam:9 exam:11-13 exam.example.yaml:1-2

The fast run takes minutes, after every edit: the same prompt as in the real bot, a fresh session for each scenario, the guest’s lines one by one. A separate model turn judges the replies against must and must_not: pass or fail, with a word-for-word quote. exam:15-16 express_exam.mjs:62-73 exam:17 express_exam.mjs:41-50

The report header carries the prompt’s sha256 — compare it with the prompt your bot really uses. exam:16 express_exam.mjs:100 README.md:10

$ bun tools/express_exam.mjs \
    --yaml docs/exam-example/exam.example.yaml \
    --prompt docs/exam-example/guest-prompt.example.md \
    --repeat 3
Trust in the judge

A planted failure must fail

01

Three runs of each

With --repeat 3 each scenario runs three times and the result is “k of 3”: the model’s spread is shown, not hidden. A scenario passes by majority.

exam:18 express_exam.mjs:86-91
02

Planted failures

Mila’s last reply is swapped for a known bad one — a price list, “we will invoice you tomorrow”, a service mark. The judge must say “fail”. If it does not, the judge is not trusted.

exam:19 express_exam.mjs:92-97 exam.example.yaml:26-27
03

What the guest sees

The bridge’s service marks are cut out and buttons are shown as words: the judge reads the conversation the way the guest does.

express_exam.mjs:37-39
Live run

Once a day, at night — through the real bot

A user account writes to the bot as a guest. Before each scenario the guest is fully reset: session, pictures, greeting, language, tag, turn counter, cards, invoices — everything for that id, and only for test ids. exam:22-24

The fast and live results are compared point by point; where they differ, Mila works out which of the two is wrong. exam:22-24

The cycle: a failure, a one-line lesson, an edit to the prompt or the bridge, the fast run in minutes, the live run at night. The third identical remark goes into the rules. exam:26-27

Example scenarios · exam.example.yaml
  • “I want my own Mila” — a trial offer in the first reply and a button to start. yaml:4-9
  • The third reply — a bakery, “it depends”: a line of value and a trial offer. yaml:10-15
  • A guest in Uzbek — the answer is in Uzbek, not Russian or English. yaml:16-20
  • An illegal request — a soft no, a legal way with the guest’s own contacts, a trial. yaml:21-25
Honestly

What the guest path does not do

In the repository

Every line is there for you to read

Files behind the guest path and the exam in the mila repository
FileWhat it does
skills/guest-path/SKILL.mdthe guest path: language, third reply, invoice, soft no, example, tag
skills/exam/SKILL.mdthe exam: one yaml, fast and live runs, planted failures
tools/express_exam.mjsthe fast run: scenarios, judge, --repeat, planted failures, report
docs/exam-example/README.mdhow to run the fast exam
exam.example.yamlexample scenarios and a planted failure
packs/clinic/exam.yamlthe clinic pack’s exam
Open source · Apache-2.0

Fork it, teach it, send a PR

The kit is open: skills, hooks, tools and templates. Put your guest prompt next to exam.example.yaml and run the fast exam: the report shows which scenarios pass.

Facts on this page: github.com/shakhruz/mila (main, 570db38), checked 28 Oct 2026. The guest’s lines in the phone are scenario s02 from docs/exam-example; Mila’s replies there are an illustration. “Mila”, “MILAGPT” and the logo are trademarks of MILAGPT.