What powers the AI
You never choose an AI engine on Onflow Ads, and there is no model picker anywhere in the product. This page explains what is behind the buttons, because two of the consequences are visible to you: images can be unavailable while text works perfectly, and a higher plan does not get you a better writer.
One engine for text, chosen for everyone​
The Onflow Ads team selects one text engine for the whole platform. Google's Gemini is the default; the team can switch the selection to Anthropic's Claude or to any of several other hosted engines. The switch is platform-wide and instant, and nothing about your account changes when it happens.
Two things follow:
- You cannot choose, and neither can a plan. Every member's text generation goes to the same engine.
- A half-finished switch cannot break AI. If a newly selected engine has no key configured yet, text falls back to the default rather than failing.
Plans differ in how many actions you get, not in which model writes them. Every text generation on Onflow Ads — Free through Ultimate — runs on the same model.
Images run on a different engine​
Image generation always routes to Gemini, regardless of which engine is serving text. That is why image availability is reported separately from text availability, and it produces a state that looks like a bug and is not:
Text works. Images do not. Every drafting button works normally, and every image request returns Image generation is temporarily unavailable. Please try again shortly.
When that happens, the composer popup's Image tab shows Image generation is temporarily unavailable. in place of the prompt field, so you are not offered a button that cannot work. Nothing is spent, and your image allowance is untouched.
If you are on Master or Ultimate and the Image tab shows a lock, read which sentence it is. AI images unlock on Master. is about your plan or your reliability; Image generation is temporarily unavailable. is an outage that will clear on its own.
The numbers are computed, the sentences are written​
This is the most important thing to understand about every AI helper on Onflow Ads, and it is why you can argue with a suggestion.
Wherever a helper produces both a figure and an opinion, the figure is arithmetic and the opinion is the model:
| Helper | Computed by the server | Written by the model |
|---|---|---|
| Check overlap | Which channels share a category and a language, or a category and a region | Whether to trim a cluster or keep it for repetition |
| Targeting copilot | How many channels accept your level, how many survive your targeting, and how many would survive if each filter were dropped | Which filter to relax first |
| Best day to go live | The candidate dates, from your channel's busiest posting weekdays | Which candidate to pick, and an eighteen-word reason |
| Find my best matches | The candidate partners — the ones already on your screen | Which two to four, and a reason each |
| What does this prove? | The proof trail's own facts: captures, signatures, edits, peak views | The plain-language reading of them |
Two guardrails follow from this design:
- The model can only choose from a real list. A recommended date is re-checked against the candidates, and a recommended partner's username is re-checked against the channels that were on your page. It cannot invent either.
- If validation fails, you get the arithmetic and your action back. The best-day advisor falls back to the soonest busy day and refunds the action; the matchmaker shows no panel and refunds the action.
The counts themselves come back whether or not the AI half runs. If you are out of allowance on the targeting copilot, you still get the pool numbers.
The output is sanitised before you see it​
Text a model returns is not passed through to your post as written. Every AI result on Onflow Ads goes through the same filter:
- Only three kinds of formatting survive — bold, italic and links. That is Telegram's own subset, and it is what a Telegram post can carry. Everything else is stripped.
- Tags are balanced and closed, so a truncated result can never leave broken markup in your post.
- Every link's address is checked. Ordinary web, Telegram and email addresses are kept. A protocol-relative or bare-domain address is upgraded to a normal secure web address. Anything else — including script-style addresses — makes the whole link disappear rather than being rendered as something clickable.
- Trimming re-runs the filter, so a result cut to length cannot end mid-tag.
The practical effect: if the model returns a link you did not expect, it is either a normal address or it is not there at all.
Generated images carry their own standing rules, stated in the prompt on every image button: no text, no logos, no watermarks, and no real people's faces. That keeps a generated ad graphic clear of trademark and likeness problems.
Prompts are checked before anything runs​
Every image prompt, every Generate brief, and the copy and instruction you send through the composer's Refine tab are screened against the content policy before a model is called. The screen is a local, rule-based check — no model, no cost — so a prompt that breaks the rules never spends an action. (The three engines' Generate tabs used to skip it; since 25 September 2026 they do not.)
The small helpers do not run it, because they are narrow by construction: the targeting copilot is handed pool counts, the proof explainer is handed a proof trail. There is no free-text channel to the model in them.
What the AI produced is checked too​
Every draft and every generated image is checked against the prohibited list before it is shown to you. One that fails is withheld and the action handed back. See Content rules for AI.
See Content rules for AI.
What is recorded about a generation​
| Recorded | Not recorded |
|---|---|
| That a call happened, and whether it succeeded, failed or was blocked | The text of your prompt |
| Which feature it came from, and whether it was text or an image | The text of the result |
| The engine and model used, the number of tokens, and the estimated cost | Anything about your post's content |
| Your account, your plan, and whether it came from the website or the bot |
That log is what the operations team reads to see whether AI is healthy and what it costs. It is not a record of what you wrote.
When the content-policy screen blocks a prompt, a short excerpt of it is stored as evidence for the human who reviews the flag. That is the only case in which the words you typed into an AI field are kept. See Content rules for AI.
What none of this changes​
- You are the publisher. Passing an AI check is not approval to run an ad. See Trust and safety.
- The AI decides nothing. No AI helper approves a booking, sets a price, resolves a dispute or moves your reliability score. A blocked prompt only proposes a flag; a person decides.
- The bot spends nothing. Members have no AI in Telegram. The bot's AI runs on our moderators' review cards.
Related​
- AI quotas and limits — the allowance, the walls and the operator switches.
- Content rules for AI — what is declined, and what happens afterwards.
- AI helpers across Onflow Ads — each helper's computed half and written half.
- AI FAQ and troubleshooting — every AI message, explained.