Coffee cooperative societies, estate pulping stations (wet mills), licensed commercial dry mills, and specialty green-coffee exporters across Nyeri, Kirinyaga, Murang’a, Kiambu, Embu, Meru, Machakos, Kericho, Bungoma, and Trans Nzoia process some of the world’s highest-scoring washed Arabica coffees (SL28, SL34, Ruiru 11, Batian). Yet across the value chain, manual cherry passbooks, unmonitored parchment drying tables, opaque dry-mill hulling outturn reports, and complex Nairobi Coffee Exchange (NCE) Direct Settlement System (DSS) splits create cherry-to-parchment conversion leakages, over-dried or high-moisture parchment that bleaches green beans and depresses cupping scores, disputes over Milling Loss % and grade distribution (AA vs. AB vs. C/T), and non-compliance with European Union Deforestation Regulation (EUDR) farm-level geolocation mandates.
At devManue, we engineer specialized Coffee Wet-Mill, Commercial Dry-Mill & NCE Auction / Specialty Export ERP platforms that provide unbroken digital custody from the smallholder’s coffee trees and wet-mill cherry hopper to dry-mill optical color sorters, SCA cupping tables, NCE auction catalogs, and direct bank/mobile-money grower settlements.
1. Wet-Mill Cherry Intake, Floatation Cherry Sorting & Fermentation Tank Lot Tracking
Premium Kenyan coffee quality is locked in—or destroyed—within the first 24 hours at the wet mill (factory). Our wet-mill module digitizes cherry reception and wet-processing batch control:
- Digital Cherry Hopper Weighing & Cherry Grade Separation (Cherry I vs. Cherry II / Mbuni): As farmers deliver ripe red cherry to the factory intake hopper, digital scales integrated with grower membership cards record exact kilograms of
Cherry Grade I(ripe red) separately from under-ripe/over-ripeCherry Grade IIand sun-driedMbuni, updating the farmer’s SMS/digital passbook in real time. - Pulper Disc Calibration, Density Floatation & Fermentation Tank Batching: After disc or drum pulping separates skins from mucilage-coated parchment, water density channels float off lighter Lights (P3) from dense prime Firsts (P1) and Seconds (P2). Each day’s cherry intake is assigned a unique Outturn Batch ID tracked through fermentation tanks (monitoring 16–36 hour mucilage breakdown, water recirculation, and washing channel grading).
- Raised Drying Table Moisture Telemetry & Conditioning Bin Custody: Tracks parchment batch placement across skin-drying tables and raised African drying beds, logging daily portable moisture-meter readings until parchment reaches the statutory
10.5% to 11.5%moisture window before bagging into conditioning store bins.
2. Commercial Dry-Mill Hulling Outturn, Screen-Size Grading (AA/AB/PB) & Milling Loss Engine
When conditioned parchment arrives at a licensed commercial dry mill accompanied by a coffee movement permit, growers and cooperative managers demand transparent visibility into parchment hulling loss (typically 18%–22% husk weight) and the exact yield of high-premium grades (AA, AB, PB) versus lower grades (C, TT, T, UG).
Our dry-mill execution engine links every hopper tip on the hulling line—spanning destoners, hullers/polishers, cylindrical/oscillating screen graders (Screen 18 for AA, Screen 15/16 for AB, pea-berry separators for PB), gravity tables (Catadors separating light TT and T), and bichromatic/trichromatic optical color sorters—to generate an auditable Milling Outturn Statement and calculate Direct Settlement System (DSS) net payouts:
from decimal import Decimal, ROUND_HALF_UP
class CoffeeMillingOutturnAndDSSSettlementEngine:
"""
Computes dry-mill parchment-to-clean-coffee hulling loss, screen grade
distribution (AA, AB, PB, C, TT, T), and NCE Direct Settlement System (DSS)
statutory & grower payout allocations.
"""
@staticmethod
def calculate_milling_outturn_and_dss_distribution(
parchment_intake_kg: Decimal,
intake_moisture_pct: Decimal,
clean_grade_weights_kg: dict, # e.g. {"AA": 4200, "AB": 5100, "PB": 850, "C": 620, "TT": 380, "T": 250}
grade_auction_prices_usd_per_50kg: dict,
exchange_rate_kes_per_usd: Decimal,
milling_fee_per_tonne_parchment_usd: Decimal,
cherry_intake_for_outturn_kg: Decimal,
cooperative_retention_pct: Decimal, # Capped by regulation (e.g. <= 20%)
) -> dict:
total_clean_coffee_kg = sum((Decimal(str(v)) for v in clean_grade_weights_kg.values()), Decimal("0.00"))
milling_loss_kg = parchment_intake_kg - total_clean_coffee_kg
milling_loss_pct = ((milling_loss_kg / parchment_intake_kg) * Decimal("100.00")).quantize(
Decimal("0.01"), rounding=ROUND_HALF_UP
)
cherry_to_clean_ratio = (cherry_intake_for_outturn_kg / total_clean_coffee_kg).quantize(
Decimal("0.01"), rounding=ROUND_HALF_UP
)
# Compute gross auction USD value across grades (priced per 50kg bag)
gross_auction_usd = Decimal("0.00")
for grade, weight_kg in clean_grade_weights_kg.items():
bags_50kg = Decimal(str(weight_kg)) / Decimal("50.00")
price_per_50kg = Decimal(str(grade_auction_prices_usd_per_50kg.get(grade, "0.00")))
gross_auction_usd += bags_50kg * price_per_50kg
gross_auction_usd = gross_auction_usd.quantize(Decimal("0.01"), rounding=ROUND_HALF_UP)
milling_charge_usd = ((parchment_intake_kg / Decimal("1000.00")) * milling_fee_per_tonne_parchment_usd).quantize(
Decimal("0.01"), rounding=ROUND_HALF_UP
)
net_distributable_kes = ((gross_auction_usd - milling_charge_usd) * exchange_rate_kes_per_usd).quantize(
Decimal("0.01"), rounding=ROUND_HALF_UP
)
coop_factory_retention_kes = (net_distributable_kes * (cooperative_retention_pct / Decimal("100.00"))).quantize(
Decimal("0.01"), rounding=ROUND_HALF_UP
)
direct_grower_pool_kes = (net_distributable_kes - coop_factory_retention_kes).quantize(
Decimal("0.01"), rounding=ROUND_HALF_UP
)
rate_per_kg_cherry_kes = (direct_grower_pool_kes / cherry_intake_for_outturn_kg).quantize(
Decimal("0.01"), rounding=ROUND_HALF_UP
)
return {
"total_clean_coffee_kg": total_clean_coffee_kg,
"milling_loss_pct": milling_loss_pct,
"cherry_to_clean_coffee_ratio": cherry_to_clean_ratio,
"gross_nce_auction_proceeds_usd": gross_auction_usd,
"direct_grower_pool_kes": direct_grower_pool_kes,
"net_payout_rate_per_kg_cherry_kes": rate_per_kg_cherry_kes,
}3. SCA Q-Grader Cupping Lab, Green-Bean Defect Analysis & Bulking/Blending Recipes
Every milled outturn lot is sampled automatically into the dry-mill or exporter cupping laboratory:
- Green Bean Physical Analysis: Logs screen retention percentages, bean density (
g/L), water activity (aw < 0.60), moisture content, and Category 1 / Category 2 defect counts (full black, full sour, pod/cherry, insect-damaged, floater, shell, or parchment). - SCA 100-Point Sensory Cupping Protocol: Q-Graders score roasted samples on tablets across Fragrance/Aroma, Flavor, Aftertaste, Acidity (phosphoric/malic/citric brightness), Body, Balance, Uniformity, Clean Cup, Sweetness, and Overall—generating interactive spider charts and setting auction reserve prices.
- Export Bulking, GrainPro Liner Stuffing & EUDR Geolocation Dossiers: For exporters blending multiple auction lots into 300-bag (
19.2 MT) shipping containers in Sisal/Jute bags with hermetic GrainPro / Ecotact liners, the ERP compiles the exact farm GPS polygons of every contributing smallholder into a downloadable GeoJSON dossier compliant with EU Deforestation Regulation (EUDR) due diligence.
| Coffee Wet-Mill, Dry-Mill & NCE Export Metric | Legacy Spreadsheets & Manual Tallying | devManue Custom Enterprise ERP |
|---|---|---|
| Wet-Mill Cherry Intake & Passbooks | Handwritten society passbooks & manual cherry totals prone to disputes | Digital hopper scales, instant SMS cherry receipts & Outturn Batch IDs |
| Dry-Mill Hulling & Grade Yield | Delayed manual hulling reports with unexplained >23% milling loss | Real-time hulling line mass-balance across AA, AB, PB, E, C, TT & T |
| SCA Cupping & Reserve Pricing | Paper cupping sheets disconnected from auction catalog pricing | Digital SCA Q-Grader spider charts auto-calculating lot reserve prices |
| EUDR Traceability & DSS Payouts | Missing farm GPS polygons & slow post-auction manual payouts | GeoJSON farm polygon linkage & automated DSS grower/factory splits |
Related Enterprise ERP & Engineering Guides
- Tea Factory & Mombasa Auction Brokerage ERP — Managing smallholder leaf collection, factory outturn yields, and auction settlements.
- Commodity Warehouse Receipt System (WRS) ERP — Issuing electronic warehouse warrants for NCE coffee auction catalogs.
- Custom Coffee Mill, Cooperative & Exporter ERP — Build your wet-mill, dry-mill, cupping lab, and EUDR export platform with devManue.