# products (/product/modules/products)



`products` is the catalog: what a tenant sells, or in the field solution audits without selling. It is core because field merchandising needs a catalog it does not sell from.

## Owns

| Table                              | Holds                                                                                     |
| ---------------------------------- | ----------------------------------------------------------------------------------------- |
| `products`                         | Catalog rows. A variant is a child row pointing at its parent, carrying its option codes. |
| `product_collections`              | Hierarchical collections a product belongs to, many to many.                              |
| `product_options` and their values | The option axes (loft, flex, size) and the values under each.                             |
| `product_collection_option_links`  | Which axes become storefront filters for a collection, and in what order.                 |
| `product_prices`                   | One row per product and currency, optionally per supplier and location, in minor units.   |
| `product_inventory`                | Quantity and status per location.                                                         |

A product with options is a parent that **declares** its axes and children that each **select** one value per axis. Prices and stock belong to the child. Classification, brand and collection membership stay on the parent. Money is an integer count of the currency's smallest unit; catalog prices are stored net and displayed gross from effective-dated tax rates.

## Routes

| Route                          | Surface                                                     |
| ------------------------------ | ----------------------------------------------------------- |
| `/products`                    | The product grid and form, with variants, prices and stock. |
| `/products/collections`        | The collection tree.                                        |
| `/products/options`            | Option axes and their values.                               |
| `/products/featured`           | The curated home-page shelf. Needs `storefront`.            |
| `/products/storefront-filters` | Per-collection filter composition. Needs `storefront`.      |

## Settings scope

`products`: the form surface and the settings, columns and filters of each grid the module owns, nine in all.

## Chat tools

`find`, `present_products`, `add`, `seed`, `propose_import` and `commit_import`, `extract_from_doc`, `propose_scrape` and `commit_scrape`, `manage_collections`, `download_table`. The model produces data and one database function owns the write; a generated or imported row lands as a draft until a person approves it.

## Permissions

`products.manage`. Reads are open to every signed-in user, and the public tier serves the storefront and anonymous visitors.

## Switched off

Never. Every project links it at provisioning.
