Skip to content

PIM

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.

Diagram

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
ModulePackageWhy
Regional Dataentirius-django-regionalCore: countries, currencies and languages.
Utilitiesentirius-django-utilsCore: base models and API helpers, with the AI toolbox client the module registry reports.
PIMentirius-django-pimThe product catalog.
Price Managerentirius-django-pricemanagerPrice lists.
Supplier Catalogentirius-django-atlasSupplier catalogs: source feeds and matching to your products.
Competitive Pricingentirius-django-pricefighterCompetitive pricing decisions.
Product Lookupentirius-django-lookupDuplicate detection. Text search; image search needs the embedding service.
PIM CSV Importentirius-django-pim-csvCSV import of the catalog.
Module Registry and Healthentirius-django-muninCore: the module registry and health. The CMS switches its panels from it.
Captchaentirius-django-captchaBot check on the account sign-up.
Stockentirius-django-qmsStock.
Emailentirius-django-emailRequired by Accounts.
Enrichmententirius-django-enrichmentReviewable change proposals.
Accountsentirius-django-accountsCMS login.
Suppliersentirius-django-suppliersSupplier 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.

Terminal window
git clone https://github.com/entirius/entirius-zeno.git
cd entirius-zeno
RECIPE=pim make setup

The 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.

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.

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.