Starting a Chocolate Business: Costing, Labels and Where to Sell With AI

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Starting a Chocolate Business: Costing, Labels and Where to Sell With AI.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Starting a Chocolate Business: Costing, Labels and Where to Sell With AI.

Check what your market requires before selling food, then cost each product from ingredients, wastage, packaging, labour, kitchen time and overheads. Declare allergens as your market's rules require, using supplier specification sheets, not an AI's guess. Start with the channel whose margin you can see, usually a farmers market, before adding online and wholesale.

AI earns its place in three jobs: building the costing sheet, drafting label text from your own recipe and supplier data, and running channel sums. It does not earn a place deciding which allergens a product contains, because it cannot see your suppliers' specification sheets or your kitchen. Rules on food labels, kitchens and registration differ between markets. Treat every rule mentioned here as a question to put to the authority that covers your premises, not as the answer for where you sell.

Follow me on Instagram@sagnikteaches

Cost one 100 g hazelnut bar from the ground up

A common slip is to cost only the chocolate and the wrapper, then wonder why a busy market day still leaves you short. A full cost has seven lines. The sheet below is for an illustrative 100 g milk chocolate bar with whole roasted hazelnuts, made in a shared kitchen in batches of 40. Swap in your own invoices.

Connect on LinkedInSagnik Bhattacharya
Cost lineWorkingPer bar
Milk chocolate couverture80 g at $15 a kg$1.20
Roasted hazelnuts20 g at $20 a kg$0.40
Wastage allowance5% of ingredients: trimmings, tempering losses, rejects$0.08
PackagingFoil wrap $0.07, printed sleeve $0.14, label $0.04, shipper-box share $0.05$0.30
Labour90 minutes hands-on for 40 bars at $16 an hour is $24$0.60
KitchenShared kitchen at $16 an hour for 2.5 hours is $40$1.00
Other overheadsInsurance, registration, scales, testing$0.20
Full cost$3.78

Two lines are the ones people leave out. Labour belongs in the cost even if you are the labourer, because otherwise you are subsidising every sale with unpaid hours, and the price will be too low to ever hire help. Kitchen time belongs in it even when the kitchen is your own, because it stands for the rent and equipment you will eventually pay for.

Subscribe on YouTube@sagnikteaches

Now test the price. At $9.00 retail, the cost is 42% of the price. A rule of thumb common in food-business pricing guidance runs like this: cost of goods should be no more than 25 to 40% of the retail price, retail is typically twice wholesale (which hands the retailer a 50% margin), and wholesale typically runs 2 to 2.5 times cost. The quick version: divide your target retail price by four, and if the answer is at or above your fully loaded cost, the product can likely support wholesale at half of retail. Here $9.00 divided by four is $2.25, against a cost of $3.78. The bar fails the test by a wide margin. That is a finding, not a disaster, and the next table shows the levers:

ScenarioCost per barRetail priceCost as % of retailWholesale at half retailMargin at that price
Batch of 40$3.78$9.0042.0%$4.50$0.72 (16%)
Batch of 80: 150 minutes hands-on, 4 hours kitchen$3.48$9.0038.7%$4.50$1.02 (23%)
Batch of 80 and a $9.50 price$3.48$9.5036.6%$4.75$1.27 (27%)

Doubling the batch saves 30 cents because the set-up time and kitchen hours do not double with it. A 50-cent price rise adds another 25 cents at wholesale. Neither fixes the whole gap. The honest options are a simpler product (a plain dark bar without nuts costs less), a different wholesale price (see the price list below) or selling wholesale only after your batches are bigger. Filled chocolates and truffles change the sums again, because hand-finishing makes labour per piece the largest line, and fresh-cream fillings shorten shelf life. Cost them the same way, piece by piece, and expect a higher price.

Let AI build the costing sheet, then check three cells by hand

Building the sheet is the part of the job an assistant does well, because the structure is repetitive. Give it a clear request and insist on formulas:

Build a costing spreadsheet for chocolate products. One row per ingredient:
name, supplier, price per kg, grams used per bar, cost per bar (formula).
Then rows for wastage % of ingredients, each packaging item, labour
(minutes hands-on per batch, hourly wage, bars per batch), kitchen
(hours per batch, hourly rate, bars per batch) and overhead per bar.
Total cost per bar must be a formula. Then a block with: retail price (input),
cost as % of retail, wholesale price (input), margin per bar at wholesale,
and the retail price divided by four. Add a note beside each formula saying
what it does. Do not type any total as a number.

Then check three cells yourself with a calculator, because a spreadsheet that looks professional can still be wrong. These are the errors I would expect:

  • Unit slips on the chocolate line. 80 g at $15 a kg is 80 divided by 1,000 times 15, which is $1.20. A formula that multiplies 80 by 15 gives $1,200.
  • Wastage applied to packaging as well. It belongs on ingredients, not on foil and sleeves.
  • Labour per batch, not per bar. The $24 must be divided by 40.
  • Cost percentage worked on the wrong base. Cost as a percentage of retail price is cost divided by retail, not retail divided by cost.
  • Wholesale margin measured against retail. It should be measured against the wholesale price.

Pick the chocolate line, the labour line and the final total, and recalculate them by hand. If those three agree, the structure is probably sound. For another worked costing in a food business, a bakery pricing calculator built with ChatGPT and a spreadsheet follows the same method.

Allergens and labels: what AI may draft, what a person decides

In most markets a chocolate maker is a food producer, and a prepacked bar has to carry specific information. The list below is typical; the exact requirements depend on where you sell, so check yours.

Label elementWhere the facts come fromWho decides
Name of the foodYour product description. Some markets set minimum cocoa content for terms like "milk chocolate" and require a "cocoa solids: X% minimum" statement, plus a milk solids figure on milk chocolateYou, against your market's naming rules and your couverture's specification
Ingredients, in descending order of weightSupplier specification sheets and your recipeA person, line by line
Allergens, emphasisedThe same specification sheets, including the couverture's own emulsifier and any allergen it carriesA person, never the AI
Net quantityWeigh a sample from each batchYou, against the tolerance your market allows
Nutrition informationCalculated from supplier nutrition data, or a laboratory analysisYou. Many markets require it on prepacked food but exempt some small producers who sell direct or to nearby shops, so check before printing
Business name and addressYour registrationYou
Batch code and date markYour batch record and a shelf-life testYou, from evidence
Storage conditionsThe shelf-life testYou

Allergen lists differ by market. If you sell to customers in the EU, there are 14 allergens: cereals containing gluten, crustaceans, eggs, fish, peanuts, soybeans, milk, nuts, celery, mustard, sesame, sulphur dioxide and sulphites (above 10 mg per kg or litre), lupin and molluscs. EU rules require them to be emphasised within the ingredients list, for example in bold. Another large market uses a list of nine major allergens, which includes sesame but not celery, mustard, lupin or molluscs, and it accepts the allergen being named in brackets after the ingredient or in a separate "Contains" line. The two systems produce different labels from the same recipe.

For chocolate the allergens that matter most are milk, soya (from lecithin), tree nuts, peanuts (often through shared equipment), gluten (wafers, biscuit pieces and some malted ingredients), sesame and sulphites (in some dried fruit). Here is a filled-in label for the hazelnut bar, written for a market where allergens are emphasised in the ingredients. It is an illustration; build yours from your own specification sheets, and add what your market requires beyond it, such as a cocoa solids statement or a nutrition table.

Milk chocolate with roasted hazelnuts. Ingredients: sugar, roasted hazelnuts (20%), cocoa butter, whole milk powder, cocoa mass, emulsifier (soya lecithin), vanilla extract. May contain traces of other nuts. Net weight 100 g. Best before: [date]. Batch: [code]. Store in a cool, dry place away from light. [Business name and address]

The ingredient list shows why the specification sheet matters. The couverture supplier's sheet gives its ingredients, their order and the emulsifier it uses, and you merge that list with your own additions by weight. In this illustration the hazelnuts rank second because 20 g of every 100 g is nuts, which only the recipe tells you. The way to use AI here is as a drafter and cross-checker, not an authority:

  1. Collect the specification sheet for every ingredient, with its ingredient list and allergen declaration.
  2. Paste those lists (not recipes you want kept private) into the assistant and ask it to merge them into a single ingredient list in descending order of weight, flagging every allergen.
  3. Check each line against the sheets yourself. Ask what is missing, not only what is wrong.
  4. Record the result in an allergen matrix. Building an allergen matrix from recipes with AI, then verifying it shows a layout.
  5. Re-check whenever a supplier changes a product or you change a supplier.

The fifth step is where makers get caught. Suppose the roaster of your hazelnuts changes the process and moves to a line that also handles almonds, or your couverture supplier swaps the emulsifier. The AI-drafted label was right for the old specification, you printed 2,000 labels in one go to save money, and the first sign of trouble is a customer's question. Print small runs of labels (200 at a time), read the specification sheet again when each delivery arrives, and ask suppliers to tell you about changes in writing. A cross-contact risk log for "may contain" labelling covers the shared-equipment side.

On precautionary labelling, EU guidance says "may contain" statements can be used where there is a risk of unintentional allergen presence through cross-contamination, that they must be based on a thorough risk assessment and that they should not replace good manufacturing practice. In the nine-allergen market the regulator describes such statements as not required by law. Either way, "may contain" is a conclusion from your cleaning records and your production order, not a blanket disclaimer. A one-kitchen maker who runs nut and plain bars on the same equipment has real cross-contact and needs to write that process down.

Claims and descriptions: where AI wording needs a filter

AI is safe and useful for tasting notes, product names and listing copy, as long as you supply the facts and filter the claims. Ask it to write from your tasting panel's comments, and tell it not to add benefits or origins you did not give it. A typical first draft needs this kind of edit:

AI first draftEdited versionWhy
"Indulge in our guilt-free, ethically sourced, eco-friendly bar, packed with antioxidants.""Milk chocolate with whole roasted hazelnuts, made in small batches. Couverture from [supplier]; origin: [as stated in the supplier's documents]."Health, ethics and environmental claims need evidence you do not have
"Our vegan dark chocolate"Say "vegan" only after you have checked the specification sheet and your equipment for milk contactA vegan claim and a milk allergen warning can contradict each other
"Bean-to-bar craftsmanship""Made from couverture chocolate"Bean-to-bar means you process the cocoa beans yourself

If you sell to EU consumers, generic environmental claims such as "eco-friendly" packaging are banned unless backed by recognised excellent environmental performance, under Directive 2024/825, which has applied since 27 September 2026. Say what the packaging is instead: "paper sleeve, foil wrap, no plastic tray", if that is true. Keep a folder of the evidence for each claim you do make, such as certification papers for fair-trade or organic wording, because you may need to show it.

Before the first sale: permissions, trial batches and a heat test

These jobs sit outside the costing sheet, and each can delay a launch by weeks if you leave it late.

  • Ask the authority that covers your premises about registration, kitchen inspection and training before you sell. Home production is allowed with conditions in some markets and not at all in others, and I cannot say which applies to you.
  • Take out product liability insurance and check whether market organisers require proof of it.
  • Run three trial batches and record temperature, timings and yield each time, so you know your real wastage. Update the 5% in the costing sheet with the measured figure.
  • Test shelf life yourself. Store finished bars the way customers will, check them weekly for bloom (a pale film on the surface), texture, smell and taste, and set the date mark from the result with a safety margin. Fresh-cream or fruit fillings need advice from a food-safety adviser.
  • Run a heat test for online orders. Post a trial parcel in warm weather, and ask the recipient to photograph the unboxing.
  • Keep a batch record with the date, the lot number of each ingredient and the quantity made, and give every batch a code you can trace.

Farmers market, online or wholesale: one bar, three margins

The same bar earns a different amount in each channel, and none of the three is free. The table uses the batch-of-80 cost of $3.48 and a $9.00 retail price, and shows profit per bar after the full cost and the channel's own costs. The figures are illustrations.

ChannelPrice per barChannel costs per barProfit per barWhat you supply
Farmers market$9.00$3.00: stall fee $0.75, card fee $0.38, your 7 hours of selling $1.87$2.52, or $4.39 before your own selling timeYour time on the day, plus a stall fee and insurance
Online$9.00$2.04: card fees $0.41, packaging $0.60, pick and pack $0.67, plan $0.36$3.48Customers: ads and social posts are not in these numbers
Wholesale$5.00$0.10 delivery$1.42Terms, invoices and a consistent product

The working behind it: a market day with 60 bars sold is $540 of takings, $208.80 of full cost, a $45 stall fee and $23.04 of card fees (2.6% plus 15 cents per card sale, the in-person rate Square lists on its Free plan; check your provider). Your seven hours, at $16 an hour, are $112. That leaves $151.16, or $263.16 if you do not count your own time. Online, 40 orders of two bars at $18 each bring $720. Card fees at 2.9% plus 30 cents an order come to $32.88 (the online rate Shopify lists for its Basic plan, which is $29 a month billed yearly or $39 monthly at list price). Packaging at $1.20 an order is $48, five minutes of packing per order at $16 an hour is $53.33, and the $29 plan brings the channel costs to $163.21 and the profit to $278.39, after $278.40 of full cost. Shipping is paid by the customer in this example, and ads are excluded. At $5.00 a bar wholesale, a case of 24 brings $120 of sales and $34.08 of margin after $83.52 of cost and $2.40 of delivery.

Three conclusions follow. The market earns less per bar than online once your own time is counted ($2.52 against $3.48), but it is the cheapest way to learn what sells, with no shipping and no heat problems, and it gives you your first regular customers and an email list. Online has the best per-bar margin on paper and the worst unknown, which is where the customers come from. Wholesale has the thinnest margin and the least selling effort per bar, and it only works once your cost is low enough. At a $5.00 wholesale price the margin is 28%, and you would need about $5.11 for 30%. AI for farmers market vendors: pre-orders, pricing and weekly posts helps with the market side. I would sequence the channels: market first, online when you have photos, a shipping method that survives warm weather, and some repeat customers, and wholesale when your batches and your price both allow it.

A wholesale price list and first email

Many retailers work to around a 50% margin, so a $5.00 price against a $9.00 shelf price gives a shop 44%. Shops will not stock a bar that has to be priced above what shoppers see elsewhere, so check shelf prices of similar bars before you commit to a retail price. A simple price list needs six lines: the product and pack size, wholesale and suggested retail price, minimum order (for example a case of 12 or 24), payment terms (a new account might pay the first order in advance, then within 14 days), delivery or collection arrangements, and the shelf life remaining when the goods arrive. Say plainly that you do not offer sale or return. Using AI for bakery wholesale and standing orders covers the repeat-order side.

Ask the assistant to draft the first email, supplying your real facts, and edit out any claim you cannot back:

Write a 120-word email from a small chocolate maker to the owner of a
[cafe / gift shop], offering a wholesale trial. Facts: one product, a
100 g milk chocolate bar with roasted hazelnuts; wholesale $5.00, suggested
retail $9.00; minimum order one case of 24; first order paid in advance,
then 14-day terms; sample available on request; allergen information and
batch code on every bar. Plain, friendly, no hype, no claims about awards or
sourcing. Close by offering to drop off a sample bar.
Sign it [your name], [business name], [phone].

Re-costing monthly: how to tell the numbers still hold

A costing sheet goes stale. Couverture, nuts and packaging prices change, your yield improves, and your kitchen hours drift. Keep one input cell per ingredient price so that you update a single number, and set a monthly reminder to re-cost. Re-run the sheet straight away when a supplier invoice differs from the sheet by more than a few percent on any line. Compare actual wastage with the 5% allowance, and compare the hours you spent with the hours you costed.

After four weeks of selling, check three things: which channel produced the most profit per hour of your time, which bar or box sold fastest, and whether any label question or complaint pointed to a gap in your allergen process. If one product shows a thin margin, raise its price, shrink the recipe slightly or drop it, and let the sheet tell you which. For a related example of pricing a gifting product that sells in seasonal peaks, AI for a cottage food business: labels, pricing and order forms is a useful next read.

Starting a chocolate business: questions makers ask

Do I need a licence to sell chocolate I make at home?

It depends on where you sell, and rules vary a great deal: some markets allow limited home production with conditions, others require an inspected kitchen. Ask the authority that covers your premises before you sell anything, and ask about product liability insurance too. Do not rely on an AI's answer for this.

Can AI tell me which allergens are in my chocolate?

Not reliably. It can merge ingredient lists you paste in and flag likely allergens, but it cannot see your supplier's specification sheet or know what shares your equipment. Treat its output as a draft, check every ingredient against the sheet, and re-check whenever a supplier changes a product.

Is a 'may contain nuts' line compulsory?

Not as such. Where precautionary statements are used they should rest on a risk assessment of cross-contact, and EU guidance says they should not replace good manufacturing practice. In some markets they are not required by law at all. Decide from your cleaning and production records, then check your market's guidance.

What margin should I aim for on wholesale chocolate?

A common rule of thumb is that retail is double wholesale and wholesale is roughly double your full cost, so cost should be no more than 25 to 40% of the retail price. Test it with your own fully loaded cost. If it fails, raise the price, increase batch size or simplify the product.

How do I stop chocolate melting in the post?

Test before you promise. Send trial parcels in warm conditions and ask the recipient to photograph the unboxing. Use insulated packaging and cool packs, avoid weekend transit and consider pausing shipping in hot weeks. State the policy on the product page so customers know what to expect.

Further reads

Sources: EU Commission pages on food allergies and food information (the 14 allergens, emphasis, precautionary labelling); a food-safety regulator's allergen page for a market with a nine-allergen list; university extension guidance on pricing food products; Shopify and Square published card rates; EU Directive 2024/825. All costings are illustrations.

Want your costing and labels checked before you launch?

On a 1:1 call we can walk through your recipes and costing sheet, decide where AI helps with labels and listings, and set up the checks that keep allergen information in a person's hands.

Book a 1:1 call with me