Description Generation
Generate professional, casual, or SEO-optimized product descriptions in any language.
Enrichment uses LLM to generate and enhance product content — descriptions, attributes, and wiki information. It complements Gardener (normalization) and Matcher (product linking) in the Commerce AI pipeline.
Description Generation
Generate professional, casual, or SEO-optimized product descriptions in any language.
Taxonomy Sync
Classify products into the site’s category hierarchy via Brain knowledge graph.
Wiki Enrichment
Research and populate brand pages, technology descriptions, and catalog entries.
Multi-language
Ukrainian-first (canonical) with LLM-powered translation to any target language.
Enrichment tasks use dedicated LLM models configured per-project in contextunity.project.yaml:
graphs: nodes: - id: enricher model: "openai:gpt-5-mini" # Description generation - id: wiki_researcher model: "openai:gpt-5-mini" # Brand/technology content - id: gardener model: "openai:gpt-5-mini" # Normalization (Gardener) - id: matcher model: "mercury-2" # Product Linking (Matcher)Generate product descriptions via contextunity.router’s LLM pipeline:
# Via MCP toolresult = await enrich_product_description( product_id=42, language="uk", # Ukrainian (canonical) style="professional" # professional | casual | seo)Input context (automatically gathered):
Output: 2-3 paragraphs highlighting key features, technical specs, and benefits.
| Style | Use Case |
|---|---|
professional | Product pages, catalogs — factual, structured |
casual | Blog posts, social media — conversational tone |
seo | Search optimization — keyword-rich, scannable |
The canonical language is Ukrainian (set in project config). Descriptions can be generated in any language — the system uses the project’s get_primary_language() to determine the default.
To generate translations after the canonical description exists:
update_product() to saveProduct.translations JSON fieldTaxonomy sync pushes the site’s category tree to contextunity.brain for knowledge graph operations:
# Sync category taxonomy to Brainpython manage.py taxonomy_sync --domain category
# Sync color taxonomypython manage.py taxonomy_sync --domain colorThe taxonomy tree is also available via MCP:
tree = await get_taxonomy_tree(max_depth=3)# Returns flat list of category nodes with depth and product countsProducts needing enrichment are tracked by status:
| Status | Meaning |
|---|---|
raw | Newly harvested, no enrichment yet |
enriching | Currently being processed |
enriched | All enrichment tasks complete |
# List products pending enrichmentqueue = await list_enrichment_queue(dealer="gorgany", limit=25)
# Check enrichment status for a specific productstatus = await get_enrichment_status(dealer_product_id=12345)# Returns: normalized fields, enrichment metadata, trace_idWiki enrichment populates structured content for brands and technologies:
Wiki content is managed through Wagtail CMS snippets (wiki.Brand, wiki.Technology) and enriched via the wiki_researcher node defined in the project manifest.
| Tool | Tags | Description |
|---|---|---|
enrich_product_description | enrichment, mutate | Generate product description via LLM |
get_enrichment_status | enrichment, query | Check enrichment status for a product |
list_enrichment_queue | enrichment, query | List products pending enrichment |
get_taxonomy_tree | enrichment, query | Get category tree with product counts |
Commerce → Router → LLM Provider │ │ │ ├── enricher node (via manifest) → description generation │ └── wiki_researcher node (via manifest) → brand/tech research │ ├── enrich_product_description() MCP tool ├── taxonomy_sync management command └── enrichment queue monitoringCommerce connects to the Router using auto-discovery via Redis, while the actual LLM models are configured in the Project Manifest.
# Commerce .envREDIS_URL=redis://localhost:6379 # Enables auto-discovery of contextunity.routerREDIS_SECRET_KEY=... # Required if Redis encryption is enabled# CU_ROUTER_GRPC_URL=localhost:50050 # Optional: hardcode router endpoint (bypasses discovery)The specific models used for enrichment tasks (enricher, wiki_researcher) are mapped in the contextunity.project.yaml manifest under the graphs.nodes definitions.
# Commerce — enrichment toolscontextunity-commerce/src/├── mcp/tools/enrichment.py # MCP enrichment tools├── harvester/management/commands/│ └── taxonomy_sync.py # Taxonomy sync to Brain└── wiki/models.py # Brand, Technology snippets
# Router — enrichment graphs (planned)cu/router/cortex/graphs/commerce/├── lexicon/ # Lexicon enrichment graph└── ontology/ # Ontology enrichment graph