-
01 Catalog A title is one row from every angle.
An editor enters a new title. Metadata, contributors, edition variants, rich description, and cover are properties of one row. Storefront ranks against that row on the next request; warehouse tracks stock against the same SKU; finance posts orders to the same record. No editorial-to-ecommerce re-key, no separate metadata sync, no spreadsheet of contributors that drifts from catalog. 7000 active SKUs at Laguna, backlist included, all on one row each.
-
Title is the row
Metadata, contributors, editions, cover, description — one record. Editorial, ecommerce, warehouse, and finance all read it.
Editorial to storefront
A new title in CMS is live on storefront with no intermediate sync. No re-key, no nightly export.
7000 SKUs, one schema
Laguna runs active list plus long-tail backlist on one record per title. Variants and editions are properties.
Faceted search built in
Genre, author, language, format, price — facets query the same attributes editorial writes. Thousands of titles, not dozens.
AI proposes the metadata
AI Builder proposes genre tags, BISAC codes, and similar-title links. Editor reviews diff and ratifies.
Stock on the title
Warehouse count writes to the same row. Out-of-stock states surface on storefront and OMS by reading, not by sync.
-
02 Promotions Discount toggles in minutes, not weeks.
A marketing director wants a Friday promo on a backlist title. On the old stack, that was a developer ticket and two to three days. On oozmi, merchandiser opens campaign builder, drafts landing page, sets discount on segment, and ships. Discount is a row; storefront prices against it on the next request; finance posts resulting orders against the same title. Publisher promotions, seasonal campaigns, and weekly retail discounts all touch the same data from different angles.
-
Discount as data
Promo is a row on the title or segment. Storefront, finance, and rep all read the same discount on the next request.
Five-minute time-to-market
A campaign that was 1–5 days now ships in 5 minutes — brief to live promo with KPIs tracking. Verified at Laguna.
Segment is a live query
Subscribers, B2B bookstores, lapsed readers — a segment queries the same Account table CRM owns.
Marketing self-serves
Brief is no longer a developer ticket. Marketing builds the page, sets discount, ratifies.
Audit on every publish
Each campaign publish, discount edit, and segment refresh writes a row — actor, target, before, after.
-
03 Royalties Royalty reads the order row.
A royalty accountant opens last month. Report reads from the same order rows storefront and OMS wrote — no quarterly export, no spreadsheet that drifted since the last reprint. Per-edition splits, contributor shares, and reserve-against-returns surface from records on the title. Boundary: full multi-territory royalty calculation with sliding scales and per-edition splits is partial today. Worst class of reconciliation drift is gone, but a senior royalty accountant should walk through their hardest contract on the 25-minute call before scoping a pilot.
-
Read the order, not an export
Royalty reports query the same order rows storefront wrote. Report and GL agree by definition.
Contracts as records
Title, contributor, edition, and contract live on the same schema as orders. Terms a clause names are queryable rows.
Quarterly cycle to live
No quarterly export-and-calculate. Open report; numbers refresh from orders posted today.
Partial today, honest now
Multi-territory splits with sliding scales are partial. Bring your hardest contract on the call before we scope.
Territory grants, sub-rights, agent splits, and option clauses modelled as records on the same schema as orders and royalties — not as a dedicated rights pipeline.
A publisher whose rights desk needs end-to-end pipeline depth is a conversation, not a same-week pilot. Today: contracts and contributors as records; tomorrow: the full clause-to-payment graph.
Production vs Pilot
- Title catalog — metadata, contributors, editions on one row
- CMS — editorial pages and landing pages on the same record commerce reads
- Ecommerce — faceted search, attribute filtering, variant management for 7000 SKUs
- CRM — reader accounts, subscription lists, B2B bookstore accounts
- OMS — order routing across distribution warehouses
- Financial Management — orders, invoices, SEF e‑Faktura on source title row
- Discount cycle — minutes not days (Laguna: 1–5 days → 5 min TTM)
- audit_events on every title, campaign, order, royalty-report write
- Royalty calculation engine — partial today; multi-territory splits not at full publisher-ERP depth
- Rights management — modelled as records, not at dedicated rights-system depth
- AI-proposed BISAC codes, similar-title links, and editorial metadata
- Multi-entity consolidation across Laguna + Delfi (~80 + ~400 stores)
Where it fits
Publishing teams share records with CMS , Ecommerce , OMS , CRM , ERP , Channels , and AI Builder — the same row across every module that wrote it. No second copy, no reconciliation step.
Often read alongside: B2B , Retail , and Front Office .
Bring one title or one royalty contract — we'll walk it through on your catalog.
A new title and the eight handoffs it took to get to a customer last quarter — or your hardest royalty contract with sliding scales, per-edition splits, and a reserve-against-returns clause. Twenty-five minutes. We open admin against a sandbox of your catalog, run title from CMS to storefront to royalty report, and tell you on the call which clauses we model today and which need pilot scoping.