Business insights
Every conversation is analysed for what happened, why, and how the customer felt. The results feed boards that answer the two questions an owner actually has: why isn't the business growing, and why aren't customers happy. The boards cover every conversation, not a sample, and every number can be opened to see the conversations behind it.
Case analysis#
A conversation is classified into the business's own cases, inside five fixed dimensions, and scored on a few axes. The cases are yours — Oqim writes a starting catalog for each business and you edit it.
- Every question offers the business's active cases for that dimension plus two escapes:
NONE_APPLY(no case fits) andUNCLEAR(the evidence is thin). An answer below the confidence floor — 0.5 by default — is stored asUNCLEAR, and a dimension that does not apply is stored asNOT_APPLICABLE. Nothing is guessed silently. - Scores: satisfaction 1–5, sentiment 1–5, purchase intent 0–4, urgency 0–3 and trust 0–3.
- Flags are stated as probabilities and read as true from 0.6 up: an unanswered question, a missed opportunity, a competitor mentioned, an unavailable item requested, a complaint.
- A person's correction wins: correcting a case from the conversation report overrides later automatic analyses of the same phase.
How it is decided#
JEV decides, the LLM writes. JEV classifies — one batched request per conversation, five dimensions and the scores and flags together — because classifying is cheap and reliable when it is a judgement, not a calculation. The LLM is used for the parts that are language: the business's case catalog, the per-conversation explanation, and the board narratives. It never counts.
- A final analysis re-opens as live if the customer writes again, so the board never reports a closed outcome for a live conversation.
- Without JEV — no opt-in or no key — the mode is
LLM, live-phase analysis is skipped, and the final phase is classified by the model in batches under your AI budget. With conversation intelligence switched off at the platform or the organization, the mode isOFFand nothing is analysed.
The case catalog#
- The model writes a starting catalog per business from its profile, offers and sales funnel. Each case carries names in Uzbek, Russian and English, and an English description that JEV is given as the option's criterion.
- Regenerating fills gaps by default: it is shown the cases that exist and drops anything that repeats one, so running it again does not grow the catalog with near-duplicates. Asking for a rewrite replaces the generated cases instead.
- You can add, edit, reorder and archive cases as you like. Archiving removes a case from new analyses without touching the history it already explains.
- Each case shows how many conversations it holds in the last 30 days, so an unused case is easy to spot.
Past conversations#
The boards should explain the business from day one, so conversations from before the AI was switched on — and imported history — are analysed too. A backfill works through every in-scope conversation that has no current analysis, newest first, with the final phase for quiet ones and JEV alone unless you allow the model. It is cost-capped, resumable and rate-limited, and it starts by itself when an import finishes or a business gets its catalog; a periodic sweep picks up anything missed.
Boards show its progress, so “analysing past conversations: 340 of 1,200” is visible rather than a board that is quietly half-empty. What is in scope, and what stays out of it, is on Past conversations and privacy.
The boards#
Each board is read for a period — the last 30 days by default, compared with the 30 days immediately before — and for a channel: Telegram, Instagram, Facebook, or all of them. The all-channels view adds a row per channel and compares them, so a problem that only exists on Instagram is visible instead of averaged away.
What is on a board
- KPIs — conversations, customers replied to, purchases, conversion, average first reply time, handoffs, opt-outs and average satisfaction — each with its previous-period value and change.
- Dimensions — for each case: how many conversations, its share of the dimension, the change since the previous period, the average confidence and a trend line.
- Scores — the average, the previous average, the distribution and the trend.
- Flags — how often each is raised, and how that compares with the previous period.
- Coverage — how many of the period's conversations are analysed, so a low number explains a thin board instead of hiding it.
Why isn't the business growing#
Numbers alone do not answer that. Each board writes a narrative on request, in the reader's language: a headline, findings — each pointing at the dimension and case it came from — and the actions it suggests.
- Written from the board's numbers only, never from messages, and grounded: every number in the text must appear in the data it was written from. If one does not, it is rewritten once and then withheld rather than published unverified.
- It is generated lazily, for one board, business, channel, period and language, and cached. It is refreshed at most hourly, and only when the underlying data changed — a narrative is never left describing numbers that have moved on.
- Statuses:
READY,PENDING(being written),STALE(the data changed; the old text is still returned) andDISABLED(withheld, with an error code).
What “estimated” means#
Every number on a board says where it comes from, and the three labels are never mixed:
Drill-down#
- Each case on a board opens the conversations behind it, with their channel, title, account, last message time, analysis phase, confidence, satisfaction and outcome case.
- A conversation opens its report: the cases with their probabilities, the scores and flags, and an explanation in your language of what happened and why. The explanation is written on request for a closed conversation — live ones have none yet.
- From there, the execution behind any AI message shows the decision, the knowledge and memory it used, and what it cost.
Social content#
Posts, videos and comments are analysed the same way — JEV judges, the model writes, code counts — and grouped into their own boards with a platform switcher for all, Instagram, Facebook and YouTube.
- Engagement, growth, posting cadence and the unanswered-comment count are computed in code. JEV classifies each comment — its intent, sentiment and flags such as needing a reply or mentioning a competitor — and each post, for example whether its caption carries a clear call to action.
- A business's own content and comment topics join the same catalog as two extra dimensions, so engagement can be read per topic. Conversations are never classified into topics; the conversation dimensions stay five.
- Social narratives answer the same kind of question: why engagement is falling, what people ask in the comments, and what content works.
- A YouTube channel's private numbers — watch time, average view duration, traffic sources, countries, viewer age — need the owner's own sign-in; a public channel reports what public data allows.
Events#
ai.analysis.updated— a conversation's analysis changed, with the dimensions whose classification moved. It carries no message text.ai.insights.narrative_ready— a board's narrative was written or refreshed (ai.social.narrative_readyfor social boards).ai.cases.generated— a business's case catalog was written or extended.ai.insights.backfill— progress of the analysis of past conversations, at most every five seconds while it runs and when it ends.ai.social.synced— a content sync finished, with how many posts and comments it read, stored and judged.
Their payloads are on Webhooks. The console refetches the affected board or conversation when one arrives.
Endpoints#
All under /api/v1. Reading takes ai:read; refreshing an analysis, correcting a case, generating a narrative or starting a backfill takes ai:operate; editing the catalog takes ai:manage. See the API reference for bodies and responses.