AI summaries
labelled, capped, never advice.
The market brief and per-coin reports. With an AI key they are written by the provider you choose; without one the app shows a rules-based Automatic summary. Both are always labelled.
01What it produces
| Text | Where | How often |
|---|---|---|
| Market brief | A card on the markets screen and its own screen: one paragraph and 3 to 6 bullets about the whole market (total market cap and its 24-hour change, Bitcoin dominance, largest gains and declines in the top 100, how many coins are up or down, recent headlines). | One per language. With AI, regenerated by refreshBrief when older than the console's interval (default 6 hours). |
| Coin report | A report for one coin with five sections: price action, market position, activity, in the news, things to watch. | Generated on request, then cached once per coin, language and day. |
Both are built from facts the backend computes from market data and headlines. The AI receives only those facts. Source: firebase/functions/src/api/insights.ts, ai.ts.
02Labels and the no-advice rules
- AI text is always labelled "AI-generated". The rules-based text is labelled "Automatic summary". Both carry the disclaimer (default: "Prices and summaries are for information only and are not financial advice. Crypto assets are volatile; do your own research."). You can reword the labels and the disclaimer in Console → Legal, but they cannot be empty.
- The AI is instructed to describe only the given facts and never to advise or predict: no buy, sell or hold wording, no price targets, no forecasts, no "bullish" or "bearish".
- After generation, the backend rejects any AI text containing words such as buy, sell, hold, should, recommend, accumulate, "price target" or "will rise/fall", and falls back to the automatic summary.
- The Automatic summary is generated from fixed templates in all 9 app languages (
firebase/functions/src/api/i18n.ts) and only describes computed facts.
The filters reduce risk; they do not make AI text correct. Keep the label and the disclaimer, and do not market the app as giving investment advice or signals.
03The automatic fallback
The app always gets a text. The labelled Automatic summary is used when:
- "Use AI" is off (the default), or no API key is set
- the daily call cap is reached
- the provider errors, times out (45 s), refuses, runs out of output tokens, or returns invalid output
- the output contains advice or prediction words
When AI is off or has no key, coin reports are free and ungated for everyone. The public demo works this way.
04Set it up
- Get a keyFrom your AI provider's dashboard: Anthropic, OpenAI, or any service with an OpenAI-compatible
/v1/chat/completionsendpoint. - Enter itConsole → AI summaries: choose the provider, paste the key (owner only, write-only), press Test. The test sends one tiny request (a few tokens).
- ModelAnthropic default:
claude-opus-5-5. Empty for OpenAI =gpt-5-mini(DEFAULT_AI_MODELSinfirebase/functions/src/api/defaults.ts). For a compatible endpoint, enter the model id it expects and its Base URL (the backend calls<base>/v1/chat/completions). - Switch onTurn on Use AI only after the test passes. Status then shows the AI key as working.
| Setting | Default | Range |
|---|---|---|
| Use AI | Off | — |
| Market brief / Coin reports | On / On | — |
| Regenerate the brief every (hours) | 6 | 1–168 |
| AI calls per day (most) | 200 | 0–100,000; 0 = no AI calls |
| Longest answer (output tokens) | 1200 | 200–8000 |
| Free AI coin reports per user and day | 0 | 0–100 |
| Reports unlocked by a rewarded ad per user and day | 1 | 0–50 (needs the rewarded placement under Ads) |
| AI coin reports per Pro user and day | 20 | 0–500 |
05Who gets an AI coin report
With AI on and a key set, the server decides (POST /v1/coins/{id}/report). The app picks the first allowance that applies (app/lib/domain/report_gate.dart):
- Pro: an active Pro user under the Pro daily allowance.
- Free: any user under the free daily allowance (0 by default).
- Credit: one AI credit from an AI report pack (an in-app purchase) or granted in the console.
- Rewarded: the user watches a rewarded ad, if that placement is on, under the rewarded daily allowance.
- Otherwise the app shows the paywall (Pro or the AI report pack).
A cached report still counts against the user's allowance (the allowance is per view). Automatic summaries are never counted.
06Cost
Every AI call is billed by your AI provider to you. The daily cap (default 200 calls) bounds the bill: over the cap everyone gets the automatic summary. The brief costs up to one call per language per interval; each coin report one call per coin, language and day. Check the AI calls today tile on the Overview and your provider's usage page, and set a spending limit with the provider.