On this page
What MSO Cloud ships today, what is in beta and what is planned, one row per capability. Every row names the evidence it was graded against, and no grade is rounded up.
Last verified: 24 September 2026 · platform release 0.3
Status vocabulary#
| Status | Meaning |
|---|---|
| shipped | In production and protected by a gate or test; proven against a live source or a live organization. |
| beta | Usable and enabled per organization, with a limit named in the row; not yet proven against a live provider, or may change. |
| planned | Decided or designed, not built. No date is promised. |
| closed | Deliberately not offered, by policy rather than for lack of time. Used only on the autonomy ladder. |
A row changes status only when its evidence changes. Evidence names a repository path, a gate (verify:data, verify:rls, audit:all) or a screen path.
Capabilities#
Data in
| Capability | Status | Since | Evidence | Page |
|---|---|---|---|---|
| Marketplace seller API sync: TikTok Shop, Lazada (orders, creators, inventory, with a look-back window for restated days) | shipped | 2026-07 | packages/connectors/tiktok-shop, packages/connectors/lazada |
Connect a marketplace |
| Marketplace seller API sync: Shopee. Not yet verified against a live seller account. | beta | 2026-06 | packages/connectors/shopee |
Connect a marketplace |
| Seller export upload: Shopee and Lazada CSV/XLSX, mapped through versioned templates | shipped | by 2026-06 | packages/connectors/csv-shopee, packages/connectors/csv-lazada; screen /connectors/uploads |
Upload CSV or Excel files |
| Marketing connectors: Google Ads, Meta Ads, GA4, Google Search Console, Brevo, LinkedIn Page | shipped | 2026-07-24 | packages/connectors/{google-ads,meta-ads,ga4,google-search-console,brevo,linkedin-page} |
Connect marketing sources |
| Marketing connectors: TikTok Ads, Shopee Ads API. Not yet verified against a live ad account; Shopee Ads also accepts file upload. | beta | 2026-07 | packages/connectors/tiktok-ads, packages/connectors/shopee-ads |
Connect marketing sources |
| TikTok affiliate API, warehouse connector, Bitrix24, Facebook Page Insights | planned | — | catalogue card without a sync driver, packages/plugin-host/src/registry.ts |
Connectors and data planes |
| Google Sheets: one sheet, several tabs, several datasets, same mapping contract as file upload | shipped | 2026-07-21 | packages/connectors/google-sheets |
Connect Google Sheets |
| Organization datasets from Sheets or XLSX (HR, finance, operations), schema declared by the organization | shipped | 2026-09-03 | apps/web/src/server/datasets/org-dataset-resolver.ts |
Organization datasets and measures |
| HR system dataset connector (Odoo HRM). Fixture-tested only; enabled per organization by a platform administrator. | beta | 2026-09-10 | packages/connectors/odoo |
Connectors and data planes |
| Third-party market estimates: labelled as estimates, periodic refresh, kept out of first-party KPIs and decision measurement | shipped | 2026-06-25 | packages/plugin-host/src/verticals.ts (estimate plane) |
Market Intelligence |
| Social listening feeds (mentions, trends) delivered through a shared spreadsheet | shipped | 2026-07-21 | packages/connectors/google-sheets |
Social Intelligence |
| Content Intelligence corpus: file upload plus mapping; no API connector in this family | shipped | 2026-07-31 | screen /content-intelligence/taxonomy |
Content Intelligence and the taxonomy studio |
| Data validation: upload the organization's own file and reconcile it per order and per day | shipped | 2026-06-05 | screen /validation |
Data validation |
Analysis
| Capability | Status | Since | Evidence | Page |
|---|---|---|---|---|
| Report pages as configuration, each declaring what may be edited | shipped | 2026-07-25 | surface.ts beside each dashboard route under apps/web/src/app/(dashboard) |
Dashboards |
| Layout editor: drag, resize, add and remove cards, drafts, phone editing | shipped | 2026-07-21 | apps/web/src/app/(dashboard)/_components/layout-editor-control.tsx, apps/web/e2e/layout-editor-perf.spec.ts |
Layout Editor and Layout Studio |
| Dashboard packs installed as data; pack cards survive pack upgrades | shipped | 2026-09-03 | audit:all (dashboard template and dataset pack registry checks) |
Organization datasets and measures |
| Page filter bar; a card that cannot honour a filter says so on the card | shipped | 2026-09-03 | audit:all (filter bar scope check) |
Dashboards |
| Explore with period comparison (previous period, year ago, custom) | shipped | by 2026-07 | screen /explore |
Explore and period comparison |
| Data assistant: answers only for data planes the organization has; a number not traceable to a supplied fact is dropped | shipped | by 2026-06 | apps/web/src/app/api/chat, packages/agent-eval |
Data assistant |
| Organization-owned model connections with ordered failover; "not ready" instead of an error when a key fails | shipped | 2026-06-23 | packages/ai |
Configure AI and the data assistant |
| AI card: an AI summary on any dashboard, with configurable prompt and data scope | shipped | 2026-08-31 | packages/ai |
Dashboards |
| Exports: CSV, Excel and PDF per report; whole-dashboard and whole-deck PDF | shipped | by 2026-07; PDF of whole pages 2026-08-22 | packages/exports |
Exports: CSV, Excel, PDF |
| Commerce operating screens: orders, products, inventory, creators, creator directory, data pipeline | shipped | 2026-04 | screens /orders, /products, /inventory, /creators, /pipeline; verify:data |
Commerce operations |
| eCom reports: commerce performance, payout reconciliation, LIVE commerce, cohort/RFM/KOL; each needs a marketplace connector, LIVE commerce is opt-in per organization | shipped | 2026-04 | screens /reports/commerce-performance, /reports/settlement, /reports/live-commerce, /reports/cohort-rfm-kol; verify:data |
eCom reports |
| Marketplace overview reports, one page per marketplace; each reads that marketplace's connection (Shopee API sync is beta, see above) | shipped | 2026-05 | screens /reports/marketplace/* |
Marketplace overviews |
| Role workspaces and the retail report pack, opt-in per organization | shipped | by 2026-07 | screens /workspaces/* |
Role workspaces |
| KPI and budget plans bound to a measuring source; actuals appear once an owner confirms the source | shipped | 2026-07-31 | packages/metrics |
Marketing performance |
| Finance pack (P&L measures). Measures compute; variance-table and waterfall card kinds are not built. | beta | 2026-09-12 | apps/web/src/server/dataset-packs/finance-pnl.json |
Organization datasets and measures |
| Marketing performance: ads, campaigns, web, search, email, social, leads, KPI and budget; measured on leads for lead-generation organizations | shipped | 2026-07-24 | screens /marketing-performance/* |
Marketing performance |
| Market Intelligence views: category, competitor, creator, product, livestream, shown with an estimate badge; opt-in | shipped | 2026-06-25 | screens /market-intelligence/* |
Market Intelligence |
| Social listening, trends and overview pages | shipped | 2026-07-21 | screens /social-intelligence/* |
Social Intelligence |
| Content Intelligence decks: presentation as data, insight editor, share links; AI insight drafts need human approval before publishing | shipped | 2026-07-31 | screens /content-intelligence, /content-intelligence/layout-studio |
Content Intelligence and the taxonomy studio |
| Taxonomy studio: rename groups, aliases, unclassified tracking | shipped | 2026-07-31 | screen /content-intelligence/taxonomy |
Content Intelligence and the taxonomy studio |
| Data assistant inside Content Intelligence workspaces | shipped | 2026-09-23 | apps/web/src/app/api/chat |
Data assistant |
Decision engine
| Capability | Status | Since | Evidence | Page |
|---|---|---|---|---|
| Declarative rules with a per-condition receipt, including why a playbook was not chosen; a missing signal never matches | shipped | 2026-07; "why not" 2026-09-04 | packages/metrics/src/playbook-rules.ts |
The decision engine |
| Versioned signal registry and an append-only ledger of fired signals, with the reason a signal was withheld | shipped | 2026-07; ledger 2026-09-19 | packages/metrics/src/signal-registry.ts; verify:rls (append-only ledger check) |
From signal to decision |
| Morning brief over ranked signals for every activated domain that declares a reader (not Market Intelligence, finance or Content Intelligence); platform-infrastructure alerts never reach it | shipped | 2026-09-12 | screen /briefing |
Signals and the morning brief |
| Signal feedback weight: repeated dismissals may only demote a signal. The brief has no dismiss or mark-as-acted button yet. | beta | 2026-09-19 | packages/metrics/src/signal-stats.ts |
Read and act on the morning brief |
| Decision lifecycle (proposed, approved, activated, measured) with owner approval and an audit record; abstains while the conversion feed has no data | shipped | 2026-07-25 | apps/web/src/server/routers/offtake.ts |
Decision engine screens |
| Definable conversion: the organization chooses the outcome a decision is measured on (orders, GMV, AOV, leads, deals, deal value) | shipped | 2026-07-31 | packages/metrics/src/conversion.ts |
Measurement and honest numbers |
| Action queue: proposals wait for approval; an approved action becomes manual steps for a person | shipped | 2026-04 | screen /action-queue; packages/actions/src/index.ts |
Decision engine screens |
| Weekly scan that turns marketing findings into measurable proposals, for organizations that enabled the loop and declared a conversion | shipped | 2026-07-31; scheduled 2026-08-28 | packages/metrics |
Decision engine screens |
| Weekly action memo, opt-in per domain | shipped | 2026-05 | screen /decisions/weekly-memo |
Decision engine screens |
| Playbook library filtered by organization type, including the industrial marketing catalogue | shipped | 2026-08-28; type filter 2026-09-04 | packages/metrics/src/playbook-scope.ts |
Marketing playbooks |
| Loop console for the platform administrator: what the engine did, rule authoring | shipped | 2026-09-21 | screen /admin/orgs/<slug>/mso-playbooks |
Platform administration |
| Episodic memory and track-record ranking; below a minimum of confirmed cases the ranking is unchanged and rates are hidden. Moves no evidence grade. | shipped | 2026-08-28 | packages/metrics/src/decision-memory.ts, packages/metrics/src/playbook-stats-rank.ts |
Decision engine screens |
| Impact estimate: observational before-and-after readouts; pre-registration, placebo checks and standard errors exist; not randomized | beta | 2026-08-30 | packages/metrics/src/experiments.ts, packages/metrics/src/experiments-registry.ts |
Measurement and honest numbers |
| Learned policy with off-policy evaluation. Evaluation exists and refuses on current logs, because selection is still deterministic. | beta | 2026-08-30 | packages/metrics/src/policy.ts, packages/metrics/src/ope.ts |
The decision engine |
| Replay of a decision from its frozen inputs, with a verdict of identical, divergent or unreplayable | shipped | 2026-08-30 | packages/metrics/src/decision-replay.ts; decision-replay build gate in verify:rls |
Measurement and honest numbers |
| Drift and calibration monitoring | shipped | by 2026-08 | packages/metrics/src/drift.ts |
Measurement and honest numbers |
| Champion and challenger: named policy versions, a promotion gate, human-approved promotion and rollback; drift demotes a challenger, never the champion. No promotion has run yet. | beta | 2026-08-30 | packages/metrics/src/policy-versions.ts |
The decision engine |
| Outbound activation of audiences to external destinations. Every run is a dry run. | beta | by 2026-07 | screen /activation |
Audiences, activation and service cases |
| Audience segments and service cases. Opt-in per organization and off by default; not yet run by a live organization. | beta | 2026-05 | screens /audiences, /service-cases; packages/plugin-host/src/registry.ts |
Audiences, activation and service cases |
| Causal compute service (media-mix, uplift, conformal intervals) | planned | — | not built | The decision engine |
| Agent memory with scope, validity and supersession; one trace from agent step to decision | planned | — | not built | The decision engine |
Administration
| Capability | Status | Since | Evidence | Page |
|---|---|---|---|---|
| Members and roles: owner, admin, editor, viewer, plus platform super admin; capabilities enforced server-side | shipped | 2026-04 | apps/web/src/lib/rbac.ts |
Roles and capabilities matrix |
| Brands: brand-scoped connections and data, brand-level access inside an organization | shipped | 2026-08-06 | verify:rls (brand isolation check) |
Multi-brand workspaces |
| Envelope-encrypted connector credentials, never displayed after save | shipped | by 2026-07 | packages/crypto |
Tenancy and security |
| Identity masking: term registry, per-role scope, AI-drafted candidates | shipped | 2026-09-19 | packages/mask; screen /settings/masking |
Identity masking |
| Notifications: in-app centre, preferences and digest | shipped | 2026-09-07; digest 2026-09-23 | packages/notify |
Notifications |
| Notification channels: web push, email, Telegram, Zalo. Need platform configuration, and every channel except email needs the user to link an account; the default is in-app only. | beta | 2026-09-07 | packages/notify-channels, packages/notify-zalo |
Notifications |
| Password, magic link, passkeys, two-factor codes, session management, API tokens | shipped | by 2026-06 | apps/web/src/auth; screens /settings/security, /settings/sessions, /settings/api-tokens |
Organization settings |
| LDAP / Active Directory login per organization, enabled by a platform administrator | shipped | 2026-08-22 | apps/web/src/auth/ldap.ts; screen /settings/ldap |
Set up LDAP/AD login |
| OpenID Connect login per organization. Not yet proven against a live identity provider. | beta | 2026-09-03 | apps/web/src/auth/oidc.ts; screen /settings/oidc |
Tenancy and security |
| White-label: branded sign-in and PDF footer brand under one entitlement per organization; a custom domain is verified separately and shows the platform sign-in without the entitlement. Custom domain not yet proven live. | beta | 2026-09-21 | screen /settings/login-page |
Enable white-label |
| Organization archive and self-service restore, with a mandatory safety snapshot; secrets are excluded from archives | shipped | 2026-07-15; self-service 2026-08-05 | screen /settings/backup |
Back up and restore an organization |
| Scheduled organization backups to a destination the organization chooses. No scheduled destination has run in production yet. | beta | 2026-08-05 | screen /settings/backup |
Back up and restore an organization |
| MCP server: the assistant's tools from MCP clients; token minted per organization by a platform administrator; third-party market tools excluded | shipped | by 2026-05 | apps/mcp-server, apps/web/src/app/api/mcp |
MCP server |
Platform
| Capability | Status | Since | Evidence | Page |
|---|---|---|---|---|
| Tenant isolation enforced in the database (row-level security) for the web app and background workers | shipped | 2026-07-15 | verify:rls |
Tenancy and security |
| Metric reconciliation against externally held ground truth: first-party marketplace, marketing, organization-dataset and discussion-corpus metrics; third-party estimates are out of scope by design | shipped | by 2026-06 | verify:data |
Measurement and honest numbers |
| Static audits and reconciliation gates on every push | shipped | by 2026-06 | audit:all, verify |
How the platform is engineered |
| A subdomain per organization; the host decides the organization before any data is read | shipped | 2026-07-21 | apps/web/src/server/request-org.ts |
Tenancy and security |
| Organization provisioning from blueprints, with a dry-run plan; features follow the organization type, no per-customer code | shipped | 2026-09-19 | apps/web/src/server/org-blueprints/plan.ts; audit:all (blueprint validity check) |
Provision a new organization |
| Features and connectors as plugins with dependency gates | shipped | by 2026-07 | packages/plugin-host/src/registry.ts |
Organization types |
| Platform console with the organization in the URL and searchable directories | shipped | 2026-09-21 | screens /admin/orgs/<slug>/* |
Platform administration |
Evidence ladder (L0–L5)#
How far a number the decision engine produces can be trusted. The ladder is independent of the autonomy ladder: a higher evidence grade grants no autonomy.
| Level | Capability | Status | Graded | Evidence | Still needed to move up |
|---|---|---|---|---|---|
| L0 | Reproducible playbook and decision kernel | shipped | 2026-09-18 | packages/metrics/src/offtake.test.ts against a frozen simulation log |
— |
| L1 | Declarative rules with a per-condition receipt | shipped | 2026-09-18 | packages/metrics/src/playbook-rules.ts |
— |
| L2 | Signal schema, version and provenance, snapshotted per decision; fired-signal ledger | shipped | 2026-09-24 | packages/metrics/src/signal-registry.ts |
— |
| L3 | Intervention impact with a valid control. Today: observational before-and-after readouts that disclose they are confounded and a lower bound. | beta | 2026-09-24 | packages/metrics/src/experiments.ts |
A randomized or reviewed quasi-experimental design with assignment, exposure, window and estimand stored before the readout |
| L4 | Learned policy with off-policy evaluation. Each decision logs its candidates, chosen action, probability, logging policy and a reward window declared in advance. Estimators, intervals and effective-sample-size checks exist and refuse on today's deterministic logs. | beta | 2026-09-24 | packages/metrics/src/policy.ts, packages/metrics/src/ope.ts |
Randomized selection that records its own probability, so evaluation can produce a number |
| L5 | Replay, drift and calibration, champion and challenger. Replay is a build gate; drift and calibration are monitored; promotion with approval and rollback exists in code and has not run. | beta; replay shipped, promotion has not run | 2026-09-24 | packages/metrics/src/decision-replay.ts, packages/metrics/src/policy-versions.ts |
A pinned data watermark so replay covers inputs as well as the kernel; a deletion audit for memory |
Autonomy ladder (A0–A4)#
How much the platform may act on its own. The platform recommends and records; a person decides and acts.
| Level | Capability | Status | Graded | Evidence |
|---|---|---|---|---|
| A0 | Explain: read governed facts and explain a receipt | shipped | 2026-09-24 | Data assistant |
| A1 | Propose: assemble evidence into a typed draft proposal | beta | 2026-09-24 | the marketing loop's proposal path and weekly scan, packages/metrics |
| A2 | Prepare: a bounded plan plus an approval request | planned | 2026-09-24 | no module |
| A3 | Execute approved: dispatch an approved action to a marketplace or ad account | closed | 2026-09-24 | packages/actions/src/index.ts approves and records; connectors hand the action back as manual steps |
| A4 | Bounded auto-execute inside policy limits | closed | 2026-09-24 | closed by policy |
MSO adoption ladder#
The customer's frame, not the platform's build status: how mature an organization's own marketing operation is. Level 3 supports human judgement and does not replace it.
| Level | Operating model | Character |
|---|---|---|
| PRE-MSO | Execution systems | Disconnected, manual, fragmented |
| 1A | Adaptive execution | A closed loop begins, still within each channel |
| 1B | Unified intelligence | Connected across channels, contextualized |
| 2 | Memory systems | Compounding intelligence; the organization stops restarting |
| 3 | Adaptive intelligence | Reasoning support, human plus system decisioning |
Not answerable today#
- Which signal produced which decision. The decision record carries the link and the code that fills it landed on 2026-09-19; until recorded decisions carry it, no query answers the question.
- The causal lift of an intervention. Readouts are observational; see L3.
- The expected value of a learned policy before it runs. Selection is deterministic, so off-policy evaluation refuses.
- Whether a replayed decision would read the same input values today. Replay pins the kernel, not the data window.