Biofarms

Case study · Avocado oil processing

Every avocado weighed, from the truck at the gate to the oil in the container.

Biofarms presses avocado oil in Kenya. Fruit arrives by the truck and is paid for by the kilo; oil leaves by the container and is sold by the kilo. Everything in between, ripening, sorting, rejection, crushing, is where the yield is made or lost. KiloSahihi weighs each of those stages on the plant's own scales and posts the result to Odoo, so the mass balance comes from the indicator, not from a spreadsheet at month end.

Products
Avocado fruit in, avocado oil out
Stations
Weighbridge receiving and dispatch; sorting station; oil weighing
Processing modules
Offloading, ripening, sorting, crushing, expenses, workers, oil containers, dispatch, recall
Integration
KiloSahihi ⇄ KS-Avocado processing system ⇄ Odoo
Partner
Brookstone Consultancy

Why every stage is weighed

The pattern is common to every fruit processor. The truck is weighed, a goods received note is raised, and from that point the fruit moves through ripening, sorting and crushing with each stage recorded on paper or not at all. The yield per batch is worked out later, from figures nobody can check against a scale, and the unexplained difference between fruit in and oil out has no owner.

What was put in

  • Weighbridge receiving. The loaded truck is weighed against its GRN; the empty truck is weighed out; the net fruit weight is locked as that GRN's baseline and pushed to the processing system. A GRN with mixed varieties is received line by line, so the variety split is right from the first weight.
  • Sorting station. Each sorting cycle is weighed on the station's scale: fruit sorted for crushing, fruit held back, rejects. A cycle cannot close until every weigh-back is on record, and the station shows the expected weigh-back so a short cycle is caught on the spot.
  • Oil weighing. Pressed oil is weighed by container as it is filled, against the batch it came from.
  • Dispatch. The loaded truck is weighed out over the same bridge; the net is the dispatched weight and closes the unit in the processing system.
  • Odoo. Goods receipts, batch outputs and stock movements post to Odoo as each stage closes. Pushes queue on site when the connection drops and post when it returns, without duplicates.
  • Fruit costing locked at intake. The buying price per kilo defaults to the variety’s price and is locked when the GRN is received. Changing it for a negotiated or quality-adjusted load is a supervisor action that needs a written reason and is recorded in the audit log.
  • Variance alerts by email. When a GRN’s unexplained loss crosses the plant’s threshold, a CRITICAL alert goes to the owner and the finance team naming the GRN and the loss in kilograms and percent, with a link into the app. One in September 2026 read: unexplained loss 8.31% (103 kg), record a write-off or explanation to close. The GRN stays open until someone does.
  • Controls. Role-based access, approval steps, variance limits with a mandatory explanation, controlled overrides and an audit trail on every weight.

The plant keeps weighing when the internet is down. Every push from the weighbridge and the sorting station sits in a local outbox until the processing system acknowledges it, and a re-push never double-counts.

The mass balance, per GRN

Every truck of fruit gets its own mass balance in the processing system, built from the weights as they arrive. It is not a month-end spreadsheet; it is open on the GRN while the fruit is still in the plant, and the GRN cannot be closed until it reconciles.

  • Net intake

    Where it comes from
    Weighbridge gross minus tare, locked at receiving
  • Moisture loss

    Where it comes from
    Weighed out across ripening
  • Bad fruit removed

    Where it comes from
    Weighed at sorting
  • Crushed

    Where it comes from
    Weighed at the crushing station
  • Dispositions and rejects

    Where it comes from
    Write-offs recorded with a reason
  • Unexplained loss

    Where it comes from
    What is left, in kilograms and as a percentage of intake; over the threshold it alerts management by email

Three checks stand between a GRN and its close. Weighing must be marked complete, so a balance is not struck while weighments are still arriving. The unexplained loss must be inside the plant’s variance limit, or a write-off or a reason must be recorded. And the bins must reconcile: the number of bins offloaded against the number sorted, so a recirculated unripe bin is finished or explained rather than lost. A GRN that fails any of the three stays open with the reason on screen.

The cycle now

  • Fruit received

    Weighed on
    Weighbridge
    What is recorded
    Gross, tare, net per GRN and variety; dry matter and quality result on the ticket
  • Ripening and sorting

    Weighed on
    Sorting station scale
    What is recorded
    Sorted for crushing, held, rejected, per cycle, with expected versus actual weigh-back
  • Crushing

    Weighed on
    Sorting station scale
    What is recorded
    Crushed weight per GRN, the basis for yield
  • Oil filled

    Weighed on
    Oil scale
    What is recorded
    Oil per container per batch; FFA and quality clearance recorded
  • Oil dispatched

    Weighed on
    Weighbridge
    What is recorded
    Net dispatched per truck, closing the unit

The partnership

Brookstone Consultancy designed the process controls and the Odoo side at Biofarms: the acceptance criteria, approval steps, variance alerts and the accounting flow the weights feed into. KiloSahihi supplied the weighing: the weighbridge station, the sorting and oil scales, and the posting. Brookstone now offers the same avocado processing solution to other processors, with KiloSahihi as the weighing and integration layer.

Brookstone Consultancy: Process, controls and ERP partner.

Related

Get started

Run your plant the same way

Tell us what you process and how the fruit moves through the plant. We'll walk you through this setup with your own numbers.