PIM
What You Get
Section titled “What You Get”A back office for product data that other channels sell: a shop that runs elsewhere, marketplaces, a printed catalog. It holds the product catalog with CSV import, price lists, stock, supplier feeds and supplier catalogs, competitive pricing, duplicate detection and reviewable enrichment proposals. The recipe runs the backend, a Celery worker on the queues of those modules and the CMS, and the seed loads the Emporium demo package. It has no storefront, no content and no checkout. The product names are on Concepts.
Architecture
Section titled “Architecture”Each backend tile is a domain of the module registry. The CMS calls the backend over the REST API; the backend hands slow work to the worker as tasks. The embedding service is optional: Product Lookup calls it to compare product images, and works on text without it. The modules the recipe enables in each domain:
- Foundation: Regional Data, Utilities, Module Registry and Health, Captcha, Email
- Catalog: PIM, Product Lookup, PIM CSV Import, Enrichment
- Pricing and Stock: Price Manager, Stock
- Customers: Accounts
- Suppliers and Market Intelligence: Supplier Catalog, Competitive Pricing, Suppliers
Modules
Section titled “Modules”| Module | Package | Why |
|---|---|---|
| Regional Data | entirius-django-regional | Core: countries, currencies and languages. |
| Utilities | entirius-django-utils | Core: base models and API helpers, with the AI toolbox client the module registry reports. |
| PIM | entirius-django-pim | The product catalog. |
| Price Manager | entirius-django-pricemanager | Price lists. |
| Supplier Catalog | entirius-django-atlas | Supplier catalogs: source feeds and matching to your products. |
| Competitive Pricing | entirius-django-pricefighter | Competitive pricing decisions. |
| Product Lookup | entirius-django-lookup | Duplicate detection. Text search; image search needs the embedding service. |
| PIM CSV Import | entirius-django-pim-csv | CSV import of the catalog. |
| Module Registry and Health | entirius-django-munin | Core: the module registry and health. The CMS switches its panels from it. |
| Captcha | entirius-django-captcha | Bot check on the account sign-up. |
| Stock | entirius-django-qms | Stock. |
entirius-django-email | Required by Accounts. | |
| Enrichment | entirius-django-enrichment | Reviewable change proposals. |
| Accounts | entirius-django-accounts | CMS login. |
| Suppliers | entirius-django-suppliers | Supplier feeds into the catalog and stock. |
The service enables the access module itself in every recipe, so the admin gate and application tokens are always on: Access and API Tokens. What each module does, with its repository: Module Catalog.
Run It
Section titled “Run It”git clone https://github.com/entirius/entirius-zeno.gitcd entirius-zenoRECIPE=pim make setupThe recipe is fixed in .env at the first run: a checkout keeps the recipe it started with.
The recorded run, on 2026-10-13: the seed took 3 min 24 s, then make bdd passed 696 scenarios, with 0 failed and
583 skipped. The skipped scenarios belong to modules outside the recipe or need the AI toolbox, which was
disabled in that run. The images came from a warm build cache; a first run also builds them. The
Quickstart has the timings of a run from source, the URLs and the logins; this recipe starts
the CMS only.
Duplicate detection ran on text only in that run, because the embedding service was not started. make embed adds
image search; its first start downloads the model.
Make It Yours
Section titled “Make It Yours”- Your Own Service: a backend of your own that picks its modules.
- Data Import: your catalog instead of the demo package.
A recipe of your own starts as a copy: copy recipes/pim/ in entirius-zeno under a new name, edit apps.txt,
queues.txt and the paragraph in README.md, then run make recipe-check RECIPE=<new>. It checks the lists against
modules.yaml in the clone of the service.
What Is Not Included
Section titled “What Is Not Included”No storefront and no read model for one, no content pages, no cart, checkout or payment flow, no leads and outreach, and no Magento bridges: the product data is managed here and sold somewhere else. A storefront on the same catalog is the Catalog recipe; selling online is the Shop recipe.
The seed imports stock quantities but creates no warehouse: the seed step that creates the demo warehouses needs checkout, so the warehouse list in the CMS starts empty.
The modules left out, by domain:
- Foundation: Translation Engine, Encrypted Fields
- Catalog: PIM Translations, Storefront Read Model
- Pricing and Stock: Omnibus Price History
- Orders and Payments: Delivery Points, Payment Vault, Checkout, Returns
- Content: FAQ, Agreements, Contact Forms, Content, Content Translations, Sitemap, Reviews
- Leads and Outreach: Notifications, Site Intelligence, Communicator, Leads
- Integrations: PIM Export to Magento, Company Registry Lookup, BaseLinker, Accounts Export to Magento, Order Export to Magento, Order Import from Magento, GetResponse
The AI toolbox stays off, as in Shop.
Integrations Catalog: the connectors to other systems, each with its repository.