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
| Function | What it does |
|---|---|
getCalculatorDefaults | Returns 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… |
computeRoiEstimate | Runs 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,
};