Step-by-step instructions
Warehouse, purchasing, technical cards, workshops, reports, and AI agents can use reliable ingredient records instead of free-text raw materials.
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
Ingredients list
How to fill: Start from the list and search before creating a new ingredient.
Why: Duplicate ingredients create wrong stock balances and recipe costs.
Add
How to fill: Click Add to create a new ingredient in the current company.
Why: The form creates a product row with Ingredient context.
Name
How to fill: Type the short ingredient name in the current interface language.
Why: This is the label staff will search and select.
Name translations
How to fill: Open the three-dot translation control and fill enabled languages.
Why: Multilingual teams need the same ingredient in every active language.
Category
How to fill: Choose the ingredient category, not a customer menu category.
Why: Ingredient categories keep raw-material reporting separate from product catalog navigation.
Unit of measurement
How to fill: Pick the unit the business will actually count in stock and recipes.
Why: Changing units later can confuse recipe quantities and inventory reports.
Item brand
How to fill: Fill it when supplier or brand matters.
Why: It helps distinguish similar ingredients, such as two tomato suppliers.
Tags
How to fill: Add short search tags only when they will help staff find the item.
Why: Useful tags improve search; random tags create noise.
Consider stock levels
How to fill: Enable it when SABSUS should track the ingredient in warehouse stock.
Why: Stock warnings and consumption reports depend on this switch.
Minimum stock level
How to fill: Set the reorder threshold after enabling stock control.
Why: Managers need a practical warning before the ingredient runs out.
List number
How to fill: Use the plus/minus controls for list ordering.
Why: High-use ingredients can be easier to reach.
Dimensions
How to fill: Fill only for packaged or physical storage planning needs.
Why: Most loose food ingredients can leave dimensions at zero.
Barcode
How to fill: Fill the scan code if the ingredient is received or counted by barcode.
Why: Scanning is faster and less error-prone than manual search.
Nutrition values
How to fill: Fill proteins, fats, carbohydrates, and kcal when menus, labels, or AI answers need nutrition.
Why: Leave values at zero only when nutrition is not tracked.
Processing loss
How to fill: Fill realistic percentages for cleaning, boiling, frying, stewing, and baking.
Why: Yield and cost explanations become more accurate.
Photo
How to fill: Upload a square image that clearly shows the raw material.
Why: Visual recognition helps warehouse and purchasing teams avoid selecting the wrong item.
Save
How to fill: Save only after name, category, unit, barcode, losses, stock settings, and media are checked.
Why: Saved data becomes the source for warehouse, purchasing, technical cards, reports, and agents.
Verify
How to fill: Return to the list and search the saved row.
Why: Verification confirms that the ingredient loads back from Supabase.
Common mistakes
- Creating ingredients before creating ingredient categories.
- Using a product menu category instead of an ingredient category.
- Leaving the unit as pcs when the business counts the ingredient in kg, g, liter, or pack.
- Creating duplicate ingredients with slightly different names.
- Adding processing-loss values without checking real production yields.
- Enabling stock tracking but leaving minimum stock at an unrealistic value.
- Uploading a decorative image that does not show the real raw material.
- Saving without checking the row in the Ingredients list.
- Changing data natively without updating company.loadproduct.
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 |
|---|---|---|---|
| Ingredient ID | products.id | Unique product-row identifier for the ingredient. | Technical cards, stock, write-offs, purchasing, imports, and AI agents need a stable ingredient reference. |
| Company | products.company | Company workspace that owns the ingredient. | Prevents ingredients from appearing in another company. |
| Type | products.type = ingrid | Marks the product row as an ingredient. | Separates raw materials from sellable products, packaging, modifiers, semi-finished items, and digital products. |
| Name translations | products.name[] | Ingredient name in every enabled language. | Search, warehouse, purchasing, recipes, reports, and customer-facing explanations need readable names. |
| Photo | products.photos[] | Ingredient image stored in Supabase Storage and attached to the product row. | Visual recognition reduces warehouse and purchasing mistakes. |
| Ingredient category | products.category_ingredients[] | Ingredient-category IDs selected in the Categories field. | Groups raw materials for search, imports, stock reports, purchasing, and AI explanations. |
| Product categories | products.category[] | General product category links when used by other product types. | For ingredients, prefer category_ingredients so raw-material grouping stays separate from customer menu categories. |
| Item brand | products.brand | Supplier, producer, or brand label for the ingredient. | Helps distinguish similar raw materials from different suppliers. |
| Tags | products.tags[] | Search and grouping tags. | Tags improve internal search, imports, and future automated matching. |
| YouTube link | products.youtube[] | Optional media references. | Use only when an ingredient has training, preparation, or supplier videos. |
| Unit of measurement | products.unit_of_measurement | Stock unit such as kg, g, pcs, pack, liter, or oz. | All stock quantities and recipe consumption must use a clear unit. |
| Weight per unit | products.gross | Gross weight or amount per accounting unit when the field is visible. | Converts packs, pieces, and measured ingredients into inventory calculations. |
| Number in list | products.number_list | Sorting order in lists. | Keeps frequently used ingredients near the top. |
| Consider stock levels | products.stoking | Whether stock control is enabled for the ingredient. | Enables minimum stock, low-stock warnings, and warehouse reliability. |
| Minimum stock level | products.minstock | Threshold for stock warnings. | Managers can reorder before ingredients run out. |
| Allow oversell | products.oversell | Whether the system can sell/consume beyond available stock. | Disable for strict inventory; enable only when stock is reconciled later. |
| Dimensions | products.width / products.length / products.height | Optional physical dimensions in millimeters. | Useful for packaged goods, storage planning, delivery, and imports. |
| Preparation process | products.preparation_process[] | Internal preparation notes per language. | Kitchen, workshop, and training workflows can explain how to handle the ingredient. |
| Description | products.description[] | Long description per language. | Useful for staff cards, supplier details, and AI explanations. |
| Short description | products.short_description[] | Compact description per language. | Useful when space is limited in lists or cards. |
| Product Barcode | products.qr_code | Barcode or internal scan code. | Speeds up receiving, inventory, lookup, and stock operations. |
| Excise Goods Code | products.excise_tax_on_goods | Excise or regulated-goods code when required. | Needed for regulated products and fiscal reporting in some jurisdictions. |
| Nutrition proteins | products.proteins | Protein value. | Nutritional cards, labels, and AI answers can explain ingredient composition. |
| Nutrition fats | products.fat | Fat value. | Used for nutritional information and dietary explanations. |
| Nutrition carbohydrates | products.carbohydrates | Carbohydrate value. | Used for nutritional information and dietary explanations. |
| Nutrition kcal | products.calories | Calorie value. | Used for nutritional information, labels, and customer explanations. |
| Nutrition mode | products.perkkal | Whether nutrition is treated per 100g or another mode. | Agents must state the nutrition basis instead of quoting values without context. |
| Processing loss - cleaning | products.cleaning | Percent loss during cleaning. | Helps convert gross raw weight into usable net weight. |
| Processing loss - boiling | products.boiling | Percent loss during boiling. | Supports recipe yield and preparation explanations. |
| Processing loss - frying | products.frying | Percent loss during frying. | Supports cost and yield calculations for cooked items. |
| Processing loss - stewing | products.stewing | Percent loss during stewing. | Supports recipe yield and technical-card planning. |
| Processing loss - baking | products.baking | Percent loss during baking. | Supports recipe yield, cost, and production explanations. |
| Created at | products.created_at | Timestamp when the ingredient row was created. | Useful for audit history and setup troubleshooting. |
| Updated at | products.updated_at | Timestamp when the ingredient row was changed. | Support and AI agents can explain whether ingredient data is fresh. |
| Reload marker | company.loadproduct | Company timestamp used to reload product and ingredient data. | Native or bulk changes need this marker so the app refreshes Ingredients. |
Related guides
Use these guides to connect this section to adjacent SABSUS workflows.