Skip to content

SaaS vs Custom

Coffee Roaster Software — Roast-Day Production Schedule, Freshness Tracking with Roast Date Stamps, Wholesale Cafe Recurring Orders, Subscription Fulfillment, Espresso Machine Maintenance Logs, GST & Direct-Trade Compliance

All articles
📅 📦

Specialty coffee roaster (Melbourne CBD, 3-person team, $450k annual revenue). Tuesday 9:00am: roast day. Founder Mina: 50kg batch Ethiopia Yirgacheffe (green beans, just arrived from importer). Roast temperature: 190–220°C, duration 14 mins. Roast starts (drum heats, beans tumble). Mina monitors: aroma, colour (crack point = 6 mins, second crack = 12 mins, target = light finish [11 mins]). Roast complete: 11 mins, beans dumped into cooling tray. Temperature: 200°C dropping to 80°C (2 mins cooling). Cool beans: scooped, weighed, bagged (500g × 10 bags, 250g × 10 bags). Bags sealed (hand-stamped date: "11/6/26 ROAST," no barcode, no tracking). Piles: (1) 10 × 500g bags wholesale, (2) 10 × 250g bags subscription, (3) 5 × 1kg bags sample/gift. Wholesale: 5 cafes (Lûmé, Splice, Black Star, Paramount, Workshop) order "Ethiopia Yirgacheffe, medium roast, next Tuesday." Mina recalls email (sent Monday, said "yes, ready"). 10 × 500g bags stacked in corner (packed manually, labels printed at home [slow], no UPC). Subscription: 8 customers subscribe "fresh roast monthly, medium roast, rotate origins." Mina recalls: "Jake wants Ethiopia, Sarah wants Colombia, Marcus wants house blend." Hand-writes note: 8 × 250g bags (Ethiopia 4, Colombia 2, house 2), seals, adds shipping label (printed, hand-wrote address). Espresso machine maintenance: Lûmé (wholesale cafe) calls "grinder sticky, espresso slow, need service." Mina checks notebook: "last service 8 months ago? Not sure." Books: "Friday morning, come by." Brings grinder cleaner, backflush. Service time: 1 hour (overhead tracked nowhere). No invoice (Mina: "I'll send it later"). Billing: Shopify backend (basic e-commerce, $29/month). Subscription orders: manual (copy from list to Shopify, "Ethiopia 250g — 1 unit," "Colombia 250g — 1 unit," process payment manually [slow]). Cafe invoices: printed, emailed, no due date tracking, payment 30 days late typical (cash flow pain). Inventory: notebook (20kg Ethiopia left = roasted on 11/6, freshness unknown, risk = stale beans sold post-week 2 = quality fail). Packaging: hand-stamped dates (typos occasional, "11/7/26" instead of "11/6/26" = customer receives wrong roast date). Shipping: EOFY accounting mess (Mina: "which orders shipped which date? Can't track"). Espresso maintenance: no log (Lûmé service Friday, owner forgets contract terms, does maintenance "as needed" = unpredictable revenue, customers unhappy [no SLA]). GST: invoices inconsistent (some GST-inclusive, some GST-exclusive = ATO audit risk). Direct-trade sourcing: importer sends 50kg batch (cost $320, roasted = 35kg yield, wholesale price $18/500g = $36 per bag, $360 revenue per batch = 12.5% margin pre-labour = $45 margin after roasting labour = tight margin, zero visibility). Pain: manual cafe order entry (5 mins × 2 roasts/week = 10 mins/week, 520 mins/year = 8.7 hours), subscription copy (8 customers × 2 roasts/week = 16 entries/week, 10 mins = 160 mins/week, 8.3 hours/year), invoicing (30 mins invoice creation/week = 26 hours/year, late payment collections = $18k average outstanding 60+ days), inventory guessing (stale beans, no roast-date recall = 5% waste = $2.25k annually), packaging errors (wrong roast date shipped 2% = $1.8k customer refunds/replacements), espresso maintenance (unscheduled, no contract visibility = revenue $0, opportunity $8k/year if formalized), GST errors (2 audits, $1.2k penalties, time cost 40 hours). Total friction: $35.8k annually (labour + waste + penalties + lost revenue). Mina researches: custom roaster management software ($25k build + $2k/year ops). Mina models year 1: roast schedule automation ($8k labour saved), subscription batch assignment (3 hours/week freed = $6.2k), wholesale invoice/payment tracking ($4.5k collections uplift [faster payment 30 → 15 days]), inventory roast-date tracking (zero stale waste = $2.25k), packaging barcode + roast date (zero shipping errors = $1.8k), espresso maintenance formalized (service contracts, $8k annual recurring revenue), GST auto-export (zero audit risk + time, $1.2k penalty avoidance + 40 hours labour = $1k value) = $33.75k value vs $27k cost = **$6.75k net year 1, payback 9.6 months**. Multi-roastery scale: 2 roasteries (Melbourne + Sydney), unified inventory (50kg batches tracked per location), shared subscription pool (customer can select roastery origin = geographic freshness), wholesale network (café invoicing consolidated, payment tracking across 2 sites). Year 2 expansion: 3rd roastery (Brisbane), system cost $0 additional (multi-location architecture), scale margin recovery (+$18k wholesale invoicing efficiency, +$12k subscription batch optimization, +$8k espresso maintenance contracts at new roastery, +$2k GST audit avoidance) = $190k cumulative two years, 704% ROI.

Specialty coffee roaster (Melbourne CBD, 3-person team, $450k annual revenue). Tuesday 9:00am, roast day. Founder Mina starts: 50kg batch Ethiopia Yirgacheffe (green beans, freshly arrived from direct-trade importer). Roast drum heats (190–220°C). Beans tumble (aroma fills workspace). Mina monitors: colour progression (light roast target = 11 mins to first crack finish). 11 mins: roast complete. Beans dumped into cooling tray (200°C → 80°C, 2 mins cooling). Cooled beans: scooped, weighed, hand-bagged (500g × 10 bags wholesale, 250g × 10 bags subscription, 1kg × 5 sample bags). Labels: printed at home, hand-stamped date "11/6/26 ROAST" (no barcode, no UPC, no lot tracking). Stacked in corner. Wholesale: 5 cafes (Lûmé, Splice, Black Star, Paramount, Workshop) expect Ethiopia bags today. Mina emails Monday said "yes, ready." Now: 10 × 500g bags piled, no invoice yet. Shopify order entry: copy cafe names to order form, manually input "Ethiopia Yirgacheffe 500g — qty 2" per cafe. 5 cafes, 2–3 bags each = 15 mins data entry (slow). Printing: invoice generated (no due date, no net terms), emailed. Cafes pay: typical 30–45 days later (cash flow delayed $6k average). Subscription: 8 customers subscribe "fresh monthly roast, rotate origins, deliver by 15th." Mina recalls: "Jake = Ethiopia, Sarah = Colombia, Marcus = house blend." Hand-writes list, assigns bags, seals. No system (risks: Sarah sent Ethiopia instead of Colombia = refund, customer unhappy, repeat likelihood down). Espresso maintenance: Lûmé calls "grinder sticky, espresso extraction slow, can you service Friday?" Mina: "yes, Friday 10am." Visits Lûmé Friday (brings grinder cleaner, backflush supplies, spends 1 hour labour). Invoice: none. Mina forgets (customer asks "will you send service log?"). Service logged nowhere (last service date: notebook says "8 months ago?" = uncertainty, maintenance schedule unknown, contract SLA zero). Cafe owner thinks: "is this a recurring service? Cost? Due date?" Mina loses $8k annual opportunity (formalize espresso maintenance contracts = $100/month per cafe × 8 cafes = recurring revenue). Inventory: notebook tracks (20kg Ethiopia left after roasting). Freshness: "roasted 11/6, how long can we sell?" Mina knows (medium roast peaks 1–2 weeks, optimal window closes week 3). No system: 3 weeks post-roast, beans stale, customer gets suboptimal coffee. Waste: 5% stale = 1kg per 20kg batch = 1 batch every 4 roasts = $180 waste per 2-roast week × 26 weeks = $4.7k annually (vs model's $2.25k, more aggressive roasting schedule = higher waste). Packaging: hand-stamps dates (typos happen, "11/7/26" instead of "11/6/26" = wrong roast date shipped, customer receives coffee, checks date "this roasted yesterday?" = distrust, refund claim). 2% error rate on 20 weekly shipments = 0.4 errors/week = $1.8k annual refunds/replacements. Billing: cafes invoiced (some GST-inclusive, some GST-exclusive = audit inconsistency). ATO audit review (2-year sample): 15% of invoices non-compliant = penalty $1.2k + 40 hours compliance labour ($1k value). Shipping tracking: no record (which cafe got delivery Tuesday 11/6? Which customer got roast Tuesday vs Friday? = no traceability). Year-end: EOFY accounting nightmare (Mina: "which roast batches shipped which dates? Missing invoice trail = tax risk"). Total friction: stale waste ($2.25k) + packaging errors ($1.8k) + espresso maintenance lost revenue ($8k) + wholesale invoice labour ($8k annually, 30 mins/week invoicing × 52 weeks = 26 hours) + subscription batch assignment ($6.2k labour, 3 hours/week × 52 = 156 hours), GST penalties ($1.2k) + audit time ($1k value) + cash flow delay ($6k working capital = interest cost) = **$35.45k annually**. Mina evaluates: custom roaster software ($25k build + $2k/year ops). Mina models: year 1 value = roast schedule automation + subscription batch assignment ($14.2k labour freed) + wholesale payment acceleration ($2k interest cost eliminated, 30 → 15 day pay cycle via invoice due-date tracking + payment reminders) + cafe invoice (net terms encoded, auto-calculate GST per state) = $4.5k collections uplift (5% faster payment × $90k annual wholesale = $4.5k present value) + inventory roast-date tracking (zero stale waste = $2.25k recovered) + packaging barcode + system-generated roast date (zero shipping errors = $1.8k refunds eliminated) + espresso maintenance contracts ($8k annual revenue, 8 cafes × $100/month = new revenue line) + GST auto-export per invoice (zero audit flags, $1.2k penalty avoidance + 40 hours labour = $2.2k value) = $35.15k value vs $27k cost = **$8.15k net year 1, payback 3.9 months**. Multi-roastery scale: 2 roasteries (Melbourne + Sydney), unified system (one database, roast batches tracked per roastery location, shared subscription customer pool). Year 2 expansion: 3rd roastery (Brisbane). System cost: $0 additional (multi-location architecture supports N roasteries, ops scaling only). Scale efficiencies: consolidated wholesale billing (3 roasteries × 5 cafes per city = 15 cafes, unified invoicing = time savings +$6k), subscription geographic optimization (Melbourne customers get Melbourne roasts [freshest], Sydney get Sydney = reduced shipping cost + fresher delivery = $4k margin improvement), espresso maintenance contracts across 3 cities (3 × 8 cafes × $100/month = $2.88k incremental, new roasteries grow maintenance to 12 cafes each = $8k addition) = cumulative two years: online $35.15k year 1 + $28k year 2 = $63.15k value vs $27k amortized = **$36.15k net two years, 336% ROI**, multi-roastery efficiency unlocks 704% ROI (sub-agent optimizations across cities).

Six Features Custom Roaster Software Delivers

1. Roast-Day Production Schedule — Batch Planning, Temperature Logging, Crack Point Tracking, Roast Duration, Batch Yield Calculation, Per-Location Roasting, Concurrent Batch Management

Current: roast schedule in head (or notebook), no tracking. Risk: forget which origin, roast time, target temperature. New system: roast-day dashboard. Tuesday 9:00am: Mina selects "Ethiopia Yirgacheffe, 50kg green batch, light roast target." System prompts: (1) roast drum temp setup (190–220°C), (2) target finish (first crack complete = 11 mins), (3) batch yield expected (50kg green = 35kg roasted typical). Roast starts: system timer begins (concurrent: Mina monitors aroma, colour). At 6 mins: system alerts "first crack [audible]" (optional, Mina hears anyway). At 11 mins: system alerts "target time reached, dump to cool tray." Temperature log: system receives (from drum sensor, optional wire): 6 mins = 185°C, 8 mins = 195°C, 10 mins = 205°C, 11 mins = 210°C. Cool tray: beans cooling 200°C → 80°C (2 mins). Complete: system records "Ethiopia Yirgacheffe, 50kg input, 35.2kg output (roasted 11/6/26, light roast, 11-min duration, final temp 210°C)." Batch ID: auto-generated (RoastID-20260611-ETH-001). Yield: 35.2kg (70.4% typical = note if <68% [over-roasted, energy waste], >72% [under-roasted, incomplete]). System stores: batch record. Multi-batch concurrent: Friday roast day, Mina roasts 2 batches. Batch 1: Ethiopia (9:00–9:15am). Batch 2: Colombia (9:30–9:45am, separate drum or sequential). System tracks both (separate timers, temps, yields). Batch 1 ID: RoastID-20260613-ETH-002. Batch 2 ID: RoastID-20260613-COL-001. Inventory: system links batches to inventory (35.2kg Ethiopia ready to bag, 34kg Colombia ready to bag). **Value: temperature logging ensures consistency (batch-to-batch quality control, repeatability), crack point tracking (no under/over-roasts, energy efficiency optimization), batch ID system (traceability [if customer complains = pull batch ID, review temp log, prove quality or identify error]), concurrent management (multi-batch roasting parallelized, not sequential guessing).**

2. Freshness Tracking with Roast Date Stamps — Batch-Level Inventory, Shelf-Life Countdown, Optimal Window (1–3 Weeks), Expiry Alerts, Per-Bag Barcode + Roast Date, Waste Prevention, Customer Confidence

Current: hand-stamped "11/6/26 ROAST" (typos, no tracking). Risk: stale beans, customer distrust, 5% waste = $2.25k annually. New system: roast date baked into system. Batch RoastID-20260611-ETH-001 created Tuesday 11/6. Roast date: 11/6/26 (system records). Freshness window: medium roast peaks 1–2 weeks, optimal until day 21 (week 3). System timeline: (1) fresh window starts day 0 (optimal quality), (2) peak window days 1–14 (still excellent), (3) acceptable window days 15–21 (still good, slight staling), (4) stale window day 22+ (not ideal, refund risk). System status: batch created 11/6, visible in "roasting dashboard" (green = fresh). Day 11 (5 days post-roast): still green (peak window). Day 20: system flags "yellow" (approaching expiry, 1 day left in acceptable window). Day 21: system flags "red" (expiry today, pull from shelves). System alert: 2 days before expiry (day 19), Mina receives notification "Ethiopia batch RoastID-20260611-ETH-001 expires in 2 days. Current inventory: 8 bags (500g) + 4 bags (250g) unsold. Recommended: 50% discount, move stock." Mina acts: marks 6 bags "clearance" in subscription queue (offer $2 discount to subscribers, move stock before expiry). Per-bag barcode: system generates (batch ID + bag sequence number, printed at bagging). Example: "RoastID-20260611-ETH-001-B0005" (5th bag, Ethiopia batch). Label printed on demand: barcode + readable date "ROASTED 11/6/26, BEST BY 7/7/26." Customer receives: bag scanned at cafe, barcode pulls up (roast date visible, freshness confirmed, customer sees "roasted 8 days ago = peak window" = confidence high). Waste prevention: stale batches auto-cleared before expiry (Mina notified day 19, clearance sales prevent day 21 waste). Waste rate: 0.5% (vs 5% current = $1.8k recovered). Customer confidence: every bag has roast date visible (transparency, no guessing). **Value: shelf-life countdown (zero stale sales, quality guaranteed), batch-level inventory (traceability, if batch quality issue arises = recall specific RoastID, not entire origin), per-bag barcode (cafe/customer scans, sees roast date, confidence + repeat purchase), waste prevention (clearance sales move stock before expiry, $1.8k recovered annually).**

3. Wholesale Cafe Recurring Orders — Standing Orders by Cafe, Auto-Generate Invoice Bi-Weekly, Net 15 Terms, Payment Reminders, Batch Assignment, Delivery Schedule, Margin Tracking per Cafe

Current: email "Ethiopia next Tuesday?" = manual entry each roast = 30 mins/week × 52 = 26 hours annually. New system: standing orders. Setup: Lûmé cafe (owner Marcus) initiates: "I want 3 × 500g Ethiopia medium roast, delivered 1st and 3rd Tuesday monthly, net 15 payment terms." System records: standing order ID (SO-LUME-001). Rules: (1) repeat Tuesday 1st and 3rd (auto-generate order), (2) quantity 3 × 500g, (3) roast origin Ethiopia, (4) profile light/medium/dark (medium), (5) delivery address (Lûmé warehouse), (6) invoice due 15 days post-delivery. Roast day (Tuesday 1st): Mina roasts Ethiopia. Batch created: RoastID-20260606-ETH-001 (35kg yield). System scans standing orders: "Lûmé needs Ethiopia medium roast Tuesday 1st = match RoastID-20260606-ETH-001." Batch auto-allocated: 3 × 500g assigned to SO-LUME-001. Invoice generated automatically: (1) date 6/6/26, (2) due date 6/21/26 (net 15), (3) line item "Ethiopia medium roast 500g × 3 = $54 + GST $5.40 = $59.40" (standard per-cafe pricing configured), (4) payment link embedded (online pay option), (5) sent to Marcus email immediately. Delivery: scheduled Tuesday 6/6 (courier pickup from warehouse, delivery to Lûmé Wednesday 6/7). Marcus receives: invoice + bags (roast date "6/6/26" printed). Opening balance: $59.40 due 6/21. Day 15 (6/20): system reminder email sent to Marcus "invoice due tomorrow" (no late payment). Day 16 (6/21): payment due date passes, Marcus forgets. Day 20: system sends "payment overdue 5 days, please remit $59.40." Marcus: pays online (instant). System records: payment received 6/25, balance $0. Standing order 2 (Tuesday 3rd): Mina roasts Ethiopia again (3rd Tuesday). System repeats: auto-allocate 3 × 500g to Lûmé, invoice generated, sent, net 15 due 7/5. Monthly cycle: 2 invoices, predictable revenue ($118.80/month from Lûmé alone). Multi-cafe standing orders: (1) Lûmé = Ethiopia medium × 3, (2) Splice = house blend dark × 2, (3) Black Star = single-origin rotating (Ethiopia/Colombia/Kenya), (4) Paramount = espresso blend × 4, (5) Workshop = sample pack (5 × 100g different origins). System manages all (auto-allocate batches, generate invoices, payment tracking). Payment acceleration: auto-invoicing + net 15 terms = faster payment (vs current 30–45 day email-based chaos). Result: wholesale cash flow $4.5k incremental (15-day payment cycle vs 30 = $6k average outstanding reduced to $3k = $3k freed, 0.5 month float saved = $500 interest, plus faster payment encourages repeat order likelihood +$4k estimated). Margin tracking: system calculates per-cafe (Lûmé: 3 × 500g × $18 wholesale price = $54 revenue, cost [50kg green $320 / 70kg yield ≈ $4.57 per kg = $2.29 per 500g] = $6.87 cost, margin $47.13 before labour). System shows: "Ethiopia sales $2.8k month 1, Lûmé contributing $118.80 (4.2% of Ethiopia revenue), margin $93k/month overall." Insights enable: menu optimization per cafe (which origins sell most? Which cafes prefer single-origin vs blends?), pricing strategy (high-margin origins promoted). **Value: auto-invoicing eliminates manual entry (26 hours annually freed), standing orders create recurring revenue visibility (predictable cash flow, can model 12-month wholesale), net 15 terms formalize payment (no ambiguity, payment reminders enforce faster collection = $4.5k cash flow improvement), margin per cafe (wholesale pricing strategy optimized, high-margin customers identified for upsell).**

4. Subscription Fulfillment with Batch Assignment — Customer Flavor Preferences (Stored), Roast Day Auto-Assign, Rotating Origins, Packaging + Shipping Label, Delivery Tracking, Churn Prevention

Current: 8 customers, hand-written list, manual bag assignment, 10 mins per roast × 2 roasts/week = 160 mins/week = 8.3 hours/year. Risk: Sarah sent Ethiopia instead of Colombia = refund, repeat likelihood down. New system: subscription profiles. Setup: 8 customers. Jake: "Ethiopia medium, monthly, arrive by 15th." Profile stored: (1) roast origin preference Ethiopia, (2) roast level medium, (3) bag size 250g, (4) frequency monthly, (5) delivery target 15th month. Sarah: "Colombia light, monthly, arrive by 10th." Profile: Colombia, light, 250g, monthly, 10th. Marcus: "house blend rotating, every 2 weeks, arrive by 5th." Profile: rotating (system auto-selects house blend variant month 1, different origin month 2, etc), 250g, bi-weekly, 5th. Roast day (Tuesday 11/6, first roast of month): Mina roasts Ethiopia, Colombia, house blend (3 batches). System scans subscriptions: (1) Jake = Ethiopia medium (RoastID-20260611-ETH-001 roasted, priority 1), (2) Sarah = Colombia light (not roasted yet, wait), (3) Marcus = house blend (RoastID-20260611-HB-001 roasted, priority 2). System auto-assigns: (1) Jake receives 250g Ethiopia from batch ETH-001, system generates shipping label (Jake's address, roast date printed), (2) Marcus receives 250g house blend from batch HB-001, label generated. Sarah (Colombia light): not scheduled until roast day 2 (Friday 13/6, if Colombia on agenda). System calendar: shows (1) Colombia roast planned Friday 13/6, (2) auto-assign Sarah 250g, (3) ship Friday evening. Packaging: system generates per-subscription (customer name, roast date, origin). Barcode: RoastID-20260611-ETH-001-B0012 (Jake's bag). Shipping label: printed on-demand from system (address auto-populated from subscription, carrier integrated [Australia Post + StarTrack]). Label shows: Jake's address, roast date "11/6/26," expected delivery "12/6 or 13/6" (next business day). Packing: Mina picks bag, scans barcode (confirm assignment), slips into mailer, prints label, drops at Post. Delivery tracking: system receives (carrier API feeds back to system, e.g., Post scan "item in sorting facility 12/6, delivery 13/6"). Customer email: automated "your coffee shipped 11/6, delivery expected 13/6, track here." Jake: receives bag 13/6, opens, sees roast date "11/6/26," knows freshness window (2 days old = peak), satisfaction high. Reorder: Jake logs into subscription portal (system tracks delivery + quality), one-click "reorder next month, same preferences." System records: recurring revenue $25/month Jake × 12 = $300/year locked. Churn prevention: system tracks (delivery, customer engagement [open rate on shipping email?], quality [any complaints?]). Sarah churn risk: ordered once, no reorder 60 days = automated email "Sarah, we miss you! Your favorite Colombia is roasting Friday, 15% off first reorder." Sarah clicks, reorders (re-engaged). Churn rate: 8% (vs industry 25%, retention high due to personalization + reliability). **Value: subscription batch auto-assignment eliminates manual entry (8.3 hours/year freed), shipping label system-generated (no typos, barcode confirms assignment), delivery tracking (customer confidence, expected delivery clear), reorder incentives (recurring revenue locked in via profile reminder system), churn prevention (personalized re-engagement emails = retention uplift 17% [industry 25% - your 8% = 17% point recovery = $4k incremental lifetime value across 8 customers]). **

5. Espresso Machine Maintenance Contracts — Cafe Service Schedule, Maintenance Log, Service Type Tracking (Cleaning/Repair/Calibration), Invoice per Service, Recurring Contract Revenue, SLA Enforcement

Current: Lûmé calls "grinder sticky," Mina visits Friday, spends 1 hour, no invoice, no contract = $0 revenue, $160 labour cost, zero tracking. New system: maintenance contracts. Setup: Lûmé cafe (Marcus) says "we want monthly espresso maintenance, grinder cleaning + calibration." System records: contract (1) cafe Lûmé, (2) service type monthly maintenance, (3) service list (grinder backflush, burr cleaning, group-head backflush, calibration), (4) cost $150/month, (5) preferred day first Friday month. Standing contract: RoastID-LUME-MAINT-001, starts 6/6/26. Month 1 (June, first Friday = 6/6): system reminder email to Mina "Lûmé maintenance due Friday 6/6." Mina visits Friday 9:00am (pre-scheduled). Service log system (tablet or paper, sync later): (1) arrival time 9:00am, (2) grinder backflush (clean, burrs spinning smooth), (3) group-head backflush (pressure tested, optimal), (4) burr inspection (slight wear, recommend replacement month 4), (5) calibration (espresso shot 9g input, 27ml output at 25-sec extraction, optimal), (6) completion time 10:00am (1 hour). System records: service date 6/6, duration 1 hour, service items checked, notes "burr wear noted, schedule replacement month 4." Invoice generated: line item "monthly maintenance — grinder backflush, group-head flush, burr inspection, calibration = $150 + GST $15 = $165." Due date: net 7 (payment by 6/13). Marcus pays. System records: payment received 6/12, balance $0. Month 2 (July, first Friday = 7/4): system reminder sent to Mina "Lûmé maintenance due Friday 7/4." Mina repeats (same 1-hour service). System logs: service date 7/4, notes "burr wear progressing, replacement scheduled next visit." Invoice generated: $165 due 7/11. Marcus pays. SLA tracking: contract states "service within 24 hours of request." If Marcus urgently requests service Tuesday (extra, unplanned), system triggers "urgent service request" (Mina prioritized, visits next day). Invoice: "routine monthly = $150, emergency service $75/hour." Multi-cafe contracts: (1) Lûmé = monthly $150, (2) Splice = bi-weekly $250, (3) Black Star = quarterly $300. System tracks: revenue $150 + $250 + $300 = $700/month = $8.4k/year (new revenue line, zero current). Scheduling: system calendar shows (Lûmé Friday 1st, Splice Tuesday/Friday bi-weekly, Black Star 1st Tuesday quarterly). Mina availability optimized (all service appointments back-to-back, Lûmé Friday morning + Splice afternoon Friday = multi-stop efficiency, labour 1 FTE allocable, rest of week roasting/packing). **Value: maintenance contracts formalize recurring revenue (zero current, $8.4k/year new stream), service logging enables SLA enforcement (contracts clear, disputes prevented), scheduling optimization (multi-stop route planning saves travel time), invoice automation (no forgotten billing, payment reliable), burr-wear alerts (predictive maintenance, customer satisfaction = repeat cafe orders increase 8% [better espresso quality maintained]).**

6. GST Compliance & Invoicing — Per-Invoice GST Calculation (Wholesale vs Retail), Auto-Export to MYOB/Xero, Quarterly BAS Reporting, Audit Trail, State-by-State Compliance (VIC/NSW/QLD), Direct-Trade Sourcing Cost Tracking

Current: invoices inconsistent (some GST-inclusive, some GST-exclusive = audit non-compliance). ATO audit flags 15% of invoices = $1.2k penalty. New system: GST enforcement. Cafe wholesale invoice: Lûmé order "Ethiopia 500g × 3 = $54 + GST 10% = $5.40 = $59.40 total" (system calculates, rule: "wholesale price $18 base + 10% GST = $19.80 per 500g wholesale"). Subscription retail invoice: Jake subscription "$25 (GST-inclusive, shown as base $22.73 + GST $2.27 = $25 total)." System enforces: every invoice tagged (1) transaction type (wholesale or retail), (2) GST treatment applied per type. Quarterly BAS (Business Activity Statement, due ATO): system exports (all invoices quarter, sorted by GST-inclusive vs exclusive). Example Q1 (June–August): wholesale revenue $18.4k (GST $1.84k), retail subscriptions $8.2k (GST $0.82k). BAS calculates: total GST collected $2.66k. System also tracks: input GST (green bean purchases from importer, roasting equipment, packaging). Green bean import: 50kg batch from Ethiopia importer, invoice $320 + GST $32 = $352. System records: input GST $32 (claimable). Quarterly claimable: input GST $0.8k (beans, packaging, equipment). BAS line: GST payable = collected $2.66k - claimable $0.8k = net $1.86k due to ATO by due date (e.g., 21/9 for Q3). System generates: BAS-ready export (quarterly summary, itemized transaction list, audit trail). ATO audit (annual random sample): system exports (12 months transactions, all invoices with GST calculations shown, no gaps). Audit result: zero non-compliance (vs 15% pre-system = penalty avoidance $1.2k + audit time 40 hours = $2.2k value). State compliance: Mina sells to VIC, NSW, QLD cafes. System tracks delivery state (invoice shows delivery address state). GST applies nationwide 10% (uniform), but state-by-state tracking enables: (1) land tax liability tracking (not in scope here), (2) future multi-state expansion planning (if Mina expands to SA = system tracks separately). Direct-trade sourcing: importer invoice "50kg Ethiopia beans $320, lot number ETH-2026-MAR-001." System records: cost $320 for batch (linked to RoastID-20260611-ETH-001). Per-kg cost: $320 / 50kg = $6.40/kg green. Post-roast yield: 35kg (roasted). Per-kg roasted cost: $320 / 35kg = $9.14/kg. Per-500g bag cost: $9.14 × 0.5 = $4.57. Wholesale price $18 per 500g = margin $13.43 per bag (pre-labour, pre-packaging). System calculates: annual sourcing $15.2k (50kg batches × $320 importer cost × 3 roasts/month = $14.4k estimate). Margin per origin tracked (Ethiopia = $13.43/bag, Colombia = $12.20/bag, Kenya = $14.10/bag). Insights: Kenya highest margin = prioritize in standing orders, push to low-margin cafes. **Value: GST enforcement (zero audit flags, $1.2k penalty avoidance, ATO confidence high), per-invoice calculation (consistency, no manual error), BAS auto-export (zero manual ATO data entry, 10-hour labour saved), state-by-state tracking (future compliance built in, multi-state expansion seamless), sourcing cost tracking (margin per origin visible, procurement strategy optimized, high-margin origins prioritized).**

Australian Context: Specialty Coffee Scene, Direct-Trade Ethics, GST Compliance, Equipment Regulations

**Specialty Coffee Culture (AU)** — Australia has the third-largest specialty coffee market per capita globally (after NZ and Scandinavia). Melbourne CBD = 500+ cafes within 5km (Lûmé, Splice, Black Star, Paramount, Workshop = tier-1 specialty). Roasters serve: (1) wholesale (cafes buy beans direct, 35–50% margin vs retail), (2) direct-to-consumer subscriptions (online + local pickup, 60–75% margin), (3) corporate/office subscriptions (premium positioning, recurring). Market trend: consumers demand "where are these beans from?" + roast date transparency. System enables: roast date stamping (every bag), origin tracking (linked to importer lot number), direct-trade story visible (importer name + country). **Direct-Trade Sourcing Ethics** — Unlike "fair-trade" (certification org), direct-trade = roaster buys direct from farmer co-op, pays premium ($5.50–$7/kg green vs commodity $3/kg), invests in farmer relationships. System tracks: (1) importer name (e.g., "Trade + Farmer Collective"), (2) farmer co-op region (e.g., "Yirgacheffe, Guji Zone, Ethiopia"), (3) lot number (e.g., "ETH-2026-MAR-001"), (4) farm altitude (2000–2200m = quality). Mina markets: "our Ethiopia beans: Yirgacheffe, Guji Zone, 2100m, roasted 11/6/26, direct-trade." System stores: story. Cafe (Lûmé) menu reads: "our espresso: direct-trade Ethiopia, Yirgacheffe, Guji Zone, roasted by Velocity Coffee 11/6/26." Customer confidence: origin, transparency, quality tied to roast date = premium pricing justified. System enables: story-to-table (customer sees origin info, roast date, feels part of supply chain). **GST Compliance (Already Covered)** — 10% uniform, state-agnostic within Australia. Multi-state roasters (e.g., Melbourne roasting but shipping to NSW/VIC/QLD): 10% GST applies everywhere, system simplifies (no state-based variation). **Equipment Regulations** — (1) Espresso machine maintenance = no licensing required (Mina self-serves), but system enables contract tracking + liability (if maintenance causes equipment damage, service log proves due diligence, insurance claim easier). (2) Roasting equipment = fire safety (roaster vented, no buildup risk), system tracks (roast temperature logged, >240°C alerts [fire risk], staff aware). (3) Green bean storage = food safety (no moisture = mold risk), system notes (batch stored 18°C, 50% humidity = optimal). (4) Packaging = food labeling (country of origin must be stated). System enables: automatic "Ethiopia" label, state.au compliance automatic. **Warehouse / Occupancy** — Mina's Melbourne CBD roastery = light industrial space (rent $2k/month). System doesn't track real estate, but data enables: (1) forecast roasting volume (system shows year 1 $450k revenue = 200kg roasted monthly = floor space optimized), (2) future scaling (system shows subscription + wholesale separately = if subscription grows to $200k revenue = additional packaging labour = space consideration).

Six FAQs

How does roast-date stamping on every bag prevent stale-coffee sales and build customer trust?

Current: hand-stamped "11/6/26" (typos, no tracking, customer skepticism). New system: roast date auto-generated from batch record (RoastID-20260611-ETH-001 created 11/6 = every bag from batch shows roast date 11/6, zero typos). Customer receives: 250g bag, barcode printed "ROASTED 11/6/26, BEST BY 7/7/26" (system calculated: 21-day shelf-life for medium roast). Customer scans barcode (cafe), sees roast date (2 days old = peak window = confidence high). Repeat purchase: +30% (vs no roast date = customer unsure about freshness).

How does wholesale standing-order automation eliminate manual invoicing labor and accelerate payment?

Current: email "Ethiopia next Tuesday?", manual entry to Shopify, invoice printed/emailed, payment 30–45 days late. New system: standing order SO-LUME-001 (3 × 500g Ethiopia 1st & 3rd Tuesday, net 15). Roast day 1st Tuesday: batch created, system auto-matches standing orders, invoice generated, sent to Marcus (automated). Net 15 due date encoded: payment due 15 days post-delivery. Payment reminders: day 14 (reminder email "due tomorrow"), day 16 (overdue notice). Result: payment received day 15 (vs day 45 current = 30-day acceleration = $6k cash flow freed, working capital improved). Labour: zero manual invoicing (26 hours/year freed).

How does subscription batch assignment prevent order mistakes and reduce refunds?

Current: 8 customers, hand-written list, Sarah sent Ethiopia instead of Colombia = refund + repeat likelihood down. New system: subscription profile (Sarah = "Colombia light, 250g, monthly"). Roast day Friday 13/6: Colombia roasted, batch RoastID-20260613-COL-001. System scans subscriptions, auto-assigns Sarah 250g from batch COL-001, generates barcode + shipping label (no manual picking = zero mistakes). Sarah receives: correct origin, barcode confirms assignment, satisfaction high. Refund rate: <1% (vs 2% current = $1.8k recovered annually).

How does inventory roast-date tracking prevent waste and clearance sales?

Current: 20kg batch Ethiopia roasted 11/6, no freshness tracking, 3 weeks later = stale, unsold, binned = waste 5% = $2.25k/year. New system: batch RoastID-20260611-ETH-001 created 11/6, optimal window day 1–21. Day 19 (5/7): system alert "Ethiopia batch expires in 2 days, 8 bags (500g) + 4 bags (250g) unsold. Recommendation: 50% discount, move stock." Mina marks 6 bags "clearance $9 (50% off $18)," customers notified, stock moves day 20 (before expiry). Waste: 0.5% (vs 5% = $1.8k recovered).

How does espresso maintenance contract formalization create recurring revenue?

Current: Lûmé calls, Mina visits, 1-hour labour = $160 cost, zero invoice, zero revenue. New system: contract (monthly $150 maintenance). 8 cafes × $150/month = $1.2k monthly = $14.4k/year (vs $0 current). System tracks: contract dates, service logs, invoices. Multi-cafe scheduling: Lûmé Friday morning, Splice Friday afternoon = efficient route, labour 1 FTE freed for roasting. **Revenue: +$8.4k to $14.4k annually depending on cafe count (assume 8–10 cafes at launch).**

How does GST auto-export eliminate audit flags and ATO compliance risk?

Current: invoices inconsistent (some GST-inclusive, some exclusive = 15% audit non-compliance = $1.2k penalty). New system: every invoice tagged (wholesale or retail), GST calculated per tag, quarterly BAS auto-generated. ATO audit: system exports 12-month transactions (all GST calculations shown, zero gaps, zero non-compliance). Audit result: approved. Penalty avoidance: $1.2k + audit time labour (40 hours = $1k value) = **$2.2k value, zero compliance risk.**

The Bottom Line

Specialty coffee roaster (Melbourne, 3-person, $450k/year): hand-stamped roast dates (typos, stale sales), manual cafe invoicing (30 mins/week × 52 = 26 hours/year), subscription batch assignment (8 customers, 10 mins/roast × 104 roasts/year = 17.3 hours), inventory guessing (stale waste 5% = $2.25k), packaging errors (wrong roast date shipped 2% = $1.8k), espresso maintenance zero revenue (opportunity $8k), GST audit non-compliance (15% of invoices = $1.2k penalty). Total friction: $35.45k annually (labour + waste + penalties). Custom roaster software ($25k build + $2k/year ops): solves roast-date stamping (zero typos, per-bag barcode), wholesale standing orders (auto-invoice, net 15 due dates = $4.5k payment acceleration), subscription batch assignment (system auto-assigns, zero errors = $1.8k refunds eliminated), inventory freshness tracking (zero stale waste = $2.25k recovered), espresso maintenance contracts ($8.4k/year revenue, 8 cafes × $150/month), GST auto-export (zero audit flags = $2.2k value). Payback: 3.9 months (roast schedule labour $8k + subscription batch $6.2k + wholesale invoicing $4.5k + inventory waste $2.25k + packaging errors $1.8k + espresso maintenance $8.4k + GST audit avoidance $2.2k = $33.35k value vs $27k cost = $6.35k net year 1). Multi-roastery scale: 2 roasteries (Melbourne + Sydney), system cost $0 additional, scale efficiencies (consolidated wholesale $6k, geographic subscription optimization $4k, multi-site espresso maintenance $8k) = $190k cumulative two years, 704% ROI. Start custom roaster software if: (1) hand-stamping roast dates (typos/waste risk), (2) cafe wholesale invoicing takes 5+ hours/month (manual entry pain), (3) subscription customers 5+ (batch assignment errors rise), (4) inventory stale > 3%, (5) espresso machine service requests 2+/month (untapped revenue), (6) GST invoicing inconsistent (audit risk). Reach out: book a time to discuss your roasting volume, cafe wholesale network, subscription scale, and espresso maintenance rollout, or check platform pricing for a custom build quote.

Let us make some quick suggestions?
Please provide your full name.
Please provide your phone number.
Please provide a valid phone number.
Please provide your email address.
Please provide a valid email address.
Please provide your brand name or website.
Please provide your brand name or website.