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