An online shop for products sold by weight
2026 | Case study / by Carmelo Bisignano, design and development
Project information
- Industry
- Food retail
- Duration
- 1 year
- Team
- 1 product designer (me), Cursor multi-agent coding and DevOps
- My role
- Design and development, end to end, Purchase-order UX and email system, n8n automations and AI publishing
- Users
- Customers ordering online, The shop team, confirming orders by hand
- Tools
- WordPress, WooCommerce, PHP, n8n, Gemini, Telegram, Polylang, MailPoet
Live store: bottegadeiduemonti.it
Overview
Bottega dei Due Monti sells cheeses, cured meats and preserves from the Nebrodi mountains in Sicily. The family started in Montalbano Elicona in 1970; the shop is now in Capo d’Orlando, and the same products ship online.
I built the whole thing: the homepage, a storefront that deals honestly with products sold by weight, the emails that take every order from request to payment, and the automations that let a very small team run it without drowning in admin.
Marketing site
Before anyone sees a price, they should know what kind of place this is. The homepage does that with dark surfaces, the shop’s green and yellow, and photos that bring the Nebrodi close. It tells the family story since 1970, uses the shop’s own line, «Mangia sano… Mangia Siciliano», and makes clear the difference between the shop in Capo d’Orlando and the online store that ships across Europe.
By the time a visitor reaches the catalogue, they know who they’re buying from.
The problem
No two wheels of provola weigh the same. Portions are cut to order. The price on the product page is per kilo, and the piece the customer will get doesn’t exist yet.
A normal pay-now checkout would charge the wrong amount. The shop has to take a request, cut and weigh, confirm the real price, and only then send a payment link. Or say no, if the piece isn’t available. Shipping may also wait until the customer says when the parcel should leave.
So the job was to make a process run by hand feel obvious to the customer, and to give the shop one clear action at every step.
Storefront
The shop looks like the homepage: same green, yellow accents, near-black surfaces. It runs in Italian, English and German.
The hardest screen is the product page. The customer picks a cut (250 g, 500 g, a whole piece), sees an honest estimate and adds it without committing to pay. The button says “Aggiungi alla lista” (add to list), not “Buy”, because this is a request.
The cart is called a shopping list. A notice that stays on screen explains that weights vary and every price is an estimate: the shop confirms the real amount before any money moves. Checkout has four steps: shopping list, order details, order sent, order ready. Then delivery or pickup.


Why it works this way
Almost every decision comes back to one fact: the shop doesn’t know the weight until it cuts the piece. That shapes the customer’s path, the order states and the automations. The three diagrams below show how.



Purchase orders and email
Nothing is charged at checkout. The payment method is labelled “Pagamento alla conferma” (pay on confirmation), because that is what happens: the order arrives as a request the shop can confirm, refuse or hold.
From the order screen in the admin, the shop can:
- send the confirmed order to the customer, with accept and reject links;
- refuse a new request and let the customer know;
- send a payment reminder once the customer has accepted;
- resend any of these emails.
Every status change reaches the customer as a branded email, not a default WooCommerce notice. I built the email system from scratch, overriding the YITH quote templates with Bottega’s own: the first estimate, the confirmation with the real price next to the crossed-out estimate, the refusal, a payment reminder with a secure link, payment received, shipped, on hold when stock runs short, holiday closures and cancellation. Italian is written first; English and German follow.



The link in the order-ready email opens a signed page, on desktop or phone, where the customer accepts, refuses or asks for a change. No account needed.




On the phone
Most orders come from a phone. The flow is the same: pick a cut, see the estimate, add to the list, send the request. The small screen forced every element to justify itself.




Running the shop
Paying doesn’t mean the parcel leaves straight away. The customer gets an email with signed links, ship now or later, and the order waits for the answer. When the shop closes for a holiday, new requests get an automatic notice and checkout keeps working.
Packlink handles the couriers: door-to-door delivery, insurance, and a delivered status that matches how the shop tracks parcels.
Holds, pauses, holidays and late shipments all have a place in the system, so a small team never has to improvise around it.
Automations and AI
A Telegram bot is the control room. Commands go to n8n workflows, and the team never has to open the backend.
Products from a chat
Send a photo on Telegram and a product draft appears. Gemini suggests name, category, price and variants. One approval and it’s live in WooCommerce.
Content and social
A brief or a catalogue item becomes a post for several channels: AI copy, Gemini images, sometimes a Veo video. It’s reviewed on Telegram through the BD2M Automatron bot, staged in Notion, then scheduled to Facebook, Instagram, Pinterest, LinkedIn, Telegram and the blog. A separate poller follows Veo jobs until they become reels and posts.
Product images
Good food photography is expensive for a small producer. Here Gemini generates campaign and product images from catalogue briefs (product, category, mood), and I crop and refine them in Figma before they’re used. Visuals that used to need a shoot now come out of one pipeline, in the same palette and tone, at catalogue scale.


Contacts and newsletters
WhatsApp and Messenger contacts go into one shared list for approved broadcasts. The weekly newsletter pulls from the catalogue, Gemini writes it in three languages, someone approves it on Telegram and in Notion, and MailPoet sends it in Italian, English and German.
Leads
Another pipeline finds B2B and restaurant or hotel contacts, scores them and drafts follow-ups. Nothing is sent until a person has checked it.
Outcome
The shop now takes orders online the way it always did at the counter: by hand, at honest prices. Customers know they won’t pay until the piece is cut. The shop has one clear action for each step: confirm, refuse, hold, ship, postpone.
Products, social, newsletters and leads run from Telegram through n8n, checked before anything goes out. One or two people can run online sales, marketing and customer contact without being buried in admin.
- 5countries reached: IT, DE, SE, DK, FR
- +80%order growth
- ~88%fulfilment: 14 of 16 orders delivered (2 refused quotes excluded; 1 postponed, 1 cancelled)
