Step-by-step instructions
A manager can create a category that ingredients can use for grouping, search, stock control, recipe costing, imports, and later AI explanations.
Use the interactive screenshot walkthrough first. Switch steps with the step dots, then read what to fill and why it matters.
Fields on this screen
Ingredient Categories list
How to fill: Start from the list and check whether the group already exists.
Why: This avoids duplicate groups such as Produce and Fresh Produce.
Search
How to fill: Use search before adding a new category.
Why: Search prevents duplicates when the list becomes long.
Add
How to fill: Click Add to create a category in the current company.
Why: The app creates an ID and opens a form tied to the workspace.
Import
How to fill: Use Import only when loading many ingredient categories from a file.
Why: Manual creation is safer for one or two categories; imports need mapped columns.
AI helper
How to fill: Use the AI helper only after checking the generated name and media.
Why: AI output should assist setup, not replace review.
Photo
How to fill: Upload a square 1:1 image, recommended 300 x 300 or larger.
Why: A clear visual makes ingredient groups easier to identify in stock workflows.
Category name
How to fill: Type the short ingredient category name in the current interface language.
Why: This name appears in ingredient selection, stock, supply, and technical-card workflows.
Name translations
How to fill: Open the three-dot translation control and fill enabled languages.
Why: Multilingual companies need consistent ingredient category labels.
Save
How to fill: Save after the name, translations, and media are checked.
Why: Saved data becomes the source for ingredients, supplies, recipes, warehouse reports, and AI agents.
Verify
How to fill: Return to the list and search or inspect the saved row.
Why: Verification confirms the category exists and can be reopened.
Common mistakes
- Creating ingredients before the category exists, then leaving them uncategorized.
- Creating duplicate groups such as Vegetables, Produce, and Fresh Produce without a clear rule.
- Using only one language when the company has several enabled interface languages.
- Uploading a wide banner instead of a square ingredient category image.
- Treating the UI list number as a reliable database column when the current table stores only id, company_id, name, photo, created_at, and updated_at.
- Not touching the reload marker after native or bulk changes.
- Not verifying the row in Ingredient Categories after saving.
AI Agent Field Reference for implementation
This block is intentionally below the human instructions. It explains storage names and downstream dependencies for automation, support, and future AI agents.
| Field | Stored as | Purpose | Why it matters |
|---|---|---|---|
| Category ID | category_ingredients.id | Unique ingredient category identifier. | Ingredients, supplies, technical cards, imports, support logs, and AI agents need a stable category reference. |
| Company | category_ingredients.company_id | Company workspace that owns the ingredient category. | Prevents raw-material groups from appearing in the wrong company. |
| Name translations | category_ingredients.name[] | Ingredient category name per enabled language. | Warehouse, purchasing, technical cards, reports, imports, and AI answers need readable names in the active language. |
| Photo | category_ingredients.photo | Square media object for the ingredient category. | A visual category card helps staff recognize ingredient groups faster. |
| List number | CategoryIngredientsStruct.number | UI list order value passed when the form opens. | The current Supabase table does not persist this as a dedicated column, so use it only as UI ordering context unless the schema is extended. |
| Created at | category_ingredients.created_at | Timestamp when the category row was created. | Useful for audit history and setup troubleshooting. |
| Updated at | category_ingredients.updated_at | Timestamp when the category row was last changed. | Support and AI agents can explain whether ingredient category data is fresh. |
| Reload marker | company.loadcategoryingridients | Company timestamp used to reload ingredient category data. | Native or bulk changes need this marker so the app refreshes Ingredient Categories. |
Related guides
Use these guides to connect this section to adjacent SABSUS workflows.