Docs
/

Product Describer

AI product-copy microservice for e-commerce catalogs, marketplaces and PDP pages. describe turns a product's attributes ({ name, brand, category, material, color, features, audience, ... }) into a...

product-describer

AI product-copy microservice for e-commerce catalogs, marketplaces and PDP pages. Feed it a product's attributes and it returns listing-ready copy: a marketing paragraph, benefit bullets, a spec table, an SEO title, a meta description, per-variant copy and inferred care instructions.

Every tool has a deterministic heuristic-template core that runs fully offline. The generative tools (describe, bullets, variantsCopy) also wire an optional LLM path that enriches when a model is reachable and silently falls back — those results carry { mode: 'heuristic' | 'llm' }.

Tools

ToolInputWhat it does
describeattributesTurns attributes into a persuasive marketing paragraph (tone + length controlled).
bulletsfeaturesConverts raw features into benefit-led selling bullets (feature → so-you-can benefit).
specsTableattributesRenders attributes into a spec table: rows + markdown + html.
seoTitleattributesBuilds an SEO-optimized, length-capped product title.
metaDescriptionattributesWrites a click-worthy meta description under 160 chars (configurable).
variantsCopyvariants (+ attributes)Produces per-variant copy for size/color/option combos.
careInstructionsattributesInfers wash/care/maintenance guidance from material + category.

Usage

import pack from './index.js';

await pack.adapters.describe({
  attributes: { name: 'Trailblazer Backpack', brand: 'Summit', category: 'daypack',
    material: 'ripstop nylon', color: 'forest green', features: ['waterproof', 'lightweight', 'adjustable straps'] },
  options: { tone: 'bold', length: 'medium' },
});

pack.adapters.bullets({ features: ['waterproof zippers', 'padded laptop sleeve', 'lightweight frame'] });

pack.adapters.careInstructions({ attributes: { material: 'wool', category: 'apparel' } });

Each tool takes ONE args object (maps 1:1 to an HTTP POST body). Invalid input throws TypeError.

Options

options: tone (bold/friendly/professional/playful/luxury), length (short/medium/long), maxLength (title/meta cap), format (markdown/html/rows for specsTable), keywords, narrate (force-try the LLM path).

DRY boundaries

  • This GENERATES product-listing copy from attributes.
  • It is NOT the general conversion-copywriter (copywriter), the meta/HTML auditor (seo), or the

keyword tool (keyword-cluster).

  • Self-contained: no cross-pack imports except ../_shared/llm.js.
Source shared/engines/adapters/domain/product-describer/README.md (no-git)markdownjson
Generated from the Leumas repository. Every page cites the file it came from.leumas.techllms.txt