Originally published at Trida AI.
A small online retailer's week lives in five tools that do not talk to each other: the storefront knows the orders, the payments tool knows the refunds, the ad account knows the spend, the email platform knows the flows, the books know the expenses. The owner's Sunday-night ritual — export, eyeball, worry — is where those five stories get reconciled, by a tired human, into decisions about stock, spend and copy. Meta saw the same ritual and productised it: Muse for Small Business puts a Muse Spark agent over exactly that connected stack. This blueprint is the open, governed version of that pattern — the same operating picture, the same drafts, but built so that every number can be traced, every draft is checked before it exists, and nothing leaves the building on the model's say-so.
This open blueprint, the SMB Commerce Operations Agent, watches a small home-goods retailer's orders, refunds, inventory, ad spend, email flows and expenses. The operating picture is computed in code; the findings come from versioned rule packs; the growth plan and the copy are drafted by the model through the Meta Model API — behind two gates Meta's own demonstrations popularised: a separate guardian screen, and a named human approval before anything sends, publishes or spends.
Facts enter under contract, or not at all
Everything starts at the ingest port, and the port is rude. Each feed — storefront, payments, warehouse, ads, email, books — arrives as a batch under a stated contract version, and every record must carry its source system and an as-of date. A record without provenance is refused; a batch under the wrong contract version is quarantined whole, with the violations listed — in the sample data, a test books batch is turned away entirely rather than partially absorbed. Replaying a batch lands nothing twice: the storefront's 2,184 orders replay as 2,184 duplicates and zero new facts. By the time anything computes, the record is 3,954 facts that all answer the question "where did you come from, and as of when?"
The picture, computed
Over those facts, a ledger computes the year in Decimal arithmetic: gross revenue of $2,077,752, refunds of $38,144 (a rate of 1.84%), net revenue of $2,039,608 and gross margin of $1,155,009. The ledger is an insert-only, content-addressed artefact, and a verifier re-performs every figure by a second route from the stored facts. Tamper with a fact behind the store's back and verification does not produce a slightly different total — it names the tampered fact. Inventory cover is computed per product the same way: one linen throw is the tightest, 210 on hand at ten a day, 21.00 days of cover, out on January 25.
The year, computed once and re-performed by a second route before anyone reads it.
Findings with thresholds, not vibes
Diagnosis packs turn the ledger into findings, and each pack states its bars before it judges. The throw is flagged because 21.00 days sits under the pack's 24-day stockout horizon — a product with adequate cover is named nowhere, and one with no sales history reads no-data rather than zero-risk. The social ad set is flagged decaying: $26,000 of spend whose return fell from 4.0000 in its first week to 0.1704 in its last, judged only because it clears the pack's spend and history floors; the two steady sets are named nowhere, and a set below the floors would be recorded as unjudged, with the reason — never silently passed. The books yield a duplicate: the same vendor charging the same $349.00 on consecutive days, both fact identifiers on the finding's face. The refund pack flags one product returning at exactly 5.00% against a 4.00% bar, over enough volume to judge. And the email audit finds the flow that was never defined — winback — and drafts a proposal for it that is stamped, in so many words, as changing nothing.
Every finding set is re-performed from the facts by a second route before it may be stored. A mismatch stores a refusal instead. The system would rather have a recorded refusal than a finding it cannot re-derive.
Each finding names its bar; what clears no bar is named nowhere.
Drafts that cannot invent a number
When the model enters — drafting the growth plan's narrative, the winback email copy, a budget note for the decaying ad set — it works under a figure contract. It is handed a figure sheet: the only numbers the draft may state, each carrying the artefact and field it resolves to. Its reply must include a claims list citing that sheet for every figure in the prose, and a verifier scans the prose for number tokens besides — a figure with no claim is a failure, and a draft with an invented or mismatched figure is refused whole and recorded as a refusal. Fluency is not evidence; the draft earns its numbers or it does not exist.
A guardian, then a name
A verified draft still goes nowhere. A separate guardian screen — a second, independent check in the pattern of Meta's own guardian-agent demonstrations — screens every draft on its way out. Then a named human approves, and the approval act is bound to the draft's content hash: edit one word after approval and the approval no longer covers the draft. Execution against real systems sits beyond that gate, deliberately out of the blueprint's scope: what is proven here is that nothing can reach the gate uncomputed, unverified, unscreened or unsigned.
The tier is a choice, with a price and a trade
Muse Spark's API tiers make an honest design decision visible. At published prices, a standard call of a million tokens in and a million out costs $5.50; the contributor tier costs $0.30 for the same call — because contributor traffic may be used to improve Meta's products, and standard traffic is not. For an agent reading a business's real books, that is not a pricing footnote; it is a data decision. So the tier is explicit configuration, standard is the default, contributor must be chosen on purpose and is stamped on every cost-ledger record it touches, and every model call is written to that ledger with its tokens and computed cost, reconciling exactly. The hosted profile is wired and fails closed without a key — the sample runs here are the deterministic offline profile, and the blueprint says so rather than dressing them up as live calls.
The photograph that is not a vase
A late addition shows the discipline generalising. Listing photographs enter through an intake that measures what code can measure — dimensions, format — and records what only a model can judge as the model's own artefact, labelled as judgement. In the sample catalogue: one product's image is 240 by 180 pixels against an 800 minimum; one product has no image at all; one file claims to be a JPEG and measures as a PNG; and one product, declared as a ceramic vase, is photographed as a candle duo — caught, and recorded as a model judgement with its basis, not quietly merged into the measured facts.
Work with us
If you run a small business on five disconnected tools — or you serve businesses that do — the governed version of this pattern is buildable: facts under contract, a ledger that re-performs itself, findings with stated thresholds, drafts that cannot invent numbers, and a named signature before anything leaves. Bring the problem through Trida AI's intake and we will scope what an operations agent over your stack should, and should not, be allowed to do.
Get the Code on GitHub: github.com/tridaai/blueprint-meta-muse-smb-commerce-operations


Top comments (0)