Senso
Sign inSign up

Context Layer · 4 of 5

Product Catalog

How to record what you sell, so a price or term has something to be checked against.

Why this is not just documents

Do not put a rate sheet in the Knowledge Base.

A claim about a price can only be checked against a catalog. If the price lives inside a PDF, there is no catalog to check against — so the claim comes back unsupported, and a gap that could have closed on its own becomes one a person has to read a PDF to settle.

The same goes for eligibility, terms, and anything else a customer could act on.

Naming

The docs call this the Product Catalog because that is what it is to a reader. The API calls each entry a product line, and the endpoints are /org/product-lines.

What an entry holds

name

Unique per organization. A second with the same name returns a conflict.

details

An open JSON object. Whatever downstream generation and evaluation need to know.

details is deliberately unconstrained, so put the things a claim would be checked against:

  • SKUs and product identifiers
  • Rate tables and pricing tiers
  • Eligibility rules
  • Contractual terms and their effective dates
  • The URL of the page that is the source of record
bash
curl -X POST https://apiv2.senso.ai/api/v1/org/product-lines \
  -H "X-API-Key: $SENSO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Annual plan",
    "details": {
      "price_usd": 1200,
      "billing": "annual",
      "eligibility": "Any organization with a verified domain",
      "effective_from": "2026-01-01",
      "source_of_record": "https://example.com/pricing"
    }
  }'

Reading and updating

bash
curl https://apiv2.senso.ai/api/v1/org/product-lines \
  -H "X-API-Key: $SENSO_API_KEY"

Replace an entry with PUT /org/product-lines/{id}. When a price moves, update it here rather than editing a page that quotes it — everything downstream reads the catalog.

Where it gets used

  • Module 1 — you populate it when you build the Context Layer
  • Module 2 — a price or eligibility claim is checked against it, and a mismatch becomes a gap
  • Module 3 — generated content grounds product facts here instead of inventing them

No CLI command

senso has no product-lines group. Use the REST API, or the app.

Errors

  • 400 — validation error on the request body
  • 401 — missing or invalid API key
  • 404 — no product line with that id
  • 409 — a product line with that name already exists
Content TypesBuild the Context LayerAPI reference
Next section