The situation
Latino Tax Pro sells tax education, and it sells a lot of it through other people. Dozens of independent businesses run their own co-branded WooCommerce storefronts carrying the same catalog of roughly thirty courses under their own name and their own domain.
Tax law changes every year. Which means every course description, every price, every title has to change every year, in every store.
The way that worked before: log into a store, find a product, open it, edit it, save, repeat about thirty times, then log into the next store and start over. Across the network that is well over a thousand manual edits per update cycle. It took days. And nobody could promise the thirtieth store said the same thing as the first one, because at that volume consistency stops being a discipline problem and becomes an arithmetic one.
The reporting side was worse. Every partner earns a rebate on what they sell, which means somebody has to reconcile order data across dozens of separate stores to work out what each one is owed and what the program actually keeps. That is not a spreadsheet job at this scale. It was guesswork.
What we built
Co-Brand Hub, one application that owns the catalog and treats the stores as replicas.
Direction of authority is the whole design. Products are edited in one place and pushed outward. Orders flow inward. The hub is the source of truth and the storefronts are downstream of it, which is what makes a one-click update safe to run against dozens of live stores at once.
Catalog control
- One master catalog in the hub. A push updates name, description, pricing, status and images across every connected store over the WooCommerce REST API
- Wholesale cost is deliberately excluded from the push payload. It is the number the margin math runs on and it never leaves the hub
- Per-store retail price overrides, protected by default. A partner who has set their own price does not get it overwritten by a network-wide update, and when price is pushed at all it is the override that goes out, never the master price on top of it
- Drift detection, so the hub can tell you what is actually live on each store versus what it believes it sent
Order sync and the money
- Completed orders sync inward from every store and feed a single financial ledger
- Rebate per line item, earnings, per-store cost accounting across web fee, platform and domain, and profit as a percentage of what was actually paid for product rather than of gross revenue with tax and shipping folded in
- Rebate statements as PDFs, a filterable and sortable financial report with CSV export, revenue-by-tier charts and per-rep summaries
- Unmapped line items surfaced as a first-class number rather than a silent failure, because a line item nobody can price is the one thing that quietly makes every margin figure wrong
The rest of the control panel
- Store tiers as a drag-and-drop board, with tier driving cost assumptions in the reporting
- A migration readiness panel that gates financial reporting on the data actually being there: store registry, master catalog, product mappings, order ledger
- A next-best-actions queue ordered by financial impact, so the operator opens the hub and is told what to do rather than asked what they want
The AI copilot
An agentic assistant layered over the hub that can read the network and act on it conversationally. Which stores are missing a course. Raise a product to a new price everywhere except one store. It runs on the Vercel AI SDK with AI Gateway routing to Anthropic’s Claude, and it is built against a client interface rather than a specific backend, so the tool layer survives the hub being reimplemented underneath it.
One rule is not negotiable in it: reads are free, writes are gated. Querying catalog state, orders, drift and financials needs no permission. Anything that changes a live store gets proposed as a diff and waits for a human to approve it. WooCommerce’s batch delete is a permanent force-delete with no trash to recover from, and a deleted product orphans the record that historical rebate reporting joins on. An agent with unconfirmed write access across an entire live store network is not a thing worth building.
What it does now
An annual tax-law update stops being a week of logging into stores and becomes one edit and one push. Rebate and margin per partner is a report instead of an estimate. Onboarding a new co-branded store is a workflow rather than a project.
And the part that does not show up in a feature list: the catalog is consistent across the network because the architecture makes it consistent, not because somebody was careful thirty times in a row.