Bowmark AIdocs

Bellwether Coffee

Bellwether Coffee's own ROI calculator (bellwethercoffee.com/roi-calculator) — real monthly/annual savings, retail-bag revenue and profit, payback period,…

Bellwether Coffee's own ROI calculator (bellwethercoffee.com/roi-calculator) — real monthly/annual savings, retail-bag revenue and profit, payback period, and first-year ROI for the Shop Roaster, computed exactly as the site's own client-side formula computes it, no estimate.

Domain: bellwethercoffee.com

Also known as: Bellwether Coffee, Bellwether, bellwethercoffee.com, Bellwether Shop Roaster

Call it directly

bowmark.providers.bellwethercoffee.getCalculatorDefaults(): Promise<BellwethercoffeeCalculatorDefaults>
bowmark.providers.bellwethercoffee.computeRoiEstimate(input: BellwethercoffeeRoiInput): Promise<BellwethercoffeeRoiEstimate>

Functions

FunctionWhat it does
getCalculatorDefaultsReturns the ROI calculator's own currencies, roaster types, per-currency default input values, slider bounds (min/max/step), per-currency roaster list prices, and the site's own cost-basis…
computeRoiEstimateRuns Bellwether's own ROI calculator formula — currency, roaster type, weekly roasted-coffee usage, price paid per lb, and weekly retail-bag sales in; real monthly/annual savings,…

Types

// Bellwether Coffee's OWN shapes — not a capability contract.

type BellwethercoffeeCurrency = "USD" | "CAD" | "GBP" | "EUR";
type BellwethercoffeeRoasterType = "ShopRoaster" | "ContinuousRoasting";

interface BellwethercoffeeSliderBounds { min: number; max: number; step: number }

interface BellwethercoffeeCalculatorDefaults {
  currencies: BellwethercoffeeCurrency[];
  roasterTypes: BellwethercoffeeRoasterType[];
  defaultInputsByCurrency: Record<BellwethercoffeeCurrency, { poundsWeekly: number; coffeeCost: number; retailBags: number }>;
  sliderBounds: { poundsWeekly: BellwethercoffeeSliderBounds; coffeeCost: BellwethercoffeeSliderBounds; retailBags: BellwethercoffeeSliderBounds };
  roasterPricesByCurrency: Record<BellwethercoffeeCurrency, Record<BellwethercoffeeRoasterType, number>>;
  disclaimer: string;
  roiCalculatorUrl: string;
  requestDemoUrl: string;
}

interface BellwethercoffeeRoiInput {
  currency: BellwethercoffeeCurrency;
  roasterType: BellwethercoffeeRoasterType;
  poundsWeekly: number;   // weekly roasted-coffee usage (lb, or kg for non-USD)
  coffeeCost: number;     // what the caller currently pays per lb/kg, in currency
  retailBags: number;     // retail bags of roasted coffee sellable per week
}

interface BellwethercoffeeRoiEstimate {
  currency: BellwethercoffeeCurrency;
  roasterType: BellwethercoffeeRoasterType;
  investmentAmount: number; investmentAmountFormatted: string;
  savingsPerUnit: number;
  monthlySavings: number; monthlySavingsFormatted: string;
  annualSavings: number; annualSavingsFormatted: string;
  monthlySalesRevenue: number; monthlySalesRevenueFormatted: string;
  annualSalesRevenue: number; annualSalesRevenueFormatted: string;
  annualRetailProfit: number; annualRetailProfitFormatted: string;
  totalROI: number; totalROIFormatted: string;   // first-year ROI: annualSavings + annualRetailProfit
  paybackMonths: number;   // 999 sentinel when there is no payback at these inputs
  savingsPerCup: number;
  co2SavingsPerYear: number;
  roiCalculatorUrl: string;
  requestDemoUrl: string;  // the site's own next step — a separate lead form, not computed here
}

Examples

// "I use 130 lbs/week of roasted coffee at $9.50/lb and could sell 45 retail
// bags a week — would the Shop Roaster pay for itself?"
const defaults = await bowmark.providers.bellwethercoffee.getCalculatorDefaults();
const estimate = await bowmark.providers.bellwethercoffee.computeRoiEstimate({
  currency: "USD",
  roasterType: "ShopRoaster",
  poundsWeekly: 130,
  coffeeCost: 9.5,
  retailBags: 45,
});
return {
  monthlySavings: estimate.monthlySavingsFormatted,
  annualTotalROI: estimate.totalROIFormatted,
  paybackMonths: estimate.paybackMonths,
  talkToSales: estimate.requestDemoUrl,
};