Appearance
The AI reporting assistant
Ask the reports a question in plain language.
What it can answer
The assistant, at Reporting → AI, answers questions by calling one of seven read-only reporting tools: a device report (top brands, operating systems, or device classes), a dwell-time report (how long guests stay connected, bucketed from 5 minutes up to "more than an hour"), a login error report (the most frequent portal-page error messages), general login stats per zone (attempts, successes, failures, bandwidth, dwell, new/returning/unique accounts, unique devices, concurrent sessions), a profile report (logins and unique users per access profile), a reject-reason report (why logins were rejected — invalid credentials, expired account, quota limit, simultaneous-session limit, zone denied, MAC denied, licence, and so on), and a session report with four views — top bandwidth users, a per-zone summary, a per-profile summary, or why sessions ended. Every tool takes either a month or an explicit from/to date range, most also accept a specific zone, and the assistant resolves relative periods like "yesterday" or "last month" itself, in the tenant's own timezone, before calling anything.
What it cannot
It refuses anything that isn't about Kiwire captive-portal reporting — general knowledge, coding help, jokes, unrelated questions — with a fixed message pointing back at what it does cover, though it still handles a genuine follow-up, a greeting, or a question about its own capabilities. It has read access only; it cannot change any Kiwire setting or record. It's also built not to make numbers up: if a tool returns nothing, it says the report may not exist yet for that period rather than guessing, and if a reply quotes figures without having actually called a report tool that turn, the request is automatically retried once with the tool call made mandatory — if it still can't produce a verified number, the reply is marked as unverified instead of being presented as fact.
Charts
When an answer involves a comparable series of numbers — a breakdown by zone, profile, device brand/OS/class, dwell bucket, or termination reason — the assistant adds a chart after the table, as a small chart code block describing a bar, line, area, donut or pie chart. The table stays the answer; the chart is there to make the shape of it easier to read. It won't chart a single number, mix different units on one chart, or use a chart as a substitute for the table.
Where the data goes
Each conversation is held server-side, keyed to the tenant, the admin, and a chat id the browser assigns — not trusted from the browser itself; a client-supplied conversation history is ignored, specifically so nobody can forge a prior "assistant" turn and steer the next answer. Old conversations are pruned automatically. Any username or device identifier that shows up in a tool's result arrives already masked (jo***, j***@domain, AA:BB:CC:**:**:**), and the assistant is instructed to copy a masked value exactly rather than guess, extend, or "restore" it, or describe a person beyond what the row already says.
Token limits
Which provider key answers a prompt is decided by a fallback chain: a tenant's own key first (only if the tenant has BYOK switched on, held in the tenant's own database), then a platform key managed by Synchroweb, then the value in .env as a last resort. The platform default provider is currently MiniMax (model MiniMax-M3). Requests that run on the platform key count against a shared monthly token cap — currently set to 200,000 tokens per tenant per month (Synchroweb can raise or lower this per tenant; if nothing is set at all, Kiwire falls back to a built-in 500,000) — checked before a prompt runs, and a tenant that has hit its cap gets a clear "quota exceeded" response until the next month. A tenant running on its own key is never measured against this cap; that usage is billed directly to their own provider account. Response temperature and length are also tenant-configurable, defaulting to a low, close-to-deterministic setting appropriate for factual reporting answers.