Case study · Food manufacturing

FAT Chips: from the kitchen to the checkout to the books.

FAT Chips makes and sells snacks: online, at farmers markets and wholesale. It is also our own company, so it is where we learned Odoo the hard way. Production, four sales channels, fulfillment, sales tax, bank feeds and the books all run on one self-hosted Odoo Community build we designed and still run every day.

Client
eatfatchips.com
Industry
Food manufacturing, DTC + wholesale
Platform
Odoo 17 Community, self-hosted
Scope
Everything, including the website

The problem.

A small food manufacturer has the hardest version of the ERP problem at the smallest size. Raw ingredients become batches, batches become bags, bags become packs and subscriptions, and every one of them has to carry an honest cost. Then the same product leaves through a web store, a market table, a wholesale marketplace and a retailer’s purchase order, each with its own payment processor and its own tax rules.

Off-the-shelf, that is five or six subscriptions stitched together with exports. We wanted one ledger that knew what every order actually earned.

What we built.

Stock Community plus the OCA modules that close its gaps, and more than a dozen custom modules for the rest.

Production & costing

Bills of materials from raw ingredient to finished pack, and margin priced at fully-absorbed cost: ingredients, labor, packaging and overhead, not ingredients alone.

Web store & checkout

eatfatchips.com runs on Odoo’s website with a custom checkout: Stripe payments, pack builder, pre-orders, native product reviews and search structured data.

Farmers markets

A market-day lifecycle built around how a stall actually runs: stock goes out, what comes back is counted, and the difference is what sold.

Wholesale & marketplace

Faire connected by API, and retail accounts invoiced from Odoo, so wholesale runs through the same order and fulfillment flow as every other channel.

Subscriptions

Subscribe-and-save billing driven by Odoo itself, with the recurring orders landing in the normal fulfillment queue.

Sales tax

Product-level sales tax computed at checkout, including food exemptions, before the card is charged. It became our Midas product.

Shipping & labels

Buy carrier labels and print bag labels from inside Odoo on the shop’s own printers. It became PBM Shipping.

Bank feeds & payouts

Plaid, Stripe and Square feeds into Odoo reconciliation, with processor payouts split back to the channel that earned them.

Margin dashboards

Contribution margin per order and per channel, plus reorder alerts, computed from real orders at real cost. It became Ronin.

Marketing plumbing

Meta Conversions API for server-side ad attribution, branded transactional email and marketing email flows, all from the same customer records.

Cash & debt

A forward cash outlook from the bank feed, loan schedules and a nightly net-worth snapshot.

Odoo 17 CommunitySelf-hostedOCAManufacturingWebsite & eCommerceStripeSquarePlaidFaire APIMeta CAPICustom modules

How it runs now.

  • One ledger for four channels. Web, markets, wholesale and subscriptions all post to the same books.
  • Margin is the headline, not order count. Every order carries its contribution margin, so a busy channel that loses money is visible the week it happens.
  • No per-user licensing. Community is self-hosted on a server the business owns; adding a kitchen hand costs nothing.
  • Four products came out of it. Midas, PBM Shipping, Ronin and our email flows each started as a FAT Chips problem, and every one still runs there first.

Why it matters to you.

Most implementers learn a business from a requirements document. We learned Odoo by running a manufacturing company on it: closing its books, chasing its inventory counts, paying its sales tax. When we scope your build, we have usually already hit the wall you are about to.

More work from the shop.

Make it, sell it everywhere, know what it earned.

If your products have recipes and your orders come from more than one place, we have built this before. Tell us what you make.

or email [email protected]