Skip to main content

Adding Ingredients

Ingredients are the building blocks of CostingBrik. Every recipe cost traces back to the ingredients it contains, so getting your ingredient library right is the foundation of accurate costing.

Creating an ingredient manually​

To add a new ingredient:

  1. Navigate to CostingBrik > Ingredients.
  2. Click Add Ingredient.
  3. Fill in the required fields (see below).
  4. Click Save.

Required fields​

FieldDescriptionExample
NameA clear, descriptive name for the ingredientSemi-skimmed milk
CategoryThe group this ingredient belongs toDairy
Base unitThe smallest unit you measure this ingredient inLitres

Optional fields​

FieldDescriptionExample
BrandThe specific brand, if relevantYeo Valley
Supplier product code (SKU)The code on this supplier's invoices, if you know it141484
NotesAny additional contextOrganic only - check label
AllergensAllergen flags for this ingredientContains: Milk
Supplier product code

If you have a supplier invoice to hand, entering the product code means future invoice lines match this exact item straight away. It is fine to leave it blank - Brikly fills it in automatically the first time it sees the code on a processed invoice.

Setting the base unit​

The base unit is the unit you use when adding this ingredient to recipes. Choose the unit that makes the most practical sense for how you actually use it in the kitchen.

  • Flour - kilograms (kg)
  • Milk - litres (l)
  • Eggs - each
  • Vanilla extract - millilitres (ml)
  • Butter - grams (g)
Choose recipe-friendly units

If you always weigh butter in grams when prepping, set the base unit to grams - even though you buy it in 250g blocks. Brikly handles the conversion between pack sizes and base units automatically.

Bulk import​

If you have an existing ingredient list in a spreadsheet, you can import everything in one go. See the Bulk Import guide for full details on the CSV format, accepted units, and validation rules.

AI-assisted creation from invoices​

The fastest way to build your ingredient library is to let Brikly create ingredients directly from your supplier invoices.

When you process an invoice, Brikly:

  1. Extracts each line item (product name, quantity, unit, price).
  2. Checks whether a matching ingredient already exists.
  3. For new items, creates the ingredient automatically with the correct unit and category.
  4. Links the ingredient to the supplier and records the price.

After processing, you will see any newly created ingredients flagged for review. You can adjust names, categories, or units before they are finalised.

Matching accuracy

Brikly uses AI to match invoice line items to existing ingredients, even when the supplier's description differs from your ingredient name. For example, "S/S Milk 2L" on an invoice will be matched to "Semi-skimmed milk" in your library. You can review and correct any matches that do not look right.

Naming ingredients - keep it generic​

The single most important rule when naming ingredients is: use a generic, product-level name - not a supplier-specific description.

Your ingredient name represents the thing you use in recipes, not the specific product a particular supplier sells you. This is what allows Brikly to track multiple suppliers for the same ingredient, compare prices across them, and keep your recipe costs accurate regardless of who you buy from.

Good vs. bad naming​

Do thisNot thisWhy
Semi-skimmed milkYeo Valley Semi-Skimmed Milk 2LBrand and pack size belong on the supplier link, not the ingredient
Plain flourAllinson's Plain White Flour 1.5kgDifferent suppliers sell different brands - the ingredient is the same
Chicken breastFresh Chicken Breast Fillets Skinless 2.5kgPack size and cut detail are supplier-specific
Olive oilFilippo Berio Extra Virgin Olive Oil 5LBrand and container size vary by supplier
Caster sugarTate & Lyle Caster SugarYou might switch brands tomorrow - the recipes stay the same

Why this matters​

When you name an ingredient generically, every supplier who sells that product links to the same ingredient record. This means:

  • Price comparison works - you can see at a glance who charges the least for semi-skimmed milk, because all suppliers are linked to one "Semi-skimmed milk" entry. See Comparing Supplier Prices.
  • Invoice matching is accurate - when Brikly processes an invoice that says "S/S Milk 2L" from Supplier A and "Semi Skimmed 4pt" from Supplier B, both map to the same ingredient. See Matching Ingredients.
  • Recipe costs stay clean - your recipes reference "Semi-skimmed milk", and Brikly uses the preferred supplier's price. Switching suppliers updates every recipe automatically.
  • Price history is complete - all price movements for that ingredient appear on one timeline, regardless of which supplier the price came from.

If you use brand- or pack-specific names instead, you end up with separate entries like "Yeo Valley Semi-Skimmed Milk 2L" and "Dairy Co Semi-Skimmed 4 Pint" - each with their own recipes, price history, and supplier links. Your costs fragment, comparisons break, and you lose visibility.

Where do brand and pack details go?​

Brikly stores supplier-specific details on the supplier link, not the ingredient itself:

Stored on the ingredientStored on the supplier link
Generic name (e.g. "Semi-skimmed milk")Supplier product name (e.g. "S/S Milk 2L")
Base unit (e.g. litres)Supplier product code
Category (e.g. Dairy)Pack size (e.g. 2 litres)
AllergensPack price (e.g. £1.85)

This separation is what makes the whole system work. Your recipes speak in generic terms ("500ml of semi-skimmed milk"), and Brikly translates that into the right pack sizes and prices for whichever supplier you buy from.

When to use the Brand field

If you genuinely need a specific brand - say a high-end chocolate that defines your signature product - use the Brand field on the ingredient rather than putting it in the name. This keeps the name clean while still recording brand preference.

Tips for a clean ingredient library​

  • Keep names generic - no brands, no pack sizes, no supplier-specific descriptions. See the naming guide above.
  • Be consistent with naming - decide on a convention (e.g. "Semi-skimmed milk" not "Milk, semi-skimmed") and stick with it.
  • Avoid duplicates - before adding an ingredient manually, search your library first. Duplicates will skew your recipe costs.
  • Use categories - assigning every ingredient to a category makes filtering and reporting much easier as your library grows.
  • Add brands only when it matters - if you always use a specific brand (e.g. a particular chocolate for your signature brownie), record it in the Brand field. If any brand will do, leave it blank.

Archiving ingredients​

Archiving hides an ingredient from your library without deleting anything. Its suppliers, price history and invoice matches are kept, and you can restore it later from the Archived filter.

If the ingredient is still used in recipes, the archive dialog lists them and asks what those recipes should use instead:

Used in 3 recipes: Latte, Flat White, Cappuccino

What should those recipes use instead?

  • A suggested ingredient - Brikly puts close name matches first, such as the same product in a different pack size ("Oatly (6 Pack)" and "Oatly 6 pack (1.5L bottles)").
  • Another ingredient - pick any other ingredient from the list. Only ingredients measured the same way (by weight, volume or count) and available to every recipe listed are offered, so the recipes keep costing properly.
  • Nothing for now - archive without replacing. The recipes keep the line, marked Archived and costed at nothing.

The archive button stays greyed out until you choose one.

When you pick a replacement and choose Replace and archive, Brikly moves each recipe's line onto the new ingredient with the same quantity, points any "remove it" modifiers (such as "No oat milk") at it too, then archives the old ingredient. Recipe and modifier costs update straight away. If a recipe already listed the replacement, it now lists it twice so no quantity is lost - the confirmation tells you when this happens, so you can tidy up the recipe.

If you choose Nothing for now, each affected recipe still opens as normal, but the archived line contributes nothing to the recipe cost. Your margins for those recipes will look better than they really are until you restore the ingredient or edit the recipe and pick a replacement.

info

Restoring an ingredient (or using Undo straight after archiving) brings the ingredient back, but recipes you moved onto a replacement stay on the replacement. Edit those recipes if you want to switch them back.

Archiving a duplicate?

If you are archiving an ingredient because it duplicates another one, merging is usually better: it moves suppliers, invoices and price history across as well as recipes.

Merging duplicate ingredients​

If duplicates have built up in your library, you can merge them into a single ingredient - transferring all suppliers, recipes, invoices, and price history automatically. See Merging Ingredients for the full guide.