{
  "source": "RevenueLab — Rex's Toolbox",
  "url": "https://www.revenuelab.fyi/calculators/toolbox",
  "license": "CC-BY-4.0",
  "attribution": "Cite as \"RevenueLab — {title} (https://www.revenuelab.fyi/toolbox/{slug})\"",
  "generated": "2026-08-15",
  "count": 1685,
  "categories": [
    {
      "id": "financial",
      "label": "Financial",
      "url": "https://www.revenuelab.fyi/calculators/toolbox/financial",
      "description": "Mortgage, loan, investment, amortization, and money math.",
      "count": 1161
    },
    {
      "id": "fitness-health",
      "label": "Fitness & Health",
      "url": "https://www.revenuelab.fyi/calculators/toolbox/fitness-health",
      "description": "BMI, calorie, TDEE, BMR, and body-composition tools.",
      "count": 69
    },
    {
      "id": "math",
      "label": "Math",
      "url": "https://www.revenuelab.fyi/calculators/toolbox/math",
      "description": "Percentages, fractions, random numbers, and quick math.",
      "count": 102
    },
    {
      "id": "other",
      "label": "Other",
      "url": "https://www.revenuelab.fyi/calculators/toolbox/other",
      "description": "Time, dates, GPA, tips, concrete — the everyday utilities.",
      "count": 353
    }
  ],
  "tools": [
    {
      "slug": "effective-labor-rate",
      "url": "https://www.revenuelab.fyi/toolbox/effective-labor-rate",
      "title": "Effective Labor Rate Calculator",
      "category": "financial",
      "summary": "What you actually collect per billed labor hour, not your posted door rate.",
      "formula": "ELR = Total Labor Revenue ÷ Total Billed Hours. Labor GP% = (ELR − Loaded Tech Cost/hr) ÷ ELR. Gap% = (Door Rate − ELR) ÷ Door Rate.",
      "inputs": [
        {
          "id": "laborRevenue",
          "label": "Monthly labor revenue",
          "kind": "number"
        },
        {
          "id": "billedHours",
          "label": "Total hours billed to customers",
          "kind": "number"
        },
        {
          "id": "doorRate",
          "label": "Posted door rate",
          "kind": "number"
        },
        {
          "id": "loadedCost",
          "label": "Fully-loaded tech cost per hour",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "elr",
          "label": "Effective labor rate"
        },
        {
          "id": "gapPct",
          "label": "Gap vs door rate"
        },
        {
          "id": "gpPct",
          "label": "Labor gross margin"
        },
        {
          "id": "monthlyLoss",
          "label": "Revenue left on table per month"
        }
      ]
    },
    {
      "slug": "technician-efficiency-proficiency",
      "url": "https://www.revenuelab.fyi/toolbox/technician-efficiency-proficiency",
      "title": "Technician Efficiency & Proficiency Calculator",
      "category": "financial",
      "summary": "Split flat-rate performance into the two numbers that actually explain it.",
      "formula": "Efficiency = Flag Hours ÷ Clocked Hours. Proficiency = Flag Hours ÷ Available Paid Hours. Utilization = Clocked Hours ÷ Available Paid Hours.",
      "inputs": [
        {
          "id": "flagHours",
          "label": "Flat-rate (flag) hours produced",
          "kind": "number"
        },
        {
          "id": "clockedHours",
          "label": "Hours clocked in on jobs",
          "kind": "number"
        },
        {
          "id": "availableHours",
          "label": "Total paid hours available",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "efficiency",
          "label": "Efficiency"
        },
        {
          "id": "proficiency",
          "label": "Proficiency"
        },
        {
          "id": "utilization",
          "label": "Utilization"
        },
        {
          "id": "gapHours",
          "label": "Idle/non-billed paid hours"
        }
      ]
    },
    {
      "slug": "parts-gross-profit-matrix",
      "url": "https://www.revenuelab.fyi/toolbox/parts-gross-profit-matrix",
      "title": "Parts Gross Profit Matrix Calculator",
      "category": "financial",
      "summary": "Find the markup multiplier that hits your target parts margin at any cost tier.",
      "formula": "Sell Price = Cost × Multiplier (multiplier varies by cost tier). GP$ = Sell − Cost. GP% = GP$ ÷ Sell Price.",
      "inputs": [
        {
          "id": "cost",
          "label": "Part cost",
          "kind": "number"
        },
        {
          "id": "tier",
          "label": "Cost tier multiplier",
          "kind": "select"
        },
        {
          "id": "coreCost",
          "label": "Core charge (if any)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "sell",
          "label": "Sell price to customer"
        },
        {
          "id": "gpDollar",
          "label": "Gross profit dollars"
        },
        {
          "id": "gpPct",
          "label": "Gross profit percent"
        },
        {
          "id": "markupPct",
          "label": "Markup percent"
        }
      ]
    },
    {
      "slug": "bay-utilization",
      "url": "https://www.revenuelab.fyi/toolbox/bay-utilization",
      "title": "Bay Utilization Calculator",
      "category": "financial",
      "summary": "See how much revenue capacity your bays actually produce versus their ceiling.",
      "formula": "Capacity Hours = Bays × Hours Open per Day × Days Open. Utilization% = Billed Hours ÷ Capacity Hours. Idle Revenue = Idle Hours × Effective Labor Rate.",
      "inputs": [
        {
          "id": "bays",
          "label": "Number of service bays",
          "kind": "number"
        },
        {
          "id": "hoursDay",
          "label": "Hours open per day",
          "kind": "number"
        },
        {
          "id": "daysOpen",
          "label": "Days open per month",
          "kind": "number"
        },
        {
          "id": "billedHours",
          "label": "Total billed hours per month",
          "kind": "number"
        },
        {
          "id": "elr",
          "label": "Effective labor rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "utilPct",
          "label": "Bay utilization"
        },
        {
          "id": "capacity",
          "label": "Total bay-hour capacity"
        },
        {
          "id": "idleHours",
          "label": "Idle bay-hours per month"
        },
        {
          "id": "idleRevenue",
          "label": "Unrealized labor revenue per month"
        }
      ]
    },
    {
      "slug": "car-count-aro",
      "url": "https://www.revenuelab.fyi/toolbox/car-count-aro",
      "title": "Car Count vs. Average Repair Order Calculator",
      "category": "financial",
      "summary": "See which lever — more cars or a bigger average ticket — actually hits your revenue goal.",
      "formula": "Revenue = Car Count × ARO. Cars Needed (at current ARO) = Goal ÷ ARO. ARO Needed (at current cars) = Goal ÷ Cars.",
      "inputs": [
        {
          "id": "cars",
          "label": "Current monthly car count",
          "kind": "number"
        },
        {
          "id": "aro",
          "label": "Current average repair order",
          "kind": "number"
        },
        {
          "id": "goal",
          "label": "Monthly revenue goal",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "current",
          "label": "Current monthly revenue"
        },
        {
          "id": "gap",
          "label": "Gap to goal"
        },
        {
          "id": "carsAdded",
          "label": "Extra cars needed (ARO held flat)"
        },
        {
          "id": "aroLift",
          "label": "ARO increase needed (cars held flat)"
        }
      ]
    },
    {
      "slug": "shop-supplies-recovery",
      "url": "https://www.revenuelab.fyi/toolbox/shop-supplies-recovery",
      "title": "Shop Supplies Recovery Calculator",
      "category": "financial",
      "summary": "See if your shop supplies fee actually covers what consumables really cost.",
      "formula": "Recovery% = Total Supplies Fee Collected ÷ Total Actual Consumable Cost. Fee per RO Needed = Actual Consumable Cost ÷ RO Count.",
      "inputs": [
        {
          "id": "monthlyConsumableCost",
          "label": "Actual monthly consumable spend",
          "kind": "number"
        },
        {
          "id": "roCount",
          "label": "Repair orders per month",
          "kind": "number"
        },
        {
          "id": "feePerRO",
          "label": "Current average shop supplies fee per RO",
          "kind": "number"
        },
        {
          "id": "capPct",
          "label": "State cap on shop fee as % of labor (0 = none)",
          "kind": "number"
        },
        {
          "id": "avgLaborPerRO",
          "label": "Average labor charge per RO",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "recoveryPct",
          "label": "Current recovery rate"
        },
        {
          "id": "feeNeeded",
          "label": "Fee per RO to fully recover cost"
        },
        {
          "id": "capDollarPerRO",
          "label": "Max fee allowed under state cap"
        },
        {
          "id": "monthlyShortfall",
          "label": "Monthly shortfall at current fee"
        }
      ]
    },
    {
      "slug": "courtesy-vehicle-cost",
      "url": "https://www.revenuelab.fyi/toolbox/courtesy-vehicle-cost",
      "title": "Courtesy Vehicle Cost Calculator",
      "category": "financial",
      "summary": "The true monthly cost per loaner car, and what it's really doing to your margin.",
      "formula": "Monthly Fixed Cost = Depreciation + Insurance + Registration ÷ 12. Cost per Use = (Monthly Fixed ÷ Uses per Month) + Variable Cost per Use + (Shuttle Minutes ÷ 60 × Labor Rate).",
      "inputs": [
        {
          "id": "vehicleValue",
          "label": "Loaner vehicle value",
          "kind": "number"
        },
        {
          "id": "usefulYears",
          "label": "Useful life",
          "kind": "number"
        },
        {
          "id": "insuranceYear",
          "label": "Insurance per year",
          "kind": "number"
        },
        {
          "id": "usesMonth",
          "label": "Loaner uses per month",
          "kind": "number"
        },
        {
          "id": "variablePerUse",
          "label": "Fuel, cleaning, wear per use",
          "kind": "number"
        },
        {
          "id": "shuttleMin",
          "label": "Staff shuttle/prep minutes per use",
          "kind": "number"
        },
        {
          "id": "laborRate",
          "label": "Loaded staff labor rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerUse",
          "label": "True cost per loaner use"
        },
        {
          "id": "fixedMonthly",
          "label": "Monthly fixed cost (dep + insurance)"
        },
        {
          "id": "shuttleCost",
          "label": "Shuttle labor cost per use"
        },
        {
          "id": "monthlyTotal",
          "label": "Total monthly loaner cost"
        }
      ]
    },
    {
      "slug": "alignment-rack-payback",
      "url": "https://www.revenuelab.fyi/toolbox/alignment-rack-payback",
      "title": "Alignment Rack Payback Calculator",
      "category": "financial",
      "summary": "How many alignments it takes to pay off a new rack, and what it does to monthly profit after.",
      "formula": "Payback (months) = Equipment Cost ÷ (Monthly Alignments × Margin per Alignment). Monthly Profit = (Monthly Alignments × Margin) − Financing Payment.",
      "inputs": [
        {
          "id": "equipCost",
          "label": "All-in equipment cost",
          "kind": "number"
        },
        {
          "id": "marginPerAlignment",
          "label": "Gross margin per alignment",
          "kind": "number"
        },
        {
          "id": "monthlyAlignments",
          "label": "Expected alignments per month",
          "kind": "number"
        },
        {
          "id": "financeMonthly",
          "label": "Monthly loan/lease payment (0 if cash)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paybackMonths",
          "label": "Payback period (months)"
        },
        {
          "id": "monthlyGross",
          "label": "Monthly gross profit from alignments"
        },
        {
          "id": "netMonthly",
          "label": "Monthly profit after financing"
        },
        {
          "id": "breakevenVolume",
          "label": "Breakeven alignments/month"
        }
      ]
    },
    {
      "slug": "detailing-package-margin",
      "url": "https://www.revenuelab.fyi/toolbox/detailing-package-margin",
      "title": "Detailing Package Margin Calculator",
      "category": "financial",
      "summary": "True profit per package after product cost, labor time, and equipment wear.",
      "formula": "Margin$ = Price − Product Cost − (Labor Hours × Loaded Rate) − Overhead. Margin per Hour = Margin$ ÷ Labor Hours.",
      "inputs": [
        {
          "id": "price",
          "label": "Package price",
          "kind": "number"
        },
        {
          "id": "productCost",
          "label": "Product/consumables cost",
          "kind": "number"
        },
        {
          "id": "laborHours",
          "label": "Labor hours to complete",
          "kind": "number"
        },
        {
          "id": "loadedRate",
          "label": "Loaded detailer pay rate",
          "kind": "number"
        },
        {
          "id": "overhead",
          "label": "Bay/equipment overhead allocation",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "marginPerHour",
          "label": "Margin per labor hour"
        },
        {
          "id": "margin",
          "label": "Total dollar margin"
        },
        {
          "id": "marginPct",
          "label": "Margin percent"
        },
        {
          "id": "laborCost",
          "label": "Labor cost for package"
        }
      ]
    },
    {
      "slug": "tire-shop-margin-per-unit",
      "url": "https://www.revenuelab.fyi/toolbox/tire-shop-margin-per-unit",
      "title": "Tire Shop Margin Per Unit Calculator",
      "category": "financial",
      "summary": "Real profit per tire after cost, mount/balance labor, disposal fees, and warranty reserve.",
      "formula": "Margin per Tire = Sell Price − Tire Cost − Disposal Cost − Warranty Reserve + Mount/Balance Labor Margin. Set Margin = Margin per Tire × 4.",
      "inputs": [
        {
          "id": "sellPrice",
          "label": "Sell price per tire",
          "kind": "number"
        },
        {
          "id": "tireCost",
          "label": "Tire cost from vendor",
          "kind": "number"
        },
        {
          "id": "mountBalanceFee",
          "label": "Mount/balance fee per tire",
          "kind": "number"
        },
        {
          "id": "mbLaborCost",
          "label": "Mount/balance labor cost per tire",
          "kind": "number"
        },
        {
          "id": "disposalCost",
          "label": "Disposal fee cost (pass-through)",
          "kind": "number"
        },
        {
          "id": "warrantyReserve",
          "label": "Warranty/road hazard reserve per tire",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalPerTire",
          "label": "True margin per tire"
        },
        {
          "id": "setMargin",
          "label": "Margin per set of 4"
        },
        {
          "id": "gpPct",
          "label": "Tire-only gross margin %"
        },
        {
          "id": "mbMargin",
          "label": "Mount/balance net margin per tire"
        }
      ]
    },
    {
      "slug": "body-shop-cycle-time",
      "url": "https://www.revenuelab.fyi/toolbox/body-shop-cycle-time",
      "title": "Body Shop Cycle Time Calculator",
      "category": "financial",
      "summary": "Turn key-to-key days into the revenue-per-day-in-shop number that drives throughput.",
      "formula": "Cycle Time (days) = Estimated Repair Hours ÷ (Touch-Time Ratio × Hours Worked per Day). Revenue per In-Shop Day = RO Total ÷ Cycle Time Days.",
      "inputs": [
        {
          "id": "repairHours",
          "label": "Estimated repair hours",
          "kind": "number"
        },
        {
          "id": "touchTimeRatio",
          "label": "Touch-time ratio (actual work vs elapsed)",
          "kind": "number"
        },
        {
          "id": "hoursPerDay",
          "label": "Shop-available hours per day",
          "kind": "number"
        },
        {
          "id": "roTotal",
          "label": "Total repair order value",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cycleDays",
          "label": "Projected key-to-key cycle time"
        },
        {
          "id": "revPerDay",
          "label": "Revenue per in-shop day"
        },
        {
          "id": "idleDays",
          "label": "Non-productive days in cycle"
        }
      ]
    },
    {
      "slug": "diagnostic-fee-recapture",
      "url": "https://www.revenuelab.fyi/toolbox/diagnostic-fee-recapture",
      "title": "Diagnostic Fee Recapture Calculator",
      "category": "financial",
      "summary": "How much of your posted diagnostic fee you're actually collecting after waivers.",
      "formula": "Recapture% = (1 − Waive Rate) × 100. Monthly Diagnostic Revenue = Diag Tickets × Fee × (1 − Waive Rate). Uncollected = Diag Tickets × Fee × Waive Rate.",
      "inputs": [
        {
          "id": "diagTickets",
          "label": "Diagnostic tickets per month",
          "kind": "number"
        },
        {
          "id": "fee",
          "label": "Posted diagnostic fee",
          "kind": "number"
        },
        {
          "id": "waiveRate",
          "label": "Percent of fees waived on approval",
          "kind": "number"
        },
        {
          "id": "diagLaborCost",
          "label": "Loaded tech labor cost per diagnostic",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "recapturePct",
          "label": "Diagnostic fee recapture rate"
        },
        {
          "id": "collected",
          "label": "Monthly diagnostic revenue collected"
        },
        {
          "id": "uncollected",
          "label": "Monthly revenue waived"
        },
        {
          "id": "netAfterLabor",
          "label": "Net after tech diagnostic labor cost"
        }
      ]
    },
    {
      "slug": "warranty-comeback-cost",
      "url": "https://www.revenuelab.fyi/toolbox/warranty-comeback-cost",
      "title": "Warranty Comeback Cost Calculator",
      "category": "financial",
      "summary": "The real cost of redoing a job free, including the bay time it displaces.",
      "formula": "Comeback Cost = Comp'd Parts + Comp'd Labor (at retail) + (Bay Hours Consumed × Effective Labor Rate as Opportunity Cost).",
      "inputs": [
        {
          "id": "compParts",
          "label": "Comp'd parts cost (retail value)",
          "kind": "number"
        },
        {
          "id": "compLaborHours",
          "label": "Comp'd labor hours",
          "kind": "number"
        },
        {
          "id": "elr",
          "label": "Effective labor rate",
          "kind": "number"
        },
        {
          "id": "extraBayHours",
          "label": "Additional bay hours consumed (diagnosis, redo)",
          "kind": "number"
        },
        {
          "id": "comebacksMonth",
          "label": "Comebacks per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perIncident",
          "label": "Cost per comeback incident"
        },
        {
          "id": "monthlyCost",
          "label": "Total monthly comeback cost"
        },
        {
          "id": "annualCost",
          "label": "Projected annual comeback cost"
        },
        {
          "id": "compLabor",
          "label": "Comp'd labor value"
        }
      ]
    },
    {
      "slug": "lift-capacity-payback",
      "url": "https://www.revenuelab.fyi/toolbox/lift-capacity-payback",
      "title": "Lift Capacity Payback Calculator",
      "category": "financial",
      "summary": "How fast a new lift pays for itself based on the extra bay-hours it unlocks.",
      "formula": "Payback (months) = Installed Cost ÷ (Incremental Billable Hours per Month × ELR × GP%). Min Hours Needed = Installed Cost ÷ (Target Months × ELR × GP%).",
      "inputs": [
        {
          "id": "installedCost",
          "label": "All-in installed lift cost",
          "kind": "number"
        },
        {
          "id": "incrementalHours",
          "label": "Incremental billable hours enabled per month",
          "kind": "number"
        },
        {
          "id": "elr",
          "label": "Effective labor rate",
          "kind": "number"
        },
        {
          "id": "laborGP",
          "label": "Labor gross margin",
          "kind": "number"
        },
        {
          "id": "targetMonths",
          "label": "Target payback window",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paybackMonths",
          "label": "Payback period (months)"
        },
        {
          "id": "monthlyProfit",
          "label": "Monthly profit contribution"
        },
        {
          "id": "minHoursNeeded",
          "label": "Min hours/month for target payback"
        }
      ]
    },
    {
      "slug": "mobile-mechanic-route-economics",
      "url": "https://www.revenuelab.fyi/toolbox/mobile-mechanic-route-economics",
      "title": "Mobile Mechanic Route Economics Calculator",
      "category": "financial",
      "summary": "See if your drive time and vehicle cost are quietly eating your day's labor revenue.",
      "formula": "Billable Hours = Job Hours; Drive Hours = Total Drive Time. Effective Hourly = (Labor Revenue − Vehicle Cost) ÷ (Job Hours + Drive Hours).",
      "inputs": [
        {
          "id": "jobsDay",
          "label": "Jobs scheduled per day",
          "kind": "number"
        },
        {
          "id": "avgJobHours",
          "label": "Average job length",
          "kind": "number"
        },
        {
          "id": "laborRate",
          "label": "Labor rate charged",
          "kind": "number"
        },
        {
          "id": "avgDriveMin",
          "label": "Average drive time between jobs",
          "kind": "number"
        },
        {
          "id": "milesPerLeg",
          "label": "Average miles per drive leg",
          "kind": "number"
        },
        {
          "id": "costPerMile",
          "label": "Vehicle cost per mile",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "effectiveHourly",
          "label": "Effective hourly (after drive + vehicle cost)"
        },
        {
          "id": "driveShare",
          "label": "Share of day spent driving"
        },
        {
          "id": "vehicleCost",
          "label": "Daily vehicle operating cost"
        },
        {
          "id": "driveHours",
          "label": "Total drive hours today"
        },
        {
          "id": "netRevenue",
          "label": "Net revenue after vehicle cost"
        }
      ]
    },
    {
      "slug": "flat-rate-pay-plan",
      "url": "https://www.revenuelab.fyi/toolbox/flat-rate-pay-plan",
      "title": "Flat-Rate Technician Pay Plan Calculator",
      "category": "financial",
      "summary": "Model tech take-home and shop labor cost together before setting a flag rate.",
      "formula": "Weekly Pay = Flag Hours × Flag Rate. Labor Revenue = Flag Hours × ELR. Labor GP% = (Labor Revenue − Loaded Pay Cost) ÷ Labor Revenue.",
      "inputs": [
        {
          "id": "flagHoursWeek",
          "label": "Flag hours produced per week",
          "kind": "number"
        },
        {
          "id": "flagRate",
          "label": "Proposed flag rate",
          "kind": "number"
        },
        {
          "id": "elr",
          "label": "Shop effective labor rate",
          "kind": "number"
        },
        {
          "id": "burdenPct",
          "label": "Payroll tax + benefits load",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "weeklyPay",
          "label": "Tech weekly gross pay"
        },
        {
          "id": "annualPay",
          "label": "Projected annual pay"
        },
        {
          "id": "loadedWeeklyPay",
          "label": "Loaded weekly cost to shop"
        },
        {
          "id": "laborGP",
          "label": "Resulting labor gross margin"
        }
      ]
    },
    {
      "slug": "oil-change-loss-leader",
      "url": "https://www.revenuelab.fyi/toolbox/oil-change-loss-leader",
      "title": "Oil Change Loss Leader Calculator",
      "category": "financial",
      "summary": "See whether your discounted oil change actually pays off through upsell attach rate.",
      "formula": "Blended Profit = Oil Change Margin + (Attach Rate × Avg Attached Service Margin). Breakeven Attach Rate = −Oil Change Margin ÷ Avg Attached Margin.",
      "inputs": [
        {
          "id": "ocPrice",
          "label": "Oil change price",
          "kind": "number"
        },
        {
          "id": "ocCost",
          "label": "Oil change full cost (oil, filter, labor)",
          "kind": "number"
        },
        {
          "id": "attachRate",
          "label": "Attach rate for additional services",
          "kind": "number"
        },
        {
          "id": "avgAttachMargin",
          "label": "Average margin per attached service",
          "kind": "number"
        },
        {
          "id": "visitsMonth",
          "label": "Oil change visits per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "blendedProfit",
          "label": "Blended profit per visit"
        },
        {
          "id": "ocMargin",
          "label": "Oil change margin alone"
        },
        {
          "id": "breakevenAttach",
          "label": "Breakeven attach rate needed"
        },
        {
          "id": "monthlyProfit",
          "label": "Monthly profit from oil change program"
        }
      ]
    },
    {
      "slug": "shop-breakeven-ro-count",
      "url": "https://www.revenuelab.fyi/toolbox/shop-breakeven-ro-count",
      "title": "Shop Breakeven RO Count Calculator",
      "category": "financial",
      "summary": "How many repair orders per month you need just to cover fixed overhead.",
      "formula": "Breakeven RO Count = Monthly Fixed Overhead ÷ Gross Profit per RO. Profit ROs = Actual RO Count − Breakeven RO Count. Monthly Profit = Profit ROs × GP per RO.",
      "inputs": [
        {
          "id": "fixedOverhead",
          "label": "Monthly fixed overhead",
          "kind": "number"
        },
        {
          "id": "avgGPPerRO",
          "label": "Average gross profit per RO",
          "kind": "number"
        },
        {
          "id": "actualROs",
          "label": "Actual repair orders this month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenROs",
          "label": "Breakeven RO count per month"
        },
        {
          "id": "profitROs",
          "label": "ROs above breakeven"
        },
        {
          "id": "monthlyProfit",
          "label": "Projected monthly profit"
        },
        {
          "id": "marginOfSafety",
          "label": "Margin of safety"
        }
      ]
    },
    {
      "slug": "sublet-markup-margin",
      "url": "https://www.revenuelab.fyi/toolbox/sublet-markup-margin",
      "title": "Sublet Repair Markup Calculator",
      "category": "financial",
      "summary": "Price outsourced work (glass, upholstery, machining) to protect margin without losing the job.",
      "formula": "Sell Price = Vendor Cost × (1 + Markup%). Margin$ = Sell − Vendor Cost. Margin% = Margin$ ÷ Sell Price.",
      "inputs": [
        {
          "id": "vendorCost",
          "label": "Vendor invoice cost",
          "kind": "number"
        },
        {
          "id": "markupPct",
          "label": "Markup percent applied",
          "kind": "number"
        },
        {
          "id": "coordinationHours",
          "label": "Staff coordination time",
          "kind": "number"
        },
        {
          "id": "laborRate",
          "label": "Loaded staff labor rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "sell",
          "label": "Sell price to customer"
        },
        {
          "id": "marginDollar",
          "label": "Gross margin dollars"
        },
        {
          "id": "marginPct",
          "label": "Gross margin percent"
        },
        {
          "id": "netMargin",
          "label": "Net margin after coordination time"
        }
      ]
    },
    {
      "slug": "tech-hire-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/tech-hire-breakeven",
      "title": "Technician Hire Breakeven Calculator",
      "category": "financial",
      "summary": "How many billable hours a new tech must produce to justify their total cost.",
      "formula": "Breakeven Hours = Loaded Monthly Cost ÷ (ELR × Labor GP%). Compare to Realistic Monthly Hours by experience tier.",
      "inputs": [
        {
          "id": "basePay",
          "label": "Monthly base pay or guarantee",
          "kind": "number"
        },
        {
          "id": "burdenPct",
          "label": "Payroll tax + benefits load",
          "kind": "number"
        },
        {
          "id": "toolsAllowance",
          "label": "Monthly tools/uniform/training allocation",
          "kind": "number"
        },
        {
          "id": "elr",
          "label": "Shop effective labor rate",
          "kind": "number"
        },
        {
          "id": "laborGP",
          "label": "Labor gross margin (excl. this hire's own pay)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenHours",
          "label": "Breakeven billable hours/month"
        },
        {
          "id": "breakevenWeekly",
          "label": "Breakeven billable hours/week"
        },
        {
          "id": "loadedCost",
          "label": "Total loaded monthly cost"
        },
        {
          "id": "revenueNeeded",
          "label": "Labor revenue needed to cover cost"
        }
      ]
    },
    {
      "slug": "detailing-mobile-vs-fixed",
      "url": "https://www.revenuelab.fyi/toolbox/detailing-mobile-vs-fixed",
      "title": "Mobile vs. Fixed-Location Detailing Cost Calculator",
      "category": "financial",
      "summary": "Compare true per-job economics of a mobile van versus a fixed bay detailing setup.",
      "formula": "Fixed Net = Price − Product Cost − Labor − (Daily Rent+Utilities ÷ Jobs per Day). Mobile Net = Price − Product Cost − Labor − Drive/Vehicle Cost − Water/Power Cost.",
      "inputs": [
        {
          "id": "price",
          "label": "Job price",
          "kind": "number"
        },
        {
          "id": "productLabor",
          "label": "Product + labor cost per job",
          "kind": "number"
        },
        {
          "id": "fixedDailyOverhead",
          "label": "Fixed-location daily rent+utilities",
          "kind": "number"
        },
        {
          "id": "fixedJobsDay",
          "label": "Fixed-location jobs per day",
          "kind": "number"
        },
        {
          "id": "mobileDriveCost",
          "label": "Mobile drive/vehicle cost per job",
          "kind": "number"
        },
        {
          "id": "mobileWaterPower",
          "label": "Mobile water/power/generator cost per job",
          "kind": "number"
        },
        {
          "id": "mobileJobsDay",
          "label": "Mobile jobs per day",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "fixedDailyProfit",
          "label": "Fixed-location daily profit"
        },
        {
          "id": "mobileDailyProfit",
          "label": "Mobile daily profit"
        },
        {
          "id": "fixedNet",
          "label": "Fixed-location profit per job"
        },
        {
          "id": "mobileNet",
          "label": "Mobile profit per job"
        }
      ]
    },
    {
      "slug": "fleet-account-margin",
      "url": "https://www.revenuelab.fyi/toolbox/fleet-account-margin",
      "title": "Fleet Account Margin Calculator",
      "category": "financial",
      "summary": "See if a discounted fleet contract still clears your minimum margin at volume.",
      "formula": "Fleet GP% = (Fleet Labor Rate − Loaded Cost) ÷ Fleet Labor Rate. Volume Needed to Match Retail GP$ = Retail GP$ per Hour × Retail Hours ÷ Fleet GP$ per Hour.",
      "inputs": [
        {
          "id": "retailRate",
          "label": "Standard retail labor rate",
          "kind": "number"
        },
        {
          "id": "fleetRate",
          "label": "Proposed fleet labor rate",
          "kind": "number"
        },
        {
          "id": "loadedCost",
          "label": "Loaded tech cost per hour",
          "kind": "number"
        },
        {
          "id": "retailHours",
          "label": "Hours currently sold at retail (displaced)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "fleetGPPct",
          "label": "Fleet labor gross margin"
        },
        {
          "id": "retailGPPct",
          "label": "Retail labor gross margin"
        },
        {
          "id": "gapPct",
          "label": "Margin percentage point gap"
        },
        {
          "id": "volumeNeeded",
          "label": "Fleet hours to match retail GP$"
        }
      ]
    },
    {
      "slug": "warranty-parts-return-recovery",
      "url": "https://www.revenuelab.fyi/toolbox/warranty-parts-return-recovery",
      "title": "Warranty Parts Return Recovery Calculator",
      "category": "financial",
      "summary": "Track how much you're recovering from defective parts returns versus eating the cost.",
      "formula": "Recovery Rate = Credits Received ÷ Credits Eligible. Monthly Leak = Credits Eligible − Credits Received.",
      "inputs": [
        {
          "id": "eligibleValue",
          "label": "Monthly value of warranty-eligible returns",
          "kind": "number"
        },
        {
          "id": "creditsReceived",
          "label": "Monthly credits actually received",
          "kind": "number"
        },
        {
          "id": "avgDaysToProcess",
          "label": "Average days to process a return",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "recoveryRate",
          "label": "Warranty return recovery rate"
        },
        {
          "id": "monthlyLeak",
          "label": "Monthly unrecovered credit"
        },
        {
          "id": "annualLeak",
          "label": "Annualized unrecovered credit"
        },
        {
          "id": "days",
          "label": "Avg days to process a return"
        }
      ]
    },
    {
      "slug": "scan-tool-subscription-roi",
      "url": "https://www.revenuelab.fyi/toolbox/scan-tool-subscription-roi",
      "title": "Diagnostic Scan Tool Subscription ROI Calculator",
      "category": "financial",
      "summary": "Decide whether OEM software subscriptions and scan tool licenses pay for themselves.",
      "formula": "Monthly Cost = Subscription + Hardware ÷ Amortization Months. Job GP = Jobs × Hours × ELR. Sublet Saved = Jobs Kept In-House × Sublet Fee Margin. ROI% = (Job GP + Sublet Saved − Monthly Cost) ÷ Monthly Cost.",
      "inputs": [
        {
          "id": "subscription",
          "label": "Monthly subscription cost",
          "kind": "number"
        },
        {
          "id": "hardware",
          "label": "Hardware / tablet purchase price",
          "kind": "number"
        },
        {
          "id": "amortMonths",
          "label": "Months to amortize hardware",
          "kind": "number"
        },
        {
          "id": "jobsPerMonth",
          "label": "Jobs per month requiring this tool",
          "kind": "number"
        },
        {
          "id": "hoursPerJob",
          "label": "Average billed hours per job",
          "kind": "number"
        },
        {
          "id": "laborRate",
          "label": "Effective labor rate",
          "kind": "number"
        },
        {
          "id": "subletFee",
          "label": "Dealer sublet fee avoided per job",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "roi",
          "label": "Monthly ROI on the subscription"
        },
        {
          "id": "netMonthly",
          "label": "Net monthly gain after tool cost"
        },
        {
          "id": "monthlyCost",
          "label": "All-in monthly tool cost"
        },
        {
          "id": "breakevenJobs",
          "label": "Jobs per month to break even"
        },
        {
          "id": "jobGp",
          "label": "Labor gross profit from these jobs"
        },
        {
          "id": "subletSaved",
          "label": "Sublet fees kept in-house"
        }
      ]
    },
    {
      "slug": "blended-labor-rate-warranty-mix",
      "url": "https://www.revenuelab.fyi/toolbox/blended-labor-rate-warranty-mix",
      "title": "Blended Labor Rate by Customer Mix Calculator",
      "category": "financial",
      "summary": "See what your labor rate really averages once warranty, fleet, and internal work are mixed in.",
      "formula": "Blended Rate = Σ(Hours_bucket × Rate_bucket) ÷ Σ(Hours_bucket). Labor GP% = (Blended Rate − Loaded Tech Cost/hr) ÷ Blended Rate.",
      "inputs": [
        {
          "id": "cpHours",
          "label": "Customer-pay hours per month",
          "kind": "number"
        },
        {
          "id": "cpRate",
          "label": "Customer-pay rate",
          "kind": "number"
        },
        {
          "id": "warrantyHours",
          "label": "Warranty hours per month",
          "kind": "number"
        },
        {
          "id": "warrantyRate",
          "label": "Approved warranty rate",
          "kind": "number"
        },
        {
          "id": "fleetHours",
          "label": "Fleet / wholesale hours per month",
          "kind": "number"
        },
        {
          "id": "fleetRate",
          "label": "Fleet / wholesale rate",
          "kind": "number"
        },
        {
          "id": "techCost",
          "label": "Loaded technician cost per hour",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "blended",
          "label": "Blended labor rate"
        },
        {
          "id": "gapToDoor",
          "label": "Gap below your customer-pay rate"
        },
        {
          "id": "gpPct",
          "label": "Labor gross margin"
        },
        {
          "id": "gpDollars",
          "label": "Monthly labor gross profit"
        },
        {
          "id": "cpShare",
          "label": "Share of hours at customer-pay rate"
        },
        {
          "id": "revenue",
          "label": "Monthly labor revenue"
        }
      ]
    },
    {
      "slug": "pallet-position-cost",
      "url": "https://www.revenuelab.fyi/toolbox/pallet-position-cost",
      "title": "Pallet Position Cost Calculator",
      "category": "financial",
      "summary": "Fully loaded monthly cost per pallet storage slot.",
      "formula": "Cost per position = (Fixed monthly costs + labor allocation) ÷ (Total positions × occupancy rate).",
      "inputs": [
        {
          "id": "rent",
          "label": "Monthly rent/mortgage",
          "kind": "number"
        },
        {
          "id": "utilities",
          "label": "Utilities + insurance + tax",
          "kind": "number"
        },
        {
          "id": "rackAmort",
          "label": "Racking amortization per month",
          "kind": "number"
        },
        {
          "id": "laborAlloc",
          "label": "Storage-related labor per month",
          "kind": "number"
        },
        {
          "id": "positions",
          "label": "Total pallet positions",
          "kind": "number"
        },
        {
          "id": "occupancy",
          "label": "Average occupancy rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perPositionOccupied",
          "label": "Cost per occupied position/mo"
        },
        {
          "id": "perPositionAll",
          "label": "Cost per position (all slots)/mo"
        },
        {
          "id": "occupied",
          "label": "Occupied positions"
        },
        {
          "id": "annualPerPosition",
          "label": "Annual cost per position"
        }
      ]
    },
    {
      "slug": "cubic-utilization",
      "url": "https://www.revenuelab.fyi/toolbox/cubic-utilization",
      "title": "Cubic Utilization Calculator",
      "category": "math",
      "summary": "Measure how much of your building's cube you're actually using.",
      "formula": "Cubic utilization = Inventory volume ÷ (Usable floor area × clear height × rack fill factor).",
      "inputs": [
        {
          "id": "floorArea",
          "label": "Usable floor area",
          "kind": "number"
        },
        {
          "id": "clearHeight",
          "label": "Clear height",
          "kind": "number"
        },
        {
          "id": "fillFactor",
          "label": "Rack/aisle fill factor",
          "kind": "number"
        },
        {
          "id": "inventoryVolume",
          "label": "Current inventory volume",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "utilization",
          "label": "Cubic utilization"
        },
        {
          "id": "usableCube",
          "label": "Usable cubic capacity"
        },
        {
          "id": "totalCube",
          "label": "Total raw building cube"
        },
        {
          "id": "wastedCube",
          "label": "Unused usable cube"
        }
      ]
    },
    {
      "slug": "pick-rate-labor-cost",
      "url": "https://www.revenuelab.fyi/toolbox/pick-rate-labor-cost",
      "title": "Pick Rate Labor Cost Calculator",
      "category": "financial",
      "summary": "Cost per line, per unit, and per order from your pick rate and wage.",
      "formula": "Cost per line = Burdened hourly wage ÷ Lines per hour; Cost per order = Cost per line × avg lines per order.",
      "inputs": [
        {
          "id": "wage",
          "label": "Base hourly wage",
          "kind": "number"
        },
        {
          "id": "burden",
          "label": "Payroll burden",
          "kind": "number"
        },
        {
          "id": "linesPerHour",
          "label": "Lines picked per hour",
          "kind": "number"
        },
        {
          "id": "linesPerOrder",
          "label": "Average lines per order",
          "kind": "number"
        },
        {
          "id": "pickers",
          "label": "Number of pickers",
          "kind": "number"
        },
        {
          "id": "shiftHours",
          "label": "Shift length",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerOrder",
          "label": "Labor cost per order"
        },
        {
          "id": "costPerLine",
          "label": "Labor cost per line"
        },
        {
          "id": "dailyOrders",
          "label": "Orders shippable per day"
        },
        {
          "id": "dailyLaborCost",
          "label": "Total daily pick labor cost"
        },
        {
          "id": "burdenedWage",
          "label": "Fully burdened hourly wage"
        }
      ]
    },
    {
      "slug": "slotting-travel-savings",
      "url": "https://www.revenuelab.fyi/toolbox/slotting-travel-savings",
      "title": "Slotting Travel Savings Calculator",
      "category": "financial",
      "summary": "Estimate labor dollars saved by re-slotting fast movers closer to pack.",
      "formula": "Annual savings = (Current travel sec/pick − Projected travel sec/pick) × picks/day × workdays/year × (burdened wage ÷ 3600).",
      "inputs": [
        {
          "id": "currentTravel",
          "label": "Current avg travel time per pick",
          "kind": "number"
        },
        {
          "id": "projectedTravel",
          "label": "Projected avg travel time per pick",
          "kind": "number"
        },
        {
          "id": "picksPerDay",
          "label": "Total picks per day",
          "kind": "number"
        },
        {
          "id": "workdays",
          "label": "Working days per year",
          "kind": "number"
        },
        {
          "id": "wage",
          "label": "Burdened hourly wage",
          "kind": "number"
        },
        {
          "id": "projectCost",
          "label": "One-time re-slotting project cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualSavings",
          "label": "Annual labor savings"
        },
        {
          "id": "paybackMonths",
          "label": "Payback period"
        },
        {
          "id": "annualHoursSaved",
          "label": "Labor hours saved per year"
        },
        {
          "id": "savedHoursPerDay",
          "label": "Labor hours saved per day"
        }
      ]
    },
    {
      "slug": "cycle-count-accuracy",
      "url": "https://www.revenuelab.fyi/toolbox/cycle-count-accuracy",
      "title": "Cycle Count Accuracy Calculator",
      "category": "math",
      "summary": "Compute inventory record accuracy and count program coverage.",
      "formula": "IRA = Matching counts ÷ Total counts × 100; required weekly counts = (A×12 + B×4 + C×1) SKU-counts ÷ 52.",
      "inputs": [
        {
          "id": "totalCounts",
          "label": "Total locations/SKUs counted (period)",
          "kind": "number"
        },
        {
          "id": "matching",
          "label": "Counts matching system (within tolerance)",
          "kind": "number"
        },
        {
          "id": "aItems",
          "label": "A-tier SKU count",
          "kind": "number"
        },
        {
          "id": "bItems",
          "label": "B-tier SKU count",
          "kind": "number"
        },
        {
          "id": "cItems",
          "label": "C-tier SKU count",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ira",
          "label": "Inventory record accuracy"
        },
        {
          "id": "errors",
          "label": "Discrepancies found"
        },
        {
          "id": "weeklyCounts",
          "label": "Required counts per week (ABC cadence)"
        },
        {
          "id": "annualCountEvents",
          "label": "Total annual count events needed"
        }
      ]
    },
    {
      "slug": "safety-stock-service-level",
      "url": "https://www.revenuelab.fyi/toolbox/safety-stock-service-level",
      "title": "Safety Stock Calculator (Service Level)",
      "category": "math",
      "summary": "Statistical safety stock from demand variability, lead time, and target service level.",
      "formula": "SS = z × √(LT × σd² + d² × σLT²), where d = avg daily demand, LT = avg lead time (days).",
      "inputs": [
        {
          "id": "avgDemand",
          "label": "Average daily demand",
          "kind": "number"
        },
        {
          "id": "demandStdDev",
          "label": "Std deviation of daily demand",
          "kind": "number"
        },
        {
          "id": "avgLeadTime",
          "label": "Average lead time",
          "kind": "number"
        },
        {
          "id": "leadTimeStdDev",
          "label": "Std deviation of lead time",
          "kind": "number"
        },
        {
          "id": "serviceLevel",
          "label": "Target service level",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "safetyStock",
          "label": "Safety stock"
        },
        {
          "id": "reorderPoint",
          "label": "Implied reorder point"
        },
        {
          "id": "avgLeadDemand",
          "label": "Average demand during lead time"
        },
        {
          "id": "z",
          "label": "Z-score used"
        }
      ]
    },
    {
      "slug": "reorder-point-safety-stock-3pl",
      "url": "https://www.revenuelab.fyi/toolbox/reorder-point-safety-stock-3pl",
      "title": "Reorder Point Calculator",
      "category": "math",
      "summary": "The inventory level that should trigger a new purchase order.",
      "formula": "Reorder point = (Average daily demand × Lead time in days) + Safety stock.",
      "inputs": [
        {
          "id": "avgDemand",
          "label": "Average daily demand",
          "kind": "number"
        },
        {
          "id": "leadTime",
          "label": "Lead time",
          "kind": "number"
        },
        {
          "id": "safetyStock",
          "label": "Safety stock",
          "kind": "number"
        },
        {
          "id": "onHand",
          "label": "Current on-hand inventory (optional)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rop",
          "label": "Reorder point"
        },
        {
          "id": "demandDuringLT",
          "label": "Expected demand during lead time"
        },
        {
          "id": "daysUntilRop",
          "label": "Days until on-hand hits reorder point"
        },
        {
          "id": "shouldOrder",
          "label": "Order now? (1=yes, 0=no)"
        }
      ]
    },
    {
      "slug": "eoq-carrying-cost",
      "url": "https://www.revenuelab.fyi/toolbox/eoq-carrying-cost",
      "title": "EOQ & Carrying Cost Calculator",
      "category": "financial",
      "summary": "Order quantity that minimizes total ordering + carrying cost.",
      "formula": "EOQ = √(2 × Annual demand × Order cost ÷ Carrying cost per unit per year).",
      "inputs": [
        {
          "id": "annualDemand",
          "label": "Annual demand",
          "kind": "number"
        },
        {
          "id": "orderCost",
          "label": "Cost to place one order",
          "kind": "number"
        },
        {
          "id": "unitCost",
          "label": "Cost per unit",
          "kind": "number"
        },
        {
          "id": "carryingRate",
          "label": "Annual carrying cost rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "eoq",
          "label": "Economic order quantity"
        },
        {
          "id": "ordersPerYear",
          "label": "Orders per year at EOQ"
        },
        {
          "id": "totalCost",
          "label": "Total annual ordering + carrying cost"
        },
        {
          "id": "carryCostPerUnit",
          "label": "Carrying cost per unit/year"
        }
      ]
    },
    {
      "slug": "dock-door-throughput",
      "url": "https://www.revenuelab.fyi/toolbox/dock-door-throughput",
      "title": "Dock Door Throughput Calculator",
      "category": "math",
      "summary": "How many trailers your dock can turn per shift, and whether you have enough doors.",
      "formula": "Daily capacity = Doors × Operating hours ÷ Avg minutes per trailer; Utilization = Actual trailers ÷ Capacity.",
      "inputs": [
        {
          "id": "doors",
          "label": "Number of dock doors",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Operating hours per day",
          "kind": "number"
        },
        {
          "id": "minutesPerTrailer",
          "label": "Avg minutes per trailer (dock-to-dock)",
          "kind": "number"
        },
        {
          "id": "actualTrailers",
          "label": "Actual trailers per day",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "capacity",
          "label": "Daily trailer capacity"
        },
        {
          "id": "utilization",
          "label": "Dock utilization"
        },
        {
          "id": "doorsNeeded",
          "label": "Doors needed for current volume"
        },
        {
          "id": "perTrailerMin",
          "label": "Minutes per trailer assumed"
        }
      ]
    },
    {
      "slug": "cross-dock-vs-storage",
      "url": "https://www.revenuelab.fyi/toolbox/cross-dock-vs-storage",
      "title": "Cross-Dock vs. Storage Cost Calculator",
      "category": "financial",
      "summary": "Compare handling-only cross-dock cost against putaway-and-store cost.",
      "formula": "Cross-dock cost/unit = (Receive + sort + load labor) ÷ units; Storage cost/unit = (Putaway + storage + pick labor) ÷ units.",
      "inputs": [
        {
          "id": "units",
          "label": "Units per event/shipment",
          "kind": "number"
        },
        {
          "id": "crossDockLaborHrs",
          "label": "Cross-dock labor hours (receive+sort+load)",
          "kind": "number"
        },
        {
          "id": "storagePutawayHrs",
          "label": "Storage flow: putaway + pick labor hours",
          "kind": "number"
        },
        {
          "id": "wage",
          "label": "Burdened labor wage",
          "kind": "number"
        },
        {
          "id": "storageDays",
          "label": "Avg days held (storage flow)",
          "kind": "number"
        },
        {
          "id": "storageCostPerDay",
          "label": "Storage cost per unit per day",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "savingsPerUnit",
          "label": "Savings per unit (cross-dock vs storage)"
        },
        {
          "id": "crossDockPerUnit",
          "label": "Cross-dock cost per unit"
        },
        {
          "id": "storagePerUnit",
          "label": "Storage flow cost per unit"
        },
        {
          "id": "totalSavings",
          "label": "Total savings for this shipment"
        }
      ]
    },
    {
      "slug": "dunnage-packaging-cost",
      "url": "https://www.revenuelab.fyi/toolbox/dunnage-packaging-cost",
      "title": "Dunnage & Packaging Cost Per Order Calculator",
      "category": "financial",
      "summary": "Blend carton, void fill, tape, and label cost into a true per-order packaging cost.",
      "formula": "Cost per order = Carton + void fill + tape/closure + label/insert, grossed up by damage reserve %.",
      "inputs": [
        {
          "id": "carton",
          "label": "Carton cost",
          "kind": "number"
        },
        {
          "id": "voidFill",
          "label": "Void fill / dunnage cost",
          "kind": "number"
        },
        {
          "id": "tape",
          "label": "Tape / closure cost",
          "kind": "number"
        },
        {
          "id": "labelInsert",
          "label": "Label + inserts cost",
          "kind": "number"
        },
        {
          "id": "damageReserve",
          "label": "Damage-in-transit reserve",
          "kind": "number"
        },
        {
          "id": "monthlyOrders",
          "label": "Monthly order volume",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perOrder",
          "label": "Total packaging cost per order"
        },
        {
          "id": "base",
          "label": "Base material cost (before reserve)"
        },
        {
          "id": "monthlyCost",
          "label": "Monthly packaging spend"
        },
        {
          "id": "annualCost",
          "label": "Annual packaging spend"
        }
      ]
    },
    {
      "slug": "freight-class-density-nmfc-3pl",
      "url": "https://www.revenuelab.fyi/toolbox/freight-class-density-nmfc-3pl",
      "title": "Freight Class Density Calculator",
      "category": "math",
      "summary": "Compute shipment density and estimate NMFC freight class.",
      "formula": "Density (lb/cu ft) = Weight ÷ (L × W × H in inches ÷ 1728); class assigned from standard density bands.",
      "inputs": [
        {
          "id": "weight",
          "label": "Total shipment weight",
          "kind": "number"
        },
        {
          "id": "length",
          "label": "Length",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Width",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Height",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "freightClass",
          "label": "Estimated NMFC freight class"
        },
        {
          "id": "density",
          "label": "Density"
        },
        {
          "id": "cuFt",
          "label": "Cubic feet"
        }
      ]
    },
    {
      "slug": "ltl-ftl-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/ltl-ftl-breakeven",
      "title": "LTL vs. FTL Breakeven Calculator",
      "category": "financial",
      "summary": "Find the pallet count where switching from LTL to a full truckload gets cheaper.",
      "formula": "Breakeven pallets = FTL flat rate ÷ LTL cost per pallet.",
      "inputs": [
        {
          "id": "ltlPerPallet",
          "label": "LTL cost per pallet (this lane)",
          "kind": "number"
        },
        {
          "id": "ftlFlatRate",
          "label": "FTL flat rate (this lane)",
          "kind": "number"
        },
        {
          "id": "trailerCapacity",
          "label": "Trailer capacity",
          "kind": "number"
        },
        {
          "id": "currentPallets",
          "label": "Your typical shipment size",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenPallets",
          "label": "Breakeven pallet count"
        },
        {
          "id": "currentLtlCost",
          "label": "Your LTL cost at current size"
        },
        {
          "id": "savingsIfFtl",
          "label": "Savings if switched to FTL now"
        },
        {
          "id": "ftlCostPerPallet",
          "label": "FTL cost per pallet (current size)"
        }
      ]
    },
    {
      "slug": "container-stuffing-utilization",
      "url": "https://www.revenuelab.fyi/toolbox/container-stuffing-utilization",
      "title": "Container Stuffing Utilization Calculator",
      "category": "math",
      "summary": "How much of a shipping container's cube and weight capacity your load uses.",
      "formula": "Cubic util = Cargo volume ÷ Container usable volume; Weight util = Cargo weight ÷ Container payload limit.",
      "inputs": [
        {
          "id": "containerType",
          "label": "Container type",
          "kind": "select"
        },
        {
          "id": "cargoVolume",
          "label": "Total cargo volume",
          "kind": "number"
        },
        {
          "id": "cargoWeight",
          "label": "Total cargo weight",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cubicUtil",
          "label": "Cubic utilization"
        },
        {
          "id": "weightUtil",
          "label": "Weight utilization"
        },
        {
          "id": "remainingCube",
          "label": "Remaining cube capacity"
        },
        {
          "id": "bindingConstraintNote",
          "label": "Cube-bound? (1=yes, 0=weight-bound)"
        }
      ]
    },
    {
      "slug": "inventory-turns-dsi",
      "url": "https://www.revenuelab.fyi/toolbox/inventory-turns-dsi",
      "title": "Inventory Turns & Days Sales of Inventory Calculator",
      "category": "financial",
      "summary": "Turnover ratio and days-of-supply from COGS and average inventory.",
      "formula": "Inventory turns = COGS ÷ Average inventory; DSI = 365 ÷ Inventory turns.",
      "inputs": [
        {
          "id": "cogs",
          "label": "Annual cost of goods sold",
          "kind": "number"
        },
        {
          "id": "beginInv",
          "label": "Beginning inventory value",
          "kind": "number"
        },
        {
          "id": "endInv",
          "label": "Ending inventory value",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "turns",
          "label": "Inventory turns per year"
        },
        {
          "id": "dsi",
          "label": "Days sales of inventory"
        },
        {
          "id": "avgInv",
          "label": "Average inventory value"
        },
        {
          "id": "monthlyTurns",
          "label": "Turns per month"
        }
      ]
    },
    {
      "slug": "obsolescence-reserve",
      "url": "https://www.revenuelab.fyi/toolbox/obsolescence-reserve",
      "title": "Inventory Obsolescence Reserve Calculator",
      "category": "financial",
      "summary": "Estimate the write-down reserve for slow-moving and excess inventory.",
      "formula": "Reserve = Σ (Inventory value in each aging bucket × reserve % for that bucket).",
      "inputs": [
        {
          "id": "inv0to6",
          "label": "Inventory value, 0-6 months no movement",
          "kind": "number"
        },
        {
          "id": "inv6to12",
          "label": "Inventory value, 6-12 months no movement",
          "kind": "number"
        },
        {
          "id": "inv12to24",
          "label": "Inventory value, 12-24 months no movement",
          "kind": "number"
        },
        {
          "id": "inv24plus",
          "label": "Inventory value, 24+ months no movement",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "reserve",
          "label": "Recommended obsolescence reserve"
        },
        {
          "id": "reservePct",
          "label": "Reserve as % of total slow-mover inventory"
        },
        {
          "id": "totalInv",
          "label": "Total inventory in aging buckets"
        },
        {
          "id": "netValue",
          "label": "Net realizable value after reserve"
        }
      ]
    },
    {
      "slug": "3pl-pricing-quote",
      "url": "https://www.revenuelab.fyi/toolbox/3pl-pricing-quote",
      "title": "3PL Pricing Quote Builder",
      "category": "financial",
      "summary": "Build a defensible storage + pick/pack + shipping markup quote.",
      "formula": "Monthly total = Storage (pallets × rate) + Receiving (units × rate) + Pick/pack (orders × rate) + Shipping markup.",
      "inputs": [
        {
          "id": "pallets",
          "label": "Avg pallets stored",
          "kind": "number"
        },
        {
          "id": "storageRate",
          "label": "Storage rate per pallet/month",
          "kind": "number"
        },
        {
          "id": "receivingUnits",
          "label": "Units received per month",
          "kind": "number"
        },
        {
          "id": "receivingRate",
          "label": "Receiving fee per unit",
          "kind": "number"
        },
        {
          "id": "orders",
          "label": "Orders shipped per month",
          "kind": "number"
        },
        {
          "id": "pickPackRate",
          "label": "Pick & pack fee per order",
          "kind": "number"
        },
        {
          "id": "shippingCost",
          "label": "Underlying shipping cost per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalQuote",
          "label": "Total monthly quote"
        },
        {
          "id": "revenuePerOrder",
          "label": "Blended revenue per order"
        },
        {
          "id": "storage",
          "label": "Storage revenue"
        },
        {
          "id": "pickPack",
          "label": "Pick & pack revenue"
        },
        {
          "id": "shippingRevenue",
          "label": "Shipping revenue (incl. 8% markup)"
        }
      ]
    },
    {
      "slug": "warehouse-storage-fee",
      "url": "https://www.revenuelab.fyi/toolbox/warehouse-storage-fee",
      "title": "Warehouse Storage Fee Calculator",
      "category": "financial",
      "summary": "Bill storage by pallet-in / pallet-out days or flat monthly rate.",
      "formula": "Daily billing = Σ(pallets received × days held) × daily rate; Flat billing = peak/avg pallet count × monthly rate.",
      "inputs": [
        {
          "id": "avgPalletsIn",
          "label": "Pallets received per month",
          "kind": "number"
        },
        {
          "id": "avgDwellDays",
          "label": "Average dwell time per pallet",
          "kind": "number"
        },
        {
          "id": "dailyRate",
          "label": "Daily storage rate per pallet",
          "kind": "number"
        },
        {
          "id": "flatMonthlyRate",
          "label": "Flat monthly rate per pallet position",
          "kind": "number"
        },
        {
          "id": "avgOccupiedPositions",
          "label": "Average occupied positions (flat method)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "dailyBill",
          "label": "Pallet-day billing total"
        },
        {
          "id": "flatBill",
          "label": "Flat monthly billing total"
        },
        {
          "id": "difference",
          "label": "Difference (daily minus flat)"
        },
        {
          "id": "effectiveRatePerPallet",
          "label": "Effective daily-method rate per pallet in"
        }
      ]
    },
    {
      "slug": "order-picking-productivity",
      "url": "https://www.revenuelab.fyi/toolbox/order-picking-productivity",
      "title": "Order Picking Productivity Calculator",
      "category": "math",
      "summary": "Units, lines, and orders per labor hour across a shift.",
      "formula": "Units/hr = Units picked ÷ hours worked; Lines/hr and Orders/hr computed the same way.",
      "inputs": [
        {
          "id": "unitsPicked",
          "label": "Total units picked",
          "kind": "number"
        },
        {
          "id": "linesPicked",
          "label": "Total lines picked",
          "kind": "number"
        },
        {
          "id": "ordersPicked",
          "label": "Total orders picked",
          "kind": "number"
        },
        {
          "id": "hoursWorked",
          "label": "Total labor hours worked",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "linesPerHour",
          "label": "Lines per labor hour"
        },
        {
          "id": "unitsPerHour",
          "label": "Units per labor hour"
        },
        {
          "id": "ordersPerHour",
          "label": "Orders per labor hour"
        },
        {
          "id": "unitsPerLine",
          "label": "Average units per line"
        }
      ]
    },
    {
      "slug": "receiving-dock-labor",
      "url": "https://www.revenuelab.fyi/toolbox/receiving-dock-labor",
      "title": "Receiving Dock Labor Calculator",
      "category": "financial",
      "summary": "Labor cost and staffing need for inbound receiving volume.",
      "formula": "Labor hours needed = Daily receiving volume ÷ units per hour per associate; Headcount = hours needed ÷ shift length.",
      "inputs": [
        {
          "id": "dailyVolume",
          "label": "Units/cartons received per day",
          "kind": "number"
        },
        {
          "id": "unitsPerHour",
          "label": "Units received per labor hour",
          "kind": "number"
        },
        {
          "id": "shiftHours",
          "label": "Shift length",
          "kind": "number"
        },
        {
          "id": "wage",
          "label": "Burdened hourly wage",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "headcount",
          "label": "Associates needed"
        },
        {
          "id": "hoursNeeded",
          "label": "Total labor hours needed"
        },
        {
          "id": "dailyLaborCost",
          "label": "Daily receiving labor cost"
        },
        {
          "id": "utilizationOfCrew",
          "label": "Crew utilization at this headcount"
        }
      ]
    },
    {
      "slug": "wave-picking-efficiency",
      "url": "https://www.revenuelab.fyi/toolbox/wave-picking-efficiency",
      "title": "Wave Picking Efficiency Calculator",
      "category": "math",
      "summary": "Compare single-order picking against wave/batch picking travel savings.",
      "formula": "Time per order (waved) = (Travel time per tour ÷ wave size) + Pick time per order; savings = single-order time − waved time.",
      "inputs": [
        {
          "id": "travelPerTour",
          "label": "Travel time per pick tour",
          "kind": "number"
        },
        {
          "id": "pickTimePerOrder",
          "label": "Pick + pack time per order",
          "kind": "number"
        },
        {
          "id": "waveSize",
          "label": "Orders per wave/tour",
          "kind": "number"
        },
        {
          "id": "ordersPerDay",
          "label": "Orders per day",
          "kind": "number"
        },
        {
          "id": "wage",
          "label": "Burdened hourly wage",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualSavings",
          "label": "Estimated annual labor savings"
        },
        {
          "id": "wavedTimePerOrder",
          "label": "Effective time per order (waved)"
        },
        {
          "id": "savedSecPerOrder",
          "label": "Seconds saved per order vs single-pick"
        },
        {
          "id": "dailyHoursSaved",
          "label": "Labor hours saved per day"
        }
      ]
    },
    {
      "slug": "warehouse-space-utilization",
      "url": "https://www.revenuelab.fyi/toolbox/warehouse-space-utilization",
      "title": "Warehouse Space Utilization Calculator",
      "category": "math",
      "summary": "Square footage used by storage, aisles, staging, and offices vs. total leased space.",
      "formula": "Storage utilization % = Storage footprint ÷ Total leased sq ft; repeated for each functional zone.",
      "inputs": [
        {
          "id": "totalSqFt",
          "label": "Total leased square footage",
          "kind": "number"
        },
        {
          "id": "storageSqFt",
          "label": "Storage racking footprint",
          "kind": "number"
        },
        {
          "id": "aisleSqFt",
          "label": "Aisle space",
          "kind": "number"
        },
        {
          "id": "stagingSqFt",
          "label": "Staging / dock area",
          "kind": "number"
        },
        {
          "id": "officeSqFt",
          "label": "Office / support space",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "storagePct",
          "label": "Storage share of total space"
        },
        {
          "id": "aislePct",
          "label": "Aisle share of total space"
        },
        {
          "id": "stagingPct",
          "label": "Staging/dock share of total space"
        },
        {
          "id": "unaccounted",
          "label": "Unaccounted square footage"
        }
      ]
    },
    {
      "slug": "kitting-assembly-cost",
      "url": "https://www.revenuelab.fyi/toolbox/kitting-assembly-cost",
      "title": "Kitting & Assembly Cost Calculator",
      "category": "financial",
      "summary": "Labor, component, and packaging cost per assembled kit.",
      "formula": "Cost per kit = Assembly labor time × wage + Σ component costs + Kit packaging cost.",
      "inputs": [
        {
          "id": "assemblyMinutes",
          "label": "Assembly time per kit",
          "kind": "number"
        },
        {
          "id": "wage",
          "label": "Burdened hourly wage",
          "kind": "number"
        },
        {
          "id": "componentCost",
          "label": "Total component cost per kit",
          "kind": "number"
        },
        {
          "id": "kitPackaging",
          "label": "Kit-specific packaging cost",
          "kind": "number"
        },
        {
          "id": "kitFee",
          "label": "Kitting fee charged",
          "kind": "number"
        },
        {
          "id": "kitsPerMonth",
          "label": "Kits assembled per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "marginPerKit",
          "label": "Margin per kit (labor+packaging fee)"
        },
        {
          "id": "laborCost",
          "label": "Assembly labor cost per kit"
        },
        {
          "id": "monthlyKittingMargin",
          "label": "Monthly kitting margin"
        },
        {
          "id": "monthlyKittingRevenue",
          "label": "Monthly kitting fee revenue"
        }
      ]
    },
    {
      "slug": "chargeback-cost-analysis",
      "url": "https://www.revenuelab.fyi/toolbox/chargeback-cost-analysis",
      "title": "Retail Chargeback Cost Analysis Calculator",
      "category": "financial",
      "summary": "Quantify the margin hit from routing guide, labeling, and shipment compliance chargebacks.",
      "formula": "Monthly chargeback cost = Shipments × violation rate × avg fee per violation; % of revenue = chargeback cost ÷ monthly revenue.",
      "inputs": [
        {
          "id": "shipments",
          "label": "Shipments per month",
          "kind": "number"
        },
        {
          "id": "violationRate",
          "label": "Violation rate",
          "kind": "number"
        },
        {
          "id": "avgFee",
          "label": "Average chargeback fee per violation",
          "kind": "number"
        },
        {
          "id": "monthlyRevenue",
          "label": "Monthly revenue with this retailer",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthlyChargebackCost",
          "label": "Estimated monthly chargeback cost"
        },
        {
          "id": "pctOfRevenue",
          "label": "Chargebacks as % of revenue"
        },
        {
          "id": "violations",
          "label": "Estimated violations per month"
        },
        {
          "id": "annualCost",
          "label": "Annualized chargeback cost"
        }
      ]
    },
    {
      "slug": "warehouse-management-system-roi",
      "url": "https://www.revenuelab.fyi/toolbox/warehouse-management-system-roi",
      "title": "Warehouse Management System (WMS) ROI Calculator",
      "category": "financial",
      "summary": "Payback period and annual return from a warehouse management system investment.",
      "formula": "Annual benefit = Labor savings + Accuracy-driven savings + Error/chargeback reduction; ROI = (Benefit − Cost) ÷ Cost; Payback = Cost ÷ (Benefit ÷ 12).",
      "inputs": [
        {
          "id": "laborCost",
          "label": "Current annual warehouse labor cost",
          "kind": "number"
        },
        {
          "id": "productivityGain",
          "label": "Expected productivity gain",
          "kind": "number"
        },
        {
          "id": "accuracySavings",
          "label": "Annual savings from accuracy/count reduction",
          "kind": "number"
        },
        {
          "id": "errorReduction",
          "label": "Annual savings from fewer errors/chargebacks",
          "kind": "number"
        },
        {
          "id": "implementationCost",
          "label": "Total implementation cost (year 1)",
          "kind": "number"
        },
        {
          "id": "annualSubscription",
          "label": "Ongoing annual subscription/license",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paybackMonths",
          "label": "Payback period (implementation cost)"
        },
        {
          "id": "annualBenefit",
          "label": "Total annual benefit"
        },
        {
          "id": "netYear1",
          "label": "Net year-1 impact (after all costs)"
        },
        {
          "id": "year2Roi",
          "label": "Year-2+ ROI on subscription cost"
        }
      ]
    },
    {
      "slug": "brrrr-refinance-capture",
      "url": "https://www.revenuelab.fyi/toolbox/brrrr-refinance-capture",
      "title": "BRRRR Refinance Capture Calculator",
      "category": "financial",
      "summary": "How much cash you pull out (or leave in) on the refinance step.",
      "formula": "Refi loan = ARV × LTV%; Cash out = Refi loan − existing loan payoff − refi closing costs; Left in deal = Total cash invested − cash out.",
      "inputs": [
        {
          "id": "arv",
          "label": "After-repair value (ARV)",
          "kind": "number"
        },
        {
          "id": "ltv",
          "label": "Refinance LTV",
          "kind": "number"
        },
        {
          "id": "existingLoan",
          "label": "Existing bridge/hard money payoff",
          "kind": "number"
        },
        {
          "id": "totalInvested",
          "label": "Total cash invested (down + closing + rehab + holding)",
          "kind": "number"
        },
        {
          "id": "refiClosingCosts",
          "label": "Refinance closing costs",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cashOut",
          "label": "Cash out at closing"
        },
        {
          "id": "leftIn",
          "label": "Cash left in deal"
        },
        {
          "id": "pctRecycled",
          "label": "Capital recycled"
        },
        {
          "id": "refiLoan",
          "label": "New refinance loan amount"
        }
      ]
    },
    {
      "slug": "1031-exchange-boot-basis",
      "url": "https://www.revenuelab.fyi/toolbox/1031-exchange-boot-basis",
      "title": "1031 Exchange Boot and Basis Calculator",
      "category": "financial",
      "summary": "Estimate taxable boot and new cost basis on a like-kind exchange.",
      "formula": "Realized gain = Net sale proceeds − adjusted basis; Cash boot = cash received; Debt boot = old debt payoff − new debt taken; Recognized gain = min(realized gain, total boot); New basis = replacement price − deferred gain.",
      "inputs": [
        {
          "id": "salePrice",
          "label": "Relinquished property sale price",
          "kind": "number"
        },
        {
          "id": "sellingCosts",
          "label": "Selling costs",
          "kind": "number"
        },
        {
          "id": "adjustedBasis",
          "label": "Adjusted basis of relinquished property",
          "kind": "number"
        },
        {
          "id": "oldDebtPayoff",
          "label": "Old mortgage payoff",
          "kind": "number"
        },
        {
          "id": "replacementPrice",
          "label": "Replacement property purchase price",
          "kind": "number"
        },
        {
          "id": "newDebt",
          "label": "New mortgage on replacement",
          "kind": "number"
        },
        {
          "id": "cashReceived",
          "label": "Cash taken out (not reinvested)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "recognizedGain",
          "label": "Taxable boot (recognized gain)"
        },
        {
          "id": "deferredGain",
          "label": "Gain deferred"
        },
        {
          "id": "newBasis",
          "label": "New basis in replacement property"
        },
        {
          "id": "totalBoot",
          "label": "Total boot (cash + debt relief)"
        },
        {
          "id": "realizedGain",
          "label": "Realized gain on sale"
        }
      ]
    },
    {
      "slug": "cost-segregation-first-year",
      "url": "https://www.revenuelab.fyi/toolbox/cost-segregation-first-year",
      "title": "Cost Segregation First-Year Benefit Calculator",
      "category": "financial",
      "summary": "Estimate accelerated depreciation and first-year tax savings from a cost seg study.",
      "formula": "Reclassified basis = Building basis × reclass%; First-year bonus deduction = Reclassified basis × bonus%; Remaining reclassified basis depreciates over its class life; Tax savings = First-year deduction × marginal tax rate.",
      "inputs": [
        {
          "id": "buildingBasis",
          "label": "Building basis (excludes land)",
          "kind": "number"
        },
        {
          "id": "reclassPct",
          "label": "% of basis reclassified to short-life assets",
          "kind": "number"
        },
        {
          "id": "bonusPct",
          "label": "Bonus depreciation rate this tax year",
          "kind": "number"
        },
        {
          "id": "marginalRate",
          "label": "Marginal tax rate",
          "kind": "number"
        },
        {
          "id": "studyFee",
          "label": "Cost segregation study fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "taxSavings",
          "label": "Estimated first-year tax savings"
        },
        {
          "id": "firstYearDeduction",
          "label": "First-year depreciation deduction"
        },
        {
          "id": "netBenefit",
          "label": "Net benefit after study fee"
        },
        {
          "id": "roiOnStudy",
          "label": "ROI on study fee"
        },
        {
          "id": "reclassified",
          "label": "Basis reclassified to short-life assets"
        }
      ]
    },
    {
      "slug": "depreciation-recapture-sale",
      "url": "https://www.revenuelab.fyi/toolbox/depreciation-recapture-sale",
      "title": "Depreciation Recapture on Sale Calculator",
      "category": "financial",
      "summary": "Split your sale gain into recapture tax and long-term capital gains tax.",
      "formula": "Adjusted basis = Purchase price + improvements − depreciation taken; Total gain = Net sale price − adjusted basis; Recapture gain = min(depreciation taken, total gain), taxed at 25%; Remaining gain taxed at capital gains rate.",
      "inputs": [
        {
          "id": "salePrice",
          "label": "Sale price",
          "kind": "number"
        },
        {
          "id": "sellingCosts",
          "label": "Selling costs",
          "kind": "number"
        },
        {
          "id": "purchasePrice",
          "label": "Original purchase price + improvements",
          "kind": "number"
        },
        {
          "id": "depreciationTaken",
          "label": "Total depreciation claimed",
          "kind": "number"
        },
        {
          "id": "capGainsRate",
          "label": "Your long-term capital gains rate",
          "kind": "number"
        },
        {
          "id": "recaptureRate",
          "label": "Recapture tax rate (max 25%)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalTax",
          "label": "Total federal tax owed on sale"
        },
        {
          "id": "recaptureTax",
          "label": "Depreciation recapture tax (25%)"
        },
        {
          "id": "capitalGainsTax",
          "label": "Long-term capital gains tax"
        },
        {
          "id": "totalGain",
          "label": "Total gain on sale"
        },
        {
          "id": "netProceedsAfterTax",
          "label": "Net proceeds after federal tax"
        }
      ]
    },
    {
      "slug": "dscr-loan-sizing",
      "url": "https://www.revenuelab.fyi/toolbox/dscr-loan-sizing",
      "title": "DSCR Loan Sizing Calculator",
      "category": "financial",
      "summary": "Find the max loan a DSCR lender will approve based on property cash flow.",
      "formula": "Max annual debt service = NOI ÷ Minimum DSCR; Max loan = Max annual debt service solved against amortizing payment formula for rate and term.",
      "inputs": [
        {
          "id": "monthlyRent",
          "label": "Monthly gross rent",
          "kind": "number"
        },
        {
          "id": "monthlyOpex",
          "label": "Monthly operating expenses (taxes, insurance, HOA, mgmt, reserves)",
          "kind": "number"
        },
        {
          "id": "minDscr",
          "label": "Lender's minimum DSCR",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Interest rate",
          "kind": "number"
        },
        {
          "id": "termYears",
          "label": "Amortization term",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "maxLoan",
          "label": "Maximum loan amount supported"
        },
        {
          "id": "maxMonthlyDebtService",
          "label": "Max monthly payment (P&I)"
        },
        {
          "id": "annualNoi",
          "label": "Annual net operating income"
        },
        {
          "id": "noiMonthly",
          "label": "Monthly net operating income"
        }
      ]
    },
    {
      "slug": "syndication-waterfall-promote",
      "url": "https://www.revenuelab.fyi/toolbox/syndication-waterfall-promote",
      "title": "Syndication Waterfall Promote Split Calculator",
      "category": "financial",
      "summary": "Model how profit splits between LPs and the GP through a preferred return waterfall.",
      "formula": "Pref owed = LP capital × pref rate × years; LP pref payment = min(pref owed, total profit); Remaining profit = Total profit − LP pref payment; GP promote = Remaining profit × promote%; LP total = LP pref payment + Remaining profit × (1 − promote%).",
      "inputs": [
        {
          "id": "lpCapital",
          "label": "LP capital invested",
          "kind": "number"
        },
        {
          "id": "prefRate",
          "label": "Preferred return rate",
          "kind": "number"
        },
        {
          "id": "holdYears",
          "label": "Hold period",
          "kind": "number"
        },
        {
          "id": "totalProfit",
          "label": "Total distributable profit (all-in, including sale)",
          "kind": "number"
        },
        {
          "id": "promotePct",
          "label": "GP promote above preferred return",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "lpTotal",
          "label": "Total LP distribution"
        },
        {
          "id": "gpPromote",
          "label": "GP promote earned"
        },
        {
          "id": "lpPrefPaid",
          "label": "Preferred return paid to LPs"
        },
        {
          "id": "lpEffectiveReturn",
          "label": "LP total return on capital"
        },
        {
          "id": "prefOwed",
          "label": "Total preferred return accrued"
        }
      ]
    },
    {
      "slug": "preferred-return-accrual",
      "url": "https://www.revenuelab.fyi/toolbox/preferred-return-accrual",
      "title": "Preferred Return Accrual Calculator",
      "category": "financial",
      "summary": "Track accrued and unpaid preferred return on an LP investment over time.",
      "formula": "Simple accrual = Capital × rate × years; Compound accrual = Capital × [(1+rate)^years − 1]; Unpaid balance = Total accrued − Distributions received to date.",
      "inputs": [
        {
          "id": "capital",
          "label": "LP capital balance",
          "kind": "number"
        },
        {
          "id": "prefRate",
          "label": "Preferred return rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years elapsed",
          "kind": "number"
        },
        {
          "id": "distributionsPaid",
          "label": "Distributions received to date",
          "kind": "number"
        },
        {
          "id": "compounding",
          "label": "Accrual type",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "unpaidBalance",
          "label": "Unpaid preferred return owed"
        },
        {
          "id": "totalAccrued",
          "label": "Total preferred return accrued"
        },
        {
          "id": "annualPrefAmount",
          "label": "Current annual pref amount"
        },
        {
          "id": "pctPaidOut",
          "label": "% of accrued pref paid to date"
        }
      ]
    },
    {
      "slug": "equity-multiple-vs-irr",
      "url": "https://www.revenuelab.fyi/toolbox/equity-multiple-vs-irr",
      "title": "Equity Multiple vs IRR Calculator",
      "category": "financial",
      "summary": "Compare total return multiple against annualized IRR for a deal.",
      "formula": "Equity multiple = Total cash returned ÷ Initial investment; Approximate IRR = (Equity multiple)^(1/years) − 1, assuming no interim distributions.",
      "inputs": [
        {
          "id": "initialInvestment",
          "label": "Initial investment",
          "kind": "number"
        },
        {
          "id": "totalReturned",
          "label": "Total cash returned (all distributions + sale)",
          "kind": "number"
        },
        {
          "id": "holdYears",
          "label": "Hold period",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "irr",
          "label": "Approximate annualized IRR"
        },
        {
          "id": "equityMultiple",
          "label": "Equity multiple"
        },
        {
          "id": "totalProfit",
          "label": "Total profit"
        },
        {
          "id": "avgAnnualProfit",
          "label": "Average annual profit"
        }
      ]
    },
    {
      "slug": "cap-rate-expansion-sensitivity",
      "url": "https://www.revenuelab.fyi/toolbox/cap-rate-expansion-sensitivity",
      "title": "Cap Rate Expansion Sensitivity Calculator",
      "category": "financial",
      "summary": "See how much exit value drops if cap rates rise between purchase and sale.",
      "formula": "Exit value at purchase cap rate = Exit NOI ÷ purchase cap rate; Exit value at expanded cap rate = Exit NOI ÷ (purchase cap rate + expansion); Value impact = difference between the two.",
      "inputs": [
        {
          "id": "exitNoi",
          "label": "Projected exit-year NOI",
          "kind": "number"
        },
        {
          "id": "purchaseCapRate",
          "label": "Purchase / current market cap rate",
          "kind": "number"
        },
        {
          "id": "capRateExpansion",
          "label": "Assumed cap rate expansion by exit",
          "kind": "number"
        },
        {
          "id": "originalEquity",
          "label": "Original equity invested",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "valueImpact",
          "label": "Value lost to cap rate expansion"
        },
        {
          "id": "valueAtOriginalCap",
          "label": "Exit value at original cap rate"
        },
        {
          "id": "valueAtExpandedCap",
          "label": "Exit value at expanded cap rate"
        },
        {
          "id": "equityImpactPct",
          "label": "Impact as % of original equity"
        }
      ]
    },
    {
      "slug": "seller-financing-note-yield",
      "url": "https://www.revenuelab.fyi/toolbox/seller-financing-note-yield",
      "title": "Seller Financing Note Yield Calculator",
      "category": "financial",
      "summary": "Calculate the effective yield a seller earns carrying a note, including any discount.",
      "formula": "Monthly payment = amortizing payment formula on face amount, rate, and amortization term; Effective yield if sold at discount = solves IRR on (payments received + discounted sale proceeds) vs. face amount financed.",
      "inputs": [
        {
          "id": "noteAmount",
          "label": "Note face amount",
          "kind": "number"
        },
        {
          "id": "noteRate",
          "label": "Note interest rate",
          "kind": "number"
        },
        {
          "id": "amortYears",
          "label": "Amortization period",
          "kind": "number"
        },
        {
          "id": "holdMonths",
          "label": "Months seller holds note before selling (0 = holds to term)",
          "kind": "number"
        },
        {
          "id": "salePriceDiscount",
          "label": "Discount if sold early (% off remaining balance)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "effectiveYield",
          "label": "Effective annualized yield"
        },
        {
          "id": "payment",
          "label": "Monthly payment received"
        },
        {
          "id": "saleProceeds",
          "label": "Proceeds if note sold early"
        },
        {
          "id": "remainingBalance",
          "label": "Remaining balance at sale/end"
        }
      ]
    },
    {
      "slug": "subject-to-deal-math",
      "url": "https://www.revenuelab.fyi/toolbox/subject-to-deal-math",
      "title": "Subject-To Deal Math Calculator",
      "category": "financial",
      "summary": "Model equity captured and monthly spread on a subject-to acquisition.",
      "formula": "Equity captured = Property value − existing loan balance − cash to seller; Monthly spread = Market rent − existing PITI payment; Cash-on-cash = (Monthly spread × 12) ÷ total cash invested.",
      "inputs": [
        {
          "id": "propertyValue",
          "label": "Property value",
          "kind": "number"
        },
        {
          "id": "loanBalance",
          "label": "Existing mortgage balance",
          "kind": "number"
        },
        {
          "id": "existingPiti",
          "label": "Existing monthly PITI payment",
          "kind": "number"
        },
        {
          "id": "marketRent",
          "label": "Market rent (or your rent if owner-occupying)",
          "kind": "number"
        },
        {
          "id": "cashToSeller",
          "label": "Cash paid to seller at closing",
          "kind": "number"
        },
        {
          "id": "closingCosts",
          "label": "Closing / transfer costs",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "equityCaptured",
          "label": "Equity captured at acquisition"
        },
        {
          "id": "monthlySpread",
          "label": "Monthly cash flow spread"
        },
        {
          "id": "cashOnCash",
          "label": "Cash-on-cash return"
        },
        {
          "id": "annualSpread",
          "label": "Annual cash flow"
        },
        {
          "id": "totalCashInvested",
          "label": "Total cash invested"
        }
      ]
    },
    {
      "slug": "hard-money-bridge-cost",
      "url": "https://www.revenuelab.fyi/toolbox/hard-money-bridge-cost",
      "title": "Hard Money Bridge Loan Total Cost Calculator",
      "category": "financial",
      "summary": "Total all-in cost of a short-term hard money or bridge loan, points included.",
      "formula": "Points cost = Loan amount × points%; Interest cost = Loan amount × rate × (months held ÷ 12); Total cost = Points cost + Interest cost + Exit fee; Effective annual rate = (Total cost ÷ Loan amount) × (12 ÷ months held) × 100.",
      "inputs": [
        {
          "id": "loanAmount",
          "label": "Loan amount",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Interest rate",
          "kind": "number"
        },
        {
          "id": "points",
          "label": "Origination points",
          "kind": "number"
        },
        {
          "id": "monthsHeld",
          "label": "Months held",
          "kind": "number"
        },
        {
          "id": "exitFee",
          "label": "Exit fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalCost",
          "label": "Total all-in cost of loan"
        },
        {
          "id": "effectiveAnnualRate",
          "label": "Effective annualized rate"
        },
        {
          "id": "monthlyInterestPayment",
          "label": "Monthly interest-only payment"
        },
        {
          "id": "pointsCost",
          "label": "Points cost"
        },
        {
          "id": "interestCost",
          "label": "Total interest cost over hold"
        }
      ]
    },
    {
      "slug": "land-development-yield-on-cost",
      "url": "https://www.revenuelab.fyi/toolbox/land-development-yield-on-cost",
      "title": "Land Development Yield-on-Cost Calculator",
      "category": "financial",
      "summary": "Compare stabilized NOI yield-on-cost against market cap rate to gauge development spread.",
      "formula": "Total project cost = Land + hard costs + soft costs + financing carry; Yield-on-cost = Stabilized NOI ÷ Total project cost; Spread = Yield-on-cost − market cap rate; Value created = (Stabilized NOI ÷ market cap rate) − Total project cost.",
      "inputs": [
        {
          "id": "landCost",
          "label": "Land cost",
          "kind": "number"
        },
        {
          "id": "hardCosts",
          "label": "Hard construction costs",
          "kind": "number"
        },
        {
          "id": "softCosts",
          "label": "Soft costs (design, permits, legal)",
          "kind": "number"
        },
        {
          "id": "financingCarry",
          "label": "Construction financing carry cost",
          "kind": "number"
        },
        {
          "id": "stabilizedNoi",
          "label": "Projected stabilized annual NOI",
          "kind": "number"
        },
        {
          "id": "marketCapRate",
          "label": "Market cap rate for comparable stabilized assets",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "yieldOnCost",
          "label": "Yield-on-cost"
        },
        {
          "id": "spreadBps",
          "label": "Spread over market cap rate"
        },
        {
          "id": "valueCreated",
          "label": "Value created at completion"
        },
        {
          "id": "totalCost",
          "label": "Total project cost"
        },
        {
          "id": "stabilizedValue",
          "label": "Value at market cap rate"
        }
      ]
    },
    {
      "slug": "adu-build-roi",
      "url": "https://www.revenuelab.fyi/toolbox/adu-build-roi",
      "title": "ADU Build ROI Calculator",
      "category": "financial",
      "summary": "Cash-on-cash return and payback period for building an ADU on your property.",
      "formula": "Monthly cash flow = Rent − operating expenses − loan payment (if financed); Cash-on-cash = (Annual cash flow ÷ cash invested) × 100; Payback years = Cash invested ÷ Annual cash flow.",
      "inputs": [
        {
          "id": "constructionCost",
          "label": "Total construction cost",
          "kind": "number"
        },
        {
          "id": "financedAmount",
          "label": "Amount financed (0 = all cash)",
          "kind": "number"
        },
        {
          "id": "loanRate",
          "label": "Loan rate (if financed)",
          "kind": "number"
        },
        {
          "id": "loanTermYears",
          "label": "Loan term",
          "kind": "number"
        },
        {
          "id": "monthlyRent",
          "label": "Projected monthly rent",
          "kind": "number"
        },
        {
          "id": "monthlyOpex",
          "label": "Monthly ADU-specific expenses (utilities, insurance, maintenance)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cashOnCash",
          "label": "Cash-on-cash return"
        },
        {
          "id": "monthlyCashFlow",
          "label": "Monthly cash flow"
        },
        {
          "id": "paybackYears",
          "label": "Simple payback period"
        },
        {
          "id": "annualCashFlow",
          "label": "Annual cash flow"
        },
        {
          "id": "payment",
          "label": "Monthly loan payment"
        }
      ]
    },
    {
      "slug": "mobile-home-park-lot-economics",
      "url": "https://www.revenuelab.fyi/toolbox/mobile-home-park-lot-economics",
      "title": "Mobile Home Park Lot Economics Calculator",
      "category": "financial",
      "summary": "Per-lot rent, expense ratio, and NOI economics for a manufactured housing community.",
      "formula": "Gross annual revenue = Occupied lots × monthly lot rent × 12; NOI = Gross revenue × (1 − expense ratio); Implied value = NOI ÷ cap rate; Per-lot value = Implied value ÷ total lots.",
      "inputs": [
        {
          "id": "totalLots",
          "label": "Total lots/pads",
          "kind": "number"
        },
        {
          "id": "occupiedLots",
          "label": "Occupied lots",
          "kind": "number"
        },
        {
          "id": "lotRent",
          "label": "Monthly lot rent per pad",
          "kind": "number"
        },
        {
          "id": "expenseRatio",
          "label": "Operating expense ratio",
          "kind": "number"
        },
        {
          "id": "capRate",
          "label": "Market cap rate for parks",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "noi",
          "label": "Annual NOI"
        },
        {
          "id": "impliedValue",
          "label": "Implied park value"
        },
        {
          "id": "perLotValue",
          "label": "Value per lot"
        },
        {
          "id": "grossAnnualRevenue",
          "label": "Gross annual lot rent revenue"
        },
        {
          "id": "occupancyPct",
          "label": "Occupancy rate"
        }
      ]
    },
    {
      "slug": "commercial-nnn-lease-escalations",
      "url": "https://www.revenuelab.fyi/toolbox/commercial-nnn-lease-escalations",
      "title": "Commercial NNN Lease Escalation Calculator",
      "category": "financial",
      "summary": "Project rent growth over a triple-net lease term with fixed or CPI-linked escalations.",
      "formula": "Fixed annual: Rent(year n) = Base rent × (1 + escalation%)^n; Periodic step: Rent steps up by fixed % every step interval.",
      "inputs": [
        {
          "id": "baseRent",
          "label": "Current annual base rent",
          "kind": "number"
        },
        {
          "id": "escalationType",
          "label": "Escalation structure",
          "kind": "select"
        },
        {
          "id": "escalationPct",
          "label": "Escalation rate",
          "kind": "number"
        },
        {
          "id": "stepYears",
          "label": "Step interval (if periodic)",
          "kind": "number"
        },
        {
          "id": "leaseTerm",
          "label": "Remaining lease term",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "endingRent",
          "label": "Ending annual rent"
        },
        {
          "id": "cumulativeRent",
          "label": "Cumulative rent over term"
        },
        {
          "id": "avgAnnualGrowth",
          "label": "Average annual growth rate"
        },
        {
          "id": "totalGrowthPct",
          "label": "Total rent growth over term"
        }
      ]
    },
    {
      "slug": "ti-lc-amortization",
      "url": "https://www.revenuelab.fyi/toolbox/ti-lc-amortization",
      "title": "TI/LC Amortization Calculator",
      "category": "financial",
      "summary": "Amortize TI allowances and leasing commissions to find true effective rent.",
      "formula": "Total TI/LC cost = (TI $/sqft × sqft) + (Base rent × lease term × commission%); Amortized annual cost = Total TI/LC cost ÷ lease term years; Effective annual rent = Annual base rent − amortized annual cost.",
      "inputs": [
        {
          "id": "sqft",
          "label": "Leased square footage",
          "kind": "number"
        },
        {
          "id": "baseRentPsf",
          "label": "Base rent per sqft per year",
          "kind": "number"
        },
        {
          "id": "tiPsf",
          "label": "TI allowance per sqft",
          "kind": "number"
        },
        {
          "id": "leaseTermYears",
          "label": "Lease term",
          "kind": "number"
        },
        {
          "id": "commissionPct",
          "label": "Leasing commission (% of total lease value)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "effectiveRentPsf",
          "label": "Effective rent per sqft (net of TI/LC)"
        },
        {
          "id": "effectiveAnnualRent",
          "label": "Effective annual rent"
        },
        {
          "id": "totalLeasingCost",
          "label": "Total TI + commission cost"
        },
        {
          "id": "amortizedAnnualCost",
          "label": "Amortized annual TI/LC cost"
        },
        {
          "id": "annualBaseRent",
          "label": "Gross annual base rent"
        }
      ]
    },
    {
      "slug": "brrrr-rehab-budget-vs-arv",
      "url": "https://www.revenuelab.fyi/toolbox/brrrr-rehab-budget-vs-arv",
      "title": "BRRRR Rehab Budget vs ARV Calculator",
      "category": "financial",
      "summary": "Check whether your rehab spend is producing enough ARV lift to justify the cost.",
      "formula": "All-in cost = Purchase price + closing costs + rehab cost; Cost-to-ARV ratio = All-in cost ÷ ARV; Value created per rehab dollar = (ARV − purchase price − closing costs) ÷ rehab cost.",
      "inputs": [
        {
          "id": "purchasePrice",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "closingCosts",
          "label": "Acquisition closing costs",
          "kind": "number"
        },
        {
          "id": "rehabCost",
          "label": "Rehab budget",
          "kind": "number"
        },
        {
          "id": "arv",
          "label": "Projected ARV",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costToArvRatio",
          "label": "All-in cost as % of ARV"
        },
        {
          "id": "valuePerRehabDollar",
          "label": "Value created per rehab dollar"
        },
        {
          "id": "allInCost",
          "label": "Total all-in cost"
        },
        {
          "id": "marginToArv",
          "label": "Margin below ARV"
        }
      ]
    },
    {
      "slug": "syndication-sponsor-fee-load",
      "url": "https://www.revenuelab.fyi/toolbox/syndication-sponsor-fee-load",
      "title": "Syndication Sponsor Fee Load Calculator",
      "category": "financial",
      "summary": "Total up acquisition, asset management, and disposition fees an LP will pay a sponsor.",
      "formula": "Acquisition fee = Purchase price × acq fee%; Annual AM fee = Equity × AM fee% × hold years; Disposition fee = Sale price × disposition fee%; Total fee load = sum of all three.",
      "inputs": [
        {
          "id": "purchasePrice",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "acqFeePct",
          "label": "Acquisition fee",
          "kind": "number"
        },
        {
          "id": "totalEquity",
          "label": "Total equity raised",
          "kind": "number"
        },
        {
          "id": "amFeePct",
          "label": "Annual asset management fee",
          "kind": "number"
        },
        {
          "id": "holdYears",
          "label": "Hold period",
          "kind": "number"
        },
        {
          "id": "salePrice",
          "label": "Projected sale price",
          "kind": "number"
        },
        {
          "id": "dispositionFeePct",
          "label": "Disposition fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalFeeLoad",
          "label": "Total sponsor fee load over hold"
        },
        {
          "id": "acquisitionFee",
          "label": "Acquisition fee"
        },
        {
          "id": "totalAmFee",
          "label": "Total asset management fees"
        },
        {
          "id": "dispositionFee",
          "label": "Disposition fee"
        },
        {
          "id": "feeLoadPctOfEquity",
          "label": "Fee load as % of total equity"
        }
      ]
    },
    {
      "slug": "portfolio-refinance-blended-rate",
      "url": "https://www.revenuelab.fyi/toolbox/portfolio-refinance-blended-rate",
      "title": "Portfolio Refinance Blended Rate Calculator",
      "category": "financial",
      "summary": "Weighted-average rate across multiple loans and whether a blanket refi saves money.",
      "formula": "Blended rate = Σ(balance × rate) ÷ Σ(balance); Current annual interest = Σ(balance × rate); New annual interest = Total balance × new rate; Breakeven months = Closing costs ÷ (monthly interest savings).",
      "inputs": [
        {
          "id": "balance1",
          "label": "Loan 1 balance",
          "kind": "number"
        },
        {
          "id": "rate1",
          "label": "Loan 1 rate",
          "kind": "number"
        },
        {
          "id": "balance2",
          "label": "Loan 2 balance",
          "kind": "number"
        },
        {
          "id": "rate2",
          "label": "Loan 2 rate",
          "kind": "number"
        },
        {
          "id": "balance3",
          "label": "Loan 3 balance",
          "kind": "number"
        },
        {
          "id": "rate3",
          "label": "Loan 3 rate",
          "kind": "number"
        },
        {
          "id": "newRate",
          "label": "Proposed blanket refi rate",
          "kind": "number"
        },
        {
          "id": "refiClosingCosts",
          "label": "New loan closing costs",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "blendedRate",
          "label": "Current blended rate"
        },
        {
          "id": "annualSavings",
          "label": "Annual interest savings if refinanced"
        },
        {
          "id": "breakevenMonths",
          "label": "Breakeven period on closing costs"
        },
        {
          "id": "totalBalance",
          "label": "Total portfolio balance"
        },
        {
          "id": "currentAnnualInterest",
          "label": "Current total annual interest"
        }
      ]
    },
    {
      "slug": "gross-up-vacancy-noi-stress-test",
      "url": "https://www.revenuelab.fyi/toolbox/gross-up-vacancy-noi-stress-test",
      "title": "Vacancy Stress Test / NOI Sensitivity Calculator",
      "category": "financial",
      "summary": "See how NOI, DSCR, and cash flow hold up if vacancy or rent falls below projection.",
      "formula": "Stressed gross income = Base gross income × (1 − vacancy shock%) × (1 − rent decline%); Stressed NOI = Stressed gross income − operating expenses; Stressed DSCR = Stressed NOI ÷ annual debt service.",
      "inputs": [
        {
          "id": "baseGrossIncome",
          "label": "Base annual gross rental income",
          "kind": "number"
        },
        {
          "id": "operatingExpenses",
          "label": "Annual operating expenses",
          "kind": "number"
        },
        {
          "id": "annualDebtService",
          "label": "Annual debt service (P&I)",
          "kind": "number"
        },
        {
          "id": "vacancyShock",
          "label": "Additional vacancy stress",
          "kind": "number"
        },
        {
          "id": "rentDeclineShock",
          "label": "Rent decline stress",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "stressedDscr",
          "label": "Stressed DSCR"
        },
        {
          "id": "stressedNoi",
          "label": "Stressed NOI"
        },
        {
          "id": "baseDscr",
          "label": "Base-case DSCR"
        },
        {
          "id": "baseNoi",
          "label": "Base-case NOI"
        },
        {
          "id": "noiDropPct",
          "label": "NOI decline under stress"
        }
      ]
    },
    {
      "slug": "gp-co-invest-vs-lp-return",
      "url": "https://www.revenuelab.fyi/toolbox/gp-co-invest-vs-lp-return",
      "title": "GP Co-Invest vs LP-Only Return Calculator",
      "category": "financial",
      "summary": "Compare your blended return as both a co-investing GP and a passive LP in the same deal.",
      "formula": "GP co-invest return = pref + promote share, same as LP formula applied to GP's own capital; GP promote income = LP profit above pref × promote%; GP blended return % = (GP co-invest distribution + GP promote income) ÷ GP capital invested.",
      "inputs": [
        {
          "id": "lpCapital",
          "label": "LP capital invested",
          "kind": "number"
        },
        {
          "id": "gpCoinvestCapital",
          "label": "GP co-invest capital",
          "kind": "number"
        },
        {
          "id": "prefRate",
          "label": "Preferred return rate",
          "kind": "number"
        },
        {
          "id": "holdYears",
          "label": "Hold period",
          "kind": "number"
        },
        {
          "id": "totalProfit",
          "label": "Total distributable profit",
          "kind": "number"
        },
        {
          "id": "promotePct",
          "label": "GP promote above pref",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "gpBlendedReturnPct",
          "label": "GP blended total return (co-invest + promote)"
        },
        {
          "id": "lpReturnPct",
          "label": "LP-only total return"
        },
        {
          "id": "gpTotalDistribution",
          "label": "GP total dollar distribution"
        },
        {
          "id": "lpTotalDistribution",
          "label": "LP total dollar distribution"
        },
        {
          "id": "gpPromoteIncome",
          "label": "GP promote income only"
        }
      ]
    },
    {
      "slug": "opportunity-zone-deferral-benefit",
      "url": "https://www.revenuelab.fyi/toolbox/opportunity-zone-deferral-benefit",
      "title": "Opportunity Zone Deferral Benefit Calculator",
      "category": "financial",
      "summary": "Estimate tax deferral and potential exclusion benefit from a Qualified Opportunity Fund investment.",
      "formula": "Deferred tax = Original gain × tax rate, due at deferral deadline; QOF value at exit = Investment × (1+growth rate)^years; Tax-free appreciation = QOF value at exit − investment (if held 10+ years); Taxable-alternative value = (Investment × (1+growth rate)^years) taxed annually or at exit at capital gains rate for comparison.",
      "inputs": [
        {
          "id": "originalGain",
          "label": "Original capital gain invested into QOF",
          "kind": "number"
        },
        {
          "id": "capGainsRate",
          "label": "Capital gains tax rate",
          "kind": "number"
        },
        {
          "id": "growthRate",
          "label": "Expected annual appreciation of QOF investment",
          "kind": "number"
        },
        {
          "id": "holdYears",
          "label": "Years held in QOF",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "taxSavedOnAppreciation",
          "label": "Tax saved on appreciation (10yr+ hold)"
        },
        {
          "id": "qofValueAtExit",
          "label": "QOF investment value at exit"
        },
        {
          "id": "deferredTax",
          "label": "Deferred tax due (on original gain)"
        },
        {
          "id": "appreciation",
          "label": "Total appreciation earned"
        },
        {
          "id": "totalBenefitVsTaxable",
          "label": "Total benefit vs. taxable investment"
        }
      ]
    },
    {
      "slug": "sec-1250-vs-1245-property-split",
      "url": "https://www.revenuelab.fyi/toolbox/sec-1250-vs-1245-property-split",
      "title": "1245 vs 1250 Property Split Calculator",
      "category": "financial",
      "summary": "Separate personal property (1245) from real property (1250) recapture exposure.",
      "formula": "1245 depreciation = Total depreciation × reclassified%; 1250 depreciation = Total depreciation × (1 − reclassified%); 1245 tax = 1245 depreciation × ordinary rate; 1250 tax = 1250 depreciation × 25%.",
      "inputs": [
        {
          "id": "totalDepreciation",
          "label": "Total depreciation claimed",
          "kind": "number"
        },
        {
          "id": "reclassPct",
          "label": "% of depreciation from reclassified (1245) assets",
          "kind": "number"
        },
        {
          "id": "ordinaryRate",
          "label": "Your ordinary income tax rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalRecaptureTax",
          "label": "Total recapture tax due"
        },
        {
          "id": "tax1245",
          "label": "Section 1245 tax (ordinary rate)"
        },
        {
          "id": "tax1250",
          "label": "Section 1250 tax (25% cap)"
        },
        {
          "id": "depr1245",
          "label": "1245 depreciation amount"
        },
        {
          "id": "depr1250",
          "label": "1250 depreciation amount"
        }
      ]
    },
    {
      "slug": "str-cash-on-cash-vs-ltr",
      "url": "https://www.revenuelab.fyi/toolbox/str-cash-on-cash-vs-ltr",
      "title": "Short-Term Rental vs Long-Term Rental Cash Flow Calculator",
      "category": "financial",
      "summary": "Compare short-term rental cash flow (net of higher expenses) against a long-term lease.",
      "formula": "STR gross revenue = ADR × 365 × occupancy%; STR net = STR gross revenue × (1 − STR expense ratio) − mortgage; LTR net = Monthly rent × 12 × (1 − LTR expense ratio) − mortgage.",
      "inputs": [
        {
          "id": "adr",
          "label": "STR average daily rate",
          "kind": "number"
        },
        {
          "id": "occupancyPct",
          "label": "STR occupancy rate",
          "kind": "number"
        },
        {
          "id": "strExpenseRatio",
          "label": "STR expense ratio (mgmt, cleaning, supplies, platform fees, utilities)",
          "kind": "number"
        },
        {
          "id": "ltrMonthlyRent",
          "label": "Comparable long-term monthly rent",
          "kind": "number"
        },
        {
          "id": "ltrExpenseRatio",
          "label": "LTR expense ratio (mgmt, maintenance, vacancy)",
          "kind": "number"
        },
        {
          "id": "monthlyMortgage",
          "label": "Monthly mortgage payment (same for both scenarios)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netAdvantageStr",
          "label": "STR net advantage over LTR (annual)"
        },
        {
          "id": "strNet",
          "label": "STR annual net cash flow"
        },
        {
          "id": "ltrNet",
          "label": "LTR annual net cash flow"
        },
        {
          "id": "strGrossRevenue",
          "label": "STR gross annual revenue"
        },
        {
          "id": "ltrGrossRevenue",
          "label": "LTR gross annual revenue"
        }
      ]
    },
    {
      "slug": "espresso-shot-cost",
      "url": "https://www.revenuelab.fyi/toolbox/espresso-shot-cost",
      "title": "Cost Per Espresso Shot Calculator",
      "category": "financial",
      "summary": "True cost of a single or double shot from bean price to cup.",
      "formula": "Shot cost = (dose grams + waste grams) ÷ 453.6 × cost per lb. Drink cost = shot cost × shots + milk cost + cup/lid cost.",
      "inputs": [
        {
          "id": "doseG",
          "label": "Dose per shot",
          "kind": "number"
        },
        {
          "id": "shots",
          "label": "Shots per drink",
          "kind": "number"
        },
        {
          "id": "wasteG",
          "label": "Grind/purge waste per shot",
          "kind": "number"
        },
        {
          "id": "beanCostLb",
          "label": "Roasted bean cost per lb",
          "kind": "number"
        },
        {
          "id": "milkCost",
          "label": "Milk & syrup cost per drink",
          "kind": "number"
        },
        {
          "id": "cupCost",
          "label": "Cup, lid, sleeve cost",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Menu price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "drinkCost",
          "label": "Total drink cost"
        },
        {
          "id": "shotCost",
          "label": "Cost per single shot"
        },
        {
          "id": "espressoCost",
          "label": "Espresso cost for this drink"
        },
        {
          "id": "margin",
          "label": "Gross margin per drink"
        },
        {
          "id": "marginPct",
          "label": "Margin percent"
        },
        {
          "id": "shotsPerLb",
          "label": "Shots per pound of beans"
        }
      ]
    },
    {
      "slug": "milk-steaming-waste-cost",
      "url": "https://www.revenuelab.fyi/toolbox/milk-steaming-waste-cost",
      "title": "Milk Waste & Steaming Cost Calculator",
      "category": "financial",
      "summary": "What overfilling pitchers and dumping cold milk actually costs per month.",
      "formula": "Daily waste cost = drinks/day × waste oz per drink × cost per oz; monthly = daily × 30.4.",
      "inputs": [
        {
          "id": "drinksDay",
          "label": "Milk-based drinks per day",
          "kind": "number"
        },
        {
          "id": "wasteOz",
          "label": "Average milk waste per drink",
          "kind": "number"
        },
        {
          "id": "milkCostGal",
          "label": "Dairy milk cost per gallon",
          "kind": "number"
        },
        {
          "id": "altShare",
          "label": "Share of drinks using alt-milk",
          "kind": "number"
        },
        {
          "id": "altCostGal",
          "label": "Alt-milk cost per gallon",
          "kind": "number"
        },
        {
          "id": "altUpcharge",
          "label": "Alt-milk upcharge you collect",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthlyWasteCost",
          "label": "Monthly milk waste cost"
        },
        {
          "id": "dailyWasteCost",
          "label": "Daily milk waste cost"
        },
        {
          "id": "annualWasteCost",
          "label": "Annual milk waste cost"
        },
        {
          "id": "altExtraCostPerDrink",
          "label": "Extra cost of alt-milk per 8oz drink"
        },
        {
          "id": "upchargeGap",
          "label": "Upcharge surplus/shortfall vs real cost"
        }
      ]
    },
    {
      "slug": "roast-loss-wholesale-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/roast-loss-wholesale-pricing",
      "title": "Roast Shrinkage Wholesale Pricing Calculator",
      "category": "financial",
      "summary": "Price wholesale coffee bags correctly after roast shrinkage eats your yield.",
      "formula": "Green needed = roasted weight ÷ (1 − shrinkage%). Total cost = green cost + roasting cost + packaging + freight. Wholesale price = total cost ÷ (1 − target margin%).",
      "inputs": [
        {
          "id": "bagWeightOz",
          "label": "Roasted bag weight",
          "kind": "number"
        },
        {
          "id": "shrinkPct",
          "label": "Roast weight loss (shrinkage)",
          "kind": "number"
        },
        {
          "id": "greenCostLb",
          "label": "Green coffee cost per lb",
          "kind": "number"
        },
        {
          "id": "roastCostLb",
          "label": "Roasting labor + energy per roasted lb",
          "kind": "number"
        },
        {
          "id": "packagingBag",
          "label": "Bag, valve, label cost",
          "kind": "number"
        },
        {
          "id": "freightBag",
          "label": "Freight/delivery cost per bag",
          "kind": "number"
        },
        {
          "id": "marginPct",
          "label": "Target wholesale margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "wholesalePrice",
          "label": "Wholesale price per bag"
        },
        {
          "id": "totalCost",
          "label": "Total cost per bag"
        },
        {
          "id": "greenNeededLb",
          "label": "Green coffee needed per bag"
        },
        {
          "id": "greenCost",
          "label": "Green coffee cost per bag"
        },
        {
          "id": "profitPerBag",
          "label": "Profit per bag"
        }
      ]
    },
    {
      "slug": "bakery-batch-yield-cost",
      "url": "https://www.revenuelab.fyi/toolbox/bakery-batch-yield-cost",
      "title": "Bakery Batch Yield Cost Calculator",
      "category": "financial",
      "summary": "Cost per finished unit from a batch, accounting for trim and reject loss.",
      "formula": "Sellable units = batch yield × (1 − loss%). Cost per unit = (ingredient cost + labor cost) ÷ sellable units.",
      "inputs": [
        {
          "id": "batchYield",
          "label": "Theoretical batch yield (units)",
          "kind": "number"
        },
        {
          "id": "lossPct",
          "label": "Trim/reject loss",
          "kind": "number"
        },
        {
          "id": "ingredientCost",
          "label": "Total ingredient cost for batch",
          "kind": "number"
        },
        {
          "id": "laborHours",
          "label": "Labor hours for batch",
          "kind": "number"
        },
        {
          "id": "laborRate",
          "label": "Labor cost per hour",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Retail price per unit",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerUnit",
          "label": "Real cost per sellable unit"
        },
        {
          "id": "sellable",
          "label": "Sellable units after loss"
        },
        {
          "id": "laborCost",
          "label": "Labor cost for batch"
        },
        {
          "id": "marginPerUnit",
          "label": "Margin per unit at your price"
        },
        {
          "id": "batchProfit",
          "label": "Total batch profit"
        }
      ]
    },
    {
      "slug": "bakery-recipe-scaling",
      "url": "https://www.revenuelab.fyi/toolbox/bakery-recipe-scaling",
      "title": "Bakery Recipe Scaling Calculator",
      "category": "math",
      "summary": "Scale any bakery recipe up or down to a target yield with cost recalculated.",
      "formula": "Scale factor = target yield ÷ current yield. New ingredient cost = current cost × scale factor. New cost/unit = new cost ÷ target yield.",
      "inputs": [
        {
          "id": "currentYield",
          "label": "Current recipe yield",
          "kind": "number"
        },
        {
          "id": "targetYield",
          "label": "Target yield",
          "kind": "number"
        },
        {
          "id": "currentCost",
          "label": "Current recipe ingredient cost",
          "kind": "number"
        },
        {
          "id": "fixedLaborMin",
          "label": "Fixed labor minutes (mixing/setup, doesn't scale)",
          "kind": "number"
        },
        {
          "id": "variableLaborMinUnit",
          "label": "Variable labor minutes per unit (portioning/baking)",
          "kind": "number"
        },
        {
          "id": "laborRate",
          "label": "Labor cost per hour",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "scaleFactor",
          "label": "Scaling multiplier"
        },
        {
          "id": "newCost",
          "label": "New ingredient cost"
        },
        {
          "id": "laborCost",
          "label": "Total labor cost at new scale"
        },
        {
          "id": "totalCost",
          "label": "Total batch cost"
        },
        {
          "id": "costPerUnit",
          "label": "Cost per unit at new scale"
        }
      ]
    },
    {
      "slug": "brewery-batch-cost-barrel",
      "url": "https://www.revenuelab.fyi/toolbox/brewery-batch-cost-barrel",
      "title": "Brewery Batch Cost Per Barrel Calculator",
      "category": "financial",
      "summary": "Ingredient, labor, and packaging cost per barrel for a brew batch.",
      "formula": "Barrels produced = batch volume gal × (1 − loss%) ÷ 31. Cost per barrel = (ingredient + labor + utility cost) ÷ barrels produced.",
      "inputs": [
        {
          "id": "batchGal",
          "label": "Batch volume (kettle/pre-loss)",
          "kind": "number"
        },
        {
          "id": "lossPct",
          "label": "Brewhouse & transfer loss",
          "kind": "number"
        },
        {
          "id": "ingredientCost",
          "label": "Malt, hops, yeast, adjuncts cost",
          "kind": "number"
        },
        {
          "id": "laborCost",
          "label": "Brew day labor cost",
          "kind": "number"
        },
        {
          "id": "utilityCost",
          "label": "Water, gas, electric per batch",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerBbl",
          "label": "Cost per barrel"
        },
        {
          "id": "barrels",
          "label": "Barrels produced"
        },
        {
          "id": "totalCost",
          "label": "Total batch cost"
        },
        {
          "id": "costPerGal",
          "label": "Cost per gallon"
        },
        {
          "id": "costPer16oz",
          "label": "Cost per 16oz pour"
        }
      ]
    },
    {
      "slug": "keg-vs-can-margin",
      "url": "https://www.revenuelab.fyi/toolbox/keg-vs-can-margin",
      "title": "Keg vs Can Margin Calculator",
      "category": "financial",
      "summary": "Compare profit per barrel between kegging and canning the same batch.",
      "formula": "Keg profit/bbl = keg wholesale price × kegs/bbl − packaging cost/bbl. Can profit/bbl = case wholesale price × cases/bbl − packaging cost/bbl.",
      "inputs": [
        {
          "id": "kegPrice",
          "label": "Wholesale price per 1/2 bbl keg",
          "kind": "number"
        },
        {
          "id": "kegPackaging",
          "label": "Keg packaging cost (deposit, CO2, cleaning)",
          "kind": "number"
        },
        {
          "id": "casePrice",
          "label": "Wholesale price per case (24×12oz)",
          "kind": "number"
        },
        {
          "id": "casePackaging",
          "label": "Can/case packaging cost",
          "kind": "number"
        },
        {
          "id": "productionCostBbl",
          "label": "Production cost per barrel (from batch cost)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "kegProfit",
          "label": "Keg profit per barrel"
        },
        {
          "id": "canProfit",
          "label": "Can profit per barrel"
        },
        {
          "id": "diff",
          "label": "Profit difference (keg − can)"
        },
        {
          "id": "better",
          "label": "More profitable channel"
        },
        {
          "id": "casesPerBbl",
          "label": "Cases per barrel"
        }
      ]
    },
    {
      "slug": "taproom-pour-cost-glass",
      "url": "https://www.revenuelab.fyi/toolbox/taproom-pour-cost-glass",
      "title": "Taproom Pour Cost Calculator",
      "category": "financial",
      "summary": "Cost per glass poured from a keg and the price to hit your target pour cost.",
      "formula": "Cost per oz = cost per barrel ÷ 3968 oz. Cost per pour = cost per oz × glass oz × (1 + spillage%). Target price = cost per pour ÷ target pour cost%.",
      "inputs": [
        {
          "id": "costPerBbl",
          "label": "Production cost per barrel",
          "kind": "number"
        },
        {
          "id": "glassOz",
          "label": "Glass size",
          "kind": "number"
        },
        {
          "id": "spillagePct",
          "label": "Foam & spillage loss",
          "kind": "number"
        },
        {
          "id": "targetPourCost",
          "label": "Target pour cost",
          "kind": "number"
        },
        {
          "id": "currentPrice",
          "label": "Current menu price for this pour",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "targetPrice",
          "label": "Price to hit target pour cost"
        },
        {
          "id": "costPerPour",
          "label": "Cost per pour (incl. spillage)"
        },
        {
          "id": "actualPourCostPct",
          "label": "Actual pour cost at current price"
        },
        {
          "id": "pourGap",
          "label": "Underpriced by (vs target)"
        },
        {
          "id": "costPerOz",
          "label": "Raw cost per ounce"
        }
      ]
    },
    {
      "slug": "brewery-excise-tax-barrel",
      "url": "https://www.revenuelab.fyi/toolbox/brewery-excise-tax-barrel",
      "title": "Brewery Excise Tax Per Barrel Calculator",
      "category": "financial",
      "summary": "Federal excise tax owed per barrel based on annual production tier.",
      "formula": "Barrels ≤60,000: $3.50/bbl. Barrels 60,001–2,000,000: $16/bbl. Above 2,000,000 (or without small producer allowance): $18/bbl. Total = sum across tiers.",
      "inputs": [
        {
          "id": "annualBbl",
          "label": "Annual barrels produced",
          "kind": "number"
        },
        {
          "id": "qualifiesSmall",
          "label": "Qualifies as small producer (under 2M bbl/yr nationally, affiliated)",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "tax",
          "label": "Estimated annual federal excise tax"
        },
        {
          "id": "effectiveRate",
          "label": "Blended effective rate per barrel"
        },
        {
          "id": "monthlyEstimate",
          "label": "Estimated monthly liability"
        },
        {
          "id": "semiMonthlyEstimate",
          "label": "Estimated semi-monthly liability"
        }
      ]
    },
    {
      "slug": "winery-bottle-cogs",
      "url": "https://www.revenuelab.fyi/toolbox/winery-bottle-cogs",
      "title": "Winery Bottle COGS Calculator",
      "category": "financial",
      "summary": "Full landed cost per bottle from grapes through packaging to the cellar door.",
      "formula": "Gallons of wine = tons × gal/ton × (1 − loss%). Bottles = gallons ÷ 0.198 (gal per 750ml bottle). Cost/bottle = (grape cost + packaging×bottles + aging carry cost) ÷ bottles.",
      "inputs": [
        {
          "id": "tons",
          "label": "Tons of grapes crushed",
          "kind": "number"
        },
        {
          "id": "costPerTon",
          "label": "Grape cost per ton",
          "kind": "number"
        },
        {
          "id": "galPerTon",
          "label": "Gallons of wine per ton",
          "kind": "number"
        },
        {
          "id": "lossPct",
          "label": "Racking/fining/filtration loss",
          "kind": "number"
        },
        {
          "id": "packagingBottle",
          "label": "Glass, cork, capsule, label, case share",
          "kind": "number"
        },
        {
          "id": "agingCarryCost",
          "label": "Aging carrying cost per bottle (interest/opportunity)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerBottle",
          "label": "Cost per 750ml bottle"
        },
        {
          "id": "bottles",
          "label": "Bottles produced"
        },
        {
          "id": "casesProduced",
          "label": "Cases produced (12/case)"
        },
        {
          "id": "totalCost",
          "label": "Total cost of goods"
        },
        {
          "id": "grapeCost",
          "label": "Grape cost portion"
        }
      ]
    },
    {
      "slug": "wine-grape-to-bottle-yield",
      "url": "https://www.revenuelab.fyi/toolbox/wine-grape-to-bottle-yield",
      "title": "Grape to Bottle Yield Calculator",
      "category": "math",
      "summary": "How many bottles a given grape harvest will actually produce.",
      "formula": "Net gallons = tons × gal/ton × (1 − loss%). Bottles = net gallons ÷ 0.198. Cases = bottles ÷ 12.",
      "inputs": [
        {
          "id": "tons",
          "label": "Tons of grapes",
          "kind": "number"
        },
        {
          "id": "galPerTon",
          "label": "Expected gallons per ton",
          "kind": "number"
        },
        {
          "id": "lossPct",
          "label": "Process loss (racking/fining/filtration)",
          "kind": "number"
        },
        {
          "id": "bottleSizeMl",
          "label": "Bottle size",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "bottles",
          "label": "Finished bottles"
        },
        {
          "id": "cases",
          "label": "Cases (12-bottle equivalent)"
        },
        {
          "id": "netGal",
          "label": "Net finished gallons"
        },
        {
          "id": "grossGal",
          "label": "Gross juice gallons before loss"
        }
      ]
    },
    {
      "slug": "distillery-proof-gallon-tax",
      "url": "https://www.revenuelab.fyi/toolbox/distillery-proof-gallon-tax",
      "title": "Distillery Proof Gallon Excise Tax Calculator",
      "category": "financial",
      "summary": "Convert wine gallons and proof to taxable proof gallons and federal tax owed.",
      "formula": "Proof gallons = wine gallons × (proof ÷ 100). Tax tiers: $2.70/PG up to 100,000 PG (small distiller), $13.34/PG next tier, $13.50/PG above ~22.23M PG.",
      "inputs": [
        {
          "id": "wineGallons",
          "label": "Wine gallons removed (annual)",
          "kind": "number"
        },
        {
          "id": "proof",
          "label": "Proof (e.g. 80 proof = 40% ABV)",
          "kind": "number"
        },
        {
          "id": "smallDistiller",
          "label": "Eligible for small distiller reduced rate",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "tax",
          "label": "Estimated federal excise tax"
        },
        {
          "id": "proofGallons",
          "label": "Total proof gallons"
        },
        {
          "id": "effectiveRatePerWineGal",
          "label": "Effective tax per wine gallon"
        }
      ]
    },
    {
      "slug": "distillery-mash-bottle-yield",
      "url": "https://www.revenuelab.fyi/toolbox/distillery-mash-bottle-yield",
      "title": "Distillery Mash to Bottle Yield Calculator",
      "category": "financial",
      "summary": "Bottles produced and cost per bottle from a mash bill through distillation loss.",
      "formula": "Diluted gallons = hearts gallons × (still proof ÷ bottle proof). Bottles = diluted gallons ÷ 0.198 × (1 − barrel loss%). Cost/bottle = total cost ÷ bottles.",
      "inputs": [
        {
          "id": "heartsGal",
          "label": "Hearts (finished spirit) collected",
          "kind": "number"
        },
        {
          "id": "stillProof",
          "label": "Proof off the still (hearts)",
          "kind": "number"
        },
        {
          "id": "bottleProof",
          "label": "Target bottle proof",
          "kind": "number"
        },
        {
          "id": "barrelLossPct",
          "label": "Barrel aging loss (angel's share), if aged",
          "kind": "number"
        },
        {
          "id": "productionCost",
          "label": "Total production cost (grain, labor, barrel, energy)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "bottles",
          "label": "Bottles produced"
        },
        {
          "id": "costPerBottle",
          "label": "Production cost per bottle"
        },
        {
          "id": "finalGal",
          "label": "Final gallons after proofing & aging loss"
        },
        {
          "id": "cases",
          "label": "Cases produced"
        }
      ]
    },
    {
      "slug": "farmers-market-booth-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/farmers-market-booth-breakeven",
      "title": "Farmers Market Booth Breakeven Calculator",
      "category": "financial",
      "summary": "How much you need to sell per market day to cover the booth and come out ahead.",
      "formula": "Total day cost = stall fee + mileage cost + labor cost + unsold loss. Breakeven revenue = total day cost ÷ margin%.",
      "inputs": [
        {
          "id": "stallFee",
          "label": "Stall/booth fee",
          "kind": "number"
        },
        {
          "id": "miles",
          "label": "Round-trip miles",
          "kind": "number"
        },
        {
          "id": "mileRate",
          "label": "Vehicle cost per mile",
          "kind": "number"
        },
        {
          "id": "laborHours",
          "label": "Total labor hours (setup+sell+teardown)",
          "kind": "number"
        },
        {
          "id": "laborRate",
          "label": "Labor cost per hour",
          "kind": "number"
        },
        {
          "id": "unsoldLoss",
          "label": "Estimated unsold/sample product loss",
          "kind": "number"
        },
        {
          "id": "marginPct",
          "label": "Average gross margin on products",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenRevenue",
          "label": "Breakeven sales revenue"
        },
        {
          "id": "totalDayCost",
          "label": "Total cost of the market day"
        },
        {
          "id": "laborCost",
          "label": "Labor cost for the day"
        },
        {
          "id": "mileageCost",
          "label": "Vehicle/mileage cost"
        }
      ]
    },
    {
      "slug": "cottage-food-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/cottage-food-pricing",
      "title": "Cottage Food Pricing Calculator",
      "category": "financial",
      "summary": "Price homemade jams, baked goods, and cottage-licensed food to actually profit.",
      "formula": "Fixed cost per unit = annual fixed costs ÷ annual unit volume. Total cost = ingredient + labor + packaging + fixed allocation. Price = total cost ÷ (1 − target margin%).",
      "inputs": [
        {
          "id": "ingredientCost",
          "label": "Ingredient cost per unit",
          "kind": "number"
        },
        {
          "id": "laborMin",
          "label": "Labor minutes per unit",
          "kind": "number"
        },
        {
          "id": "laborRate",
          "label": "Labor value per hour",
          "kind": "number"
        },
        {
          "id": "packagingCost",
          "label": "Jar/label/packaging cost per unit",
          "kind": "number"
        },
        {
          "id": "annualFixed",
          "label": "Annual fixed cost (insurance, permits, fees)",
          "kind": "number"
        },
        {
          "id": "annualUnits",
          "label": "Expected annual units sold",
          "kind": "number"
        },
        {
          "id": "marginPct",
          "label": "Target margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Price per unit"
        },
        {
          "id": "totalCost",
          "label": "Total real cost per unit"
        },
        {
          "id": "laborCost",
          "label": "Labor cost per unit"
        },
        {
          "id": "fixedPerUnit",
          "label": "Fixed cost allocation per unit"
        },
        {
          "id": "profitPerUnit",
          "label": "Profit per unit at this price"
        }
      ]
    },
    {
      "slug": "wholesale-retail-channel-split",
      "url": "https://www.revenuelab.fyi/toolbox/wholesale-retail-channel-split",
      "title": "Wholesale vs Retail Channel Split Calculator",
      "category": "financial",
      "summary": "Compare blended profit when splitting production between wholesale and direct retail.",
      "formula": "Wholesale profit = wholesale units × (wholesale price − unit cost). Retail profit = retail units × (retail price − unit cost). Blended margin = total profit ÷ total revenue.",
      "inputs": [
        {
          "id": "totalUnits",
          "label": "Total monthly production capacity (units)",
          "kind": "number"
        },
        {
          "id": "wholesaleShare",
          "label": "Share sold wholesale",
          "kind": "number"
        },
        {
          "id": "unitCost",
          "label": "Cost per unit (same for both channels)",
          "kind": "number"
        },
        {
          "id": "wholesalePrice",
          "label": "Wholesale price per unit",
          "kind": "number"
        },
        {
          "id": "retailPrice",
          "label": "Retail price per unit",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalProfit",
          "label": "Total blended monthly profit"
        },
        {
          "id": "wholesaleProfit",
          "label": "Wholesale channel profit"
        },
        {
          "id": "retailProfit",
          "label": "Retail channel profit"
        },
        {
          "id": "blendedMarginPct",
          "label": "Blended margin percent"
        },
        {
          "id": "allRetailProfit",
          "label": "Profit if 100% sold retail (capacity permitting)"
        }
      ]
    },
    {
      "slug": "bakery-shelf-life-waste",
      "url": "https://www.revenuelab.fyi/toolbox/bakery-shelf-life-waste",
      "title": "Bakery Shelf-Life Waste Calculator",
      "category": "financial",
      "summary": "The real dollar cost of unsold bread and pastries going stale each week.",
      "formula": "Unsold units = daily production × (1 − sell-through%). Waste cost = unsold units × unit cost × (1 − recovery% from markdown/donation). Weekly waste cost = daily × 7.",
      "inputs": [
        {
          "id": "dailyProduction",
          "label": "Daily units produced",
          "kind": "number"
        },
        {
          "id": "sellThroughPct",
          "label": "Sell-through rate",
          "kind": "number"
        },
        {
          "id": "unitCost",
          "label": "Cost per unit",
          "kind": "number"
        },
        {
          "id": "recoveryPct",
          "label": "Value recovered from markdowns/donation tax credit",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "weeklyWasteCost",
          "label": "Weekly shelf-life waste cost"
        },
        {
          "id": "dailyWasteCost",
          "label": "Daily waste cost"
        },
        {
          "id": "annualWasteCost",
          "label": "Annual waste cost"
        },
        {
          "id": "unsold",
          "label": "Unsold units per day"
        },
        {
          "id": "targetSellThroughForHalf",
          "label": "Sell-through needed to halve waste cost"
        }
      ]
    },
    {
      "slug": "cafe-daily-breakeven-cups",
      "url": "https://www.revenuelab.fyi/toolbox/cafe-daily-breakeven-cups",
      "title": "Coffee Shop Daily Breakeven Calculator",
      "category": "financial",
      "summary": "How many cups per day it takes to cover rent, payroll, and overhead.",
      "formula": "Breakeven cups = daily fixed cost ÷ contribution margin per cup. Cups for target profit = (fixed cost + target profit) ÷ contribution margin.",
      "inputs": [
        {
          "id": "dailyFixedCost",
          "label": "Daily fixed cost (rent, payroll, overhead ÷ days open)",
          "kind": "number"
        },
        {
          "id": "avgTicket",
          "label": "Average ticket price",
          "kind": "number"
        },
        {
          "id": "avgCogsPct",
          "label": "Average COGS as % of ticket",
          "kind": "number"
        },
        {
          "id": "targetDailyProfit",
          "label": "Target daily profit",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenCups",
          "label": "Cups needed to break even"
        },
        {
          "id": "cupsForTarget",
          "label": "Cups needed for target profit"
        },
        {
          "id": "contributionMargin",
          "label": "Contribution margin per drink"
        },
        {
          "id": "breakevenRevenue",
          "label": "Breakeven daily revenue"
        }
      ]
    },
    {
      "slug": "craft-cider-batch-cost",
      "url": "https://www.revenuelab.fyi/toolbox/craft-cider-batch-cost",
      "title": "Craft Cider Batch Cost Calculator",
      "category": "financial",
      "summary": "Cost per bottle or can for a cider batch from apple juice through packaging.",
      "formula": "Net gallons = batch gallons × (1 − loss%). Units = net gallons × 128 ÷ container oz. Cost/unit = (juice cost + packaging cost×units + labor) ÷ units.",
      "inputs": [
        {
          "id": "batchGal",
          "label": "Batch volume (juice in)",
          "kind": "number"
        },
        {
          "id": "juiceCostGal",
          "label": "Juice cost per gallon",
          "kind": "number"
        },
        {
          "id": "lossPct",
          "label": "Fermentation & racking loss",
          "kind": "number"
        },
        {
          "id": "containerOz",
          "label": "Package size",
          "kind": "select"
        },
        {
          "id": "packagingUnit",
          "label": "Packaging cost per unit",
          "kind": "number"
        },
        {
          "id": "laborCost",
          "label": "Total labor cost for batch",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerUnit",
          "label": "Cost per unit"
        },
        {
          "id": "units",
          "label": "Units produced"
        },
        {
          "id": "totalCost",
          "label": "Total batch cost"
        },
        {
          "id": "juiceCost",
          "label": "Juice cost portion"
        }
      ]
    },
    {
      "slug": "syrup-recipe-costing",
      "url": "https://www.revenuelab.fyi/toolbox/syrup-recipe-costing",
      "title": "Specialty Syrup & Flavor Recipe Cost Calculator",
      "category": "financial",
      "summary": "Cost per pump and per drink for house-made syrups and flavor bases.",
      "formula": "Cost per oz = batch cost ÷ batch yield oz. Cost per pump = cost per oz × 0.25. Cost per drink = cost per pump × pumps used.",
      "inputs": [
        {
          "id": "batchCost",
          "label": "Total ingredient cost for batch",
          "kind": "number"
        },
        {
          "id": "batchYieldOz",
          "label": "Batch yield",
          "kind": "number"
        },
        {
          "id": "laborMinBatch",
          "label": "Labor minutes to make batch",
          "kind": "number"
        },
        {
          "id": "laborRate",
          "label": "Labor cost per hour",
          "kind": "number"
        },
        {
          "id": "pumpsPerDrink",
          "label": "Pumps used per drink",
          "kind": "number"
        },
        {
          "id": "purchasedCostOz",
          "label": "Comparable purchased syrup cost per oz",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerDrink",
          "label": "House-made syrup cost per drink"
        },
        {
          "id": "costPerOz",
          "label": "Cost per ounce"
        },
        {
          "id": "costPerPump",
          "label": "Cost per pump (0.25oz)"
        },
        {
          "id": "savingsPerDrink",
          "label": "Savings vs purchased syrup per drink"
        }
      ]
    },
    {
      "slug": "mead-batch-cost",
      "url": "https://www.revenuelab.fyi/toolbox/mead-batch-cost",
      "title": "Meadery Batch Cost Calculator",
      "category": "financial",
      "summary": "Cost per bottle for a mead batch from honey cost through bottling.",
      "formula": "Net gallons = batch gallons × (1 − loss%). Bottles = net gallons ÷ 0.198. Cost/bottle = (honey cost + other ingredients + packaging×bottles + labor) ÷ bottles.",
      "inputs": [
        {
          "id": "honeyLb",
          "label": "Pounds of honey used",
          "kind": "number"
        },
        {
          "id": "honeyCostLb",
          "label": "Honey cost per lb",
          "kind": "number"
        },
        {
          "id": "batchGal",
          "label": "Batch volume",
          "kind": "number"
        },
        {
          "id": "lossPct",
          "label": "Fermentation & racking loss",
          "kind": "number"
        },
        {
          "id": "otherIngredients",
          "label": "Fruit, spices, other additive cost",
          "kind": "number"
        },
        {
          "id": "packagingBottle",
          "label": "Bottle, cork, label cost per bottle",
          "kind": "number"
        },
        {
          "id": "laborCost",
          "label": "Total labor cost for batch",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerBottle",
          "label": "Cost per 750ml bottle"
        },
        {
          "id": "bottles",
          "label": "Bottles produced"
        },
        {
          "id": "totalCost",
          "label": "Total batch cost"
        },
        {
          "id": "honeyShare",
          "label": "Honey as % of total cost"
        }
      ]
    },
    {
      "slug": "green-coffee-landed-cost",
      "url": "https://www.revenuelab.fyi/toolbox/green-coffee-landed-cost",
      "title": "Green Coffee Landed Cost Calculator",
      "category": "financial",
      "summary": "True cost per pound of green coffee after freight, customs, and financing.",
      "formula": "Landed cost/lb = base price/lb + freight/lb + duty/lb + handling/lb + financing cost/lb.",
      "inputs": [
        {
          "id": "basePriceLb",
          "label": "Base green coffee price per lb",
          "kind": "number"
        },
        {
          "id": "freightTotal",
          "label": "Total freight cost for shipment",
          "kind": "number"
        },
        {
          "id": "shipmentLb",
          "label": "Shipment size",
          "kind": "number"
        },
        {
          "id": "dutyPct",
          "label": "Import duty rate",
          "kind": "number"
        },
        {
          "id": "handlingLb",
          "label": "Broker, warehouse, handling per lb",
          "kind": "number"
        },
        {
          "id": "financingPct",
          "label": "Financing/interest cost on inventory",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "landedCostLb",
          "label": "True landed cost per lb"
        },
        {
          "id": "freightPerLb",
          "label": "Freight cost per lb"
        },
        {
          "id": "dutyPerLb",
          "label": "Duty cost per lb"
        },
        {
          "id": "markupOverBase",
          "label": "Total markup over base price"
        }
      ]
    },
    {
      "slug": "jam-preserves-batch-cost",
      "url": "https://www.revenuelab.fyi/toolbox/jam-preserves-batch-cost",
      "title": "Jam & Preserves Batch Cost Calculator",
      "category": "financial",
      "summary": "Cost per jar for small-batch jam, jelly, or preserves accounting for cook-down loss.",
      "formula": "Finished volume = starting volume × (1 − cook-down loss%). Jars = finished volume ÷ jar size. Cost/jar = (ingredient cost + packaging×jars + labor) ÷ jars.",
      "inputs": [
        {
          "id": "startVolumeCups",
          "label": "Starting fruit + sugar volume",
          "kind": "number"
        },
        {
          "id": "cookdownLossPct",
          "label": "Cook-down volume loss",
          "kind": "number"
        },
        {
          "id": "ingredientCost",
          "label": "Total ingredient cost for batch",
          "kind": "number"
        },
        {
          "id": "jarSizeOz",
          "label": "Jar size",
          "kind": "select"
        },
        {
          "id": "jarPackagingCost",
          "label": "Jar, lid, label cost per jar",
          "kind": "number"
        },
        {
          "id": "laborCost",
          "label": "Total labor cost for batch",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerJar",
          "label": "Cost per jar"
        },
        {
          "id": "jars",
          "label": "Jars produced"
        },
        {
          "id": "totalCost",
          "label": "Total batch cost"
        },
        {
          "id": "finishedCups",
          "label": "Finished jam volume (cups)"
        }
      ]
    },
    {
      "slug": "brewery-taproom-vs-distribution-margin",
      "url": "https://www.revenuelab.fyi/toolbox/brewery-taproom-vs-distribution-margin",
      "title": "Taproom vs Distribution Margin Calculator",
      "category": "financial",
      "summary": "Compare profit per barrel selling direct in the taproom versus through a distributor.",
      "formula": "Taproom revenue/bbl = pours/bbl × pour price − taproom overhead/bbl. Distribution revenue/bbl = distributor price/bbl. Profit = revenue − production cost/bbl for each channel.",
      "inputs": [
        {
          "id": "productionCostBbl",
          "label": "Production cost per barrel",
          "kind": "number"
        },
        {
          "id": "pourPrice",
          "label": "Average taproom pour price (16oz)",
          "kind": "number"
        },
        {
          "id": "taproomOverheadBbl",
          "label": "Taproom labor/overhead allocated per barrel",
          "kind": "number"
        },
        {
          "id": "distributorPriceBbl",
          "label": "Distributor wholesale price per barrel",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "taproomProfit",
          "label": "Taproom profit per barrel"
        },
        {
          "id": "distributionProfit",
          "label": "Distribution profit per barrel"
        },
        {
          "id": "taproomRevenue",
          "label": "Taproom gross revenue per barrel"
        },
        {
          "id": "advantageMultiple",
          "label": "Taproom profit as multiple of distribution profit"
        }
      ]
    },
    {
      "slug": "hsa-triple-tax-advantage",
      "url": "https://www.revenuelab.fyi/toolbox/hsa-triple-tax-advantage",
      "title": "HSA Triple Tax Advantage Calculator",
      "category": "financial",
      "summary": "See what an HSA is really worth versus a taxable brokerage account.",
      "formula": "HSA future value = contribution × ((1+r)^n − 1)/r, fully tax-free at withdrawal. Taxable equivalent = same contributions net of upfront tax, grown at after-tax return (r × (1 − LTCG rate)), then compared against pre-tax withdrawal value.",
      "inputs": [
        {
          "id": "contribution",
          "label": "Annual HSA contribution",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years invested before withdrawal",
          "kind": "number"
        },
        {
          "id": "returnRate",
          "label": "Expected annual return",
          "kind": "number"
        },
        {
          "id": "marginalRate",
          "label": "Marginal income tax rate",
          "kind": "number"
        },
        {
          "id": "ltcgRate",
          "label": "Long-term capital gains + dividend drag",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "advantage",
          "label": "HSA advantage over taxable account"
        },
        {
          "id": "fvHsa",
          "label": "HSA future value (tax-free)"
        },
        {
          "id": "fvTaxable",
          "label": "Equivalent taxable account value"
        },
        {
          "id": "pctMore",
          "label": "HSA is larger by"
        },
        {
          "id": "totalContributed",
          "label": "Total contributed over period"
        }
      ]
    },
    {
      "slug": "backdoor-roth-pro-rata",
      "url": "https://www.revenuelab.fyi/toolbox/backdoor-roth-pro-rata",
      "title": "Backdoor Roth Pro-Rata Tax Calculator",
      "category": "financial",
      "summary": "Find the taxable share of a backdoor Roth conversion when you hold pretax IRA money.",
      "formula": "Nontaxable ratio = total basis ÷ total year-end IRA balance (across all traditional/SEP/SIMPLE IRAs). Taxable amount converted = conversion × (1 − nontaxable ratio).",
      "inputs": [
        {
          "id": "basis",
          "label": "Total nondeductible basis (all IRAs)",
          "kind": "number"
        },
        {
          "id": "totalBalance",
          "label": "Total traditional/SEP/SIMPLE IRA balance (year-end, incl. this contribution)",
          "kind": "number"
        },
        {
          "id": "conversionAmount",
          "label": "Amount you plan to convert",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "taxablePortion",
          "label": "Taxable amount of conversion"
        },
        {
          "id": "nontaxablePortion",
          "label": "Tax-free amount of conversion"
        },
        {
          "id": "nontaxableRatioPct",
          "label": "Nontaxable ratio (Form 8606)"
        },
        {
          "id": "remainingBasis",
          "label": "Basis remaining after conversion"
        }
      ]
    },
    {
      "slug": "sepp-72t-withdrawal",
      "url": "https://www.revenuelab.fyi/toolbox/sepp-72t-withdrawal",
      "title": "72(t) SEPP Withdrawal Calculator",
      "category": "financial",
      "summary": "Estimate substantially equal periodic payments to tap retirement funds penalty-free before 59½.",
      "formula": "RMD method: payment = balance ÷ life expectancy factor (recalculated yearly). Fixed amortization: payment = balance amortized over life expectancy at the chosen interest rate, like a loan payment. Fixed annuitization: payment = balance ÷ annuity factor at the chosen rate.",
      "inputs": [
        {
          "id": "balance",
          "label": "Account balance",
          "kind": "number"
        },
        {
          "id": "age",
          "label": "Your current age",
          "kind": "number"
        },
        {
          "id": "lifeExpectancy",
          "label": "IRS life expectancy factor (single life, Uniform table)",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Interest rate assumption (max 120% federal midterm rate)",
          "kind": "number"
        },
        {
          "id": "method",
          "label": "SEPP method",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "annual",
          "label": "Estimated annual SEPP payment"
        },
        {
          "id": "monthly",
          "label": "Equivalent monthly amount"
        },
        {
          "id": "yearsToRun",
          "label": "Required years of payments"
        },
        {
          "id": "totalOverTerm",
          "label": "Total withdrawn over required term"
        }
      ]
    },
    {
      "slug": "nua-company-stock",
      "url": "https://www.revenuelab.fyi/toolbox/nua-company-stock",
      "title": "NUA Company Stock Tax Calculator",
      "category": "financial",
      "summary": "Compare NUA treatment vs. rolling company stock into an IRA.",
      "formula": "NUA path: tax now = basis × ordinary rate; tax later = (value − basis) × LTCG rate (plus 10% penalty on basis if under 55/59½ and separated early). IRA path: tax = full withdrawal × ordinary rate whenever withdrawn.",
      "inputs": [
        {
          "id": "basis",
          "label": "Cost basis of company stock",
          "kind": "number"
        },
        {
          "id": "currentValue",
          "label": "Current market value of stock",
          "kind": "number"
        },
        {
          "id": "ordinaryRate",
          "label": "Ordinary income tax rate",
          "kind": "number"
        },
        {
          "id": "ltcgRate",
          "label": "Long-term capital gains rate",
          "kind": "number"
        },
        {
          "id": "earlyPenalty",
          "label": "Subject to 10% early withdrawal penalty on basis?",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "savings",
          "label": "Tax savings choosing NUA"
        },
        {
          "id": "nuaTax",
          "label": "Total tax under NUA strategy"
        },
        {
          "id": "iraTax",
          "label": "Total tax rolling to IRA then withdrawing"
        },
        {
          "id": "gain",
          "label": "Net unrealized appreciation"
        }
      ]
    },
    {
      "slug": "daf-bunching-tax-savings",
      "url": "https://www.revenuelab.fyi/toolbox/daf-bunching-tax-savings",
      "title": "Donor-Advised Fund Bunching Tax Savings Calculator",
      "category": "financial",
      "summary": "See the tax benefit of front-loading several years of giving into one deduction.",
      "formula": "Annual-giving tax benefit = years × max(0, annual gift − (standard deduction − other itemized)) × rate. Bunching benefit = one year's itemized deduction (bunched gift + other itemized − standard) × rate, plus standard deduction value in off years.",
      "inputs": [
        {
          "id": "annualGift",
          "label": "Amount you'd normally give per year",
          "kind": "number"
        },
        {
          "id": "bunchYears",
          "label": "Years of giving to bunch together",
          "kind": "number"
        },
        {
          "id": "otherItemized",
          "label": "Other itemizable deductions per year (SALT cap, mortgage interest)",
          "kind": "number"
        },
        {
          "id": "standardDeduction",
          "label": "Standard deduction for your filing status",
          "kind": "number"
        },
        {
          "id": "marginalRate",
          "label": "Marginal tax rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "extraSavings",
          "label": "Extra tax savings from bunching"
        },
        {
          "id": "taxBenefitBunch",
          "label": "Total deduction value, bunched"
        },
        {
          "id": "taxBenefitAnnual",
          "label": "Total deduction value, giving annually"
        },
        {
          "id": "bunchedGift",
          "label": "Lump sum contributed to DAF"
        }
      ]
    },
    {
      "slug": "tax-loss-harvesting-benefit",
      "url": "https://www.revenuelab.fyi/toolbox/tax-loss-harvesting-benefit",
      "title": "Tax-Loss Harvesting Benefit Calculator",
      "category": "financial",
      "summary": "Quantify the tax savings from realizing losses to offset gains and income.",
      "formula": "This-year savings = min(loss, gains-offset needed) × gain rate + min(remaining loss, $3,000) × ordinary rate. Carryforward = loss − amount used this year. Deferred cost = future gain on lower basis × future rate, discounted by years of extra compounding on the tax savings reinvested.",
      "inputs": [
        {
          "id": "lossAmount",
          "label": "Realized capital loss",
          "kind": "number"
        },
        {
          "id": "gainsToOffset",
          "label": "Capital gains elsewhere this year",
          "kind": "number"
        },
        {
          "id": "gainRate",
          "label": "Rate on those gains (short or long-term)",
          "kind": "number"
        },
        {
          "id": "ordinaryRate",
          "label": "Marginal ordinary income rate",
          "kind": "number"
        },
        {
          "id": "yearsInvested",
          "label": "Years you'll keep the tax savings invested",
          "kind": "number"
        },
        {
          "id": "returnRate",
          "label": "Expected return on reinvested savings",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "savingsThisYear",
          "label": "Tax savings this year"
        },
        {
          "id": "growthOnSavings",
          "label": "Extra growth from reinvesting the savings"
        },
        {
          "id": "usedAgainstGains",
          "label": "Loss used to offset gains"
        },
        {
          "id": "usedAgainstIncome",
          "label": "Loss used to offset ordinary income (max $3,000)"
        },
        {
          "id": "carryforward",
          "label": "Loss carried forward to future years"
        }
      ]
    },
    {
      "slug": "espp-discount-return",
      "url": "https://www.revenuelab.fyi/toolbox/espp-discount-return",
      "title": "ESPP Discount Annualized Return Calculator",
      "category": "financial",
      "summary": "Turn your employee stock purchase plan discount into an annualized return.",
      "formula": "Purchase price = min(start price, end price) × (1 − discount). Period return = (market price − purchase price) ÷ purchase price. Annualized return = (1 + period return)^(365 ÷ offering days) − 1.",
      "inputs": [
        {
          "id": "startPrice",
          "label": "Stock price at start of offering period",
          "kind": "number"
        },
        {
          "id": "endPrice",
          "label": "Stock price at purchase date",
          "kind": "number"
        },
        {
          "id": "discount",
          "label": "ESPP discount",
          "kind": "number"
        },
        {
          "id": "lookback",
          "label": "Lookback provision?",
          "kind": "select"
        },
        {
          "id": "offeringDays",
          "label": "Offering period length",
          "kind": "number"
        },
        {
          "id": "sharesValue",
          "label": "Dollar amount contributed this period",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualizedPct",
          "label": "Annualized return"
        },
        {
          "id": "periodReturnPct",
          "label": "Return for this offering period"
        },
        {
          "id": "purchasePrice",
          "label": "Your actual purchase price"
        },
        {
          "id": "dollarGain",
          "label": "Dollar gain on this contribution"
        }
      ]
    },
    {
      "slug": "rsu-vest-withholding-gap",
      "url": "https://www.revenuelab.fyi/toolbox/rsu-vest-withholding-gap",
      "title": "RSU Vest Tax Withholding Gap Calculator",
      "category": "financial",
      "summary": "Find out if your employer withheld enough tax when your RSUs vested.",
      "formula": "Tax owed = vest value × marginal rate. Tax withheld = vest value × supplemental withholding rate. Shortfall = tax owed − tax withheld (can be negative if over-withheld).",
      "inputs": [
        {
          "id": "vestValue",
          "label": "Total RSU value vesting this year",
          "kind": "number"
        },
        {
          "id": "supplementalRate",
          "label": "Employer's supplemental withholding rate",
          "kind": "number"
        },
        {
          "id": "marginalRate",
          "label": "Your actual federal marginal rate",
          "kind": "number"
        },
        {
          "id": "stateRate",
          "label": "State tax rate on the vest",
          "kind": "number"
        },
        {
          "id": "stateWithheld",
          "label": "State withholding rate applied",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalShortfall",
          "label": "Total tax you still owe (or refund if negative)"
        },
        {
          "id": "fedShortfall",
          "label": "Federal shortfall"
        },
        {
          "id": "stateShortfall",
          "label": "State shortfall"
        },
        {
          "id": "fedWithheld",
          "label": "Federal tax actually withheld"
        }
      ]
    },
    {
      "slug": "amt-iso-exercise",
      "url": "https://www.revenuelab.fyi/toolbox/amt-iso-exercise",
      "title": "AMT on ISO Exercise Calculator",
      "category": "financial",
      "summary": "Estimate the Alternative Minimum Tax hit from exercising incentive stock options.",
      "formula": "AMT income = regular taxable income + ISO bargain element (FMV − strike × shares) − AMT exemption (phased out above threshold). Tentative minimum tax = AMT income × 26% (up to $232,600 in 2024) or 28% above that. AMT owed = max(0, tentative minimum tax − regular tax).",
      "inputs": [
        {
          "id": "shares",
          "label": "ISO shares exercised",
          "kind": "number"
        },
        {
          "id": "strikePrice",
          "label": "Strike price per share",
          "kind": "number"
        },
        {
          "id": "fmv",
          "label": "Fair market value per share at exercise",
          "kind": "number"
        },
        {
          "id": "regularTaxableIncome",
          "label": "Regular taxable income (before ISO)",
          "kind": "number"
        },
        {
          "id": "regularTaxEstimate",
          "label": "Estimated regular tax liability",
          "kind": "number"
        },
        {
          "id": "filingStatus",
          "label": "Filing status",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "amtOwed",
          "label": "Estimated additional AMT owed"
        },
        {
          "id": "bargainElement",
          "label": "ISO bargain element (AMT income added)"
        },
        {
          "id": "tentativeMinTax",
          "label": "Tentative minimum tax"
        },
        {
          "id": "effectiveExemption",
          "label": "AMT exemption after phase-out"
        }
      ]
    },
    {
      "slug": "mega-backdoor-401k-capacity",
      "url": "https://www.revenuelab.fyi/toolbox/mega-backdoor-401k-capacity",
      "title": "Mega Backdoor Roth 401(k) Capacity Calculator",
      "category": "financial",
      "summary": "See how much room you have for after-tax 401(k) contributions to convert to Roth.",
      "formula": "After-tax room = total 415(c) limit − employee deferrals − employer contributions. Total 415(c) limit for 2024 = $69,000 (under 50) or $76,500 (50+, includes catch-up in the combined limit calculation per IRS rules).",
      "inputs": [
        {
          "id": "age",
          "label": "Your age",
          "kind": "number"
        },
        {
          "id": "employeeDeferral",
          "label": "Employee deferrals made this year (pretax + Roth)",
          "kind": "number"
        },
        {
          "id": "employerMatch",
          "label": "Employer match/profit sharing this year",
          "kind": "number"
        },
        {
          "id": "annualLimit",
          "label": "Total 415(c) contribution limit this year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "room",
          "label": "Available after-tax (mega backdoor) room"
        },
        {
          "id": "usedPct",
          "label": "% of total limit already used"
        },
        {
          "id": "deferral",
          "label": "Employee deferrals so far"
        },
        {
          "id": "match",
          "label": "Employer contributions so far"
        }
      ]
    },
    {
      "slug": "529-superfunding",
      "url": "https://www.revenuelab.fyi/toolbox/529-superfunding",
      "title": "529 Plan Superfunding Calculator",
      "category": "financial",
      "summary": "See how much you can front-load into a 529 using the 5-year gift tax averaging rule.",
      "formula": "Superfunding ceiling = number of givers × annual exclusion × 5 years. Growth benefit = FV(lump sum invested day one) − FV(same total contributed in 5 equal annual installments), both compounded to the same end date.",
      "inputs": [
        {
          "id": "givers",
          "label": "Number of givers (1 = single, 2 = married couple)",
          "kind": "number"
        },
        {
          "id": "annualExclusion",
          "label": "Annual gift tax exclusion per giver",
          "kind": "number"
        },
        {
          "id": "returnRate",
          "label": "Expected annual investment return",
          "kind": "number"
        },
        {
          "id": "yearsToUse",
          "label": "Years until funds are needed (from today)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ceiling",
          "label": "Superfunding ceiling (5-year lump sum)"
        },
        {
          "id": "growthBenefit",
          "label": "Extra growth from lump-sum vs. spread-out funding"
        },
        {
          "id": "fvLumpSum",
          "label": "Future value, lump sum today"
        },
        {
          "id": "fvInstallments",
          "label": "Future value, 5 equal annual gifts"
        }
      ]
    },
    {
      "slug": "ibond-vs-cd",
      "url": "https://www.revenuelab.fyi/toolbox/ibond-vs-cd",
      "title": "I Bond vs. CD Calculator",
      "category": "financial",
      "summary": "Compare after-tax, after-inflation returns of Series I savings bonds against a CD.",
      "formula": "I bond composite rate = fixed rate + 2×semiannual inflation rate + fixed×inflation rate (approximated as fixed + inflation for simplicity here). CD after-tax value = principal × (1 + rate×(1−tax))^years. I bond after-tax value = principal × (1+composite)^years, taxed once at redemption; penalty of last 3 months' interest applies if redeemed under 5 years.",
      "inputs": [
        {
          "id": "amount",
          "label": "Amount to invest",
          "kind": "number"
        },
        {
          "id": "iBondFixedRate",
          "label": "I bond fixed rate",
          "kind": "number"
        },
        {
          "id": "inflationRate",
          "label": "Expected annual inflation component",
          "kind": "number"
        },
        {
          "id": "cdRate",
          "label": "CD annual percentage yield",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Holding period",
          "kind": "number"
        },
        {
          "id": "taxRate",
          "label": "Combined marginal tax rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "difference",
          "label": "I bond advantage over CD (after tax)"
        },
        {
          "id": "iBondValue",
          "label": "I bond value after tax"
        },
        {
          "id": "cdValue",
          "label": "CD value after tax"
        },
        {
          "id": "composite",
          "label": "I bond composite rate used"
        }
      ]
    },
    {
      "slug": "cash-out-refi-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/cash-out-refi-breakeven",
      "title": "Cash-Out Refinance Breakeven Calculator",
      "category": "financial",
      "summary": "Find exactly how many months until a cash-out refi's costs pay for themselves.",
      "formula": "Payment difference = new payment − old payment. Breakeven months = closing costs ÷ monthly payment difference (only meaningful if new payment is higher due to added balance, or savings if rate dropped significantly). Total interest cost of the cash = extracted amount financed over the remaining term at the new rate.",
      "inputs": [
        {
          "id": "currentBalance",
          "label": "Current mortgage balance",
          "kind": "number"
        },
        {
          "id": "currentRate",
          "label": "Current mortgage rate",
          "kind": "number"
        },
        {
          "id": "cashOut",
          "label": "Cash you want to take out",
          "kind": "number"
        },
        {
          "id": "newRate",
          "label": "New mortgage rate",
          "kind": "number"
        },
        {
          "id": "termYears",
          "label": "New loan term",
          "kind": "number"
        },
        {
          "id": "closingCosts",
          "label": "Closing costs",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenMonths",
          "label": "Months to break even on closing costs"
        },
        {
          "id": "paymentDiff",
          "label": "Monthly payment increase"
        },
        {
          "id": "extraInterestFromCashOut",
          "label": "Extra lifetime interest from the cash-out portion"
        },
        {
          "id": "newPayment",
          "label": "New total monthly payment"
        }
      ]
    },
    {
      "slug": "mortgage-recast-vs-refinance",
      "url": "https://www.revenuelab.fyi/toolbox/mortgage-recast-vs-refinance",
      "title": "Mortgage Recast vs. Refinance Calculator",
      "category": "financial",
      "summary": "Compare a lump-sum recast against refinancing when you have extra cash toward your mortgage.",
      "formula": "Recast payment = remaining balance after lump sum, re-amortized at the current rate over the remaining term. Refinance payment = new balance (after applying lump sum first) amortized at the new rate over the new term, plus closing costs added to breakeven analysis.",
      "inputs": [
        {
          "id": "balance",
          "label": "Current mortgage balance",
          "kind": "number"
        },
        {
          "id": "currentRate",
          "label": "Current interest rate",
          "kind": "number"
        },
        {
          "id": "remainingYears",
          "label": "Remaining term",
          "kind": "number"
        },
        {
          "id": "lumpSum",
          "label": "Lump sum available",
          "kind": "number"
        },
        {
          "id": "recastFee",
          "label": "Recast fee",
          "kind": "number"
        },
        {
          "id": "refiRate",
          "label": "Available refinance rate",
          "kind": "number"
        },
        {
          "id": "refiCosts",
          "label": "Refinance closing costs",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "betterOption",
          "label": "Better option (lower payment for less upfront cost)"
        },
        {
          "id": "recastPayment",
          "label": "New payment after recast"
        },
        {
          "id": "refiPayment",
          "label": "New payment after refinance"
        },
        {
          "id": "recastMonthlySavings",
          "label": "Monthly savings from recast"
        },
        {
          "id": "refiMonthlySavings",
          "label": "Monthly savings from refinance"
        }
      ]
    },
    {
      "slug": "heloc-draw-cost",
      "url": "https://www.revenuelab.fyi/toolbox/heloc-draw-cost",
      "title": "HELOC Draw Period Cost Calculator",
      "category": "financial",
      "summary": "See what an interest-only draw period actually costs before repayment kicks in.",
      "formula": "Interest-only payment = balance × (rate ÷ 12). Repayment-period payment = balance amortized over the repayment term at the (possibly different) repayment-period rate. Payment shock = repayment payment − interest-only payment.",
      "inputs": [
        {
          "id": "balance",
          "label": "HELOC balance drawn",
          "kind": "number"
        },
        {
          "id": "drawRate",
          "label": "Current variable rate during draw period",
          "kind": "number"
        },
        {
          "id": "drawYearsLeft",
          "label": "Years left in draw period",
          "kind": "number"
        },
        {
          "id": "repayRate",
          "label": "Expected rate at start of repayment",
          "kind": "number"
        },
        {
          "id": "repayYears",
          "label": "Repayment period length",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paymentShock",
          "label": "Payment increase when repayment starts"
        },
        {
          "id": "interestOnlyPayment",
          "label": "Current interest-only payment"
        },
        {
          "id": "repayPayment",
          "label": "Full amortizing payment at repayment"
        },
        {
          "id": "totalInterestDuringDraw",
          "label": "Total interest paid, remaining draw period"
        },
        {
          "id": "shockMultiple",
          "label": "Payment multiplies by"
        }
      ]
    },
    {
      "slug": "mortgage-points-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/mortgage-points-breakeven",
      "title": "Mortgage Discount Points Breakeven Calculator",
      "category": "financial",
      "summary": "Find out exactly how long it takes discount points to pay for themselves.",
      "formula": "Cost of points = loan amount × points × 1%. Monthly savings = payment at original rate − payment at reduced rate. Breakeven months = cost of points ÷ monthly savings.",
      "inputs": [
        {
          "id": "loanAmount",
          "label": "Loan amount",
          "kind": "number"
        },
        {
          "id": "baseRate",
          "label": "Rate without points",
          "kind": "number"
        },
        {
          "id": "points",
          "label": "Points purchased",
          "kind": "number"
        },
        {
          "id": "rateReductionPerPoint",
          "label": "Rate reduction per point",
          "kind": "number"
        },
        {
          "id": "termYears",
          "label": "Loan term",
          "kind": "number"
        },
        {
          "id": "yearsInHome",
          "label": "Years you expect to keep this loan",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenMonths",
          "label": "Months to break even"
        },
        {
          "id": "monthlySavings",
          "label": "Monthly payment savings"
        },
        {
          "id": "costOfPoints",
          "label": "Upfront cost of points"
        },
        {
          "id": "totalSavingsOverStay",
          "label": "Net savings over your expected stay"
        }
      ]
    },
    {
      "slug": "umbrella-coverage-gap",
      "url": "https://www.revenuelab.fyi/toolbox/umbrella-coverage-gap",
      "title": "Umbrella Insurance Coverage Gap Calculator",
      "category": "financial",
      "summary": "Find the exposed net worth an umbrella policy needs to cover after underlying limits.",
      "formula": "Assets at risk = net worth + (years of future income to protect × annual income × protection factor). Coverage gap = assets at risk − existing liability limits (auto + home combined, not stacked). Recommended umbrella = round up gap to nearest $1M increment.",
      "inputs": [
        {
          "id": "netWorth",
          "label": "Net worth (assets minus debts)",
          "kind": "number"
        },
        {
          "id": "annualIncome",
          "label": "Annual household income",
          "kind": "number"
        },
        {
          "id": "incomeYearsProtect",
          "label": "Years of future income to protect from garnishment",
          "kind": "number"
        },
        {
          "id": "autoLiabilityLimit",
          "label": "Auto policy liability limit",
          "kind": "number"
        },
        {
          "id": "homeLiabilityLimit",
          "label": "Homeowners liability limit",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "recommendedUmbrella",
          "label": "Recommended umbrella coverage"
        },
        {
          "id": "assetsAtRisk",
          "label": "Total assets + future income at risk"
        },
        {
          "id": "gap",
          "label": "Uncovered exposure gap"
        },
        {
          "id": "existingLimit",
          "label": "Highest existing underlying liability limit"
        }
      ]
    },
    {
      "slug": "qualified-charitable-distribution",
      "url": "https://www.revenuelab.fyi/toolbox/qualified-charitable-distribution",
      "title": "Qualified Charitable Distribution (QCD) Calculator",
      "category": "financial",
      "summary": "See how directing your IRA RMD to charity beats a cash donation with a deduction.",
      "formula": "QCD path: taxable income unaffected, RMD requirement satisfied. Cash donation path: RMD is fully taxable income; itemized deduction only helps if itemized total exceeds standard deduction. Tax savings from QCD = RMD amount × marginal rate, minus any deduction benefit that would have applied if itemizing.",
      "inputs": [
        {
          "id": "qcdAmount",
          "label": "Amount directed to charity from IRA",
          "kind": "number"
        },
        {
          "id": "marginalRate",
          "label": "Marginal tax rate",
          "kind": "number"
        },
        {
          "id": "wouldItemize",
          "label": "Would you itemize if you took the RMD as cash?",
          "kind": "select"
        },
        {
          "id": "irmaaRisk",
          "label": "Are you near a Medicare IRMAA income threshold?",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "netAdvantageOverCashDonation",
          "label": "QCD advantage over cash donation + deduction"
        },
        {
          "id": "taxSavedFromExclusion",
          "label": "Tax avoided by excluding from income"
        },
        {
          "id": "deductionOffset",
          "label": "Deduction benefit you'd get anyway if itemizing"
        },
        {
          "id": "irmaaFlag",
          "label": "IRMAA/AGI threshold risk flag (1 = yes)"
        }
      ]
    },
    {
      "slug": "wash-sale-risk-window",
      "url": "https://www.revenuelab.fyi/toolbox/wash-sale-risk-window",
      "title": "Wash Sale Risk Window Calculator",
      "category": "financial",
      "summary": "Find the exact dates you must avoid repurchasing a security after a tax-loss sale.",
      "formula": "Window start = sale date − 30 calendar days. Window end = sale date + 30 calendar days. Safe repurchase date = window end + 1 day.",
      "inputs": [
        {
          "id": "saleDate",
          "label": "Date you sold at a loss",
          "kind": "date"
        }
      ],
      "outputs": [
        {
          "id": "safeDate",
          "label": "First safe repurchase date"
        },
        {
          "id": "windowStart",
          "label": "Window starts (30 days before sale)"
        },
        {
          "id": "windowEnd",
          "label": "Window ends (30 days after sale)"
        },
        {
          "id": "totalWindowDays",
          "label": "Total no-buy window"
        }
      ]
    },
    {
      "slug": "ltcg-zero-bracket-harvesting",
      "url": "https://www.revenuelab.fyi/toolbox/ltcg-zero-bracket-harvesting",
      "title": "0% Capital Gains Bracket Harvesting Calculator",
      "category": "financial",
      "summary": "Find how much gain you can realize tax-free inside the 0% LTCG bracket.",
      "formula": "Room in 0% bracket = max(0, 0% bracket ceiling − other taxable income). Harvestable gain = min(unrealized gain, room in 0% bracket). Gains beyond that room are taxed at 15% up to the next threshold.",
      "inputs": [
        {
          "id": "otherTaxableIncome",
          "label": "Other taxable income (before capital gains)",
          "kind": "number"
        },
        {
          "id": "filingStatus",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "unrealizedGain",
          "label": "Unrealized long-term capital gain available",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "harvestableAt0",
          "label": "Gain you can harvest completely tax-free"
        },
        {
          "id": "roomAt0",
          "label": "Total room left in 0% bracket"
        },
        {
          "id": "harvestableAt15",
          "label": "Additional gain taxed at 15%"
        },
        {
          "id": "taxOwed",
          "label": "Tax owed on the 15% portion"
        }
      ]
    },
    {
      "slug": "solo-401k-vs-sep-ira",
      "url": "https://www.revenuelab.fyi/toolbox/solo-401k-vs-sep-ira",
      "title": "Solo 401(k) vs. SEP IRA Calculator",
      "category": "financial",
      "summary": "Compare maximum contribution room between a solo 401(k) and a SEP IRA for self-employed income.",
      "formula": "Net SE earnings (adjusted) = net profit × 0.9235. SEP contribution = min(adjusted earnings × 20%, $69,000). Solo 401(k) = min(employee deferral, $23,000 or $30,500) + min(adjusted earnings × 20%, remaining room to $69,000/$76,500).",
      "inputs": [
        {
          "id": "netProfit",
          "label": "Net self-employment profit (Schedule C)",
          "kind": "number"
        },
        {
          "id": "age",
          "label": "Your age",
          "kind": "number"
        },
        {
          "id": "maxDeferral",
          "label": "Max out employee deferral in solo 401(k)?",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "advantage",
          "label": "Extra room in solo 401(k) vs. SEP IRA"
        },
        {
          "id": "solo401kTotal",
          "label": "Max solo 401(k) contribution"
        },
        {
          "id": "sepEmployerContribution",
          "label": "Max SEP IRA contribution"
        },
        {
          "id": "employeeDeferral",
          "label": "Employee deferral portion (solo 401k only)"
        }
      ]
    },
    {
      "slug": "hsa-invest-vs-reimburse",
      "url": "https://www.revenuelab.fyi/toolbox/hsa-invest-vs-reimburse",
      "title": "HSA Invest-and-Reimburse-Later Calculator",
      "category": "financial",
      "summary": "See the payoff of paying medical bills out of pocket now and reimbursing from your HSA decades later.",
      "formula": "Value of delayed reimbursement = expense amount × ((1+r)^years − 1), the tax-free growth that would have otherwise been withdrawn immediately and stopped compounding.",
      "inputs": [
        {
          "id": "expenseAmount",
          "label": "Qualified medical expense paid out of pocket",
          "kind": "number"
        },
        {
          "id": "yearsDelayed",
          "label": "Years you delay reimbursement",
          "kind": "number"
        },
        {
          "id": "returnRate",
          "label": "Expected annual HSA investment return",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "growthCaptured",
          "label": "Extra tax-free growth from delaying reimbursement"
        },
        {
          "id": "futureValueIfKept",
          "label": "Value if left invested instead of withdrawn"
        },
        {
          "id": "expense",
          "label": "Original expense amount"
        }
      ]
    },
    {
      "slug": "inherited-ira-10-year-rmd",
      "url": "https://www.revenuelab.fyi/toolbox/inherited-ira-10-year-rmd",
      "title": "Inherited IRA 10-Year Rule Calculator",
      "category": "financial",
      "summary": "Model how to spread inherited IRA withdrawals across the 10-year SECURE Act window.",
      "formula": "Even strategy: annual withdrawal = balance ÷ 10, grown balance reduces each year. Lump-sum-at-end: balance grows untouched for 9 years then withdrawn fully in year 10. Tax estimate = withdrawal × marginal rate stacked on other income for each scenario.",
      "inputs": [
        {
          "id": "balance",
          "label": "Inherited IRA balance",
          "kind": "number"
        },
        {
          "id": "returnRate",
          "label": "Expected annual investment return",
          "kind": "number"
        },
        {
          "id": "marginalRate",
          "label": "Your current marginal tax rate",
          "kind": "number"
        },
        {
          "id": "lumpSumRate",
          "label": "Marginal rate on a big lump-sum year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "evenTaxAdvantage",
          "label": "Tax saved spreading evenly vs. lump sum at end"
        },
        {
          "id": "evenTax",
          "label": "Total tax, even withdrawals over 10 years"
        },
        {
          "id": "lumpTax",
          "label": "Tax if withdrawn as lump sum in year 10"
        },
        {
          "id": "lumpBalance",
          "label": "Balance if left to grow 9 years first"
        }
      ]
    },
    {
      "slug": "nqdc-deferred-comp-payout",
      "url": "https://www.revenuelab.fyi/toolbox/nqdc-deferred-comp-payout",
      "title": "NQDC Deferred Comp Payout Calculator",
      "category": "financial",
      "summary": "Compare lump-sum vs. installment payout timing for a deferred comp plan distribution.",
      "formula": "Lump sum tax = payout amount taxed at highest applicable bracket in one year. Installment tax = payout ÷ years, each taxed at the marginal rate applicable when stacked on expected income that year, summed across the payout period.",
      "inputs": [
        {
          "id": "payoutAmount",
          "label": "Total deferred comp payout amount",
          "kind": "number"
        },
        {
          "id": "lumpSumRate",
          "label": "Marginal rate if taken as lump sum",
          "kind": "number"
        },
        {
          "id": "installmentYears",
          "label": "Years to spread installments",
          "kind": "number"
        },
        {
          "id": "installmentRate",
          "label": "Expected marginal rate per installment year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "taxSavings",
          "label": "Tax savings choosing installments over lump sum"
        },
        {
          "id": "lumpTax",
          "label": "Tax if taken as lump sum"
        },
        {
          "id": "installmentTax",
          "label": "Total tax across installment years"
        },
        {
          "id": "perInstallment",
          "label": "Amount per installment payment"
        }
      ]
    },
    {
      "slug": "asset-location-tax-efficiency",
      "url": "https://www.revenuelab.fyi/toolbox/asset-location-tax-efficiency",
      "title": "Asset Location Tax Efficiency Calculator",
      "category": "financial",
      "summary": "See the tax savings from placing bonds, REITs, and stocks in the right account types.",
      "formula": "Tax drag (naive) = taxable account balance × blended pretax yield × blended tax rate, applied annually and compounded. Tax drag (optimized) = same but with tax-inefficient assets pushed into tax-deferred space first. Savings = value(optimized) − value(naive) after N years.",
      "inputs": [
        {
          "id": "taxableBalance",
          "label": "Taxable brokerage account balance",
          "kind": "number"
        },
        {
          "id": "taxDeferredBalance",
          "label": "Tax-deferred (401k/IRA) balance",
          "kind": "number"
        },
        {
          "id": "bondYield",
          "label": "Bond/REIT ordinary yield",
          "kind": "number"
        },
        {
          "id": "stockYield",
          "label": "Stock index fund qualified dividend + realized gain yield",
          "kind": "number"
        },
        {
          "id": "ordinaryTaxRate",
          "label": "Ordinary/marginal tax rate",
          "kind": "number"
        },
        {
          "id": "qualifiedTaxRate",
          "label": "Qualified dividend/LTCG tax rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years held",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "savings",
          "label": "Tax savings from optimal asset location"
        },
        {
          "id": "naiveDragTotal",
          "label": "Total tax drag, naive (same mix everywhere)"
        },
        {
          "id": "optimizedDragTotal",
          "label": "Total tax drag, optimized placement"
        },
        {
          "id": "bondsInTaxable",
          "label": "Bonds left over in taxable account"
        }
      ]
    },
    {
      "slug": "corrected-calcium",
      "url": "https://www.revenuelab.fyi/toolbox/corrected-calcium",
      "title": "Corrected Calcium Calculator (Albumin-Adjusted)",
      "category": "fitness-health",
      "summary": "Adjust total serum calcium for low albumin using the Payne formula.",
      "formula": "Corrected Ca (mg/dL) = measured Ca + 0.8 × (4.0 − albumin g/dL).",
      "inputs": [
        {
          "id": "ca",
          "label": "Measured total calcium",
          "kind": "number"
        },
        {
          "id": "albumin",
          "label": "Serum albumin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "corrected",
          "label": "Corrected calcium"
        },
        {
          "id": "delta",
          "label": "Adjustment applied (mg/dL)"
        },
        {
          "id": "status",
          "label": "Interpretation"
        }
      ]
    },
    {
      "slug": "creatinine-clearance-cockcroft-gault",
      "url": "https://www.revenuelab.fyi/toolbox/creatinine-clearance-cockcroft-gault",
      "title": "Creatinine Clearance Calculator (Cockcroft-Gault)",
      "category": "fitness-health",
      "summary": "Estimate CrCl for drug dosing using the Cockcroft-Gault equation.",
      "formula": "CrCl (mL/min) = [(140 − age) × weight(kg) × (0.85 if female)] ÷ (72 × Scr mg/dL).",
      "inputs": [
        {
          "id": "age",
          "label": "Age",
          "kind": "number"
        },
        {
          "id": "weight",
          "label": "Weight",
          "kind": "number"
        },
        {
          "id": "scr",
          "label": "Serum creatinine",
          "kind": "number"
        },
        {
          "id": "sex",
          "label": "Sex",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "crcl",
          "label": "Creatinine clearance"
        },
        {
          "id": "band",
          "label": "Function category"
        }
      ]
    },
    {
      "slug": "qtc-interval",
      "url": "https://www.revenuelab.fyi/toolbox/qtc-interval",
      "title": "QTc Calculator (Bazett & Fridericia)",
      "category": "fitness-health",
      "summary": "Correct the QT interval for heart rate using two standard formulas.",
      "formula": "Bazett: QTc = QT ÷ √(RR); Fridericia: QTc = QT ÷ RR^(1/3), where RR = 60 ÷ heart rate (seconds).",
      "inputs": [
        {
          "id": "qt",
          "label": "Measured QT interval",
          "kind": "number"
        },
        {
          "id": "hr",
          "label": "Heart rate",
          "kind": "number"
        },
        {
          "id": "sex",
          "label": "Sex",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "bazett",
          "label": "QTc (Bazett)"
        },
        {
          "id": "fridericia",
          "label": "QTc (Fridericia)"
        },
        {
          "id": "threshold",
          "label": "Prolongation threshold (ms)"
        },
        {
          "id": "prolonged",
          "label": "Bazett interpretation"
        }
      ]
    },
    {
      "slug": "shock-index",
      "url": "https://www.revenuelab.fyi/toolbox/shock-index",
      "title": "Shock Index Calculator",
      "category": "fitness-health",
      "summary": "Screen for occult hemodynamic compromise from heart rate and systolic BP.",
      "formula": "Shock Index = heart rate (bpm) ÷ systolic blood pressure (mmHg).",
      "inputs": [
        {
          "id": "hr",
          "label": "Heart rate",
          "kind": "number"
        },
        {
          "id": "sbp",
          "label": "Systolic blood pressure",
          "kind": "number"
        },
        {
          "id": "age",
          "label": "Age",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "si",
          "label": "Shock index"
        },
        {
          "id": "ageIndex",
          "label": "Age-adjusted shock index (age × SI)"
        },
        {
          "id": "risk",
          "label": "Screening interpretation"
        }
      ]
    },
    {
      "slug": "ideal-body-weight",
      "url": "https://www.revenuelab.fyi/toolbox/ideal-body-weight",
      "title": "Ideal Body Weight Calculator (Devine Formula)",
      "category": "fitness-health",
      "summary": "Devine formula IBW used for drug dosing and ventilator settings.",
      "formula": "Men: IBW = 50 kg + 2.3 kg per inch over 60in. Women: IBW = 45.5 kg + 2.3 kg per inch over 60in.",
      "inputs": [
        {
          "id": "heightIn",
          "label": "Height",
          "kind": "number"
        },
        {
          "id": "sex",
          "label": "Sex",
          "kind": "select"
        },
        {
          "id": "actualKg",
          "label": "Actual weight (optional, for comparison)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ibw",
          "label": "Ideal body weight"
        },
        {
          "id": "tidalVolLow",
          "label": "Tidal volume 6 mL/kg IBW"
        },
        {
          "id": "tidalVolHigh",
          "label": "Tidal volume 8 mL/kg IBW"
        },
        {
          "id": "percentIbw",
          "label": "Actual weight as % of IBW"
        }
      ]
    },
    {
      "slug": "adjusted-body-weight",
      "url": "https://www.revenuelab.fyi/toolbox/adjusted-body-weight",
      "title": "Adjusted Body Weight Calculator",
      "category": "fitness-health",
      "summary": "Dosing weight for obese patients that blends actual and ideal weight.",
      "formula": "AdjBW = IBW + 0.4 × (Actual weight − IBW), used when actual weight is more than ~20-30% above IBW.",
      "inputs": [
        {
          "id": "heightIn",
          "label": "Height",
          "kind": "number"
        },
        {
          "id": "sex",
          "label": "Sex",
          "kind": "select"
        },
        {
          "id": "actualKg",
          "label": "Actual weight",
          "kind": "number"
        },
        {
          "id": "factor",
          "label": "Correction factor",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "adjBW",
          "label": "Adjusted body weight"
        },
        {
          "id": "ibw",
          "label": "Ideal body weight"
        },
        {
          "id": "pctOver",
          "label": "% over IBW"
        },
        {
          "id": "recommend",
          "label": "Suggested approach"
        }
      ]
    },
    {
      "slug": "abg-interpretation",
      "url": "https://www.revenuelab.fyi/toolbox/abg-interpretation",
      "title": "ABG Interpretation Aid",
      "category": "fitness-health",
      "summary": "Step through pH, CO2, and bicarbonate to a likely acid-base pattern.",
      "formula": "Winter's formula expected pCO2 = 1.5 × HCO3 + 8 (± 2), used to check respiratory compensation for metabolic acidosis.",
      "inputs": [
        {
          "id": "ph",
          "label": "pH",
          "kind": "number"
        },
        {
          "id": "pco2",
          "label": "pCO2",
          "kind": "number"
        },
        {
          "id": "hco3",
          "label": "Bicarbonate (HCO3)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "primary",
          "label": "Likely primary disorder"
        },
        {
          "id": "expectedPco2",
          "label": "Expected pCO2 (Winter's formula)"
        },
        {
          "id": "compensation",
          "label": "Compensation assessment"
        }
      ]
    },
    {
      "slug": "opioid-morphine-equivalent",
      "url": "https://www.revenuelab.fyi/toolbox/opioid-morphine-equivalent",
      "title": "Opioid Morphine Milligram Equivalent (MME) Calculator",
      "category": "fitness-health",
      "summary": "Convert an opioid regimen to daily MME for safety review.",
      "formula": "MME/day = Σ (dose per administration × doses per day × conversion factor) for each opioid.",
      "inputs": [
        {
          "id": "drug",
          "label": "Opioid",
          "kind": "select"
        },
        {
          "id": "dosePerAdmin",
          "label": "Dose per administration",
          "kind": "number"
        },
        {
          "id": "timesPerDay",
          "label": "Administrations per day (use 1 for patch)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "mme",
          "label": "Total daily MME"
        },
        {
          "id": "risk",
          "label": "Risk screening category"
        },
        {
          "id": "rotationDose",
          "label": "Conservative rotation target (50% reduction)"
        }
      ]
    },
    {
      "slug": "wells-dvt-score",
      "url": "https://www.revenuelab.fyi/toolbox/wells-dvt-score",
      "title": "Wells Score for DVT Calculator",
      "category": "fitness-health",
      "summary": "Pretest probability of DVT from clinical criteria to guide next steps.",
      "formula": "Sum clinical criteria (+1 each), subtract 2 if alternative diagnosis is at least as likely; ≥2 = DVT likely, <2 = DVT unlikely.",
      "inputs": [
        {
          "id": "cancer",
          "label": "Active cancer (treated within 6 months or palliative)",
          "kind": "select"
        },
        {
          "id": "immobilization",
          "label": "Paralysis, paresis, or recent leg immobilization",
          "kind": "select"
        },
        {
          "id": "bedrest",
          "label": "Bedrest ≥3 days or major surgery within 12 weeks",
          "kind": "select"
        },
        {
          "id": "tenderness",
          "label": "Localized tenderness along deep venous system",
          "kind": "select"
        },
        {
          "id": "legSwelling",
          "label": "Entire leg swollen",
          "kind": "select"
        },
        {
          "id": "calfSwelling",
          "label": "Calf swelling >3cm vs other leg",
          "kind": "select"
        },
        {
          "id": "altDx",
          "label": "Alternative diagnosis at least as likely as DVT",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "score",
          "label": "Wells DVT score"
        },
        {
          "id": "category",
          "label": "Pretest probability"
        },
        {
          "id": "next",
          "label": "Suggested next step"
        }
      ]
    },
    {
      "slug": "wells-pe-score",
      "url": "https://www.revenuelab.fyi/toolbox/wells-pe-score",
      "title": "Wells Score for Pulmonary Embolism Calculator",
      "category": "fitness-health",
      "summary": "Pretest probability of PE to decide between D-dimer and CT angiography.",
      "formula": "Sum weighted criteria; simplified two-tier: ≤4 = PE unlikely, >4 = PE likely.",
      "inputs": [
        {
          "id": "dvtSigns",
          "label": "Clinical signs of DVT (leg swelling, pain with palpation)",
          "kind": "select"
        },
        {
          "id": "peLikely",
          "label": "PE is the #1 most likely diagnosis",
          "kind": "select"
        },
        {
          "id": "hr100",
          "label": "Heart rate >100 bpm",
          "kind": "select"
        },
        {
          "id": "immobilization",
          "label": "Immobilization ≥3 days or surgery in past 4 weeks",
          "kind": "select"
        },
        {
          "id": "priorVte",
          "label": "Prior objectively diagnosed DVT/PE",
          "kind": "select"
        },
        {
          "id": "hemoptysis",
          "label": "Hemoptysis",
          "kind": "select"
        },
        {
          "id": "malignancy",
          "label": "Malignancy treated within 6 months or palliative",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "score",
          "label": "Wells PE score"
        },
        {
          "id": "category",
          "label": "Pretest probability"
        },
        {
          "id": "next",
          "label": "Suggested next step"
        }
      ]
    },
    {
      "slug": "maintenance-fluid-rate",
      "url": "https://www.revenuelab.fyi/toolbox/maintenance-fluid-rate",
      "title": "Maintenance IV Fluid Rate Calculator (Holliday-Segar)",
      "category": "fitness-health",
      "summary": "Hourly maintenance fluid needs from weight using the 4-2-1 rule.",
      "formula": "4 mL/kg/hr for first 10kg + 2 mL/kg/hr for next 10kg + 1 mL/kg/hr for remainder; adult simplified estimate: 25-30 mL/kg/day.",
      "inputs": [
        {
          "id": "weight",
          "label": "Weight",
          "kind": "number"
        },
        {
          "id": "feverC",
          "label": "Temperature above 37.5°C (0 if afebrile)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rate",
          "label": "Hourly maintenance rate"
        },
        {
          "id": "dailyVolume",
          "label": "24-hour maintenance volume"
        },
        {
          "id": "baseRate",
          "label": "Base rate before fever adjustment"
        },
        {
          "id": "adultSimplified",
          "label": "Adult simplified estimate (mL/day)"
        }
      ]
    },
    {
      "slug": "ng-tube-fluid-replacement",
      "url": "https://www.revenuelab.fyi/toolbox/ng-tube-fluid-replacement",
      "title": "NG Tube Output Fluid Replacement Calculator",
      "category": "fitness-health",
      "summary": "Replace ongoing nasogastric or drain losses on top of maintenance fluids.",
      "formula": "Replacement rate (mL/hr) = total measured output (mL) ÷ replacement period (hr), added to maintenance fluid rate.",
      "inputs": [
        {
          "id": "outputMl",
          "label": "Measured output over the period",
          "kind": "number"
        },
        {
          "id": "periodHr",
          "label": "Measurement period",
          "kind": "number"
        },
        {
          "id": "maintenanceRate",
          "label": "Current maintenance rate (optional)",
          "kind": "number"
        },
        {
          "id": "replacementFraction",
          "label": "Fraction of output to replace",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "replacementRate",
          "label": "Replacement rate to add"
        },
        {
          "id": "totalRate",
          "label": "Combined total infusion rate"
        },
        {
          "id": "dailyOutputProjected",
          "label": "Projected 24-hour output at this rate"
        }
      ]
    },
    {
      "slug": "insulin-correction-dose",
      "url": "https://www.revenuelab.fyi/toolbox/insulin-correction-dose",
      "title": "Insulin Correction Dose Calculator",
      "category": "fitness-health",
      "summary": "Extra rapid-acting insulin needed to bring a high glucose to target.",
      "formula": "Correction dose (units) = (current glucose − target glucose) ÷ correction factor (mg/dL per unit).",
      "inputs": [
        {
          "id": "current",
          "label": "Current blood glucose",
          "kind": "number"
        },
        {
          "id": "target",
          "label": "Target blood glucose",
          "kind": "number"
        },
        {
          "id": "correctionFactor",
          "label": "Correction factor (mg/dL drop per unit)",
          "kind": "number"
        },
        {
          "id": "hoursSinceLastDose",
          "label": "Hours since last rapid-acting insulin dose",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "dose",
          "label": "Correction dose"
        },
        {
          "id": "stackingRisk",
          "label": "Insulin stacking risk"
        },
        {
          "id": "recommendation",
          "label": "Recommendation"
        }
      ]
    },
    {
      "slug": "fena-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/fena-calculator",
      "title": "Fractional Excretion of Sodium (FeNa) Calculator",
      "category": "fitness-health",
      "summary": "Distinguish prerenal from intrinsic acute kidney injury.",
      "formula": "FeNa (%) = [(Urine Na × Plasma Cr) ÷ (Plasma Na × Urine Cr)] × 100.",
      "inputs": [
        {
          "id": "urineNa",
          "label": "Urine sodium",
          "kind": "number"
        },
        {
          "id": "plasmaNa",
          "label": "Plasma sodium",
          "kind": "number"
        },
        {
          "id": "urineCr",
          "label": "Urine creatinine",
          "kind": "number"
        },
        {
          "id": "plasmaCr",
          "label": "Plasma creatinine",
          "kind": "number"
        },
        {
          "id": "onDiuretic",
          "label": "Recent diuretic use",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "fena",
          "label": "FeNa"
        },
        {
          "id": "interpretation",
          "label": "Interpretation"
        }
      ]
    },
    {
      "slug": "osmolar-gap",
      "url": "https://www.revenuelab.fyi/toolbox/osmolar-gap",
      "title": "Osmolar Gap Calculator",
      "category": "fitness-health",
      "summary": "Screen for unmeasured osmoles like toxic alcohols.",
      "formula": "Calculated osm = 2×Na + glucose/18 + BUN/2.8; Osmolar gap = measured osm − calculated osm.",
      "inputs": [
        {
          "id": "measuredOsm",
          "label": "Measured serum osmolality",
          "kind": "number"
        },
        {
          "id": "na",
          "label": "Sodium",
          "kind": "number"
        },
        {
          "id": "glucose",
          "label": "Glucose",
          "kind": "number"
        },
        {
          "id": "bun",
          "label": "BUN",
          "kind": "number"
        },
        {
          "id": "ethanol",
          "label": "Ethanol level (if known, else 0)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "gap",
          "label": "Osmolar gap"
        },
        {
          "id": "calcOsm",
          "label": "Calculated osmolality"
        },
        {
          "id": "interpretation",
          "label": "Interpretation"
        }
      ]
    },
    {
      "slug": "curb-65-score",
      "url": "https://www.revenuelab.fyi/toolbox/curb-65-score",
      "title": "CURB-65 Pneumonia Severity Score",
      "category": "fitness-health",
      "summary": "Estimate 30-day mortality risk in community-acquired pneumonia.",
      "formula": "1 point each: Confusion, Urea/BUN >19 mg/dL, RR ≥30, SBP <90 or DBP ≤60, Age ≥65.",
      "inputs": [
        {
          "id": "confusion",
          "label": "New confusion",
          "kind": "select"
        },
        {
          "id": "bun",
          "label": "BUN",
          "kind": "number"
        },
        {
          "id": "rr",
          "label": "Respiratory rate",
          "kind": "number"
        },
        {
          "id": "sbp",
          "label": "Systolic BP",
          "kind": "number"
        },
        {
          "id": "dbp",
          "label": "Diastolic BP",
          "kind": "number"
        },
        {
          "id": "age",
          "label": "Age",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "score",
          "label": "CURB-65 score"
        },
        {
          "id": "risk",
          "label": "Estimated 30-day mortality risk"
        },
        {
          "id": "disposition",
          "label": "Disposition guidance"
        }
      ]
    },
    {
      "slug": "cha2ds2-vasc-score",
      "url": "https://www.revenuelab.fyi/toolbox/cha2ds2-vasc-score",
      "title": "CHA2DS2-VASc Score Calculator",
      "category": "fitness-health",
      "summary": "Annual stroke risk in atrial fibrillation to guide anticoagulation.",
      "formula": "CHF(1) + Hypertension(1) + Age≥75(2) + Diabetes(1) + Stroke/TIA(2) + Vascular disease(1) + Age65-74(1) + Female(1).",
      "inputs": [
        {
          "id": "chf",
          "label": "Congestive heart failure / LV dysfunction",
          "kind": "select"
        },
        {
          "id": "htn",
          "label": "Hypertension",
          "kind": "select"
        },
        {
          "id": "age",
          "label": "Age",
          "kind": "number"
        },
        {
          "id": "diabetes",
          "label": "Diabetes mellitus",
          "kind": "select"
        },
        {
          "id": "stroke",
          "label": "Prior stroke, TIA, or thromboembolism",
          "kind": "select"
        },
        {
          "id": "vascular",
          "label": "Vascular disease (MI, PAD, aortic plaque)",
          "kind": "select"
        },
        {
          "id": "sex",
          "label": "Sex",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "score",
          "label": "CHA2DS2-VASc score"
        },
        {
          "id": "annualRisk",
          "label": "Approx. annual stroke risk (%)"
        },
        {
          "id": "recommend",
          "label": "General guidance"
        }
      ]
    },
    {
      "slug": "has-bled-score",
      "url": "https://www.revenuelab.fyi/toolbox/has-bled-score",
      "title": "HAS-BLED Bleeding Risk Calculator",
      "category": "fitness-health",
      "summary": "Estimate major bleeding risk on anticoagulation for atrial fibrillation.",
      "formula": "1 point each for: uncontrolled HTN, abnormal renal function, abnormal liver function, stroke history, bleeding history, labile INR, age>65, drug/alcohol use (2 categories, max 2).",
      "inputs": [
        {
          "id": "htn",
          "label": "Uncontrolled hypertension (SBP >160)",
          "kind": "select"
        },
        {
          "id": "renal",
          "label": "Abnormal renal function (dialysis, transplant, Cr >2.26 mg/dL)",
          "kind": "select"
        },
        {
          "id": "liver",
          "label": "Abnormal liver function (cirrhosis, bilirubin/enzymes >2x normal)",
          "kind": "select"
        },
        {
          "id": "stroke",
          "label": "Prior stroke",
          "kind": "select"
        },
        {
          "id": "bleeding",
          "label": "Prior major bleeding or predisposition",
          "kind": "select"
        },
        {
          "id": "labileInr",
          "label": "Labile INR (if on warfarin)",
          "kind": "select"
        },
        {
          "id": "age",
          "label": "Age",
          "kind": "number"
        },
        {
          "id": "drugsAlcohol",
          "label": "Antiplatelet/NSAID use and/or excess alcohol",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "score",
          "label": "HAS-BLED score"
        },
        {
          "id": "risk",
          "label": "Bleeding risk category"
        }
      ]
    },
    {
      "slug": "child-pugh-score",
      "url": "https://www.revenuelab.fyi/toolbox/child-pugh-score",
      "title": "Child-Pugh Score Calculator",
      "category": "fitness-health",
      "summary": "Classify cirrhosis severity and estimate survival using five criteria.",
      "formula": "Sum of 5 criteria (1-3 points each): bilirubin, albumin, INR, ascites, encephalopathy. Class A: 5-6, B: 7-9, C: 10-15.",
      "inputs": [
        {
          "id": "bilirubin",
          "label": "Total bilirubin",
          "kind": "number"
        },
        {
          "id": "albumin",
          "label": "Albumin",
          "kind": "number"
        },
        {
          "id": "inr",
          "label": "INR",
          "kind": "number"
        },
        {
          "id": "ascites",
          "label": "Ascites",
          "kind": "select"
        },
        {
          "id": "encephalopathy",
          "label": "Hepatic encephalopathy",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "score",
          "label": "Child-Pugh score"
        },
        {
          "id": "cls",
          "label": "Child-Pugh class"
        },
        {
          "id": "survival",
          "label": "Historical survival estimate"
        }
      ]
    },
    {
      "slug": "meld-score",
      "url": "https://www.revenuelab.fyi/toolbox/meld-score",
      "title": "MELD-Na Score Calculator",
      "category": "fitness-health",
      "summary": "Model for End-Stage Liver Disease score used for transplant priority.",
      "formula": "MELD-Na = MELD + 1.32×(137−Na) − [0.033×MELD×(137−Na)], where MELD = 3.78×ln(bili) + 11.2×ln(INR) + 9.57×ln(creatinine) + 6.43.",
      "inputs": [
        {
          "id": "bilirubin",
          "label": "Total bilirubin",
          "kind": "number"
        },
        {
          "id": "creatinine",
          "label": "Creatinine",
          "kind": "number"
        },
        {
          "id": "inr",
          "label": "INR",
          "kind": "number"
        },
        {
          "id": "sodium",
          "label": "Sodium",
          "kind": "number"
        },
        {
          "id": "dialysis",
          "label": "Dialysis ≥2x in past week",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "finalScore",
          "label": "MELD-Na score"
        },
        {
          "id": "meldBase",
          "label": "Base MELD (no sodium)"
        },
        {
          "id": "mortality",
          "label": "Approx. 3-month mortality risk"
        }
      ]
    },
    {
      "slug": "glasgow-coma-scale",
      "url": "https://www.revenuelab.fyi/toolbox/glasgow-coma-scale",
      "title": "Glasgow Coma Scale (GCS) Calculator",
      "category": "fitness-health",
      "summary": "Standardize level of consciousness across eye, verbal, and motor response.",
      "formula": "GCS = Eye response (1-4) + Verbal response (1-5) + Motor response (1-6), range 3-15.",
      "inputs": [
        {
          "id": "eye",
          "label": "Best eye-opening response",
          "kind": "select"
        },
        {
          "id": "verbal",
          "label": "Best verbal response",
          "kind": "select"
        },
        {
          "id": "motor",
          "label": "Best motor response",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total GCS"
        },
        {
          "id": "breakdown",
          "label": "Component breakdown"
        },
        {
          "id": "severity",
          "label": "Injury severity category"
        },
        {
          "id": "airway",
          "label": "Airway consideration"
        }
      ]
    },
    {
      "slug": "winters-formula",
      "url": "https://www.revenuelab.fyi/toolbox/winters-formula",
      "title": "Winter's Formula Calculator",
      "category": "fitness-health",
      "summary": "Check whether pCO2 appropriately compensates a metabolic acidosis.",
      "formula": "Expected pCO2 = 1.5 × HCO3 + 8 ± 2 (mmHg).",
      "inputs": [
        {
          "id": "hco3",
          "label": "Bicarbonate (HCO3)",
          "kind": "number"
        },
        {
          "id": "measuredPco2",
          "label": "Measured pCO2",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "expected",
          "label": "Expected pCO2"
        },
        {
          "id": "range",
          "label": "Expected range (±2)"
        },
        {
          "id": "finding",
          "label": "Compensation assessment"
        }
      ]
    },
    {
      "slug": "delta-gap-ratio",
      "url": "https://www.revenuelab.fyi/toolbox/delta-gap-ratio",
      "title": "Delta Gap / Delta Ratio Calculator",
      "category": "fitness-health",
      "summary": "Detect a hidden second metabolic process alongside an anion gap acidosis.",
      "formula": "Delta gap = measured anion gap − 12 (assumed normal). Delta ratio = delta gap ÷ (24 − measured HCO3).",
      "inputs": [
        {
          "id": "na",
          "label": "Sodium",
          "kind": "number"
        },
        {
          "id": "cl",
          "label": "Chloride",
          "kind": "number"
        },
        {
          "id": "hco3",
          "label": "Bicarbonate (HCO3)",
          "kind": "number"
        },
        {
          "id": "normalAg",
          "label": "Assumed normal anion gap",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ag",
          "label": "Anion gap"
        },
        {
          "id": "deltaGap",
          "label": "Delta gap"
        },
        {
          "id": "deltaRatio",
          "label": "Delta ratio"
        },
        {
          "id": "interpretation",
          "label": "Interpretation"
        }
      ]
    },
    {
      "slug": "total-daily-insulin-dose",
      "url": "https://www.revenuelab.fyi/toolbox/total-daily-insulin-dose",
      "title": "Total Daily Insulin Dose Estimator",
      "category": "fitness-health",
      "summary": "Weight-based starting insulin dose split into basal and bolus components.",
      "formula": "TDD = weight (kg) × units/kg/day factor; Basal ≈ 50% of TDD; Bolus ≈ 50% of TDD split evenly across meals.",
      "inputs": [
        {
          "id": "weight",
          "label": "Weight",
          "kind": "number"
        },
        {
          "id": "factor",
          "label": "Starting factor",
          "kind": "select"
        },
        {
          "id": "meals",
          "label": "Meals per day",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "tdd",
          "label": "Estimated total daily dose"
        },
        {
          "id": "basal",
          "label": "Suggested basal dose"
        },
        {
          "id": "bolusTotal",
          "label": "Suggested total bolus dose"
        },
        {
          "id": "bolusPerMeal",
          "label": "Bolus per meal"
        }
      ]
    },
    {
      "slug": "bishop-score",
      "url": "https://www.revenuelab.fyi/toolbox/bishop-score",
      "title": "Bishop Score Calculator",
      "category": "fitness-health",
      "summary": "Assess cervical favorability before scheduling induction of labor.",
      "formula": "Sum of: Dilation(0-3) + Effacement(0-3) + Station(0-3) + Consistency(0-2) + Position(0-2), total 0-13.",
      "inputs": [
        {
          "id": "dilation",
          "label": "Cervical dilation",
          "kind": "select"
        },
        {
          "id": "effacement",
          "label": "Effacement",
          "kind": "select"
        },
        {
          "id": "station",
          "label": "Fetal station",
          "kind": "select"
        },
        {
          "id": "consistency",
          "label": "Cervical consistency",
          "kind": "select"
        },
        {
          "id": "position",
          "label": "Cervical position",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "score",
          "label": "Bishop score"
        },
        {
          "id": "favorability",
          "label": "Induction favorability"
        }
      ]
    },
    {
      "slug": "childcare-staffing-ratio-cost",
      "url": "https://www.revenuelab.fyi/toolbox/childcare-staffing-ratio-cost",
      "title": "Childcare Staffing Ratio Cost Calculator",
      "category": "financial",
      "summary": "Turn a required teacher-to-child ratio into a monthly labor cost per classroom.",
      "formula": "Staff needed = CEILING(enrolled children ÷ ratio); monthly labor cost = staff needed × loaded hourly rate × hours per week × 4.33; cost per child = monthly labor cost ÷ enrolled children.",
      "inputs": [
        {
          "id": "children",
          "label": "Enrolled children in this age group",
          "kind": "number"
        },
        {
          "id": "ratio",
          "label": "Required child-to-teacher ratio",
          "kind": "number"
        },
        {
          "id": "loadedRate",
          "label": "Fully-loaded pay per teacher",
          "kind": "number"
        },
        {
          "id": "hoursWeek",
          "label": "Hours per teacher per week",
          "kind": "number"
        },
        {
          "id": "tuition",
          "label": "Average monthly tuition per child",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "staff",
          "label": "Teachers required"
        },
        {
          "id": "monthlyLabor",
          "label": "Monthly classroom labor cost"
        },
        {
          "id": "costPerChild",
          "label": "Labor cost per child / month"
        },
        {
          "id": "laborShare",
          "label": "Labor as % of tuition revenue"
        },
        {
          "id": "nextChild",
          "label": "Children until next hire triggers"
        }
      ]
    },
    {
      "slug": "classroom-enrollment-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/classroom-enrollment-breakeven",
      "title": "Classroom Enrollment Breakeven Calculator",
      "category": "financial",
      "summary": "Find the minimum enrolled children a classroom needs to cover its costs.",
      "formula": "Breakeven children = fixed classroom cost ÷ net tuition per child; monthly margin = (enrolled − breakeven) × net tuition per child.",
      "inputs": [
        {
          "id": "teacherCost",
          "label": "Monthly teacher labor cost",
          "kind": "number"
        },
        {
          "id": "overhead",
          "label": "Allocated overhead (rent, utilities, insurance)",
          "kind": "number"
        },
        {
          "id": "supplies",
          "label": "Monthly supplies & curriculum cost",
          "kind": "number"
        },
        {
          "id": "netTuition",
          "label": "Average net tuition per child / month",
          "kind": "number"
        },
        {
          "id": "enrolled",
          "label": "Currently enrolled children",
          "kind": "number"
        },
        {
          "id": "capacity",
          "label": "Licensed classroom capacity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakeven",
          "label": "Breakeven enrollment"
        },
        {
          "id": "margin",
          "label": "Current monthly margin"
        },
        {
          "id": "seatsToBreakeven",
          "label": "Additional children needed"
        },
        {
          "id": "utilizationAtBreakeven",
          "label": "Breakeven as % of capacity"
        },
        {
          "id": "fixed",
          "label": "Total fixed classroom cost"
        }
      ]
    },
    {
      "slug": "tuition-increase-attrition-impact",
      "url": "https://www.revenuelab.fyi/toolbox/tuition-increase-attrition-impact",
      "title": "Tuition Increase Attrition Impact Calculator",
      "category": "financial",
      "summary": "See whether a tuition hike still grows revenue after expected family losses.",
      "formula": "New revenue = enrolled × (1 − attrition%) × new tuition; breakeven attrition% = 1 − (old tuition ÷ new tuition).",
      "inputs": [
        {
          "id": "enrolled",
          "label": "Currently enrolled children",
          "kind": "number"
        },
        {
          "id": "currentTuition",
          "label": "Current monthly tuition",
          "kind": "number"
        },
        {
          "id": "increasePct",
          "label": "Planned tuition increase",
          "kind": "number"
        },
        {
          "id": "attritionPct",
          "label": "Expected attrition from increase",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "revenueChange",
          "label": "Net revenue change / month"
        },
        {
          "id": "newRevenue",
          "label": "Projected new monthly revenue"
        },
        {
          "id": "revenueChangePct",
          "label": "Revenue change vs. today"
        },
        {
          "id": "breakevenAttrition",
          "label": "Max attrition before losing money"
        },
        {
          "id": "newTuition",
          "label": "New monthly tuition"
        }
      ]
    },
    {
      "slug": "childcare-subsidy-reimbursement",
      "url": "https://www.revenuelab.fyi/toolbox/childcare-subsidy-reimbursement",
      "title": "Childcare Subsidy Reimbursement Gap Calculator",
      "category": "financial",
      "summary": "Quantify the shortfall between your private-pay rate and state subsidy reimbursement.",
      "formula": "Gap per child = private-pay rate − (subsidy reimbursement + family co-pay); annual gap = monthly gap × 12 × subsidized seats.",
      "inputs": [
        {
          "id": "privateRate",
          "label": "Private-pay monthly rate",
          "kind": "number"
        },
        {
          "id": "subsidyRate",
          "label": "State subsidy reimbursement rate",
          "kind": "number"
        },
        {
          "id": "copay",
          "label": "Family co-pay",
          "kind": "number"
        },
        {
          "id": "subsidizedSeats",
          "label": "Number of subsidized seats",
          "kind": "number"
        },
        {
          "id": "totalSeats",
          "label": "Total enrolled children",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualGap",
          "label": "Annual reimbursement shortfall"
        },
        {
          "id": "monthlyGap",
          "label": "Monthly shortfall across seats"
        },
        {
          "id": "gap",
          "label": "Shortfall per child / month"
        },
        {
          "id": "blended",
          "label": "Blended average revenue per child"
        }
      ]
    },
    {
      "slug": "camp-session-margin",
      "url": "https://www.revenuelab.fyi/toolbox/camp-session-margin",
      "title": "Summer Camp Session Margin Calculator",
      "category": "financial",
      "summary": "Model profit per weekly camp session after staffing, supplies, and field trips.",
      "formula": "Counselors = CEILING(campers ÷ ratio); staffing cost = counselors × counselor pay for the week; total cost = staffing + campers × variable cost per camper; margin = revenue − total cost.",
      "inputs": [
        {
          "id": "campers",
          "label": "Campers enrolled this session",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per camper for the week",
          "kind": "number"
        },
        {
          "id": "ratio",
          "label": "Camper-to-counselor ratio",
          "kind": "number"
        },
        {
          "id": "counselorPay",
          "label": "Counselor pay for the week",
          "kind": "number"
        },
        {
          "id": "variableCost",
          "label": "Variable cost per camper (supplies, snacks, trips)",
          "kind": "number"
        },
        {
          "id": "fixedCost",
          "label": "Fixed session cost (site rental, director, insurance)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "margin",
          "label": "Session profit"
        },
        {
          "id": "marginPerCamper",
          "label": "Profit per camper"
        },
        {
          "id": "marginPct",
          "label": "Margin as % of revenue"
        },
        {
          "id": "counselors",
          "label": "Counselors required"
        },
        {
          "id": "totalCost",
          "label": "Total session cost"
        }
      ]
    },
    {
      "slug": "daycare-bus-route-cost-per-rider",
      "url": "https://www.revenuelab.fyi/toolbox/daycare-bus-route-cost-per-rider",
      "title": "Daycare & School Bus Route Cost Per Rider",
      "category": "financial",
      "summary": "Find your true cost per child for a van or bus route, and the fare that breaks even.",
      "formula": "Daily labor cost = (driver wage + monitor wage) × hours per day; monthly cost = (daily labor + daily fuel) × days per month + monthly insurance/lease allocation; cost per rider = monthly cost ÷ riders.",
      "inputs": [
        {
          "id": "riders",
          "label": "Children riding this route",
          "kind": "number"
        },
        {
          "id": "driverWage",
          "label": "Driver wage",
          "kind": "number"
        },
        {
          "id": "monitorWage",
          "label": "Monitor/aide wage (0 if none)",
          "kind": "number"
        },
        {
          "id": "hoursDay",
          "label": "Route hours per day (both trips)",
          "kind": "number"
        },
        {
          "id": "milesDay",
          "label": "Route miles per day (both trips)",
          "kind": "number"
        },
        {
          "id": "mpg",
          "label": "Vehicle fuel economy",
          "kind": "number"
        },
        {
          "id": "fixedMonthly",
          "label": "Monthly insurance + lease/depreciation",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerRider",
          "label": "True cost per rider / month"
        },
        {
          "id": "monthlyCost",
          "label": "Total monthly route cost"
        },
        {
          "id": "monthlyOperating",
          "label": "Monthly labor + fuel"
        },
        {
          "id": "dailyLabor",
          "label": "Daily labor cost"
        }
      ]
    },
    {
      "slug": "teacher-salary-scale-budget",
      "url": "https://www.revenuelab.fyi/toolbox/teacher-salary-scale-budget",
      "title": "Teacher Salary Scale Budget Calculator",
      "category": "financial",
      "summary": "Project total annual payroll across a step-and-lane teacher salary schedule.",
      "formula": "New avg salary = base salary × (1 + step%)^steps moved; total payroll = headcount × new avg salary × (1 + benefits load%).",
      "inputs": [
        {
          "id": "headcount",
          "label": "Teacher headcount",
          "kind": "number"
        },
        {
          "id": "baseSalary",
          "label": "Average current base salary",
          "kind": "number"
        },
        {
          "id": "stepPct",
          "label": "Salary increase per step",
          "kind": "number"
        },
        {
          "id": "stepsMoved",
          "label": "Average steps staff move this year",
          "kind": "number"
        },
        {
          "id": "colaPct",
          "label": "Additional across-the-board raise",
          "kind": "number"
        },
        {
          "id": "benefitsPct",
          "label": "Benefits + payroll tax load",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalPayroll",
          "label": "Total budgeted payroll"
        },
        {
          "id": "increase",
          "label": "Increase vs. last year"
        },
        {
          "id": "increasePct",
          "label": "Increase %"
        },
        {
          "id": "newAvg",
          "label": "New average base salary"
        }
      ]
    },
    {
      "slug": "financial-aid-discount-rate",
      "url": "https://www.revenuelab.fyi/toolbox/financial-aid-discount-rate",
      "title": "Tuition Discount Rate (Financial Aid) Calculator",
      "category": "financial",
      "summary": "See how much of your gross tuition revenue financial aid is actually consuming.",
      "formula": "Discount rate = total aid awarded ÷ gross tuition revenue; net tuition revenue = gross tuition − total aid; net revenue per student = net tuition revenue ÷ enrolled students.",
      "inputs": [
        {
          "id": "grossTuition",
          "label": "Gross tuition revenue (billed)",
          "kind": "number"
        },
        {
          "id": "aidAwarded",
          "label": "Total financial aid awarded",
          "kind": "number"
        },
        {
          "id": "enrolled",
          "label": "Enrolled students",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "discountRate",
          "label": "Tuition discount rate"
        },
        {
          "id": "netTuition",
          "label": "Net tuition revenue"
        },
        {
          "id": "netPerStudent",
          "label": "Net revenue per student"
        },
        {
          "id": "grossPerStudent",
          "label": "Gross tuition per student"
        }
      ]
    },
    {
      "slug": "facility-cost-per-child",
      "url": "https://www.revenuelab.fyi/toolbox/facility-cost-per-child",
      "title": "Facility Cost Per Child Calculator",
      "category": "financial",
      "summary": "Break down rent, utilities, maintenance, and insurance into a per-child monthly cost.",
      "formula": "Total facility cost = rent + utilities + maintenance + insurance + janitorial; cost per child = total facility cost ÷ enrolled children.",
      "inputs": [
        {
          "id": "rent",
          "label": "Monthly rent or mortgage",
          "kind": "number"
        },
        {
          "id": "utilities",
          "label": "Monthly utilities",
          "kind": "number"
        },
        {
          "id": "maintenance",
          "label": "Monthly maintenance & janitorial",
          "kind": "number"
        },
        {
          "id": "insurance",
          "label": "Monthly property/liability insurance",
          "kind": "number"
        },
        {
          "id": "enrolled",
          "label": "Currently enrolled children",
          "kind": "number"
        },
        {
          "id": "capacity",
          "label": "Licensed capacity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerChild",
          "label": "Facility cost per child (current)"
        },
        {
          "id": "costPerChildAtCapacity",
          "label": "Facility cost per child (at full capacity)"
        },
        {
          "id": "emptySeatCost",
          "label": "Monthly cost of unfilled seats"
        },
        {
          "id": "utilization",
          "label": "Capacity utilization"
        }
      ]
    },
    {
      "slug": "waitlist-conversion-value",
      "url": "https://www.revenuelab.fyi/toolbox/waitlist-conversion-value",
      "title": "Enrollment Waitlist Conversion Value Calculator",
      "category": "financial",
      "summary": "Estimate the tuition revenue sitting in your childcare or school waitlist.",
      "formula": "Converted families = waitlist size × conversion rate; monthly revenue from conversions = converted families × average tuition; revenue at risk = waitlist size × (target rate − actual rate) × average tuition.",
      "inputs": [
        {
          "id": "waitlistSize",
          "label": "Current waitlist size",
          "kind": "number"
        },
        {
          "id": "conversionRate",
          "label": "Historical waitlist-to-enrollment rate",
          "kind": "number"
        },
        {
          "id": "targetRate",
          "label": "Target conversion rate",
          "kind": "number"
        },
        {
          "id": "avgTuition",
          "label": "Average monthly tuition",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualRevenue",
          "label": "Projected annual revenue from waitlist"
        },
        {
          "id": "converted",
          "label": "Expected converted families"
        },
        {
          "id": "monthlyRevenue",
          "label": "Monthly revenue from conversions"
        },
        {
          "id": "revenueAtRisk",
          "label": "Monthly revenue left on the table vs. target"
        }
      ]
    },
    {
      "slug": "food-program-reimbursement",
      "url": "https://www.revenuelab.fyi/toolbox/food-program-reimbursement",
      "title": "CACFP Food Program Reimbursement Calculator",
      "category": "financial",
      "summary": "Estimate monthly CACFP reimbursement against actual meal program cost.",
      "formula": "Daily reimbursement = (breakfasts × breakfast rate + lunches × lunch rate + snacks × snack rate); monthly reimbursement = daily reimbursement × children × days served; margin = monthly reimbursement − monthly meal program cost.",
      "inputs": [
        {
          "id": "children",
          "label": "Children on the meal program",
          "kind": "number"
        },
        {
          "id": "breakfastRate",
          "label": "Blended breakfast reimbursement rate",
          "kind": "number"
        },
        {
          "id": "lunchRate",
          "label": "Blended lunch reimbursement rate",
          "kind": "number"
        },
        {
          "id": "snackRate",
          "label": "Blended snack reimbursement rate",
          "kind": "number"
        },
        {
          "id": "daysMonth",
          "label": "Days served per month",
          "kind": "number"
        },
        {
          "id": "monthlyMealCost",
          "label": "Actual monthly food + prep labor cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthlyReimbursement",
          "label": "Estimated monthly CACFP reimbursement"
        },
        {
          "id": "margin",
          "label": "Meal program margin"
        },
        {
          "id": "reimbursementPerChild",
          "label": "Reimbursement per child / month"
        },
        {
          "id": "perChildDaily",
          "label": "Reimbursement per child / day"
        }
      ]
    },
    {
      "slug": "substitute-teacher-cost",
      "url": "https://www.revenuelab.fyi/toolbox/substitute-teacher-cost",
      "title": "Substitute Teacher Cost Calculator",
      "category": "financial",
      "summary": "Project your annual substitute budget from absence rates and sub pay.",
      "formula": "Total sub days needed = headcount × avg absence days per teacher; internal sub cost = sub days × internal day rate; agency cost = sub days × agency day rate; savings = agency cost − internal cost.",
      "inputs": [
        {
          "id": "headcount",
          "label": "Teacher headcount",
          "kind": "number"
        },
        {
          "id": "absenceDays",
          "label": "Average absence days per teacher / year",
          "kind": "number"
        },
        {
          "id": "internalRate",
          "label": "Internal / float sub day rate",
          "kind": "number"
        },
        {
          "id": "agencyRate",
          "label": "Agency sub day rate",
          "kind": "number"
        },
        {
          "id": "classroomDays",
          "label": "Operating days per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "internalCost",
          "label": "Annual internal sub cost"
        },
        {
          "id": "agencyCost",
          "label": "Annual agency-only cost (comparison)"
        },
        {
          "id": "savings",
          "label": "Annual savings vs. agency-only"
        },
        {
          "id": "subDays",
          "label": "Total sub days needed / year"
        },
        {
          "id": "costPerOperatingDay",
          "label": "Sub cost per operating day"
        }
      ]
    },
    {
      "slug": "curriculum-cost-per-student",
      "url": "https://www.revenuelab.fyi/toolbox/curriculum-cost-per-student",
      "title": "Curriculum Cost Per Student Calculator",
      "category": "financial",
      "summary": "Amortize curriculum licensing, materials, and training into a per-student annual cost.",
      "formula": "Amortized training cost = one-time training cost ÷ useful life years; total annual cost = license fee + (consumable cost per student × students) + amortized training; cost per student = total annual cost ÷ students.",
      "inputs": [
        {
          "id": "licenseFee",
          "label": "Annual curriculum license / purchase",
          "kind": "number"
        },
        {
          "id": "consumablePerStudent",
          "label": "Consumable materials per student / year",
          "kind": "number"
        },
        {
          "id": "trainingCost",
          "label": "One-time staff training cost",
          "kind": "number"
        },
        {
          "id": "usefulLife",
          "label": "Curriculum useful life",
          "kind": "number"
        },
        {
          "id": "students",
          "label": "Students using this curriculum",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerStudent",
          "label": "Cost per student / year"
        },
        {
          "id": "costPerStudentMonth",
          "label": "Cost per student / month"
        },
        {
          "id": "totalAnnual",
          "label": "Total annual curriculum cost"
        },
        {
          "id": "amortizedTraining",
          "label": "Amortized training cost / year"
        }
      ]
    },
    {
      "slug": "extended-care-margin",
      "url": "https://www.revenuelab.fyi/toolbox/extended-care-margin",
      "title": "Extended-Care / Before-After-School Margin Calculator",
      "category": "financial",
      "summary": "Check whether your before/after-school or extended-day program actually profits.",
      "formula": "Staff needed = CEILING(children ÷ ratio); daily labor cost = staff × hourly pay × hours; daily revenue = children × price per child; margin = daily revenue − daily labor cost.",
      "inputs": [
        {
          "id": "children",
          "label": "Children enrolled in extended care",
          "kind": "number"
        },
        {
          "id": "ratio",
          "label": "Required ratio during this block",
          "kind": "number"
        },
        {
          "id": "hourlyPay",
          "label": "Staff hourly pay (loaded)",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Program length",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price charged per child per day",
          "kind": "number"
        },
        {
          "id": "daysMonth",
          "label": "Days offered per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthlyMargin",
          "label": "Monthly program margin"
        },
        {
          "id": "dailyMargin",
          "label": "Daily margin"
        },
        {
          "id": "marginPerChild",
          "label": "Margin per child / day"
        },
        {
          "id": "staff",
          "label": "Staff required this block"
        },
        {
          "id": "dailyLabor",
          "label": "Daily labor cost"
        }
      ]
    },
    {
      "slug": "child-staff-ratio-compliance-buffer",
      "url": "https://www.revenuelab.fyi/toolbox/child-staff-ratio-compliance-buffer",
      "title": "Child-Staff Ratio Compliance Buffer Calculator",
      "category": "financial",
      "summary": "See how many absences or arrivals your classroom can absorb before violating ratio.",
      "formula": "Max children allowed = staff present × ratio; buffer = max children allowed − children present; staff needed if one more child arrives = CEILING((children present + 1) ÷ ratio).",
      "inputs": [
        {
          "id": "childrenPresent",
          "label": "Children physically present",
          "kind": "number"
        },
        {
          "id": "staffPresent",
          "label": "Staff physically present",
          "kind": "number"
        },
        {
          "id": "ratio",
          "label": "Required child-to-staff ratio",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "buffer",
          "label": "Open slots before ratio is exceeded"
        },
        {
          "id": "maxAllowed",
          "label": "Max children allowed at current staffing"
        },
        {
          "id": "staffIfOneMore",
          "label": "Staff needed if one more child arrives"
        },
        {
          "id": "isCompliant",
          "label": "Currently compliant (1 = yes, 0 = no)"
        }
      ]
    },
    {
      "slug": "classroom-utilization-rate",
      "url": "https://www.revenuelab.fyi/toolbox/classroom-utilization-rate",
      "title": "Classroom Utilization Rate Calculator",
      "category": "financial",
      "summary": "Measure how much of your licensed capacity is actually generating revenue.",
      "formula": "Utilization = enrolled ÷ capacity; revenue gap = (capacity − enrolled) × avg tuition; enrollments needed to reach target = CEILING(target% × capacity) − enrolled.",
      "inputs": [
        {
          "id": "enrolled",
          "label": "Currently enrolled children",
          "kind": "number"
        },
        {
          "id": "capacity",
          "label": "Licensed capacity",
          "kind": "number"
        },
        {
          "id": "avgTuition",
          "label": "Average monthly tuition",
          "kind": "number"
        },
        {
          "id": "targetUtilization",
          "label": "Target utilization",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "utilization",
          "label": "Current utilization rate"
        },
        {
          "id": "revenueGap",
          "label": "Monthly revenue gap vs. full capacity"
        },
        {
          "id": "annualRevenueGap",
          "label": "Annualized revenue gap"
        },
        {
          "id": "enrollmentsNeeded",
          "label": "Enrollments needed to hit target"
        }
      ]
    },
    {
      "slug": "staff-turnover-cost",
      "url": "https://www.revenuelab.fyi/toolbox/staff-turnover-cost",
      "title": "Childcare Staff Turnover Cost Calculator",
      "category": "financial",
      "summary": "Put a dollar figure on losing and replacing a teacher.",
      "formula": "Cost per departure = recruiting cost + (hiring hours × supervisor hourly rate) + training cost + (productivity loss % × monthly salary × ramp-up months); annual turnover cost = cost per departure × departures per year.",
      "inputs": [
        {
          "id": "recruitingCost",
          "label": "Recruiting / advertising cost per hire",
          "kind": "number"
        },
        {
          "id": "hiringHours",
          "label": "Supervisor hours spent hiring & onboarding",
          "kind": "number"
        },
        {
          "id": "supervisorRate",
          "label": "Supervisor hourly rate (loaded)",
          "kind": "number"
        },
        {
          "id": "trainingCost",
          "label": "Training cost per new hire",
          "kind": "number"
        },
        {
          "id": "monthlySalary",
          "label": "New hire monthly salary",
          "kind": "number"
        },
        {
          "id": "rampMonths",
          "label": "Ramp-up period at reduced productivity",
          "kind": "number"
        },
        {
          "id": "departuresYear",
          "label": "Departures per year (center-wide)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualCost",
          "label": "Annual turnover cost"
        },
        {
          "id": "costPerDeparture",
          "label": "Cost per departure"
        },
        {
          "id": "hiringCost",
          "label": "Recruiting + onboarding cost per hire"
        },
        {
          "id": "productivityLoss",
          "label": "Estimated productivity loss per hire"
        }
      ]
    },
    {
      "slug": "tuition-assistance-budget-cap",
      "url": "https://www.revenuelab.fyi/toolbox/tuition-assistance-budget-cap",
      "title": "Tuition Assistance Budget Cap Calculator",
      "category": "financial",
      "summary": "Set a sustainable annual cap for financial aid awards before committee season starts.",
      "formula": "Max aid budget = gross tuition × target discount rate; tuition-funded portion = max aid budget − dedicated funding; average award = max aid budget ÷ expected aid recipients.",
      "inputs": [
        {
          "id": "grossTuition",
          "label": "Projected gross tuition revenue",
          "kind": "number"
        },
        {
          "id": "targetDiscountRate",
          "label": "Target discount rate ceiling",
          "kind": "number"
        },
        {
          "id": "dedicatedFunding",
          "label": "Dedicated aid funding (endowment/annual fund)",
          "kind": "number"
        },
        {
          "id": "recipients",
          "label": "Expected number of aid recipients",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "maxAidBudget",
          "label": "Max sustainable aid budget"
        },
        {
          "id": "tuitionFunded",
          "label": "Portion funded by tuition dollars"
        },
        {
          "id": "avgAward",
          "label": "Average award if spread evenly"
        },
        {
          "id": "dedicated",
          "label": "Dedicated funding applied"
        }
      ]
    },
    {
      "slug": "multi-site-center-pnl-rollup",
      "url": "https://www.revenuelab.fyi/toolbox/multi-site-center-pnl-rollup",
      "title": "Multi-Site Childcare Center P&L Rollup Calculator",
      "category": "financial",
      "summary": "Roll up revenue and cost across multiple center locations into one operating margin.",
      "formula": "Combined revenue = site A revenue + site B revenue; combined margin % = (combined revenue − combined cost) ÷ combined revenue; margin gap = site A margin% − site B margin%.",
      "inputs": [
        {
          "id": "revenueA",
          "label": "Site A monthly revenue",
          "kind": "number"
        },
        {
          "id": "costA",
          "label": "Site A monthly operating cost",
          "kind": "number"
        },
        {
          "id": "revenueB",
          "label": "Site B monthly revenue",
          "kind": "number"
        },
        {
          "id": "costB",
          "label": "Site B monthly operating cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "combinedMarginPct",
          "label": "Blended operating margin %"
        },
        {
          "id": "combinedMargin",
          "label": "Combined monthly operating margin"
        },
        {
          "id": "marginPctA",
          "label": "Site A margin %"
        },
        {
          "id": "marginPctB",
          "label": "Site B margin %"
        },
        {
          "id": "marginGap",
          "label": "Margin gap (A minus B)"
        }
      ]
    },
    {
      "slug": "licensing-capacity-revenue-gap",
      "url": "https://www.revenuelab.fyi/toolbox/licensing-capacity-revenue-gap",
      "title": "Licensing Capacity Revenue Gap Calculator",
      "category": "financial",
      "summary": "Find the revenue you're leaving on the table between actual and licensed capacity.",
      "formula": "Unused capacity value = (licensed capacity − enrolled) × avg tuition × 12; expansion value = (proposed new capacity − licensed capacity) × avg tuition × 12; payback period = expansion cost ÷ (expansion value ÷ 12).",
      "inputs": [
        {
          "id": "licensedCapacity",
          "label": "Current licensed capacity",
          "kind": "number"
        },
        {
          "id": "enrolled",
          "label": "Currently enrolled",
          "kind": "number"
        },
        {
          "id": "avgTuition",
          "label": "Average monthly tuition",
          "kind": "number"
        },
        {
          "id": "proposedCapacity",
          "label": "Proposed new licensed capacity",
          "kind": "number"
        },
        {
          "id": "expansionCost",
          "label": "One-time cost to expand license",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "unusedValue",
          "label": "Annual value of unused current capacity"
        },
        {
          "id": "expansionAnnualValue",
          "label": "Annual revenue from proposed expansion"
        },
        {
          "id": "paybackMonths",
          "label": "Expansion payback period"
        },
        {
          "id": "expansionCost",
          "label": "One-time expansion cost"
        }
      ]
    },
    {
      "slug": "field-trip-cost-per-child",
      "url": "https://www.revenuelab.fyi/toolbox/field-trip-cost-per-child",
      "title": "Field Trip Cost Per Child Calculator",
      "category": "financial",
      "summary": "Price a field trip correctly by counting admission, transportation, and staffing.",
      "formula": "Total trip cost = (admission × children) + transportation cost + (extra staff × staff day rate); cost per child = total trip cost ÷ children.",
      "inputs": [
        {
          "id": "children",
          "label": "Children attending",
          "kind": "number"
        },
        {
          "id": "admissionPerChild",
          "label": "Admission cost per child",
          "kind": "number"
        },
        {
          "id": "transportCost",
          "label": "Bus/van rental for the trip",
          "kind": "number"
        },
        {
          "id": "offsiteRatio",
          "label": "Required off-site ratio",
          "kind": "number"
        },
        {
          "id": "staffDayRate",
          "label": "Staff/chaperone day rate",
          "kind": "number"
        },
        {
          "id": "chargeFamily",
          "label": "Amount charged per family (0 if free)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerChild",
          "label": "True cost per child"
        },
        {
          "id": "totalCost",
          "label": "Total trip cost"
        },
        {
          "id": "subsidyPerChild",
          "label": "Subsidy per child vs. amount charged"
        },
        {
          "id": "totalSubsidy",
          "label": "Total trip subsidy"
        },
        {
          "id": "staffNeeded",
          "label": "Chaperones/staff required"
        }
      ]
    },
    {
      "slug": "director-span-of-control-cost",
      "url": "https://www.revenuelab.fyi/toolbox/director-span-of-control-cost",
      "title": "Director Span-of-Control Cost Calculator",
      "category": "financial",
      "summary": "Find the management overhead cost per teacher at your current supervisor ratio.",
      "formula": "Management cost per teacher = supervisor loaded salary ÷ teachers supervised; management cost per child = supervisor loaded salary ÷ enrolled children.",
      "inputs": [
        {
          "id": "supervisorSalary",
          "label": "Supervisor annual loaded salary",
          "kind": "number"
        },
        {
          "id": "teachersSupervised",
          "label": "Teachers directly supervised",
          "kind": "number"
        },
        {
          "id": "enrolled",
          "label": "Children enrolled under this supervisor",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerTeacher",
          "label": "Management cost per teacher / year"
        },
        {
          "id": "costPerChild",
          "label": "Management cost per child / year"
        },
        {
          "id": "costPerChildMonth",
          "label": "Management cost per child / month"
        },
        {
          "id": "salary",
          "label": "Supervisor annual loaded salary"
        }
      ]
    },
    {
      "slug": "seasonal-enrollment-cashflow",
      "url": "https://www.revenuelab.fyi/toolbox/seasonal-enrollment-cashflow",
      "title": "Seasonal Enrollment Cash Flow Calculator",
      "category": "financial",
      "summary": "Project monthly cash flow through a school-year enrollment cycle with summer dips.",
      "formula": "Monthly enrollment = baseline × (1 − dip% during summer months); monthly revenue = enrollment × tuition; monthly cash flow = revenue − fixed cost − (enrollment × variable cost per child); cumulative cash flow tracked month over month.",
      "inputs": [
        {
          "id": "baselineEnrollment",
          "label": "Baseline (peak season) enrollment",
          "kind": "number"
        },
        {
          "id": "summerDipPct",
          "label": "Summer enrollment dip",
          "kind": "number"
        },
        {
          "id": "tuition",
          "label": "Average monthly tuition",
          "kind": "number"
        },
        {
          "id": "fixedCost",
          "label": "Fixed monthly cost (rent, base staffing)",
          "kind": "number"
        },
        {
          "id": "variableCostPerChild",
          "label": "Variable cost per enrolled child",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "summerCashFlow",
          "label": "Summer month cash flow"
        },
        {
          "id": "peakCashFlow",
          "label": "Peak season month cash flow"
        },
        {
          "id": "annualCashFlow",
          "label": "Projected annual cash flow"
        },
        {
          "id": "worstMonthDeficit",
          "label": "Worst-case monthly deficit"
        }
      ]
    },
    {
      "slug": "childcare-late-pickup-fee-policy",
      "url": "https://www.revenuelab.fyi/toolbox/childcare-late-pickup-fee-policy",
      "title": "Late Pickup Fee Policy Calculator",
      "category": "financial",
      "summary": "Price late pickup fees so they cover staffing cost and actually change parent behavior.",
      "formula": "Cost per Episode = Staff Required × Loaded Rate/hr × (Minutes ÷ 60). Breakeven Fee/min = Cost per Episode ÷ Minutes. Monthly Subsidy = Episodes × (Cost per Episode − Fee Collected).",
      "inputs": [
        {
          "id": "episodes",
          "label": "Late pickup episodes per month",
          "kind": "number"
        },
        {
          "id": "avgMinutes",
          "label": "Average minutes past close",
          "kind": "number"
        },
        {
          "id": "staffRequired",
          "label": "Staff who must stay",
          "kind": "number"
        },
        {
          "id": "loadedRate",
          "label": "Loaded staff cost per hour",
          "kind": "number"
        },
        {
          "id": "otMultiplier",
          "label": "Overtime multiplier",
          "kind": "number"
        },
        {
          "id": "currentFee",
          "label": "Current fee charged per minute",
          "kind": "number"
        },
        {
          "id": "deterrentMultiple",
          "label": "Deterrent multiple over cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "suggestedFee",
          "label": "Suggested fee per minute"
        },
        {
          "id": "breakevenPerMinute",
          "label": "Break-even fee per minute"
        },
        {
          "id": "costPerEpisode",
          "label": "Your cost per late episode"
        },
        {
          "id": "monthlySubsidy",
          "label": "Monthly amount you are absorbing"
        },
        {
          "id": "monthlyCost",
          "label": "Total monthly late-pickup labor cost"
        },
        {
          "id": "collected",
          "label": "Fee collected per episode today"
        }
      ]
    },
    {
      "slug": "preschool-marketing-cost-per-enrollment",
      "url": "https://www.revenuelab.fyi/toolbox/preschool-marketing-cost-per-enrollment",
      "title": "Preschool Marketing Cost Per Enrollment Calculator",
      "category": "financial",
      "summary": "What it costs to fill one seat, and what that seat is worth over the family's stay.",
      "formula": "Enrollments = Inquiries × Tour Rate × Tour-to-Enroll Rate. CPE = Total Spend ÷ Enrollments. LTV = Monthly Tuition × Avg Months Enrolled. LTV:CPE = LTV ÷ CPE.",
      "inputs": [
        {
          "id": "spend",
          "label": "Monthly marketing spend",
          "kind": "number"
        },
        {
          "id": "inquiries",
          "label": "Inquiries per month",
          "kind": "number"
        },
        {
          "id": "tourRate",
          "label": "Inquiry-to-tour rate",
          "kind": "number"
        },
        {
          "id": "enrollRate",
          "label": "Tour-to-enrollment rate",
          "kind": "number"
        },
        {
          "id": "tuition",
          "label": "Monthly tuition per child",
          "kind": "number"
        },
        {
          "id": "avgMonths",
          "label": "Average months a family stays",
          "kind": "number"
        },
        {
          "id": "grossMargin",
          "label": "Contribution margin on tuition",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cpe",
          "label": "Cost per enrolled child"
        },
        {
          "id": "enrollments",
          "label": "Enrollments produced per month"
        },
        {
          "id": "ltv",
          "label": "Gross tuition per enrollment"
        },
        {
          "id": "ltvMargin",
          "label": "Contribution margin per enrollment"
        },
        {
          "id": "ratio",
          "label": "Margin-to-acquisition-cost ratio"
        },
        {
          "id": "paybackMonths",
          "label": "Months to pay back acquisition cost"
        }
      ]
    },
    {
      "slug": "mortgage",
      "url": "https://www.revenuelab.fyi/toolbox/mortgage",
      "title": "Mortgage Calculator",
      "category": "financial",
      "summary": "Estimate your monthly mortgage payment, total interest, and payoff.",
      "formula": "Monthly payment = P × r / (1 − (1+r)^−n), where r is the monthly rate and n is months.",
      "inputs": [
        {
          "id": "price",
          "label": "Home price",
          "kind": "number"
        },
        {
          "id": "down",
          "label": "Down payment",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Interest rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Loan term",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthly",
          "label": "Monthly payment"
        },
        {
          "id": "loanAmount",
          "label": "Loan amount"
        },
        {
          "id": "totalInterest",
          "label": "Total interest"
        },
        {
          "id": "totalPaid",
          "label": "Total paid"
        }
      ]
    },
    {
      "slug": "auto-loan",
      "url": "https://www.revenuelab.fyi/toolbox/auto-loan",
      "title": "Auto Loan Calculator",
      "category": "financial",
      "summary": "Calculate your monthly car payment and total interest.",
      "inputs": [
        {
          "id": "price",
          "label": "Vehicle price",
          "kind": "number"
        },
        {
          "id": "down",
          "label": "Down payment",
          "kind": "number"
        },
        {
          "id": "trade",
          "label": "Trade-in value",
          "kind": "number"
        },
        {
          "id": "tax",
          "label": "Sales tax",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Interest rate",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Loan term",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthly",
          "label": "Monthly payment"
        },
        {
          "id": "loanAmount",
          "label": "Loan amount"
        },
        {
          "id": "totalInterest",
          "label": "Total interest"
        },
        {
          "id": "totalPaid",
          "label": "Total paid"
        }
      ]
    },
    {
      "slug": "loan",
      "url": "https://www.revenuelab.fyi/toolbox/loan",
      "title": "Loan Calculator",
      "category": "financial",
      "summary": "Find the monthly payment on any fixed-rate loan.",
      "inputs": [
        {
          "id": "amount",
          "label": "Loan amount",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Interest rate",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Loan term",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthly",
          "label": "Monthly payment"
        },
        {
          "id": "totalInterest",
          "label": "Total interest"
        },
        {
          "id": "totalPaid",
          "label": "Total paid"
        }
      ]
    },
    {
      "slug": "amortization",
      "url": "https://www.revenuelab.fyi/toolbox/amortization",
      "title": "Amortization Calculator",
      "category": "financial",
      "summary": "See how much of each payment goes to principal vs. interest.",
      "inputs": [
        {
          "id": "amount",
          "label": "Loan amount",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Interest rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Loan term",
          "kind": "number"
        },
        {
          "id": "after",
          "label": "Show balance after (years)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthly",
          "label": "Monthly payment"
        },
        {
          "id": "balanceAfter",
          "label": "Remaining balance"
        },
        {
          "id": "interestPaidSoFar",
          "label": "Interest paid so far"
        },
        {
          "id": "principalPaidSoFar",
          "label": "Principal paid so far"
        }
      ]
    },
    {
      "slug": "investment",
      "url": "https://www.revenuelab.fyi/toolbox/investment",
      "title": "Investment Calculator",
      "category": "financial",
      "summary": "Project the future value of an investment with contributions.",
      "formula": "FV = P(1+r)^n + PMT × ((1+r)^n − 1) / r, monthly compounded.",
      "inputs": [
        {
          "id": "principal",
          "label": "Starting amount",
          "kind": "number"
        },
        {
          "id": "monthly",
          "label": "Monthly contribution",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Annual return",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "future",
          "label": "Future value"
        },
        {
          "id": "contributed",
          "label": "Total contributed"
        },
        {
          "id": "earnings",
          "label": "Earnings"
        }
      ]
    },
    {
      "slug": "compound-interest",
      "url": "https://www.revenuelab.fyi/toolbox/compound-interest",
      "title": "Compound Interest Calculator",
      "category": "financial",
      "summary": "See how a lump sum grows with compounding over time.",
      "formula": "FV = P × (1 + r/n)^(n·t)",
      "inputs": [
        {
          "id": "principal",
          "label": "Starting amount",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Annual rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years",
          "kind": "number"
        },
        {
          "id": "freq",
          "label": "Compounding",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "future",
          "label": "Future value"
        },
        {
          "id": "earnings",
          "label": "Interest earned"
        }
      ]
    },
    {
      "slug": "savings",
      "url": "https://www.revenuelab.fyi/toolbox/savings",
      "title": "Savings Calculator",
      "category": "financial",
      "summary": "How much you'll save with regular deposits.",
      "inputs": [
        {
          "id": "principal",
          "label": "Initial deposit",
          "kind": "number"
        },
        {
          "id": "monthly",
          "label": "Monthly deposit",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "APY",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "future",
          "label": "Future balance"
        },
        {
          "id": "contributed",
          "label": "Total deposited"
        },
        {
          "id": "earnings",
          "label": "Interest earned"
        }
      ]
    },
    {
      "slug": "cd",
      "url": "https://www.revenuelab.fyi/toolbox/cd",
      "title": "CD Calculator",
      "category": "financial",
      "summary": "See what a CD pays at maturity.",
      "inputs": [
        {
          "id": "principal",
          "label": "Deposit",
          "kind": "number"
        },
        {
          "id": "apy",
          "label": "APY",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Term",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "future",
          "label": "At maturity"
        },
        {
          "id": "earnings",
          "label": "Interest earned"
        }
      ]
    },
    {
      "slug": "retirement",
      "url": "https://www.revenuelab.fyi/toolbox/retirement",
      "title": "Retirement Calculator",
      "category": "financial",
      "summary": "Project your retirement nest egg.",
      "inputs": [
        {
          "id": "currentAge",
          "label": "Current age",
          "kind": "number"
        },
        {
          "id": "retireAge",
          "label": "Retire at",
          "kind": "number"
        },
        {
          "id": "current",
          "label": "Current savings",
          "kind": "number"
        },
        {
          "id": "monthly",
          "label": "Monthly contribution",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Annual return",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "future",
          "label": "Projected balance"
        },
        {
          "id": "contributed",
          "label": "Total contributed"
        },
        {
          "id": "years",
          "label": "Years until retirement"
        }
      ]
    },
    {
      "slug": "roi",
      "url": "https://www.revenuelab.fyi/toolbox/roi",
      "title": "ROI Calculator",
      "category": "financial",
      "summary": "Return on investment, simple and annualized.",
      "formula": "ROI = (Value − Cost) / Cost · 100%. Annualized = (Value/Cost)^(1/t) − 1.",
      "inputs": [
        {
          "id": "cost",
          "label": "Initial cost",
          "kind": "number"
        },
        {
          "id": "value",
          "label": "Final value",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Holding period",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "roi",
          "label": "Total ROI"
        },
        {
          "id": "annualized",
          "label": "Annualized return"
        },
        {
          "id": "gain",
          "label": "Net gain"
        }
      ]
    },
    {
      "slug": "inflation",
      "url": "https://www.revenuelab.fyi/toolbox/inflation",
      "title": "Inflation Calculator",
      "category": "financial",
      "summary": "See how much purchasing power changes over time.",
      "inputs": [
        {
          "id": "amount",
          "label": "Today's amount",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Annual inflation",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years from now",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "future",
          "label": "Equivalent future cost"
        },
        {
          "id": "purchasing",
          "label": "Today's value in future dollars"
        },
        {
          "id": "lost",
          "label": "Purchasing power lost"
        }
      ]
    },
    {
      "slug": "simple-interest",
      "url": "https://www.revenuelab.fyi/toolbox/simple-interest",
      "title": "Simple Interest Calculator",
      "category": "financial",
      "summary": "Interest = P × r × t (no compounding).",
      "formula": "I = P × r × t",
      "inputs": [
        {
          "id": "principal",
          "label": "Principal",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Annual rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "interest",
          "label": "Interest"
        },
        {
          "id": "total",
          "label": "Total balance"
        }
      ]
    },
    {
      "slug": "credit-card-payoff",
      "url": "https://www.revenuelab.fyi/toolbox/credit-card-payoff",
      "title": "Credit Card Payoff Calculator",
      "category": "financial",
      "summary": "How long to pay off a balance — and total interest.",
      "inputs": [
        {
          "id": "balance",
          "label": "Current balance",
          "kind": "number"
        },
        {
          "id": "apr",
          "label": "APR",
          "kind": "number"
        },
        {
          "id": "payment",
          "label": "Monthly payment",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "months",
          "label": "Months to payoff"
        },
        {
          "id": "totalInterest",
          "label": "Total interest"
        },
        {
          "id": "totalPaid",
          "label": "Total paid"
        }
      ]
    },
    {
      "slug": "refinance",
      "url": "https://www.revenuelab.fyi/toolbox/refinance",
      "title": "Refinance Calculator",
      "category": "financial",
      "summary": "Compare your current loan to a new one.",
      "inputs": [
        {
          "id": "balance",
          "label": "Current balance",
          "kind": "number"
        },
        {
          "id": "oldRate",
          "label": "Current rate",
          "kind": "number"
        },
        {
          "id": "oldYearsLeft",
          "label": "Years left",
          "kind": "number"
        },
        {
          "id": "newRate",
          "label": "New rate",
          "kind": "number"
        },
        {
          "id": "newYears",
          "label": "New term",
          "kind": "number"
        },
        {
          "id": "costs",
          "label": "Closing costs",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "newPmt",
          "label": "New monthly payment"
        },
        {
          "id": "oldPmt",
          "label": "Old monthly payment"
        },
        {
          "id": "savings",
          "label": "Monthly savings"
        },
        {
          "id": "breakeven",
          "label": "Break-even (months)"
        }
      ]
    },
    {
      "slug": "salary",
      "url": "https://www.revenuelab.fyi/toolbox/salary",
      "title": "Salary Calculator",
      "category": "financial",
      "summary": "Convert hourly, weekly, monthly, and annual pay.",
      "inputs": [
        {
          "id": "amount",
          "label": "Amount",
          "kind": "number"
        },
        {
          "id": "period",
          "label": "Period",
          "kind": "select"
        },
        {
          "id": "hoursPerWeek",
          "label": "Hours per week",
          "kind": "number"
        },
        {
          "id": "weeksPerYear",
          "label": "Weeks per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annual",
          "label": "Annual"
        },
        {
          "id": "monthly",
          "label": "Monthly"
        },
        {
          "id": "biweekly",
          "label": "Bi-weekly"
        },
        {
          "id": "weekly",
          "label": "Weekly"
        },
        {
          "id": "hourly",
          "label": "Hourly"
        }
      ]
    },
    {
      "slug": "sales-tax",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax",
      "title": "Sales Tax Calculator",
      "category": "financial",
      "summary": "Add (or strip out) sales tax from a price.",
      "inputs": [
        {
          "id": "price",
          "label": "Pre-tax price",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Tax rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with tax"
        },
        {
          "id": "tax",
          "label": "Tax amount"
        }
      ]
    },
    {
      "slug": "discount",
      "url": "https://www.revenuelab.fyi/toolbox/discount",
      "title": "Discount Calculator",
      "category": "financial",
      "summary": "Find the sale price after a percentage off.",
      "inputs": [
        {
          "id": "price",
          "label": "Original price",
          "kind": "number"
        },
        {
          "id": "off",
          "label": "Discount",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "final",
          "label": "Sale price"
        },
        {
          "id": "savings",
          "label": "You save"
        }
      ]
    },
    {
      "slug": "down-payment",
      "url": "https://www.revenuelab.fyi/toolbox/down-payment",
      "title": "Down Payment Calculator",
      "category": "financial",
      "summary": "See how much cash you need down and what it does to your payment.",
      "formula": "Down payment = Price × Percent. Loan = Price − Down payment. PMI applies below 20% equity.",
      "inputs": [
        {
          "id": "price",
          "label": "Home price",
          "kind": "number"
        },
        {
          "id": "pct",
          "label": "Down payment",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Interest rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Term",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "down",
          "label": "Cash needed at closing"
        },
        {
          "id": "loan",
          "label": "Loan amount"
        },
        {
          "id": "pi",
          "label": "Principal + interest"
        },
        {
          "id": "pmi",
          "label": "Estimated PMI"
        },
        {
          "id": "monthly",
          "label": "Monthly total"
        }
      ]
    },
    {
      "slug": "closing-costs",
      "url": "https://www.revenuelab.fyi/toolbox/closing-costs",
      "title": "Closing Cost Calculator",
      "category": "financial",
      "summary": "Estimate the cash you need on top of the down payment.",
      "formula": "Cash to close = Down payment + (Price × Closing cost %) + Prepaid escrow.",
      "inputs": [
        {
          "id": "price",
          "label": "Home price",
          "kind": "number"
        },
        {
          "id": "downPct",
          "label": "Down payment",
          "kind": "number"
        },
        {
          "id": "costPct",
          "label": "Closing costs",
          "kind": "number"
        },
        {
          "id": "escrow",
          "label": "Prepaid escrow",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cashToClose",
          "label": "Total cash to close"
        },
        {
          "id": "down",
          "label": "Down payment"
        },
        {
          "id": "fees",
          "label": "Closing costs"
        },
        {
          "id": "escrow",
          "label": "Prepaid escrow"
        }
      ]
    },
    {
      "slug": "house-affordability",
      "url": "https://www.revenuelab.fyi/toolbox/house-affordability",
      "title": "House Affordability Calculator",
      "category": "financial",
      "summary": "How much house your income actually supports.",
      "formula": "Max payment = (Gross monthly income × DTI%) − existing debt. Loan is back-solved from that payment.",
      "inputs": [
        {
          "id": "income",
          "label": "Gross annual income",
          "kind": "number"
        },
        {
          "id": "debts",
          "label": "Other monthly debt",
          "kind": "number"
        },
        {
          "id": "dti",
          "label": "Max DTI",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Interest rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Term",
          "kind": "number"
        },
        {
          "id": "downPct",
          "label": "Down payment",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Affordable home price"
        },
        {
          "id": "loan",
          "label": "Supported loan amount"
        },
        {
          "id": "down",
          "label": "Down payment needed"
        },
        {
          "id": "budget",
          "label": "Max total housing payment"
        },
        {
          "id": "piBudget",
          "label": "Of that, principal + interest"
        }
      ]
    },
    {
      "slug": "car-affordability",
      "url": "https://www.revenuelab.fyi/toolbox/car-affordability",
      "title": "Car Affordability Calculator",
      "category": "financial",
      "summary": "The car price your budget really supports.",
      "formula": "Loan capacity is back-solved from the payment, then price = loan + down payment + trade-in.",
      "inputs": [
        {
          "id": "payment",
          "label": "Comfortable monthly payment",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "APR",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Term",
          "kind": "number"
        },
        {
          "id": "down",
          "label": "Down payment + trade-in",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Affordable car price"
        },
        {
          "id": "loan",
          "label": "Loan amount"
        },
        {
          "id": "interest",
          "label": "Total interest"
        },
        {
          "id": "totalPaid",
          "label": "Total of payments"
        }
      ]
    },
    {
      "slug": "lease-vs-buy-car",
      "url": "https://www.revenuelab.fyi/toolbox/lease-vs-buy-car",
      "title": "Lease vs Buy Car Calculator",
      "category": "financial",
      "summary": "Compare the true cost of leasing against financing.",
      "formula": "Lease cost = payments + drive-off. Buy cost = payments + down − resale value.",
      "inputs": [
        {
          "id": "months",
          "label": "Comparison period",
          "kind": "number"
        },
        {
          "id": "leasePayment",
          "label": "Lease payment",
          "kind": "number"
        },
        {
          "id": "leaseDown",
          "label": "Lease drive-off cost",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "buyDown",
          "label": "Purchase down payment",
          "kind": "number"
        },
        {
          "id": "apr",
          "label": "Loan APR",
          "kind": "number"
        },
        {
          "id": "loanMonths",
          "label": "Loan term",
          "kind": "number"
        },
        {
          "id": "resalePct",
          "label": "Resale value at end",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "verdict",
          "label": "Cheaper option"
        },
        {
          "id": "difference",
          "label": "Cost gap over the period"
        },
        {
          "id": "leaseCost",
          "label": "Total lease cost"
        },
        {
          "id": "buyCost",
          "label": "Net cost to buy"
        },
        {
          "id": "buyMonthly",
          "label": "Loan payment"
        }
      ]
    },
    {
      "slug": "heloc",
      "url": "https://www.revenuelab.fyi/toolbox/heloc",
      "title": "HELOC Payment Calculator",
      "category": "financial",
      "summary": "Interest-only draw payments and the repayment shock after.",
      "formula": "Draw payment = Balance × Rate ÷ 12. Repayment payment amortises the balance over the repayment term.",
      "inputs": [
        {
          "id": "value",
          "label": "Home value",
          "kind": "number"
        },
        {
          "id": "mortgage",
          "label": "Mortgage balance",
          "kind": "number"
        },
        {
          "id": "ltv",
          "label": "Max combined LTV",
          "kind": "number"
        },
        {
          "id": "draw",
          "label": "Amount drawn",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Rate",
          "kind": "number"
        },
        {
          "id": "repayYears",
          "label": "Repayment term",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "available",
          "label": "Credit line available"
        },
        {
          "id": "interestOnly",
          "label": "Draw-period payment"
        },
        {
          "id": "repayment",
          "label": "Repayment-period payment"
        },
        {
          "id": "jump",
          "label": "Payment increase at conversion"
        },
        {
          "id": "drawn",
          "label": "Amount drawn"
        }
      ]
    },
    {
      "slug": "student-loan",
      "url": "https://www.revenuelab.fyi/toolbox/student-loan",
      "title": "Student Loan Calculator",
      "category": "financial",
      "summary": "Payment, payoff date, and total interest on student debt.",
      "formula": "Standard amortisation, with any extra payment applied directly to principal each month.",
      "inputs": [
        {
          "id": "balance",
          "label": "Loan balance",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Interest rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Term",
          "kind": "number"
        },
        {
          "id": "extra",
          "label": "Extra monthly payment",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "payment",
          "label": "Standard monthly payment"
        },
        {
          "id": "interest",
          "label": "Total interest (standard)"
        },
        {
          "id": "months",
          "label": "Payoff time with extra"
        },
        {
          "id": "saved",
          "label": "Interest saved by paying extra"
        }
      ]
    },
    {
      "slug": "debt-payoff",
      "url": "https://www.revenuelab.fyi/toolbox/debt-payoff",
      "title": "Debt Payoff Calculator",
      "category": "financial",
      "summary": "How long until a balance is gone, and what interest costs you.",
      "formula": "Months = ln(Payment ÷ (Payment − Balance × r)) ÷ ln(1 + r), where r is the monthly rate.",
      "inputs": [
        {
          "id": "balance",
          "label": "Balance",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "APR",
          "kind": "number"
        },
        {
          "id": "payment",
          "label": "Monthly payment",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "months",
          "label": "Months to payoff"
        },
        {
          "id": "interest",
          "label": "Total interest"
        },
        {
          "id": "totalPaid",
          "label": "Total paid"
        },
        {
          "id": "status",
          "label": "Status"
        }
      ]
    },
    {
      "slug": "debt-snowball",
      "url": "https://www.revenuelab.fyi/toolbox/debt-snowball",
      "title": "Debt Snowball Calculator",
      "category": "financial",
      "summary": "Compare snowball and avalanche payoff on three debts.",
      "formula": "Both methods roll each cleared debt's payment into the next debt in the chosen order.",
      "inputs": [
        {
          "id": "b1",
          "label": "Debt 1 balance",
          "kind": "number"
        },
        {
          "id": "r1",
          "label": "Debt 1 APR",
          "kind": "number"
        },
        {
          "id": "b2",
          "label": "Debt 2 balance",
          "kind": "number"
        },
        {
          "id": "r2",
          "label": "Debt 2 APR",
          "kind": "number"
        },
        {
          "id": "b3",
          "label": "Debt 3 balance",
          "kind": "number"
        },
        {
          "id": "r3",
          "label": "Debt 3 APR",
          "kind": "number"
        },
        {
          "id": "budget",
          "label": "Total monthly budget",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "savings",
          "label": "Avalanche saves you"
        },
        {
          "id": "snowballMonths",
          "label": "Snowball payoff"
        },
        {
          "id": "snowballInterest",
          "label": "Snowball interest"
        },
        {
          "id": "avalancheMonths",
          "label": "Avalanche payoff"
        },
        {
          "id": "avalancheInterest",
          "label": "Avalanche interest"
        }
      ]
    },
    {
      "slug": "emergency-fund",
      "url": "https://www.revenuelab.fyi/toolbox/emergency-fund",
      "title": "Emergency Fund Calculator",
      "category": "financial",
      "summary": "Your target cash buffer and how long it takes to build it.",
      "formula": "Target = Essential monthly expenses × Months of coverage.",
      "inputs": [
        {
          "id": "expenses",
          "label": "Essential monthly expenses",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Months of coverage",
          "kind": "number"
        },
        {
          "id": "saved",
          "label": "Already saved",
          "kind": "number"
        },
        {
          "id": "monthly",
          "label": "Monthly contribution",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "target",
          "label": "Emergency fund target"
        },
        {
          "id": "gap",
          "label": "Still needed"
        },
        {
          "id": "pct",
          "label": "Progress"
        },
        {
          "id": "monthsToGoal",
          "label": "Months to fully funded"
        }
      ]
    },
    {
      "slug": "net-worth",
      "url": "https://www.revenuelab.fyi/toolbox/net-worth",
      "title": "Net Worth Calculator",
      "category": "financial",
      "summary": "Assets minus liabilities, plus your debt-to-asset ratio.",
      "formula": "Net worth = Total assets − Total liabilities.",
      "inputs": [
        {
          "id": "cash",
          "label": "Cash and savings",
          "kind": "number"
        },
        {
          "id": "investments",
          "label": "Investments and retirement",
          "kind": "number"
        },
        {
          "id": "property",
          "label": "Property value",
          "kind": "number"
        },
        {
          "id": "other",
          "label": "Other assets",
          "kind": "number"
        },
        {
          "id": "mortgage",
          "label": "Mortgage",
          "kind": "number"
        },
        {
          "id": "loans",
          "label": "Loans and card debt",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netWorth",
          "label": "Net worth"
        },
        {
          "id": "assets",
          "label": "Total assets"
        },
        {
          "id": "liabilities",
          "label": "Total liabilities"
        },
        {
          "id": "ratio",
          "label": "Debt-to-asset ratio"
        },
        {
          "id": "liquid",
          "label": "Liquid net worth"
        }
      ]
    },
    {
      "slug": "401k",
      "url": "https://www.revenuelab.fyi/toolbox/401k",
      "title": "401(k) Calculator",
      "category": "financial",
      "summary": "Project your balance at retirement including the employer match.",
      "formula": "Balance compounds monthly on the sum of your contribution and the matched portion.",
      "inputs": [
        {
          "id": "balance",
          "label": "Current balance",
          "kind": "number"
        },
        {
          "id": "salary",
          "label": "Annual salary",
          "kind": "number"
        },
        {
          "id": "contribPct",
          "label": "Your contribution",
          "kind": "number"
        },
        {
          "id": "matchPct",
          "label": "Employer match",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years to retirement",
          "kind": "number"
        },
        {
          "id": "returnPct",
          "label": "Annual return",
          "kind": "number"
        },
        {
          "id": "raisePct",
          "label": "Annual raise",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "balance",
          "label": "Balance at retirement"
        },
        {
          "id": "contributed",
          "label": "Your contributions"
        },
        {
          "id": "matched",
          "label": "Employer match"
        },
        {
          "id": "growth",
          "label": "Investment growth"
        }
      ]
    },
    {
      "slug": "roth-ira",
      "url": "https://www.revenuelab.fyi/toolbox/roth-ira",
      "title": "Roth IRA Calculator",
      "category": "financial",
      "summary": "Tax-free growth projection versus a taxable account.",
      "formula": "Both accounts compound identically; the taxable comparison deducts capital gains tax on growth at the end.",
      "inputs": [
        {
          "id": "balance",
          "label": "Current balance",
          "kind": "number"
        },
        {
          "id": "annual",
          "label": "Annual contribution",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years to grow",
          "kind": "number"
        },
        {
          "id": "returnPct",
          "label": "Annual return",
          "kind": "number"
        },
        {
          "id": "cgTax",
          "label": "Capital gains rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "balance",
          "label": "Roth balance (tax-free)"
        },
        {
          "id": "contributed",
          "label": "Total contributed"
        },
        {
          "id": "growth",
          "label": "Investment growth"
        },
        {
          "id": "taxable",
          "label": "Same money in a taxable account"
        },
        {
          "id": "advantage",
          "label": "Roth tax advantage"
        }
      ]
    },
    {
      "slug": "rmd",
      "url": "https://www.revenuelab.fyi/toolbox/rmd",
      "title": "RMD Calculator",
      "category": "financial",
      "summary": "Your required withdrawal from a traditional retirement account.",
      "formula": "RMD = Prior year-end balance ÷ IRS Uniform Lifetime Table distribution period.",
      "inputs": [
        {
          "id": "balance",
          "label": "Prior year-end balance",
          "kind": "number"
        },
        {
          "id": "age",
          "label": "Your age this year",
          "kind": "number"
        },
        {
          "id": "taxRate",
          "label": "Marginal tax rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rmd",
          "label": "Required distribution this year"
        },
        {
          "id": "factor",
          "label": "IRS distribution period"
        },
        {
          "id": "tax",
          "label": "Estimated tax owed"
        },
        {
          "id": "net",
          "label": "Net after tax"
        },
        {
          "id": "monthly",
          "label": "If taken monthly"
        }
      ]
    },
    {
      "slug": "annuity",
      "url": "https://www.revenuelab.fyi/toolbox/annuity",
      "title": "Annuity Calculator",
      "category": "financial",
      "summary": "Payout from a lump sum, or the lump sum behind a payout.",
      "formula": "Payment = Principal × r ÷ (1 − (1 + r)^−n), where r is the monthly rate.",
      "inputs": [
        {
          "id": "principal",
          "label": "Lump sum",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Annual rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Payout period",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "payment",
          "label": "Monthly payout"
        },
        {
          "id": "annual",
          "label": "Annual income"
        },
        {
          "id": "total",
          "label": "Total paid out"
        },
        {
          "id": "interest",
          "label": "Interest earned"
        }
      ]
    },
    {
      "slug": "social-security-break-even",
      "url": "https://www.revenuelab.fyi/toolbox/social-security-break-even",
      "title": "Social Security Break-Even Calculator",
      "category": "financial",
      "summary": "The age where delaying benefits finally pays off.",
      "formula": "Break-even month is where cumulative delayed benefits overtake cumulative early benefits.",
      "inputs": [
        {
          "id": "earlyAge",
          "label": "Early claim age",
          "kind": "number"
        },
        {
          "id": "earlyBenefit",
          "label": "Monthly benefit if early",
          "kind": "number"
        },
        {
          "id": "lateAge",
          "label": "Delayed claim age",
          "kind": "number"
        },
        {
          "id": "lateBenefit",
          "label": "Monthly benefit if delayed",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakEvenAge",
          "label": "Break-even age"
        },
        {
          "id": "headStart",
          "label": "Head start from claiming early"
        },
        {
          "id": "monthsAfter",
          "label": "Months after delayed claim to break even"
        },
        {
          "id": "note",
          "label": "Read"
        }
      ]
    },
    {
      "slug": "bond-yield",
      "url": "https://www.revenuelab.fyi/toolbox/bond-yield",
      "title": "Bond Yield Calculator",
      "category": "financial",
      "summary": "Current yield and approximate yield to maturity.",
      "formula": "Current yield = Annual coupon ÷ Price. Approx YTM = (Coupon + (Par − Price) ÷ Years) ÷ ((Par + Price) ÷ 2).",
      "inputs": [
        {
          "id": "par",
          "label": "Face value",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "coupon",
          "label": "Coupon rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years to maturity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ytm",
          "label": "Approx. yield to maturity"
        },
        {
          "id": "currentYield",
          "label": "Current yield"
        },
        {
          "id": "annualCoupon",
          "label": "Annual coupon income"
        },
        {
          "id": "totalCoupons",
          "label": "Total coupons to maturity"
        },
        {
          "id": "gain",
          "label": "Capital gain at maturity"
        }
      ]
    },
    {
      "slug": "dividend-yield",
      "url": "https://www.revenuelab.fyi/toolbox/dividend-yield",
      "title": "Dividend Yield Calculator",
      "category": "financial",
      "summary": "Yield, annual income, and yield on cost.",
      "formula": "Yield = Annual dividend per share ÷ Current price. Yield on cost uses your purchase price instead.",
      "inputs": [
        {
          "id": "price",
          "label": "Current share price",
          "kind": "number"
        },
        {
          "id": "costBasis",
          "label": "Your purchase price",
          "kind": "number"
        },
        {
          "id": "dividend",
          "label": "Annual dividend per share",
          "kind": "number"
        },
        {
          "id": "shares",
          "label": "Shares held",
          "kind": "number"
        },
        {
          "id": "growth",
          "label": "Dividend growth rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "yieldPct",
          "label": "Dividend yield"
        },
        {
          "id": "yieldOnCost",
          "label": "Yield on cost"
        },
        {
          "id": "income",
          "label": "Annual dividend income"
        },
        {
          "id": "monthly",
          "label": "Average monthly income"
        },
        {
          "id": "inTenYears",
          "label": "Annual income in 10 years"
        }
      ]
    },
    {
      "slug": "capital-gains",
      "url": "https://www.revenuelab.fyi/toolbox/capital-gains",
      "title": "Capital Gains Tax Calculator",
      "category": "financial",
      "summary": "Tax owed on an investment sale, short-term or long-term.",
      "formula": "Gain = Sale proceeds − Cost basis − Selling costs. Tax = Gain × applicable rate.",
      "inputs": [
        {
          "id": "sale",
          "label": "Sale price",
          "kind": "number"
        },
        {
          "id": "basis",
          "label": "Cost basis",
          "kind": "number"
        },
        {
          "id": "costs",
          "label": "Selling costs",
          "kind": "number"
        },
        {
          "id": "term",
          "label": "Holding period",
          "kind": "select"
        },
        {
          "id": "ltRate",
          "label": "Long-term rate",
          "kind": "number"
        },
        {
          "id": "ordinary",
          "label": "Ordinary income rate",
          "kind": "number"
        },
        {
          "id": "stateRate",
          "label": "State tax rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalTax",
          "label": "Total capital gains tax"
        },
        {
          "id": "gain",
          "label": "Taxable gain"
        },
        {
          "id": "federal",
          "label": "Federal tax"
        },
        {
          "id": "state",
          "label": "State tax"
        },
        {
          "id": "net",
          "label": "Net proceeds after tax"
        }
      ]
    },
    {
      "slug": "rental-property-cash-flow",
      "url": "https://www.revenuelab.fyi/toolbox/rental-property-cash-flow",
      "title": "Rental Property Cash Flow Calculator",
      "category": "financial",
      "summary": "Monthly cash flow, cash-on-cash return, and the 1% test.",
      "formula": "Cash flow = Rent − vacancy − operating expenses − debt service. Cash-on-cash = Annual cash flow ÷ Cash invested.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "downPct",
          "label": "Down payment",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Interest rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Loan term",
          "kind": "number"
        },
        {
          "id": "rent",
          "label": "Monthly rent",
          "kind": "number"
        },
        {
          "id": "taxes",
          "label": "Property tax",
          "kind": "number"
        },
        {
          "id": "insurance",
          "label": "Insurance",
          "kind": "number"
        },
        {
          "id": "vacancyPct",
          "label": "Vacancy allowance",
          "kind": "number"
        },
        {
          "id": "mgmtPct",
          "label": "Management fee",
          "kind": "number"
        },
        {
          "id": "maintPct",
          "label": "Maintenance + capex",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cashFlow",
          "label": "Monthly cash flow"
        },
        {
          "id": "annual",
          "label": "Annual cash flow"
        },
        {
          "id": "cashOnCash",
          "label": "Cash-on-cash return"
        },
        {
          "id": "capRate",
          "label": "Cap rate"
        },
        {
          "id": "onePctTest",
          "label": "Rent-to-price (1% test)"
        }
      ]
    },
    {
      "slug": "cap-rate",
      "url": "https://www.revenuelab.fyi/toolbox/cap-rate",
      "title": "Cap Rate Calculator",
      "category": "financial",
      "summary": "Net operating income over value — the property comparison metric.",
      "formula": "Cap rate = Net operating income ÷ Property value. Value = NOI ÷ Cap rate.",
      "inputs": [
        {
          "id": "income",
          "label": "Gross annual income",
          "kind": "number"
        },
        {
          "id": "vacancyPct",
          "label": "Vacancy",
          "kind": "number"
        },
        {
          "id": "expenses",
          "label": "Annual operating expenses",
          "kind": "number"
        },
        {
          "id": "value",
          "label": "Property value",
          "kind": "number"
        },
        {
          "id": "targetCap",
          "label": "Target cap rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "capRate",
          "label": "Cap rate"
        },
        {
          "id": "noi",
          "label": "Net operating income"
        },
        {
          "id": "effective",
          "label": "Effective gross income"
        },
        {
          "id": "valueAtTarget",
          "label": "Value at your target cap rate"
        },
        {
          "id": "expenseRatio",
          "label": "Operating expense ratio"
        }
      ]
    },
    {
      "slug": "mortgage-payoff",
      "url": "https://www.revenuelab.fyi/toolbox/mortgage-payoff",
      "title": "Mortgage Payoff Calculator",
      "category": "financial",
      "summary": "What an extra payment each month does to your payoff date.",
      "formula": "Compares the scheduled amortisation against the same loan with extra principal applied monthly.",
      "inputs": [
        {
          "id": "balance",
          "label": "Current balance",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Interest rate",
          "kind": "number"
        },
        {
          "id": "yearsLeft",
          "label": "Years remaining",
          "kind": "number"
        },
        {
          "id": "extra",
          "label": "Extra monthly principal",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "interestSaved",
          "label": "Interest saved"
        },
        {
          "id": "monthsSaved",
          "label": "Time saved"
        },
        {
          "id": "newPayoff",
          "label": "New payoff time"
        },
        {
          "id": "payment",
          "label": "New monthly payment"
        },
        {
          "id": "scheduledInterest",
          "label": "Interest if unchanged"
        }
      ]
    },
    {
      "slug": "apr",
      "url": "https://www.revenuelab.fyi/toolbox/apr",
      "title": "APR Calculator",
      "category": "financial",
      "summary": "The real annual cost of a loan once fees are included.",
      "formula": "APR is the rate that equates the financed amount net of fees to the scheduled payment stream.",
      "inputs": [
        {
          "id": "amount",
          "label": "Loan amount",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Quoted rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Term",
          "kind": "number"
        },
        {
          "id": "fees",
          "label": "Fees and points",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "apr",
          "label": "Effective APR"
        },
        {
          "id": "premium",
          "label": "Above the quoted rate"
        },
        {
          "id": "payment",
          "label": "Monthly payment"
        },
        {
          "id": "totalPaid",
          "label": "Total of payments"
        },
        {
          "id": "totalCost",
          "label": "Total cost of borrowing"
        }
      ]
    },
    {
      "slug": "future-value",
      "url": "https://www.revenuelab.fyi/toolbox/future-value",
      "title": "Future Value Calculator",
      "category": "financial",
      "summary": "What a lump sum plus contributions grows to.",
      "formula": "FV = PV × (1 + r)^n + PMT × ((1 + r)^n − 1) ÷ r, compounded at your chosen frequency.",
      "inputs": [
        {
          "id": "pv",
          "label": "Starting amount",
          "kind": "number"
        },
        {
          "id": "pmt",
          "label": "Monthly contribution",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Annual return",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "fv",
          "label": "Future value"
        },
        {
          "id": "contributed",
          "label": "Total contributed"
        },
        {
          "id": "growth",
          "label": "Investment growth"
        },
        {
          "id": "multiple",
          "label": "Money multiple"
        }
      ]
    },
    {
      "slug": "present-value",
      "url": "https://www.revenuelab.fyi/toolbox/present-value",
      "title": "Present Value Calculator",
      "category": "financial",
      "summary": "What a future sum is worth in today's money.",
      "formula": "PV = FV ÷ (1 + r)^n, plus the discounted value of any recurring payments.",
      "inputs": [
        {
          "id": "fv",
          "label": "Future amount",
          "kind": "number"
        },
        {
          "id": "pmt",
          "label": "Annual payment received",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Discount rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years away",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pv",
          "label": "Present value"
        },
        {
          "id": "pvLump",
          "label": "PV of the lump sum"
        },
        {
          "id": "pvStream",
          "label": "PV of the payment stream"
        },
        {
          "id": "discount",
          "label": "Value lost to discounting"
        }
      ]
    },
    {
      "slug": "income-tax",
      "url": "https://www.revenuelab.fyi/toolbox/income-tax",
      "title": "Federal Income Tax Calculator",
      "category": "financial",
      "summary": "Estimated federal tax, effective rate, and marginal bracket.",
      "formula": "Taxable income = Gross − deductions. Tax is applied progressively bracket by bracket.",
      "inputs": [
        {
          "id": "income",
          "label": "Gross annual income",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "deductions",
          "label": "Itemised deductions",
          "kind": "number"
        },
        {
          "id": "pretax",
          "label": "Pre-tax contributions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "tax",
          "label": "Estimated federal tax"
        },
        {
          "id": "taxable",
          "label": "Taxable income"
        },
        {
          "id": "marginal",
          "label": "Marginal bracket"
        },
        {
          "id": "effective",
          "label": "Effective tax rate"
        },
        {
          "id": "afterTax",
          "label": "After federal tax"
        }
      ]
    },
    {
      "slug": "take-home-pay",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay",
      "title": "Take-Home Pay Calculator",
      "category": "financial",
      "summary": "Gross salary to actual paycheck, after tax and deductions.",
      "formula": "Net = Gross − pre-tax deductions − federal tax − FICA − state tax − post-tax deductions.",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "stateRate",
          "label": "State income tax rate",
          "kind": "number"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        },
        {
          "id": "posttax",
          "label": "Post-tax deductions",
          "kind": "number"
        },
        {
          "id": "frequency",
          "label": "Pay frequency",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "perCheck",
          "label": "Take-home per paycheck"
        },
        {
          "id": "net",
          "label": "Annual take-home"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "state",
          "label": "State income tax"
        },
        {
          "id": "effective",
          "label": "Total deduction rate"
        }
      ]
    },
    {
      "slug": "paycheck",
      "url": "https://www.revenuelab.fyi/toolbox/paycheck",
      "title": "Paycheck Calculator",
      "category": "financial",
      "summary": "Hourly pay to net paycheck, overtime included.",
      "formula": "Gross = (Regular hours × Rate) + (Overtime hours × Rate × 1.5), less taxes and deductions.",
      "inputs": [
        {
          "id": "rate",
          "label": "Hourly rate",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Regular hours per week",
          "kind": "number"
        },
        {
          "id": "otHours",
          "label": "Overtime hours per week",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "stateRate",
          "label": "State income tax rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "weeklyNet",
          "label": "Weekly take-home"
        },
        {
          "id": "grossWeekly",
          "label": "Weekly gross"
        },
        {
          "id": "annual",
          "label": "Annual gross"
        },
        {
          "id": "net",
          "label": "Annual take-home"
        },
        {
          "id": "otPay",
          "label": "Annual overtime pay"
        }
      ]
    },
    {
      "slug": "self-employment-tax",
      "url": "https://www.revenuelab.fyi/toolbox/self-employment-tax",
      "title": "Self-Employment Tax Calculator",
      "category": "financial",
      "summary": "The 15.3% freelancers owe on top of income tax.",
      "formula": "SE tax = Net earnings × 92.35% × 15.3%, with Social Security capped at the annual wage base.",
      "inputs": [
        {
          "id": "revenue",
          "label": "Business revenue",
          "kind": "number"
        },
        {
          "id": "expenses",
          "label": "Deductible expenses",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "seTax",
          "label": "Self-employment tax"
        },
        {
          "id": "ss",
          "label": "Social Security portion"
        },
        {
          "id": "medicare",
          "label": "Medicare portion"
        },
        {
          "id": "incomeTax",
          "label": "Federal income tax"
        },
        {
          "id": "totalTax",
          "label": "Total federal liability"
        },
        {
          "id": "netAfterTax",
          "label": "Take-home from the business"
        }
      ]
    },
    {
      "slug": "quarterly-estimated-tax",
      "url": "https://www.revenuelab.fyi/toolbox/quarterly-estimated-tax",
      "title": "Quarterly Estimated Tax Calculator",
      "category": "financial",
      "summary": "What to send the IRS every quarter to avoid penalties.",
      "formula": "Quarterly payment = (Projected income tax + self-employment tax − withholding) ÷ 4.",
      "inputs": [
        {
          "id": "income",
          "label": "Projected net self-employment income",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "withheld",
          "label": "Tax already withheld elsewhere",
          "kind": "number"
        },
        {
          "id": "stateRate",
          "label": "State income tax rate",
          "kind": "number"
        },
        {
          "id": "lastYearTax",
          "label": "Last year's total tax",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "quarterly",
          "label": "Send each quarter"
        },
        {
          "id": "total",
          "label": "Total estimated tax for the year"
        },
        {
          "id": "seTax",
          "label": "Self-employment tax"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "State income tax"
        },
        {
          "id": "safeHarbourQuarterly",
          "label": "Safe-harbour quarterly amount"
        }
      ]
    },
    {
      "slug": "payroll-tax",
      "url": "https://www.revenuelab.fyi/toolbox/payroll-tax",
      "title": "Employer Payroll Tax Calculator",
      "category": "financial",
      "summary": "The true cost of an employee beyond their salary.",
      "formula": "Total cost = Salary + employer FICA (7.65%) + FUTA/SUTA + workers' comp + benefits.",
      "inputs": [
        {
          "id": "salary",
          "label": "Annual salary",
          "kind": "number"
        },
        {
          "id": "sutaRate",
          "label": "State unemployment rate",
          "kind": "number"
        },
        {
          "id": "sutaBase",
          "label": "SUTA wage base",
          "kind": "number"
        },
        {
          "id": "compRate",
          "label": "Workers' comp rate",
          "kind": "number"
        },
        {
          "id": "benefits",
          "label": "Benefits cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "True annual cost"
        },
        {
          "id": "loadPct",
          "label": "Load above salary"
        },
        {
          "id": "employerFica",
          "label": "Employer FICA"
        },
        {
          "id": "unemployment",
          "label": "FUTA + SUTA"
        },
        {
          "id": "comp",
          "label": "Workers' compensation"
        },
        {
          "id": "monthly",
          "label": "Monthly cost"
        }
      ]
    },
    {
      "slug": "fica",
      "url": "https://www.revenuelab.fyi/toolbox/fica",
      "title": "FICA Tax Calculator",
      "category": "financial",
      "summary": "Social Security and Medicare withholding, employee and employer.",
      "formula": "Social Security 6.2% up to the wage base, Medicare 1.45% uncapped, plus 0.9% additional Medicare above the threshold.",
      "inputs": [
        {
          "id": "wages",
          "label": "Annual wages",
          "kind": "number"
        },
        {
          "id": "threshold",
          "label": "Additional Medicare threshold",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "employee",
          "label": "Your FICA withholding"
        },
        {
          "id": "ss",
          "label": "Social Security"
        },
        {
          "id": "medicare",
          "label": "Medicare (incl. additional)"
        },
        {
          "id": "employer",
          "label": "Employer's share"
        },
        {
          "id": "combined",
          "label": "Combined FICA paid"
        },
        {
          "id": "monthly",
          "label": "Your monthly withholding"
        }
      ]
    },
    {
      "slug": "tax-bracket",
      "url": "https://www.revenuelab.fyi/toolbox/tax-bracket",
      "title": "Tax Bracket Calculator",
      "category": "financial",
      "summary": "Which bracket you land in, and what a raise is really worth.",
      "formula": "Brackets are applied progressively; the marginal rate applies only to income above each threshold.",
      "inputs": [
        {
          "id": "income",
          "label": "Taxable income",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "raise",
          "label": "Raise you are considering",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "marginal",
          "label": "Your marginal bracket"
        },
        {
          "id": "headroom",
          "label": "Room left in this bracket"
        },
        {
          "id": "effective",
          "label": "Effective tax rate"
        },
        {
          "id": "tax",
          "label": "Federal tax owed"
        },
        {
          "id": "raiseAfterTax",
          "label": "Your raise, after federal tax"
        }
      ]
    },
    {
      "slug": "bonus-tax",
      "url": "https://www.revenuelab.fyi/toolbox/bonus-tax",
      "title": "Bonus Tax Calculator",
      "category": "financial",
      "summary": "Why your bonus arrived so much smaller than promised.",
      "formula": "Net bonus = Bonus − (22% or 37% supplemental federal) − FICA 7.65% − state rate.",
      "inputs": [
        {
          "id": "bonus",
          "label": "Bonus amount",
          "kind": "number"
        },
        {
          "id": "stateRate",
          "label": "State tax rate",
          "kind": "number"
        },
        {
          "id": "marginal",
          "label": "Your actual marginal rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Bonus after withholding"
        },
        {
          "id": "takeHomePct",
          "label": "You keep"
        },
        {
          "id": "fed",
          "label": "Federal supplemental withholding"
        },
        {
          "id": "fica",
          "label": "FICA"
        },
        {
          "id": "state",
          "label": "State tax"
        },
        {
          "id": "refundEstimate",
          "label": "Likely refunded at filing"
        }
      ]
    },
    {
      "slug": "w4-withholding",
      "url": "https://www.revenuelab.fyi/toolbox/w4-withholding",
      "title": "W-4 Withholding Calculator",
      "category": "financial",
      "summary": "Are you on track for a refund or a bill?",
      "formula": "Projected withholding = Withheld to date + (Per-period withholding × Periods remaining). Compared against projected tax owed.",
      "inputs": [
        {
          "id": "income",
          "label": "Annual gross income",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "withheldToDate",
          "label": "Federal tax withheld so far",
          "kind": "number"
        },
        {
          "id": "perPeriod",
          "label": "Withheld per paycheck",
          "kind": "number"
        },
        {
          "id": "periodsLeft",
          "label": "Paychecks remaining this year",
          "kind": "number"
        },
        {
          "id": "credits",
          "label": "Tax credits",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Outcome"
        },
        {
          "id": "amount",
          "label": "Estimated amount"
        },
        {
          "id": "owed",
          "label": "Tax you will owe"
        },
        {
          "id": "projected",
          "label": "Projected withholding"
        },
        {
          "id": "adjustPerCheck",
          "label": "Adjust per paycheck to break even"
        }
      ]
    },
    {
      "slug": "overtime-pay",
      "url": "https://www.revenuelab.fyi/toolbox/overtime-pay",
      "title": "Overtime Pay Calculator",
      "category": "financial",
      "summary": "Time and a half, double time, and what it adds up to.",
      "formula": "Overtime pay = Hours × Rate × Multiplier, added to regular weekly pay.",
      "inputs": [
        {
          "id": "rate",
          "label": "Regular hourly rate",
          "kind": "number"
        },
        {
          "id": "regular",
          "label": "Regular hours",
          "kind": "number"
        },
        {
          "id": "otHours",
          "label": "Time-and-a-half hours",
          "kind": "number"
        },
        {
          "id": "dtHours",
          "label": "Double-time hours",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "weekly",
          "label": "Weekly gross pay"
        },
        {
          "id": "overtimePay",
          "label": "Overtime portion"
        },
        {
          "id": "annual",
          "label": "Annualised gross"
        },
        {
          "id": "effectiveRate",
          "label": "Blended hourly rate"
        }
      ]
    },
    {
      "slug": "hourly-to-salary",
      "url": "https://www.revenuelab.fyi/toolbox/hourly-to-salary",
      "title": "Hourly to Salary Calculator",
      "category": "financial",
      "summary": "Convert an hourly rate to annual salary, and back again.",
      "formula": "Annual = Rate × Hours per week × Paid weeks. Hourly = Salary ÷ (Hours × Paid weeks).",
      "inputs": [
        {
          "id": "rate",
          "label": "Hourly rate",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Hours per week",
          "kind": "number"
        },
        {
          "id": "unpaidWeeks",
          "label": "Unpaid weeks per year",
          "kind": "number"
        },
        {
          "id": "salary",
          "label": "Compare against a salary",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annual",
          "label": "Annual equivalent"
        },
        {
          "id": "monthly",
          "label": "Monthly"
        },
        {
          "id": "weekly",
          "label": "Weekly"
        },
        {
          "id": "equivalentHourly",
          "label": "The salary as an hourly rate"
        },
        {
          "id": "difference",
          "label": "Your rate vs that salary"
        }
      ]
    },
    {
      "slug": "1099-vs-w2",
      "url": "https://www.revenuelab.fyi/toolbox/1099-vs-w2",
      "title": "1099 vs W-2 Calculator",
      "category": "financial",
      "summary": "The contractor rate you need to match a salaried job.",
      "formula": "Required 1099 income = Salary + benefits value + employer FICA, spread over billable weeks.",
      "inputs": [
        {
          "id": "salary",
          "label": "W-2 salary",
          "kind": "number"
        },
        {
          "id": "benefits",
          "label": "Employer benefits value",
          "kind": "number"
        },
        {
          "id": "ptoWeeks",
          "label": "Paid time off",
          "kind": "number"
        },
        {
          "id": "billableHours",
          "label": "Billable hours per week",
          "kind": "number"
        },
        {
          "id": "expenses",
          "label": "Annual business expenses",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "hourly",
          "label": "Equivalent 1099 hourly rate"
        },
        {
          "id": "dayRate",
          "label": "Equivalent day rate"
        },
        {
          "id": "target",
          "label": "Gross revenue you need"
        },
        {
          "id": "premium",
          "label": "Premium over the W-2 hourly rate"
        },
        {
          "id": "w2Hourly",
          "label": "W-2 salary as hourly"
        }
      ]
    },
    {
      "slug": "property-tax",
      "url": "https://www.revenuelab.fyi/toolbox/property-tax",
      "title": "Property Tax Calculator",
      "category": "financial",
      "summary": "Annual and monthly property tax from assessed value.",
      "formula": "Tax = (Assessed value − exemptions) × Rate.",
      "inputs": [
        {
          "id": "value",
          "label": "Market value",
          "kind": "number"
        },
        {
          "id": "assessedPct",
          "label": "Assessment ratio",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Property tax rate",
          "kind": "number"
        },
        {
          "id": "exemption",
          "label": "Homestead exemption",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annual",
          "label": "Annual property tax"
        },
        {
          "id": "monthly",
          "label": "Monthly escrow amount"
        },
        {
          "id": "assessed",
          "label": "Assessed value"
        },
        {
          "id": "taxable",
          "label": "Taxable value after exemption"
        },
        {
          "id": "effective",
          "label": "Effective rate on market value"
        }
      ]
    },
    {
      "slug": "vat",
      "url": "https://www.revenuelab.fyi/toolbox/vat",
      "title": "VAT Calculator",
      "category": "financial",
      "summary": "Add or remove VAT at any rate.",
      "formula": "Gross = Net × (1 + Rate). Net = Gross ÷ (1 + Rate).",
      "inputs": [
        {
          "id": "amount",
          "label": "Amount",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "VAT rate",
          "kind": "number"
        },
        {
          "id": "direction",
          "label": "Direction",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "gross",
          "label": "Gross (incl. VAT)"
        },
        {
          "id": "net",
          "label": "Net (excl. VAT)"
        },
        {
          "id": "vat",
          "label": "VAT amount"
        },
        {
          "id": "rate",
          "label": "Rate applied"
        }
      ]
    },
    {
      "slug": "concrete-slab",
      "url": "https://www.revenuelab.fyi/toolbox/concrete-slab",
      "title": "Concrete Slab Calculator",
      "category": "other",
      "summary": "Cubic yards, bags, and delivered cost for a slab pour.",
      "formula": "Volume (yd³) = Length × Width × Thickness (ft) ÷ 27, plus a waste allowance.",
      "inputs": [
        {
          "id": "length",
          "label": "Length",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Width",
          "kind": "number"
        },
        {
          "id": "thickness",
          "label": "Thickness",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Ready-mix price",
          "kind": "number"
        },
        {
          "id": "waste",
          "label": "Waste allowance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "yards",
          "label": "Concrete needed"
        },
        {
          "id": "cost",
          "label": "Estimated ready-mix cost"
        },
        {
          "id": "bags60",
          "label": "60 lb bags (if mixing)"
        },
        {
          "id": "bags80",
          "label": "80 lb bags (if mixing)"
        },
        {
          "id": "area",
          "label": "Slab area (sq ft)"
        }
      ]
    },
    {
      "slug": "concrete-footing",
      "url": "https://www.revenuelab.fyi/toolbox/concrete-footing",
      "title": "Concrete Footing Calculator",
      "category": "other",
      "summary": "Volume and cost for strip footings and pier holes.",
      "formula": "Strip: Length × Width × Depth ÷ 27. Piers: π × r² × Depth × Count ÷ 27.",
      "inputs": [
        {
          "id": "type",
          "label": "Footing type",
          "kind": "select"
        },
        {
          "id": "length",
          "label": "Trench length",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Trench width",
          "kind": "number"
        },
        {
          "id": "depth",
          "label": "Depth",
          "kind": "number"
        },
        {
          "id": "diameter",
          "label": "Pier diameter",
          "kind": "number"
        },
        {
          "id": "count",
          "label": "Number of piers",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Ready-mix price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "yards",
          "label": "Concrete needed (yd³)"
        },
        {
          "id": "cost",
          "label": "Estimated cost"
        },
        {
          "id": "cuft",
          "label": "Raw volume (cu ft)"
        },
        {
          "id": "bags80",
          "label": "80 lb bags"
        }
      ]
    },
    {
      "slug": "rebar",
      "url": "https://www.revenuelab.fyi/toolbox/rebar",
      "title": "Rebar Calculator",
      "category": "other",
      "summary": "Bar count, total length, and cost for a reinforcing grid.",
      "formula": "Bars per direction = (Span ÷ Spacing) + 1, with lap length added per splice.",
      "inputs": [
        {
          "id": "length",
          "label": "Slab length",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Slab width",
          "kind": "number"
        },
        {
          "id": "spacing",
          "label": "Grid spacing",
          "kind": "number"
        },
        {
          "id": "barLength",
          "label": "Stock bar length",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per foot",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "sticks",
          "label": "Stock bars to buy"
        },
        {
          "id": "totalFeet",
          "label": "Total linear feet (incl. laps)"
        },
        {
          "id": "cost",
          "label": "Estimated cost"
        },
        {
          "id": "barsAcross",
          "label": "Bars running lengthwise"
        },
        {
          "id": "barsDown",
          "label": "Bars running widthwise"
        }
      ]
    },
    {
      "slug": "gravel",
      "url": "https://www.revenuelab.fyi/toolbox/gravel",
      "title": "Gravel Calculator",
      "category": "other",
      "summary": "Tons and yards of gravel for a driveway or base layer.",
      "formula": "Volume (yd³) = Area × Depth (ft) ÷ 27. Tons = Volume × density.",
      "inputs": [
        {
          "id": "length",
          "label": "Length",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Width",
          "kind": "number"
        },
        {
          "id": "depth",
          "label": "Depth",
          "kind": "number"
        },
        {
          "id": "density",
          "label": "Density",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per ton",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "tons",
          "label": "Gravel needed (tons)"
        },
        {
          "id": "yards",
          "label": "Cubic yards"
        },
        {
          "id": "cost",
          "label": "Estimated cost"
        },
        {
          "id": "area",
          "label": "Area covered (sq ft)"
        }
      ]
    },
    {
      "slug": "mulch",
      "url": "https://www.revenuelab.fyi/toolbox/mulch",
      "title": "Mulch Calculator",
      "category": "other",
      "summary": "Bags or yards of mulch for your beds.",
      "formula": "Cubic yards = Area (sq ft) × Depth (ft) ÷ 27. One 2 cu ft bag covers 12 sq ft at 2 inches.",
      "inputs": [
        {
          "id": "area",
          "label": "Bed area",
          "kind": "number"
        },
        {
          "id": "depth",
          "label": "Mulch depth",
          "kind": "number"
        },
        {
          "id": "bagSize",
          "label": "Bag size",
          "kind": "number"
        },
        {
          "id": "bagPrice",
          "label": "Price per bag",
          "kind": "number"
        },
        {
          "id": "bulkPrice",
          "label": "Bulk price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "yards",
          "label": "Cubic yards needed"
        },
        {
          "id": "bags",
          "label": "Bags needed"
        },
        {
          "id": "bagCost",
          "label": "Cost buying bags"
        },
        {
          "id": "bulkCost",
          "label": "Cost buying bulk"
        },
        {
          "id": "savings",
          "label": "Saved by going bulk"
        }
      ]
    },
    {
      "slug": "topsoil",
      "url": "https://www.revenuelab.fyi/toolbox/topsoil",
      "title": "Topsoil Calculator",
      "category": "other",
      "summary": "Cubic yards and tons of soil for a garden or lawn.",
      "formula": "Cubic yards = Area × Depth (ft) ÷ 27.",
      "inputs": [
        {
          "id": "area",
          "label": "Area",
          "kind": "number"
        },
        {
          "id": "depth",
          "label": "Depth",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per cubic yard",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "yards",
          "label": "Cubic yards"
        },
        {
          "id": "tons",
          "label": "Approximate tons"
        },
        {
          "id": "cost",
          "label": "Estimated cost"
        },
        {
          "id": "cuft",
          "label": "Cubic feet"
        }
      ]
    },
    {
      "slug": "sand",
      "url": "https://www.revenuelab.fyi/toolbox/sand",
      "title": "Sand Calculator",
      "category": "other",
      "summary": "Sand volume and weight for paver bases and sandboxes.",
      "formula": "Cubic yards = Area × Depth (ft) ÷ 27. Tons = Yards × 1.35.",
      "inputs": [
        {
          "id": "area",
          "label": "Area",
          "kind": "number"
        },
        {
          "id": "depth",
          "label": "Depth",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per ton",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "tons",
          "label": "Sand needed (tons)"
        },
        {
          "id": "yards",
          "label": "Cubic yards"
        },
        {
          "id": "cost",
          "label": "Estimated cost"
        },
        {
          "id": "pounds",
          "label": "Weight (lb)"
        }
      ]
    },
    {
      "slug": "paver",
      "url": "https://www.revenuelab.fyi/toolbox/paver",
      "title": "Paver Calculator",
      "category": "other",
      "summary": "How many pavers for a patio or walkway, plus cost.",
      "formula": "Pavers = Area ÷ (Paver length × width in feet), plus waste.",
      "inputs": [
        {
          "id": "area",
          "label": "Patio area",
          "kind": "number"
        },
        {
          "id": "paverLength",
          "label": "Paver length",
          "kind": "number"
        },
        {
          "id": "paverWidth",
          "label": "Paver width",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per paver",
          "kind": "number"
        },
        {
          "id": "waste",
          "label": "Waste allowance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "count",
          "label": "Pavers needed"
        },
        {
          "id": "cost",
          "label": "Paver cost"
        },
        {
          "id": "sandTons",
          "label": "Bedding sand (tons)"
        },
        {
          "id": "perSqFt",
          "label": "Cost per sq ft"
        }
      ]
    },
    {
      "slug": "paint",
      "url": "https://www.revenuelab.fyi/toolbox/paint",
      "title": "Paint Calculator",
      "category": "other",
      "summary": "Gallons of paint for walls, ceilings, and trim.",
      "formula": "Gallons = (Wall area − openings) × Coats ÷ Coverage per gallon.",
      "inputs": [
        {
          "id": "perimeter",
          "label": "Room perimeter",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Ceiling height",
          "kind": "number"
        },
        {
          "id": "doors",
          "label": "Doors",
          "kind": "number"
        },
        {
          "id": "windows",
          "label": "Windows",
          "kind": "number"
        },
        {
          "id": "coats",
          "label": "Coats",
          "kind": "number"
        },
        {
          "id": "coverage",
          "label": "Coverage per gallon",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per gallon",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "gallons",
          "label": "Paint needed (gallons)"
        },
        {
          "id": "cans",
          "label": "Gallon cans to buy"
        },
        {
          "id": "cost",
          "label": "Estimated paint cost"
        },
        {
          "id": "paintable",
          "label": "Paintable wall area (sq ft)"
        }
      ]
    },
    {
      "slug": "drywall",
      "url": "https://www.revenuelab.fyi/toolbox/drywall",
      "title": "Drywall Calculator",
      "category": "other",
      "summary": "Sheets, screws, mud, and tape for a hang job.",
      "formula": "Sheets = Total area ÷ Sheet area, plus waste. Mud ≈ 0.053 lb per sq ft per coat.",
      "inputs": [
        {
          "id": "area",
          "label": "Total surface area",
          "kind": "number"
        },
        {
          "id": "sheet",
          "label": "Sheet size",
          "kind": "select"
        },
        {
          "id": "price",
          "label": "Price per sheet",
          "kind": "number"
        },
        {
          "id": "waste",
          "label": "Waste allowance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "sheets",
          "label": "Drywall sheets"
        },
        {
          "id": "cost",
          "label": "Sheet cost"
        },
        {
          "id": "screws",
          "label": "Screws needed"
        },
        {
          "id": "mudLb",
          "label": "Joint compound (lb, 3 coats)"
        },
        {
          "id": "tapeFt",
          "label": "Tape (linear ft)"
        }
      ]
    },
    {
      "slug": "flooring",
      "url": "https://www.revenuelab.fyi/toolbox/flooring",
      "title": "Flooring Calculator",
      "category": "other",
      "summary": "Boxes of flooring and total installed cost.",
      "formula": "Boxes = Area × (1 + waste) ÷ Coverage per box, rounded up.",
      "inputs": [
        {
          "id": "area",
          "label": "Room area",
          "kind": "number"
        },
        {
          "id": "boxCoverage",
          "label": "Coverage per box",
          "kind": "number"
        },
        {
          "id": "boxPrice",
          "label": "Price per box",
          "kind": "number"
        },
        {
          "id": "labor",
          "label": "Installation labour",
          "kind": "number"
        },
        {
          "id": "waste",
          "label": "Waste allowance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "boxes",
          "label": "Boxes to order"
        },
        {
          "id": "material",
          "label": "Material cost"
        },
        {
          "id": "labor",
          "label": "Labour cost"
        },
        {
          "id": "total",
          "label": "Total installed cost"
        },
        {
          "id": "perSqFt",
          "label": "All-in per sq ft"
        }
      ]
    },
    {
      "slug": "tile",
      "url": "https://www.revenuelab.fyi/toolbox/tile",
      "title": "Tile Calculator",
      "category": "other",
      "summary": "Tile count, thinset, and grout for a floor or wall.",
      "formula": "Tiles = Area ÷ Tile area, plus waste. Grout scales with joint width and tile size.",
      "inputs": [
        {
          "id": "area",
          "label": "Area to tile",
          "kind": "number"
        },
        {
          "id": "tileLength",
          "label": "Tile length",
          "kind": "number"
        },
        {
          "id": "tileWidth",
          "label": "Tile width",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Tile price per sq ft",
          "kind": "number"
        },
        {
          "id": "waste",
          "label": "Waste allowance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "tiles",
          "label": "Tiles needed"
        },
        {
          "id": "sqftOrdered",
          "label": "Square feet to order"
        },
        {
          "id": "cost",
          "label": "Tile cost"
        },
        {
          "id": "thinsetBags",
          "label": "Thinset bags (50 lb)"
        },
        {
          "id": "groutLb",
          "label": "Grout needed (lb)"
        }
      ]
    },
    {
      "slug": "carpet",
      "url": "https://www.revenuelab.fyi/toolbox/carpet",
      "title": "Carpet Calculator",
      "category": "other",
      "summary": "Square yards of carpet, padding, and install cost.",
      "formula": "Square yards = Area (sq ft) ÷ 9, plus waste for seams and cuts.",
      "inputs": [
        {
          "id": "length",
          "label": "Room length",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Room width",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Carpet price",
          "kind": "number"
        },
        {
          "id": "padPrice",
          "label": "Padding price",
          "kind": "number"
        },
        {
          "id": "labor",
          "label": "Install labour",
          "kind": "number"
        },
        {
          "id": "waste",
          "label": "Waste allowance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total installed cost"
        },
        {
          "id": "sqYd",
          "label": "Square yards to order"
        },
        {
          "id": "carpet",
          "label": "Carpet cost"
        },
        {
          "id": "pad",
          "label": "Padding cost"
        },
        {
          "id": "labor",
          "label": "Labour cost"
        },
        {
          "id": "seam",
          "label": "12 ft roll check"
        }
      ]
    },
    {
      "slug": "roofing",
      "url": "https://www.revenuelab.fyi/toolbox/roofing",
      "title": "Roofing Calculator",
      "category": "other",
      "summary": "Squares of shingles, underlayment, and material cost.",
      "formula": "Roof area = Footprint × Pitch multiplier. Squares = Area ÷ 100, plus waste.",
      "inputs": [
        {
          "id": "length",
          "label": "Building length",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Building width",
          "kind": "number"
        },
        {
          "id": "pitch",
          "label": "Pitch (rise per 12)",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Shingles per square",
          "kind": "number"
        },
        {
          "id": "labor",
          "label": "Labour per square",
          "kind": "number"
        },
        {
          "id": "waste",
          "label": "Waste allowance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "squares",
          "label": "Roofing squares"
        },
        {
          "id": "bundles",
          "label": "Shingle bundles"
        },
        {
          "id": "area",
          "label": "Roof surface area (sq ft)"
        },
        {
          "id": "material",
          "label": "Material cost"
        },
        {
          "id": "labor",
          "label": "Labour cost"
        },
        {
          "id": "total",
          "label": "Total project cost"
        }
      ]
    },
    {
      "slug": "siding",
      "url": "https://www.revenuelab.fyi/toolbox/siding",
      "title": "Siding Calculator",
      "category": "other",
      "summary": "Squares and cost of siding for an exterior.",
      "formula": "Net wall area = Perimeter × Height − openings. Squares = Area ÷ 100, plus waste.",
      "inputs": [
        {
          "id": "perimeter",
          "label": "Building perimeter",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Wall height",
          "kind": "number"
        },
        {
          "id": "openings",
          "label": "Window and door area",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Siding per square",
          "kind": "number"
        },
        {
          "id": "waste",
          "label": "Waste allowance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "squares",
          "label": "Siding squares"
        },
        {
          "id": "cost",
          "label": "Material cost"
        },
        {
          "id": "net",
          "label": "Net wall area (sq ft)"
        },
        {
          "id": "perSqFt",
          "label": "Cost per sq ft"
        }
      ]
    },
    {
      "slug": "deck",
      "url": "https://www.revenuelab.fyi/toolbox/deck",
      "title": "Deck Cost Calculator",
      "category": "other",
      "summary": "Decking boards, joists, and total build cost.",
      "formula": "Boards = Area ÷ (Board width × length), plus waste. Framing scales with joist spacing.",
      "inputs": [
        {
          "id": "length",
          "label": "Deck length",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Deck width",
          "kind": "number"
        },
        {
          "id": "boardWidth",
          "label": "Board width",
          "kind": "number"
        },
        {
          "id": "boardPrice",
          "label": "Price per linear ft of board",
          "kind": "number"
        },
        {
          "id": "labor",
          "label": "Labour",
          "kind": "number"
        },
        {
          "id": "waste",
          "label": "Waste allowance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated deck cost"
        },
        {
          "id": "area",
          "label": "Deck area (sq ft)"
        },
        {
          "id": "linearFt",
          "label": "Decking linear feet"
        },
        {
          "id": "boards",
          "label": "Decking material"
        },
        {
          "id": "framing",
          "label": "Framing material"
        },
        {
          "id": "labor",
          "label": "Labour"
        },
        {
          "id": "joists",
          "label": "Joists at 16 in OC"
        }
      ]
    },
    {
      "slug": "fence",
      "url": "https://www.revenuelab.fyi/toolbox/fence",
      "title": "Fence Calculator",
      "category": "other",
      "summary": "Posts, rails, pickets, and cost per linear foot.",
      "formula": "Posts = (Length ÷ Spacing) + 1. Pickets = Length ÷ Picket width, plus gap.",
      "inputs": [
        {
          "id": "length",
          "label": "Fence length",
          "kind": "number"
        },
        {
          "id": "spacing",
          "label": "Post spacing",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Fence height",
          "kind": "number"
        },
        {
          "id": "picketWidth",
          "label": "Picket width",
          "kind": "number"
        },
        {
          "id": "postPrice",
          "label": "Price per post",
          "kind": "number"
        },
        {
          "id": "picketPrice",
          "label": "Price per picket",
          "kind": "number"
        },
        {
          "id": "labor",
          "label": "Labour",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total fence cost"
        },
        {
          "id": "perFoot",
          "label": "Cost per linear foot"
        },
        {
          "id": "posts",
          "label": "Posts"
        },
        {
          "id": "pickets",
          "label": "Pickets"
        },
        {
          "id": "rails",
          "label": "Rails"
        },
        {
          "id": "material",
          "label": "Material"
        },
        {
          "id": "labor",
          "label": "Labour"
        }
      ]
    },
    {
      "slug": "lumber",
      "url": "https://www.revenuelab.fyi/toolbox/lumber",
      "title": "Board Foot Calculator",
      "category": "other",
      "summary": "Board feet and lumber cost for a materials order.",
      "formula": "Board feet = Thickness (in) × Width (in) × Length (ft) ÷ 12 × Quantity.",
      "inputs": [
        {
          "id": "thickness",
          "label": "Thickness",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Width",
          "kind": "number"
        },
        {
          "id": "length",
          "label": "Length",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Number of boards",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per board foot",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total board feet"
        },
        {
          "id": "cost",
          "label": "Lumber cost"
        },
        {
          "id": "perBoard",
          "label": "Board feet per board"
        },
        {
          "id": "linearFt",
          "label": "Total linear feet"
        }
      ]
    },
    {
      "slug": "stair",
      "url": "https://www.revenuelab.fyi/toolbox/stair",
      "title": "Stair Calculator",
      "category": "other",
      "summary": "Riser height, tread depth, and total run to code.",
      "formula": "Risers = round(Total rise ÷ Target riser). Riser height = Total rise ÷ Risers. Run = Treads × Tread depth.",
      "inputs": [
        {
          "id": "rise",
          "label": "Total rise (floor to floor)",
          "kind": "number"
        },
        {
          "id": "targetRiser",
          "label": "Target riser height",
          "kind": "number"
        },
        {
          "id": "tread",
          "label": "Tread depth",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "riserHeight",
          "label": "Riser height"
        },
        {
          "id": "risers",
          "label": "Number of risers"
        },
        {
          "id": "treads",
          "label": "Number of treads"
        },
        {
          "id": "run",
          "label": "Total run (in)"
        },
        {
          "id": "stringer",
          "label": "Stringer length (ft)"
        },
        {
          "id": "angle",
          "label": "Stair angle (degrees)"
        },
        {
          "id": "code",
          "label": "Code check"
        }
      ]
    },
    {
      "slug": "insulation",
      "url": "https://www.revenuelab.fyi/toolbox/insulation",
      "title": "Insulation Calculator",
      "category": "other",
      "summary": "Batts or rolls needed to hit a target R-value.",
      "formula": "Bags or batts = Area ÷ Coverage per package, plus waste. Depth = Target R ÷ R per inch.",
      "inputs": [
        {
          "id": "area",
          "label": "Area to insulate",
          "kind": "number"
        },
        {
          "id": "targetR",
          "label": "Target R-value",
          "kind": "number"
        },
        {
          "id": "rPerInch",
          "label": "R-value per inch",
          "kind": "number"
        },
        {
          "id": "coverage",
          "label": "Coverage per package",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per package",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "packages",
          "label": "Packages needed"
        },
        {
          "id": "depth",
          "label": "Required depth (in)"
        },
        {
          "id": "cost",
          "label": "Material cost"
        },
        {
          "id": "perSqFt",
          "label": "Cost per sq ft"
        }
      ]
    },
    {
      "slug": "hvac-sizing",
      "url": "https://www.revenuelab.fyi/toolbox/hvac-sizing",
      "title": "HVAC Sizing Calculator",
      "category": "other",
      "summary": "BTU and tonnage estimate for heating and cooling.",
      "formula": "BTU ≈ Area × BTU per sq ft, adjusted for ceiling height, sun exposure, and occupancy. Tons = BTU ÷ 12,000.",
      "inputs": [
        {
          "id": "area",
          "label": "Conditioned area",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Ceiling height",
          "kind": "number"
        },
        {
          "id": "climate",
          "label": "Climate zone",
          "kind": "select"
        },
        {
          "id": "sun",
          "label": "Sun exposure",
          "kind": "select"
        },
        {
          "id": "occupants",
          "label": "Regular occupants",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "tons",
          "label": "Cooling capacity (tons)"
        },
        {
          "id": "btu",
          "label": "Cooling load (BTU/hr)"
        },
        {
          "id": "furnaceBtu",
          "label": "Suggested furnace output (BTU/hr)"
        },
        {
          "id": "cfm",
          "label": "Airflow needed (CFM)"
        }
      ]
    },
    {
      "slug": "wallpaper",
      "url": "https://www.revenuelab.fyi/toolbox/wallpaper",
      "title": "Wallpaper Calculator",
      "category": "other",
      "summary": "Rolls of wallpaper including pattern repeat waste.",
      "formula": "Strips per roll = Roll length ÷ (Wall height + repeat). Rolls = Total strips ÷ Strips per roll.",
      "inputs": [
        {
          "id": "perimeter",
          "label": "Room perimeter",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Wall height",
          "kind": "number"
        },
        {
          "id": "rollWidth",
          "label": "Roll width",
          "kind": "number"
        },
        {
          "id": "rollLength",
          "label": "Roll length",
          "kind": "number"
        },
        {
          "id": "repeat",
          "label": "Pattern repeat",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per roll",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rolls",
          "label": "Rolls to buy"
        },
        {
          "id": "cost",
          "label": "Estimated cost"
        },
        {
          "id": "stripsNeeded",
          "label": "Strips needed"
        },
        {
          "id": "stripsPerRoll",
          "label": "Usable strips per roll"
        }
      ]
    },
    {
      "slug": "gutter",
      "url": "https://www.revenuelab.fyi/toolbox/gutter",
      "title": "Gutter Calculator",
      "category": "other",
      "summary": "Gutter run, downspouts, and installed cost.",
      "formula": "Downspouts = max(Run ÷ 35, Roof area ÷ 700), rounded up.",
      "inputs": [
        {
          "id": "run",
          "label": "Total gutter run",
          "kind": "number"
        },
        {
          "id": "roofArea",
          "label": "Roof area draining",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Gutter price",
          "kind": "number"
        },
        {
          "id": "downspoutPrice",
          "label": "Cost per downspout",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated total cost"
        },
        {
          "id": "downspouts",
          "label": "Downspouts needed"
        },
        {
          "id": "gutter",
          "label": "Gutter material"
        },
        {
          "id": "down",
          "label": "Downspout cost"
        },
        {
          "id": "perFoot",
          "label": "Cost per linear foot"
        }
      ]
    },
    {
      "slug": "sod",
      "url": "https://www.revenuelab.fyi/toolbox/sod",
      "title": "Sod Calculator",
      "category": "other",
      "summary": "Pallets and rolls of sod for instant lawn.",
      "formula": "Pallets = Area × (1 + waste) ÷ Coverage per pallet.",
      "inputs": [
        {
          "id": "area",
          "label": "Lawn area",
          "kind": "number"
        },
        {
          "id": "palletCoverage",
          "label": "Coverage per pallet",
          "kind": "number"
        },
        {
          "id": "palletPrice",
          "label": "Price per pallet",
          "kind": "number"
        },
        {
          "id": "waste",
          "label": "Waste allowance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pallets",
          "label": "Pallets needed"
        },
        {
          "id": "cost",
          "label": "Sod cost"
        },
        {
          "id": "rolls",
          "label": "Approximate rolls"
        },
        {
          "id": "perSqFt",
          "label": "Cost per sq ft"
        }
      ]
    },
    {
      "slug": "pool-volume",
      "url": "https://www.revenuelab.fyi/toolbox/pool-volume",
      "title": "Pool Volume Calculator",
      "category": "other",
      "summary": "Gallons in your pool, plus fill time and heating cost.",
      "formula": "Gallons = Length × Width × Average depth × 7.48 (rectangular).",
      "inputs": [
        {
          "id": "shape",
          "label": "Pool shape",
          "kind": "select"
        },
        {
          "id": "length",
          "label": "Length or diameter",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Width",
          "kind": "number"
        },
        {
          "id": "shallow",
          "label": "Shallow end depth",
          "kind": "number"
        },
        {
          "id": "deep",
          "label": "Deep end depth",
          "kind": "number"
        },
        {
          "id": "hoseGpm",
          "label": "Fill rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "gallons",
          "label": "Pool volume (gallons)"
        },
        {
          "id": "liters",
          "label": "Litres"
        },
        {
          "id": "surface",
          "label": "Surface area (sq ft)"
        },
        {
          "id": "avgDepth",
          "label": "Average depth (ft)"
        },
        {
          "id": "fillHours",
          "label": "Hours to fill"
        }
      ]
    },
    {
      "slug": "solar-panel",
      "url": "https://www.revenuelab.fyi/toolbox/solar-panel",
      "title": "Solar Panel Calculator",
      "category": "other",
      "summary": "System size, panel count, and payback period.",
      "formula": "kW needed = Annual kWh ÷ (Sun hours × 365 × Efficiency factor). Payback = Net cost ÷ Annual savings.",
      "inputs": [
        {
          "id": "monthlyKwh",
          "label": "Monthly electricity use",
          "kind": "number"
        },
        {
          "id": "sunHours",
          "label": "Peak sun hours per day",
          "kind": "number"
        },
        {
          "id": "panelWatts",
          "label": "Panel wattage",
          "kind": "number"
        },
        {
          "id": "costPerWatt",
          "label": "Installed cost per watt",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Electricity rate",
          "kind": "number"
        },
        {
          "id": "incentive",
          "label": "Tax credit and rebates",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "kw",
          "label": "System size (kW)"
        },
        {
          "id": "panels",
          "label": "Panels needed"
        },
        {
          "id": "gross",
          "label": "Gross installed cost"
        },
        {
          "id": "net",
          "label": "Net cost after incentives"
        },
        {
          "id": "savings",
          "label": "Annual electricity savings"
        },
        {
          "id": "payback",
          "label": "Payback period (years)"
        },
        {
          "id": "twentyYear",
          "label": "20-year net benefit"
        }
      ]
    },
    {
      "slug": "electricity-cost",
      "url": "https://www.revenuelab.fyi/toolbox/electricity-cost",
      "title": "Electricity Cost Calculator",
      "category": "other",
      "summary": "What any appliance costs to run per day, month, and year.",
      "formula": "Cost = Watts ÷ 1000 × Hours × Rate.",
      "inputs": [
        {
          "id": "watts",
          "label": "Device wattage",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Hours used per day",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Days used per month",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Electricity rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthly",
          "label": "Monthly cost"
        },
        {
          "id": "daily",
          "label": "Daily cost"
        },
        {
          "id": "annual",
          "label": "Annual cost"
        },
        {
          "id": "monthlyKwh",
          "label": "Monthly kWh"
        },
        {
          "id": "annualKwh",
          "label": "Annual kWh"
        }
      ]
    },
    {
      "slug": "water-usage",
      "url": "https://www.revenuelab.fyi/toolbox/water-usage",
      "title": "Water Usage Calculator",
      "category": "other",
      "summary": "Household water use and monthly bill estimate.",
      "formula": "Gallons = Sum of each fixture's flow × frequency × household size.",
      "inputs": [
        {
          "id": "people",
          "label": "People in household",
          "kind": "number"
        },
        {
          "id": "showerMin",
          "label": "Shower minutes per person per day",
          "kind": "number"
        },
        {
          "id": "showerGpm",
          "label": "Showerhead flow",
          "kind": "number"
        },
        {
          "id": "flushes",
          "label": "Toilet flushes per person per day",
          "kind": "number"
        },
        {
          "id": "flushGal",
          "label": "Gallons per flush",
          "kind": "number"
        },
        {
          "id": "laundry",
          "label": "Laundry loads per week",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Water rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthly",
          "label": "Monthly usage (gallons)"
        },
        {
          "id": "cost",
          "label": "Estimated monthly bill"
        },
        {
          "id": "daily",
          "label": "Daily usage (gallons)"
        },
        {
          "id": "perPerson",
          "label": "Per person per day"
        },
        {
          "id": "annual",
          "label": "Annual usage (gallons)"
        }
      ]
    },
    {
      "slug": "break-even",
      "url": "https://www.revenuelab.fyi/toolbox/break-even",
      "title": "Break-Even Calculator",
      "category": "financial",
      "summary": "Units and revenue you need before you start making money.",
      "formula": "Break-even units = Fixed costs ÷ (Price − Variable cost per unit).",
      "inputs": [
        {
          "id": "fixed",
          "label": "Fixed costs per month",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per unit",
          "kind": "number"
        },
        {
          "id": "variable",
          "label": "Variable cost per unit",
          "kind": "number"
        },
        {
          "id": "target",
          "label": "Target monthly profit",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "units",
          "label": "Break-even units per month"
        },
        {
          "id": "revenue",
          "label": "Break-even revenue"
        },
        {
          "id": "cm",
          "label": "Contribution margin per unit"
        },
        {
          "id": "cmPct",
          "label": "Contribution margin"
        },
        {
          "id": "targetUnits",
          "label": "Units to hit your profit target"
        },
        {
          "id": "perDay",
          "label": "Units per day"
        }
      ]
    },
    {
      "slug": "margin",
      "url": "https://www.revenuelab.fyi/toolbox/margin",
      "title": "Profit Margin Calculator",
      "category": "financial",
      "summary": "Gross margin, net margin, and profit per sale.",
      "formula": "Margin % = (Revenue − Cost) ÷ Revenue × 100.",
      "inputs": [
        {
          "id": "revenue",
          "label": "Revenue",
          "kind": "number"
        },
        {
          "id": "cogs",
          "label": "Cost of goods sold",
          "kind": "number"
        },
        {
          "id": "operating",
          "label": "Operating expenses",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "grossMargin",
          "label": "Gross margin"
        },
        {
          "id": "gross",
          "label": "Gross profit"
        },
        {
          "id": "netMargin",
          "label": "Net margin"
        },
        {
          "id": "net",
          "label": "Net profit"
        },
        {
          "id": "markup",
          "label": "Equivalent markup on cost"
        }
      ]
    },
    {
      "slug": "markup",
      "url": "https://www.revenuelab.fyi/toolbox/markup",
      "title": "Markup Calculator",
      "category": "financial",
      "summary": "Set a price from cost and target markup or margin.",
      "formula": "Price = Cost × (1 + Markup). Price from margin = Cost ÷ (1 − Margin).",
      "inputs": [
        {
          "id": "cost",
          "label": "Unit cost",
          "kind": "number"
        },
        {
          "id": "markup",
          "label": "Target markup",
          "kind": "number"
        },
        {
          "id": "targetMargin",
          "label": "Or target margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "priceFromMarkup",
          "label": "Price at your markup"
        },
        {
          "id": "marginAchieved",
          "label": "Margin that produces"
        },
        {
          "id": "priceFromMargin",
          "label": "Price needed for your target margin"
        },
        {
          "id": "markupNeeded",
          "label": "Markup that requires"
        },
        {
          "id": "profit",
          "label": "Profit per unit"
        }
      ]
    },
    {
      "slug": "gross-profit",
      "url": "https://www.revenuelab.fyi/toolbox/gross-profit",
      "title": "Gross Profit Calculator",
      "category": "financial",
      "summary": "Gross profit, COGS ratio, and profit per unit sold.",
      "formula": "Gross profit = Revenue − COGS. Gross margin = Gross profit ÷ Revenue.",
      "inputs": [
        {
          "id": "units",
          "label": "Units sold",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Average selling price",
          "kind": "number"
        },
        {
          "id": "unitCost",
          "label": "Direct cost per unit",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "gross",
          "label": "Gross profit"
        },
        {
          "id": "marginPct",
          "label": "Gross margin"
        },
        {
          "id": "revenue",
          "label": "Revenue"
        },
        {
          "id": "cogs",
          "label": "Cost of goods sold"
        },
        {
          "id": "perUnit",
          "label": "Profit per unit"
        }
      ]
    },
    {
      "slug": "burn-rate",
      "url": "https://www.revenuelab.fyi/toolbox/burn-rate",
      "title": "Burn Rate and Runway Calculator",
      "category": "financial",
      "summary": "Months of cash left at your current spend.",
      "formula": "Net burn = Expenses − Revenue. Runway = Cash ÷ Net burn.",
      "inputs": [
        {
          "id": "cash",
          "label": "Cash in bank",
          "kind": "number"
        },
        {
          "id": "expenses",
          "label": "Monthly expenses",
          "kind": "number"
        },
        {
          "id": "revenue",
          "label": "Monthly revenue",
          "kind": "number"
        },
        {
          "id": "growth",
          "label": "Monthly revenue growth",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "runway",
          "label": "Runway at flat revenue (months)"
        },
        {
          "id": "growthRunway",
          "label": "Runway with growth (months)"
        },
        {
          "id": "netBurn",
          "label": "Net monthly burn"
        },
        {
          "id": "grossBurn",
          "label": "Gross monthly burn"
        },
        {
          "id": "breakEvenRevenue",
          "label": "Revenue needed to break even"
        }
      ]
    },
    {
      "slug": "cac",
      "url": "https://www.revenuelab.fyi/toolbox/cac",
      "title": "Customer Acquisition Cost Calculator",
      "category": "financial",
      "summary": "Blended CAC, paid CAC, and cost per lead.",
      "formula": "CAC = (Marketing + Sales spend) ÷ New customers.",
      "inputs": [
        {
          "id": "marketing",
          "label": "Marketing spend",
          "kind": "number"
        },
        {
          "id": "sales",
          "label": "Sales team cost",
          "kind": "number"
        },
        {
          "id": "customers",
          "label": "New customers",
          "kind": "number"
        },
        {
          "id": "paidCustomers",
          "label": "Of which came from paid",
          "kind": "number"
        },
        {
          "id": "leads",
          "label": "Leads generated",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "blended",
          "label": "Blended CAC"
        },
        {
          "id": "paid",
          "label": "Paid CAC"
        },
        {
          "id": "cpl",
          "label": "Cost per lead"
        },
        {
          "id": "conversion",
          "label": "Lead to customer rate"
        },
        {
          "id": "organicShare",
          "label": "Share of customers from organic"
        }
      ]
    },
    {
      "slug": "ltv",
      "url": "https://www.revenuelab.fyi/toolbox/ltv",
      "title": "Customer Lifetime Value Calculator",
      "category": "financial",
      "summary": "LTV, LTV:CAC ratio, and average customer lifespan.",
      "formula": "Lifespan = 1 ÷ Monthly churn. LTV = ARPU × Gross margin × Lifespan.",
      "inputs": [
        {
          "id": "arpu",
          "label": "Average revenue per user",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Gross margin",
          "kind": "number"
        },
        {
          "id": "churn",
          "label": "Monthly churn rate",
          "kind": "number"
        },
        {
          "id": "cac",
          "label": "CAC",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ltv",
          "label": "Lifetime value"
        },
        {
          "id": "ratio",
          "label": "LTV : CAC ratio"
        },
        {
          "id": "lifespan",
          "label": "Average lifespan (months)"
        },
        {
          "id": "paybackMonths",
          "label": "CAC payback (months)"
        },
        {
          "id": "verdict",
          "label": "Read"
        }
      ]
    },
    {
      "slug": "churn-rate",
      "url": "https://www.revenuelab.fyi/toolbox/churn-rate",
      "title": "Churn Rate Calculator",
      "category": "financial",
      "summary": "Customer churn, revenue churn, and retention.",
      "formula": "Churn = Lost ÷ Starting count. NRR = (Start + Expansion − Churned) ÷ Start.",
      "inputs": [
        {
          "id": "start",
          "label": "Customers at start of month",
          "kind": "number"
        },
        {
          "id": "lost",
          "label": "Customers lost",
          "kind": "number"
        },
        {
          "id": "startMrr",
          "label": "Starting MRR",
          "kind": "number"
        },
        {
          "id": "lostMrr",
          "label": "MRR churned",
          "kind": "number"
        },
        {
          "id": "expansionMrr",
          "label": "Expansion MRR",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "churn",
          "label": "Monthly customer churn"
        },
        {
          "id": "annualChurn",
          "label": "Annualised churn"
        },
        {
          "id": "revenueChurn",
          "label": "Gross revenue churn"
        },
        {
          "id": "nrr",
          "label": "Net revenue retention"
        },
        {
          "id": "retention",
          "label": "Monthly retention"
        },
        {
          "id": "lifespan",
          "label": "Average lifespan (months)"
        }
      ]
    },
    {
      "slug": "mrr-growth",
      "url": "https://www.revenuelab.fyi/toolbox/mrr-growth",
      "title": "MRR Growth Calculator",
      "category": "financial",
      "summary": "Project MRR and ARR forward at your growth rate.",
      "formula": "MRR after n months = MRR × (1 + net growth)ⁿ. ARR = MRR × 12.",
      "inputs": [
        {
          "id": "mrr",
          "label": "Current MRR",
          "kind": "number"
        },
        {
          "id": "newMrr",
          "label": "New MRR added per month",
          "kind": "number"
        },
        {
          "id": "churnPct",
          "label": "Monthly revenue churn",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Months to project",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "projected",
          "label": "Projected MRR"
        },
        {
          "id": "arr",
          "label": "Projected ARR"
        },
        {
          "id": "growthAdded",
          "label": "MRR added over the period"
        },
        {
          "id": "monthlyGrowth",
          "label": "Net monthly growth rate"
        },
        {
          "id": "currentArr",
          "label": "Current ARR"
        }
      ]
    },
    {
      "slug": "saas-payback",
      "url": "https://www.revenuelab.fyi/toolbox/saas-payback",
      "title": "CAC Payback Period Calculator",
      "category": "financial",
      "summary": "Months to earn back what a customer cost to acquire.",
      "formula": "Payback = CAC ÷ (ARPU × Gross margin).",
      "inputs": [
        {
          "id": "cac",
          "label": "CAC",
          "kind": "number"
        },
        {
          "id": "arpu",
          "label": "Monthly revenue per customer",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Gross margin",
          "kind": "number"
        },
        {
          "id": "churn",
          "label": "Monthly churn",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "payback",
          "label": "CAC payback (months)"
        },
        {
          "id": "contribution",
          "label": "Monthly contribution per customer"
        },
        {
          "id": "lifespan",
          "label": "Expected lifespan (months)"
        },
        {
          "id": "profitAfterPayback",
          "label": "Profit after payback"
        },
        {
          "id": "verdict",
          "label": "Read"
        }
      ]
    },
    {
      "slug": "roas",
      "url": "https://www.revenuelab.fyi/toolbox/roas",
      "title": "ROAS Calculator",
      "category": "financial",
      "summary": "Return on ad spend, break-even ROAS, and profit.",
      "formula": "ROAS = Revenue ÷ Ad spend. Break-even ROAS = 1 ÷ Gross margin.",
      "inputs": [
        {
          "id": "spend",
          "label": "Ad spend",
          "kind": "number"
        },
        {
          "id": "revenue",
          "label": "Revenue attributed",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Gross margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "roas",
          "label": "ROAS"
        },
        {
          "id": "breakEven",
          "label": "Break-even ROAS"
        },
        {
          "id": "profit",
          "label": "Profit after ad spend"
        },
        {
          "id": "roi",
          "label": "Return on ad investment"
        },
        {
          "id": "verdict",
          "label": "Read"
        }
      ]
    },
    {
      "slug": "cpm",
      "url": "https://www.revenuelab.fyi/toolbox/cpm",
      "title": "CPM Calculator",
      "category": "financial",
      "summary": "Cost per thousand impressions, spend, or reach.",
      "formula": "CPM = Spend ÷ Impressions × 1,000.",
      "inputs": [
        {
          "id": "spend",
          "label": "Total spend",
          "kind": "number"
        },
        {
          "id": "impressions",
          "label": "Impressions",
          "kind": "number"
        },
        {
          "id": "ctr",
          "label": "Expected click-through rate",
          "kind": "number"
        },
        {
          "id": "conversionRate",
          "label": "Landing page conversion rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cpm",
          "label": "CPM"
        },
        {
          "id": "clicks",
          "label": "Expected clicks"
        },
        {
          "id": "cpc",
          "label": "Effective cost per click"
        },
        {
          "id": "conversions",
          "label": "Expected conversions"
        },
        {
          "id": "cpa",
          "label": "Cost per acquisition"
        }
      ]
    },
    {
      "slug": "cpc-budget",
      "url": "https://www.revenuelab.fyi/toolbox/cpc-budget",
      "title": "PPC Budget Calculator",
      "category": "financial",
      "summary": "Budget needed to hit a target number of customers.",
      "formula": "Budget = Customers ÷ Conversion rate × CPC. Max CPC = Order value × Margin × Conversion rate.",
      "inputs": [
        {
          "id": "targetCustomers",
          "label": "Customers wanted per month",
          "kind": "number"
        },
        {
          "id": "cpc",
          "label": "Average cost per click",
          "kind": "number"
        },
        {
          "id": "conversionRate",
          "label": "Click to customer rate",
          "kind": "number"
        },
        {
          "id": "orderValue",
          "label": "Average order value",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Gross margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "budget",
          "label": "Monthly budget needed"
        },
        {
          "id": "clicks",
          "label": "Clicks required"
        },
        {
          "id": "cpa",
          "label": "Cost per acquisition"
        },
        {
          "id": "maxCpc",
          "label": "Max CPC before you lose money"
        },
        {
          "id": "profit",
          "label": "Expected gross profit after spend"
        }
      ]
    },
    {
      "slug": "conversion-rate",
      "url": "https://www.revenuelab.fyi/toolbox/conversion-rate",
      "title": "Conversion Rate Calculator",
      "category": "financial",
      "summary": "Conversion rate, revenue per visitor, and lift scenarios.",
      "formula": "Conversion rate = Conversions ÷ Visitors. RPV = Revenue ÷ Visitors.",
      "inputs": [
        {
          "id": "visitors",
          "label": "Visitors",
          "kind": "number"
        },
        {
          "id": "conversions",
          "label": "Conversions",
          "kind": "number"
        },
        {
          "id": "orderValue",
          "label": "Average order value",
          "kind": "number"
        },
        {
          "id": "lift",
          "label": "Conversion lift to model",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rate",
          "label": "Conversion rate"
        },
        {
          "id": "rpv",
          "label": "Revenue per visitor"
        },
        {
          "id": "revenue",
          "label": "Revenue"
        },
        {
          "id": "liftedRevenue",
          "label": "Revenue after the lift"
        },
        {
          "id": "gain",
          "label": "Extra revenue from the lift"
        }
      ]
    },
    {
      "slug": "ab-test",
      "url": "https://www.revenuelab.fyi/toolbox/ab-test",
      "title": "A/B Test Significance Calculator",
      "category": "math",
      "summary": "Is your test result real, or is it noise?",
      "formula": "z = (p₂ − p₁) ÷ √(p(1−p)(1/n₁ + 1/n₂)) using the pooled conversion rate.",
      "inputs": [
        {
          "id": "visitorsA",
          "label": "Control visitors",
          "kind": "number"
        },
        {
          "id": "conversionsA",
          "label": "Control conversions",
          "kind": "number"
        },
        {
          "id": "visitorsB",
          "label": "Variant visitors",
          "kind": "number"
        },
        {
          "id": "conversionsB",
          "label": "Variant conversions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "significant",
          "label": "Verdict"
        },
        {
          "id": "lift",
          "label": "Relative lift"
        },
        {
          "id": "rateA",
          "label": "Control conversion rate"
        },
        {
          "id": "rateB",
          "label": "Variant conversion rate"
        },
        {
          "id": "confidence",
          "label": "Confidence level"
        },
        {
          "id": "z",
          "label": "Z-statistic"
        }
      ]
    },
    {
      "slug": "email-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/email-revenue",
      "title": "Email List Revenue Calculator",
      "category": "financial",
      "summary": "What your list is worth per send, month, and subscriber.",
      "formula": "Revenue = List × Open rate × Click rate × Conversion rate × Order value.",
      "inputs": [
        {
          "id": "list",
          "label": "Subscribers",
          "kind": "number"
        },
        {
          "id": "openRate",
          "label": "Open rate",
          "kind": "number"
        },
        {
          "id": "clickRate",
          "label": "Click rate (of opens)",
          "kind": "number"
        },
        {
          "id": "conversionRate",
          "label": "Click to purchase rate",
          "kind": "number"
        },
        {
          "id": "orderValue",
          "label": "Average order value",
          "kind": "number"
        },
        {
          "id": "sends",
          "label": "Campaigns per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perSend",
          "label": "Revenue per campaign"
        },
        {
          "id": "monthly",
          "label": "Monthly revenue"
        },
        {
          "id": "annual",
          "label": "Annual revenue"
        },
        {
          "id": "perSubscriber",
          "label": "Value per subscriber per month"
        },
        {
          "id": "buyers",
          "label": "Buyers per campaign"
        }
      ]
    },
    {
      "slug": "newsletter-sponsorship",
      "url": "https://www.revenuelab.fyi/toolbox/newsletter-sponsorship",
      "title": "Newsletter Sponsorship Rate Calculator",
      "category": "financial",
      "summary": "What to charge sponsors for a slot in your newsletter.",
      "formula": "Rate = Opens ÷ 1,000 × CPM.",
      "inputs": [
        {
          "id": "subscribers",
          "label": "Subscribers",
          "kind": "number"
        },
        {
          "id": "openRate",
          "label": "Open rate",
          "kind": "number"
        },
        {
          "id": "cpm",
          "label": "CPM you want to charge",
          "kind": "number"
        },
        {
          "id": "slots",
          "label": "Sponsor slots per issue",
          "kind": "number"
        },
        {
          "id": "issues",
          "label": "Issues per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perSlot",
          "label": "Price per sponsor slot"
        },
        {
          "id": "perIssue",
          "label": "Revenue per issue"
        },
        {
          "id": "monthly",
          "label": "Monthly sponsorship revenue"
        },
        {
          "id": "annual",
          "label": "Annual run rate"
        },
        {
          "id": "opens",
          "label": "Opens per issue"
        }
      ]
    },
    {
      "slug": "freelance-rate",
      "url": "https://www.revenuelab.fyi/toolbox/freelance-rate",
      "title": "Freelance Rate Calculator",
      "category": "financial",
      "summary": "The hourly rate that actually pays your bills.",
      "formula": "Rate = (Target income + costs + tax) ÷ Billable hours per year.",
      "inputs": [
        {
          "id": "income",
          "label": "Take-home income you want",
          "kind": "number"
        },
        {
          "id": "expenses",
          "label": "Business expenses",
          "kind": "number"
        },
        {
          "id": "taxRate",
          "label": "Effective tax rate",
          "kind": "number"
        },
        {
          "id": "weeks",
          "label": "Working weeks per year",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Hours worked per week",
          "kind": "number"
        },
        {
          "id": "billable",
          "label": "Share of hours that are billable",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rate",
          "label": "Minimum hourly rate"
        },
        {
          "id": "dayRate",
          "label": "Day rate"
        },
        {
          "id": "gross",
          "label": "Gross revenue needed"
        },
        {
          "id": "billableHours",
          "label": "Billable hours per year"
        },
        {
          "id": "weeklyTarget",
          "label": "Weekly revenue target"
        }
      ]
    },
    {
      "slug": "project-quote",
      "url": "https://www.revenuelab.fyi/toolbox/project-quote",
      "title": "Project Quote Calculator",
      "category": "financial",
      "summary": "Price a fixed-scope project without losing money.",
      "formula": "Quote = (Hours × Rate + Costs) × (1 + Contingency) × (1 + Margin).",
      "inputs": [
        {
          "id": "hours",
          "label": "Estimated hours",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Your hourly rate",
          "kind": "number"
        },
        {
          "id": "costs",
          "label": "Direct costs and subcontractors",
          "kind": "number"
        },
        {
          "id": "contingency",
          "label": "Contingency buffer",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Profit margin on top",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "quote",
          "label": "Quote the client"
        },
        {
          "id": "deposit",
          "label": "50% deposit to invoice up front"
        },
        {
          "id": "base",
          "label": "Raw cost of delivery"
        },
        {
          "id": "buffer",
          "label": "Contingency built in"
        },
        {
          "id": "profit",
          "label": "Profit if it runs to plan"
        },
        {
          "id": "effectiveRate",
          "label": "Effective hourly rate"
        }
      ]
    },
    {
      "slug": "agency-utilization",
      "url": "https://www.revenuelab.fyi/toolbox/agency-utilization",
      "title": "Agency Utilization Calculator",
      "category": "financial",
      "summary": "Billable utilisation, capacity, and revenue per head.",
      "formula": "Utilisation = Billable hours ÷ Available hours. Capacity = Headcount × Hours × Target utilisation.",
      "inputs": [
        {
          "id": "headcount",
          "label": "Billable team members",
          "kind": "number"
        },
        {
          "id": "hoursPerWeek",
          "label": "Available hours per person per week",
          "kind": "number"
        },
        {
          "id": "billableHours",
          "label": "Billable hours logged per week",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Average billable rate",
          "kind": "number"
        },
        {
          "id": "target",
          "label": "Target utilisation",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "utilization",
          "label": "Current utilisation"
        },
        {
          "id": "weeklyRevenue",
          "label": "Weekly billings"
        },
        {
          "id": "annualRevenue",
          "label": "Annualised billings"
        },
        {
          "id": "gapHours",
          "label": "Hours from target per week"
        },
        {
          "id": "revenuePerHead",
          "label": "Revenue per billable head"
        }
      ]
    },
    {
      "slug": "meeting-cost",
      "url": "https://www.revenuelab.fyi/toolbox/meeting-cost",
      "title": "Meeting Cost Calculator",
      "category": "other",
      "summary": "What that recurring meeting costs the company each year.",
      "formula": "Cost = Attendees × Loaded hourly rate × Duration, times frequency.",
      "inputs": [
        {
          "id": "attendees",
          "label": "Attendees",
          "kind": "number"
        },
        {
          "id": "salary",
          "label": "Average salary",
          "kind": "number"
        },
        {
          "id": "load",
          "label": "Benefits and overhead load",
          "kind": "number"
        },
        {
          "id": "minutes",
          "label": "Meeting length",
          "kind": "number"
        },
        {
          "id": "perMonth",
          "label": "Times per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cost",
          "label": "Cost per meeting"
        },
        {
          "id": "monthly",
          "label": "Monthly cost"
        },
        {
          "id": "annual",
          "label": "Annual cost"
        },
        {
          "id": "hoursBurned",
          "label": "Person-hours per year"
        },
        {
          "id": "perMinute",
          "label": "Cost per minute"
        }
      ]
    },
    {
      "slug": "employee-turnover-cost",
      "url": "https://www.revenuelab.fyi/toolbox/employee-turnover-cost",
      "title": "Employee Turnover Cost Calculator",
      "category": "financial",
      "summary": "What losing a team member really costs.",
      "formula": "Cost = Recruiting + onboarding + ramp productivity loss + coverage cost, per departure.",
      "inputs": [
        {
          "id": "salary",
          "label": "Role salary",
          "kind": "number"
        },
        {
          "id": "recruiting",
          "label": "Recruiting and agency fees",
          "kind": "number"
        },
        {
          "id": "vacancyWeeks",
          "label": "Weeks the seat sits empty",
          "kind": "number"
        },
        {
          "id": "rampMonths",
          "label": "Months to full productivity",
          "kind": "number"
        },
        {
          "id": "departures",
          "label": "Departures per year",
          "kind": "number"
        },
        {
          "id": "headcount",
          "label": "Total headcount",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perDeparture",
          "label": "Cost per departure"
        },
        {
          "id": "annual",
          "label": "Annual turnover cost"
        },
        {
          "id": "turnoverRate",
          "label": "Turnover rate"
        },
        {
          "id": "asPctSalary",
          "label": "As a share of salary"
        },
        {
          "id": "rampLoss",
          "label": "Lost productivity during ramp"
        }
      ]
    },
    {
      "slug": "sales-quota",
      "url": "https://www.revenuelab.fyi/toolbox/sales-quota",
      "title": "Sales Quota Calculator",
      "category": "financial",
      "summary": "Reps, pipeline, and activity needed to hit a revenue number.",
      "formula": "Pipeline needed = Target ÷ Win rate. Deals = Target ÷ Average deal size.",
      "inputs": [
        {
          "id": "target",
          "label": "Annual revenue target",
          "kind": "number"
        },
        {
          "id": "reps",
          "label": "Quota-carrying reps",
          "kind": "number"
        },
        {
          "id": "dealSize",
          "label": "Average deal size",
          "kind": "number"
        },
        {
          "id": "winRate",
          "label": "Win rate",
          "kind": "number"
        },
        {
          "id": "meetingToOpp",
          "label": "Meeting to opportunity rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perRep",
          "label": "Quota per rep"
        },
        {
          "id": "deals",
          "label": "Deals needed"
        },
        {
          "id": "pipeline",
          "label": "Pipeline required"
        },
        {
          "id": "dealsPerRepMonth",
          "label": "Deals per rep per month"
        },
        {
          "id": "meetingsPerRepMonth",
          "label": "Meetings per rep per month"
        }
      ]
    },
    {
      "slug": "commission",
      "url": "https://www.revenuelab.fyi/toolbox/commission",
      "title": "Sales Commission Calculator",
      "category": "financial",
      "summary": "Commission, accelerators, and total on-target earnings.",
      "formula": "Commission = Attainment to quota × Rate + Overage × Accelerated rate.",
      "inputs": [
        {
          "id": "base",
          "label": "Base salary",
          "kind": "number"
        },
        {
          "id": "quota",
          "label": "Annual quota",
          "kind": "number"
        },
        {
          "id": "closed",
          "label": "Closed revenue",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Commission rate",
          "kind": "number"
        },
        {
          "id": "accelerator",
          "label": "Accelerator multiplier above quota",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "commission",
          "label": "Commission earned"
        },
        {
          "id": "total",
          "label": "Total earnings with base"
        },
        {
          "id": "attainment",
          "label": "Quota attainment"
        },
        {
          "id": "overage",
          "label": "Accelerated portion"
        },
        {
          "id": "effectiveRate",
          "label": "Effective commission rate"
        }
      ]
    },
    {
      "slug": "invoice-late-fee",
      "url": "https://www.revenuelab.fyi/toolbox/invoice-late-fee",
      "title": "Late Payment Fee Calculator",
      "category": "financial",
      "summary": "Interest owed on an overdue invoice.",
      "formula": "Fee = Invoice × Rate ÷ Period × Days overdue.",
      "inputs": [
        {
          "id": "amount",
          "label": "Invoice amount",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Late fee rate",
          "kind": "number"
        },
        {
          "id": "period",
          "label": "Rate period",
          "kind": "select"
        },
        {
          "id": "days",
          "label": "Days overdue",
          "kind": "number"
        },
        {
          "id": "flat",
          "label": "Flat late fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total now due"
        },
        {
          "id": "fees",
          "label": "Late fees owed"
        },
        {
          "id": "interest",
          "label": "Interest portion"
        },
        {
          "id": "perDay",
          "label": "Accruing per day"
        },
        {
          "id": "annualisedRate",
          "label": "Annualised rate"
        }
      ]
    },
    {
      "slug": "ecommerce-fees",
      "url": "https://www.revenuelab.fyi/toolbox/ecommerce-fees",
      "title": "Marketplace Fee Calculator",
      "category": "financial",
      "summary": "Net payout after platform, payment, and shipping fees.",
      "formula": "Net = Price − Platform fee − Payment fee − Shipping − Product cost.",
      "inputs": [
        {
          "id": "price",
          "label": "Sale price",
          "kind": "number"
        },
        {
          "id": "platformFee",
          "label": "Platform fee",
          "kind": "number"
        },
        {
          "id": "paymentFee",
          "label": "Payment processing",
          "kind": "number"
        },
        {
          "id": "paymentFlat",
          "label": "Flat transaction fee",
          "kind": "number"
        },
        {
          "id": "shipping",
          "label": "Shipping cost you absorb",
          "kind": "number"
        },
        {
          "id": "cogs",
          "label": "Product cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Profit per sale"
        },
        {
          "id": "margin",
          "label": "Net margin"
        },
        {
          "id": "fees",
          "label": "Total fees"
        },
        {
          "id": "takeRate",
          "label": "Platform take rate"
        },
        {
          "id": "breakEvenPrice",
          "label": "Break-even price"
        }
      ]
    },
    {
      "slug": "shipping-cost",
      "url": "https://www.revenuelab.fyi/toolbox/shipping-cost",
      "title": "Shipping Cost Calculator",
      "category": "financial",
      "summary": "Dimensional weight, per-order cost, and free-shipping threshold.",
      "formula": "Dimensional weight = L × W × H ÷ Divisor. Billable weight = max(actual, dimensional).",
      "inputs": [
        {
          "id": "length",
          "label": "Box length",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Box width",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Box height",
          "kind": "number"
        },
        {
          "id": "weight",
          "label": "Actual weight",
          "kind": "number"
        },
        {
          "id": "divisor",
          "label": "Dimensional divisor",
          "kind": "number"
        },
        {
          "id": "ratePerLb",
          "label": "Rate per billable pound",
          "kind": "number"
        },
        {
          "id": "packaging",
          "label": "Packaging cost",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Gross margin on the order",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cost",
          "label": "Shipping cost per order"
        },
        {
          "id": "billable",
          "label": "Billable weight (lb)"
        },
        {
          "id": "dim",
          "label": "Dimensional weight (lb)"
        },
        {
          "id": "basis",
          "label": "How it is billed"
        },
        {
          "id": "freeShipThreshold",
          "label": "Free-shipping threshold to stay level"
        }
      ]
    },
    {
      "slug": "inventory-turnover",
      "url": "https://www.revenuelab.fyi/toolbox/inventory-turnover",
      "title": "Inventory Turnover Calculator",
      "category": "financial",
      "summary": "Turns per year, days of inventory, and cash tied up.",
      "formula": "Turnover = COGS ÷ Average inventory. Days on hand = 365 ÷ Turnover.",
      "inputs": [
        {
          "id": "cogs",
          "label": "Annual cost of goods sold",
          "kind": "number"
        },
        {
          "id": "avgInventory",
          "label": "Average inventory value",
          "kind": "number"
        },
        {
          "id": "carryRate",
          "label": "Annual carrying cost rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "turns",
          "label": "Inventory turns per year"
        },
        {
          "id": "days",
          "label": "Days of inventory on hand"
        },
        {
          "id": "carryingCost",
          "label": "Annual carrying cost"
        },
        {
          "id": "cashTied",
          "label": "Cash tied up in stock"
        }
      ]
    },
    {
      "slug": "reorder-point",
      "url": "https://www.revenuelab.fyi/toolbox/reorder-point",
      "title": "Reorder Point Calculator",
      "category": "other",
      "summary": "When to reorder, and how much safety stock to hold.",
      "formula": "Reorder point = (Daily demand × Lead time) + Safety stock. EOQ = √(2DS ÷ H).",
      "inputs": [
        {
          "id": "dailyDemand",
          "label": "Average units sold per day",
          "kind": "number"
        },
        {
          "id": "leadTime",
          "label": "Supplier lead time",
          "kind": "number"
        },
        {
          "id": "peakDemand",
          "label": "Peak units per day",
          "kind": "number"
        },
        {
          "id": "orderCost",
          "label": "Cost to place an order",
          "kind": "number"
        },
        {
          "id": "holdingCost",
          "label": "Annual holding cost per unit",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rop",
          "label": "Reorder at this stock level"
        },
        {
          "id": "safety",
          "label": "Safety stock"
        },
        {
          "id": "eoq",
          "label": "Economic order quantity"
        },
        {
          "id": "ordersPerYear",
          "label": "Orders per year"
        },
        {
          "id": "daysBetweenOrders",
          "label": "Days between orders"
        }
      ]
    },
    {
      "slug": "ebitda",
      "url": "https://www.revenuelab.fyi/toolbox/ebitda",
      "title": "EBITDA and Valuation Calculator",
      "category": "financial",
      "summary": "EBITDA, margin, and a multiple-based business valuation.",
      "formula": "EBITDA = Net income + Interest + Tax + Depreciation + Amortisation. Value = EBITDA × Multiple.",
      "inputs": [
        {
          "id": "revenue",
          "label": "Annual revenue",
          "kind": "number"
        },
        {
          "id": "netIncome",
          "label": "Net income",
          "kind": "number"
        },
        {
          "id": "interest",
          "label": "Interest expense",
          "kind": "number"
        },
        {
          "id": "tax",
          "label": "Taxes",
          "kind": "number"
        },
        {
          "id": "depreciation",
          "label": "Depreciation and amortisation",
          "kind": "number"
        },
        {
          "id": "addBacks",
          "label": "Owner add-backs",
          "kind": "number"
        },
        {
          "id": "multiple",
          "label": "Valuation multiple",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "valuation",
          "label": "Estimated business value"
        },
        {
          "id": "ebitda",
          "label": "EBITDA"
        },
        {
          "id": "adjusted",
          "label": "Adjusted EBITDA"
        },
        {
          "id": "margin",
          "label": "EBITDA margin"
        },
        {
          "id": "revenueMultiple",
          "label": "Implied revenue multiple"
        }
      ]
    },
    {
      "slug": "engagement-rate",
      "url": "https://www.revenuelab.fyi/toolbox/engagement-rate",
      "title": "Engagement Rate Calculator",
      "category": "other",
      "summary": "Engagement rate by followers and by reach, on any platform.",
      "formula": "ER by followers = (Likes + Comments + Saves + Shares) ÷ Followers × 100.",
      "inputs": [
        {
          "id": "followers",
          "label": "Followers",
          "kind": "number"
        },
        {
          "id": "reach",
          "label": "Reach per post",
          "kind": "number"
        },
        {
          "id": "likes",
          "label": "Likes",
          "kind": "number"
        },
        {
          "id": "comments",
          "label": "Comments",
          "kind": "number"
        },
        {
          "id": "saves",
          "label": "Saves + shares",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "erFollowers",
          "label": "Engagement rate (followers)"
        },
        {
          "id": "erReach",
          "label": "Engagement rate (reach)"
        },
        {
          "id": "inter",
          "label": "Total interactions"
        },
        {
          "id": "reachRate",
          "label": "Reach rate"
        },
        {
          "id": "commentRatio",
          "label": "Comments share of engagement"
        }
      ]
    },
    {
      "slug": "sponsorship-rate-card",
      "url": "https://www.revenuelab.fyi/toolbox/sponsorship-rate-card",
      "title": "Sponsorship Rate Card Calculator",
      "category": "financial",
      "summary": "Build a defensible price per post from reach and CPM.",
      "formula": "Fee = Median reach ÷ 1,000 × CPM × (1 + usage% + exclusivity% + rush%).",
      "inputs": [
        {
          "id": "reach",
          "label": "Median reach per post",
          "kind": "number"
        },
        {
          "id": "cpm",
          "label": "Category CPM",
          "kind": "number"
        },
        {
          "id": "usage",
          "label": "Paid usage rights uplift",
          "kind": "number"
        },
        {
          "id": "exclusivity",
          "label": "Category exclusivity uplift",
          "kind": "number"
        },
        {
          "id": "rush",
          "label": "Rush turnaround uplift",
          "kind": "number"
        },
        {
          "id": "deliverables",
          "label": "Deliverables in the package",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perPost",
          "label": "Rate per deliverable"
        },
        {
          "id": "pkg",
          "label": "Package price"
        },
        {
          "id": "base",
          "label": "Base impression value"
        },
        {
          "id": "floor",
          "label": "Negotiation floor"
        },
        {
          "id": "ceiling",
          "label": "Opening ask"
        },
        {
          "id": "effCpm",
          "label": "Effective CPM"
        }
      ]
    },
    {
      "slug": "cost-per-engagement",
      "url": "https://www.revenuelab.fyi/toolbox/cost-per-engagement",
      "title": "Cost Per Engagement Calculator",
      "category": "financial",
      "summary": "What each like, comment, or save actually costs you.",
      "formula": "CPE = Spend ÷ Total engagements.",
      "inputs": [
        {
          "id": "spend",
          "label": "Total spend",
          "kind": "number"
        },
        {
          "id": "engagements",
          "label": "Engagements delivered",
          "kind": "number"
        },
        {
          "id": "impressions",
          "label": "Impressions delivered",
          "kind": "number"
        },
        {
          "id": "clicks",
          "label": "Link clicks",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cpe",
          "label": "Cost per engagement"
        },
        {
          "id": "cpm",
          "label": "Effective CPM"
        },
        {
          "id": "cpc",
          "label": "Cost per click"
        },
        {
          "id": "er",
          "label": "Engagement rate on impressions"
        },
        {
          "id": "ctr",
          "label": "Click-through rate"
        }
      ]
    },
    {
      "slug": "influencer-roi",
      "url": "https://www.revenuelab.fyi/toolbox/influencer-roi",
      "title": "Influencer Marketing ROI Calculator",
      "category": "financial",
      "summary": "Return, ROAS, and breakeven conversions for a creator campaign.",
      "formula": "ROI % = (Gross profit − Campaign cost) ÷ Campaign cost × 100.",
      "inputs": [
        {
          "id": "fees",
          "label": "Creator fees",
          "kind": "number"
        },
        {
          "id": "product",
          "label": "Gifted product + shipping cost",
          "kind": "number"
        },
        {
          "id": "conversions",
          "label": "Attributed orders",
          "kind": "number"
        },
        {
          "id": "aov",
          "label": "Average order value",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Gross margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "roi",
          "label": "Campaign ROI"
        },
        {
          "id": "roas",
          "label": "ROAS"
        },
        {
          "id": "revenue",
          "label": "Attributed revenue"
        },
        {
          "id": "profit",
          "label": "Net contribution after cost"
        },
        {
          "id": "cac",
          "label": "Cost per acquisition"
        },
        {
          "id": "breakeven",
          "label": "Orders needed to break even"
        }
      ]
    },
    {
      "slug": "follower-growth-rate",
      "url": "https://www.revenuelab.fyi/toolbox/follower-growth-rate",
      "title": "Follower Growth Rate Calculator",
      "category": "other",
      "summary": "Monthly growth rate and the date you hit your next milestone.",
      "formula": "Growth % = (End − Start) ÷ Start × 100; months to target = ln(target/now) ÷ ln(1+rate).",
      "inputs": [
        {
          "id": "start",
          "label": "Followers 30 days ago",
          "kind": "number"
        },
        {
          "id": "now",
          "label": "Followers today",
          "kind": "number"
        },
        {
          "id": "target",
          "label": "Target follower count",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rate",
          "label": "Monthly growth rate"
        },
        {
          "id": "net",
          "label": "Net new followers"
        },
        {
          "id": "perDay",
          "label": "Followers per day"
        },
        {
          "id": "months",
          "label": "Months to target at this pace"
        },
        {
          "id": "yearEnd",
          "label": "Projected followers in 12 months"
        }
      ]
    },
    {
      "slug": "content-cadence",
      "url": "https://www.revenuelab.fyi/toolbox/content-cadence",
      "title": "Posting Cadence Calculator",
      "category": "other",
      "summary": "How many posts your hours actually support — and what they cost.",
      "formula": "Posts per week = Available hours ÷ (Minutes per asset ÷ 60).",
      "inputs": [
        {
          "id": "hours",
          "label": "Production hours per week",
          "kind": "number"
        },
        {
          "id": "minutes",
          "label": "Minutes per finished asset",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Your hourly value",
          "kind": "number"
        },
        {
          "id": "platforms",
          "label": "Platforms you repurpose to",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perWeek",
          "label": "Original posts per week"
        },
        {
          "id": "perMonth",
          "label": "Posts per month"
        },
        {
          "id": "totalPosts",
          "label": "Total posts across platforms per week"
        },
        {
          "id": "costPer",
          "label": "Labour cost per asset"
        },
        {
          "id": "monthlyCost",
          "label": "Monthly production cost"
        },
        {
          "id": "perYear",
          "label": "Posts per year"
        }
      ]
    },
    {
      "slug": "creator-hourly-rate",
      "url": "https://www.revenuelab.fyi/toolbox/creator-hourly-rate",
      "title": "Creator Hourly Rate Calculator",
      "category": "financial",
      "summary": "What you actually earn per hour once editing time is counted.",
      "formula": "Effective hourly = Monthly income ÷ Total monthly hours worked.",
      "inputs": [
        {
          "id": "income",
          "label": "Monthly creator income",
          "kind": "number"
        },
        {
          "id": "expenses",
          "label": "Monthly expenses",
          "kind": "number"
        },
        {
          "id": "filming",
          "label": "Filming hours per week",
          "kind": "number"
        },
        {
          "id": "editing",
          "label": "Editing hours per week",
          "kind": "number"
        },
        {
          "id": "admin",
          "label": "Admin + email hours per week",
          "kind": "number"
        },
        {
          "id": "editorRate",
          "label": "Editor hourly rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netHourly",
          "label": "Net hourly rate"
        },
        {
          "id": "gross",
          "label": "Gross hourly rate"
        },
        {
          "id": "monthlyHours",
          "label": "Hours worked per month"
        },
        {
          "id": "editorCost",
          "label": "Cost to outsource editing"
        },
        {
          "id": "hourlyAfterEditor",
          "label": "Hourly rate if you hire an editor"
        }
      ]
    },
    {
      "slug": "freelance-day-rate",
      "url": "https://www.revenuelab.fyi/toolbox/freelance-day-rate",
      "title": "Freelance Day Rate Calculator",
      "category": "financial",
      "summary": "Price from target income, billable days, and real overhead.",
      "formula": "Hourly = (Target income + Overhead) ÷ (Billable days × Hours per day) ÷ (1 − tax rate).",
      "inputs": [
        {
          "id": "target",
          "label": "Target take-home income",
          "kind": "number"
        },
        {
          "id": "overhead",
          "label": "Annual business overhead",
          "kind": "number"
        },
        {
          "id": "weeks",
          "label": "Working weeks per year",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Billable days per week",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Billable hours per day",
          "kind": "number"
        },
        {
          "id": "tax",
          "label": "Effective tax + self-employment rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "hourly",
          "label": "Minimum hourly rate"
        },
        {
          "id": "dayRate",
          "label": "Day rate"
        },
        {
          "id": "gross",
          "label": "Gross revenue you must bill"
        },
        {
          "id": "monthly",
          "label": "Monthly revenue target"
        },
        {
          "id": "weekly",
          "label": "Weekly revenue target"
        },
        {
          "id": "billableHours",
          "label": "Billable hours per year"
        }
      ]
    },
    {
      "slug": "retainer-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/retainer-pricing",
      "title": "Retainer Pricing Calculator",
      "category": "financial",
      "summary": "Price a retainer on capacity, margin, and scope creep buffer.",
      "formula": "Retainer = (Hours × Cost rate) ÷ (1 − target margin) × (1 + creep buffer).",
      "inputs": [
        {
          "id": "hours",
          "label": "Contracted hours per month",
          "kind": "number"
        },
        {
          "id": "cost",
          "label": "Your delivery cost per hour",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Target gross margin",
          "kind": "number"
        },
        {
          "id": "creep",
          "label": "Scope creep buffer",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Contract length in months",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "retainer",
          "label": "Monthly retainer"
        },
        {
          "id": "effHourly",
          "label": "Effective hourly rate"
        },
        {
          "id": "profit",
          "label": "Monthly gross profit"
        },
        {
          "id": "contract",
          "label": "Total contract value"
        },
        {
          "id": "overageRate",
          "label": "Suggested overage rate per hour"
        }
      ]
    },
    {
      "slug": "agency-margin",
      "url": "https://www.revenuelab.fyi/toolbox/agency-margin",
      "title": "Agency Margin Calculator",
      "category": "financial",
      "summary": "Blended margin from headcount, utilization, and bill rate.",
      "formula": "Gross margin = (Bill rate − Cost rate) ÷ Bill rate; revenue = Heads × Hours × Utilization × Bill rate.",
      "inputs": [
        {
          "id": "heads",
          "label": "Billable headcount",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Available hours per person per month",
          "kind": "number"
        },
        {
          "id": "util",
          "label": "Utilization",
          "kind": "number"
        },
        {
          "id": "bill",
          "label": "Average bill rate",
          "kind": "number"
        },
        {
          "id": "cost",
          "label": "Loaded cost per hour",
          "kind": "number"
        },
        {
          "id": "overhead",
          "label": "Monthly overhead",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "grossMargin",
          "label": "Gross margin"
        },
        {
          "id": "revenue",
          "label": "Monthly revenue"
        },
        {
          "id": "gross",
          "label": "Gross profit"
        },
        {
          "id": "net",
          "label": "Net profit after overhead"
        },
        {
          "id": "netMargin",
          "label": "Net margin"
        },
        {
          "id": "breakevenUtil",
          "label": "Break-even utilization"
        }
      ]
    },
    {
      "slug": "newsletter-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/newsletter-revenue",
      "title": "Newsletter Revenue Calculator",
      "category": "financial",
      "summary": "Ads, paid subs, and revenue per subscriber per year.",
      "formula": "Ad revenue = Opens ÷ 1,000 × CPM × sends; sub revenue = List × conversion × price.",
      "inputs": [
        {
          "id": "list",
          "label": "List size",
          "kind": "number"
        },
        {
          "id": "open",
          "label": "Open rate",
          "kind": "number"
        },
        {
          "id": "sends",
          "label": "Sponsored sends per month",
          "kind": "number"
        },
        {
          "id": "cpm",
          "label": "Sponsor CPM on opens",
          "kind": "number"
        },
        {
          "id": "conv",
          "label": "Paid conversion rate",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Paid price per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Monthly revenue"
        },
        {
          "id": "ads",
          "label": "Sponsorship revenue"
        },
        {
          "id": "subs",
          "label": "Paid subscription revenue"
        },
        {
          "id": "paidSubs",
          "label": "Paying subscribers"
        },
        {
          "id": "rasy",
          "label": "Revenue per subscriber per year"
        },
        {
          "id": "annual",
          "label": "Annual revenue"
        }
      ]
    },
    {
      "slug": "email-list-growth",
      "url": "https://www.revenuelab.fyi/toolbox/email-list-growth",
      "title": "Email List Growth Calculator",
      "category": "other",
      "summary": "Net list size after churn, and time to your subscriber goal.",
      "formula": "Net monthly = Signups − (List × churn rate); projected forward month by month.",
      "inputs": [
        {
          "id": "list",
          "label": "Current list size",
          "kind": "number"
        },
        {
          "id": "signups",
          "label": "New signups per month",
          "kind": "number"
        },
        {
          "id": "churn",
          "label": "Monthly churn rate",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Months to project",
          "kind": "number"
        },
        {
          "id": "target",
          "label": "Target list size",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "projected",
          "label": "Projected list size"
        },
        {
          "id": "net",
          "label": "Net subscribers added"
        },
        {
          "id": "monthlyNet",
          "label": "Net growth this month"
        },
        {
          "id": "monthsToTarget",
          "label": "Months to reach target"
        },
        {
          "id": "ceiling",
          "label": "Steady-state list ceiling at this pace"
        }
      ]
    },
    {
      "slug": "course-launch-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/course-launch-revenue",
      "title": "Course Launch Revenue Calculator",
      "category": "financial",
      "summary": "Launch revenue after refunds, fees, and affiliate payouts.",
      "formula": "Net = Audience × conv × price × (1 − refunds) × (1 − fees) − affiliate payouts.",
      "inputs": [
        {
          "id": "audience",
          "label": "Launch audience reached",
          "kind": "number"
        },
        {
          "id": "conv",
          "label": "Sales conversion rate",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Course price",
          "kind": "number"
        },
        {
          "id": "refund",
          "label": "Refund rate",
          "kind": "number"
        },
        {
          "id": "fees",
          "label": "Processor + platform fees",
          "kind": "number"
        },
        {
          "id": "affiliate",
          "label": "Share of sales via affiliates",
          "kind": "number"
        },
        {
          "id": "commission",
          "label": "Affiliate commission",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Net launch revenue"
        },
        {
          "id": "gross",
          "label": "Gross sales"
        },
        {
          "id": "sales",
          "label": "Units sold"
        },
        {
          "id": "payout",
          "label": "Affiliate payouts"
        },
        {
          "id": "refundLoss",
          "label": "Lost to refunds"
        },
        {
          "id": "perStudent",
          "label": "Net revenue per student"
        }
      ]
    },
    {
      "slug": "digital-product-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/digital-product-pricing",
      "title": "Digital Product Pricing Calculator",
      "category": "financial",
      "summary": "Find the price point that maximises revenue, not just units.",
      "formula": "Revenue = Price × Units, with units adjusted by elasticity for each price change.",
      "inputs": [
        {
          "id": "price",
          "label": "Current price",
          "kind": "number"
        },
        {
          "id": "units",
          "label": "Units sold per month",
          "kind": "number"
        },
        {
          "id": "newPrice",
          "label": "Proposed price",
          "kind": "number"
        },
        {
          "id": "elasticity",
          "label": "Price elasticity (units drop per 1% price rise)",
          "kind": "number"
        },
        {
          "id": "cost",
          "label": "Variable cost per sale",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "newRev",
          "label": "Revenue at proposed price"
        },
        {
          "id": "oldRev",
          "label": "Revenue at current price"
        },
        {
          "id": "delta",
          "label": "Revenue change"
        },
        {
          "id": "newUnits",
          "label": "Expected units at new price"
        },
        {
          "id": "newProfit",
          "label": "Contribution at new price"
        },
        {
          "id": "oldProfit",
          "label": "Contribution at current price"
        }
      ]
    },
    {
      "slug": "membership-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/membership-revenue",
      "title": "Membership Revenue Calculator",
      "category": "financial",
      "summary": "MRR, churn-adjusted lifetime value, and steady-state member count.",
      "formula": "Steady-state members = New members per month ÷ Monthly churn rate.",
      "inputs": [
        {
          "id": "members",
          "label": "Current members",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Monthly price",
          "kind": "number"
        },
        {
          "id": "newMembers",
          "label": "New members per month",
          "kind": "number"
        },
        {
          "id": "churn",
          "label": "Monthly churn",
          "kind": "number"
        },
        {
          "id": "cost",
          "label": "Cost to serve per member",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "mrr",
          "label": "Monthly recurring revenue"
        },
        {
          "id": "arr",
          "label": "Annual run rate"
        },
        {
          "id": "ltv",
          "label": "Lifetime value per member"
        },
        {
          "id": "tenure",
          "label": "Average tenure (months)"
        },
        {
          "id": "steady",
          "label": "Steady-state member count"
        },
        {
          "id": "netMonthly",
          "label": "Net members added this month"
        }
      ]
    },
    {
      "slug": "webinar-funnel",
      "url": "https://www.revenuelab.fyi/toolbox/webinar-funnel",
      "title": "Webinar Funnel Calculator",
      "category": "other",
      "summary": "Registrations, show rate, and sales from top-of-funnel traffic.",
      "formula": "Sales = Traffic × opt-in × show rate × close rate.",
      "inputs": [
        {
          "id": "traffic",
          "label": "Traffic to registration page",
          "kind": "number"
        },
        {
          "id": "optin",
          "label": "Registration rate",
          "kind": "number"
        },
        {
          "id": "show",
          "label": "Show-up rate",
          "kind": "number"
        },
        {
          "id": "close",
          "label": "Offer conversion rate",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Offer price",
          "kind": "number"
        },
        {
          "id": "spend",
          "label": "Ad spend",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "revenue",
          "label": "Webinar revenue"
        },
        {
          "id": "regs",
          "label": "Registrations"
        },
        {
          "id": "attend",
          "label": "Live attendees"
        },
        {
          "id": "sales",
          "label": "Sales"
        },
        {
          "id": "roas",
          "label": "ROAS"
        },
        {
          "id": "cpr",
          "label": "Cost per registration"
        }
      ]
    },
    {
      "slug": "ad-budget",
      "url": "https://www.revenuelab.fyi/toolbox/ad-budget",
      "title": "Ad Budget Calculator",
      "category": "financial",
      "summary": "Budget required to hit a revenue or lead target profitably.",
      "formula": "Budget = Target conversions × CPA; allowable CPA = AOV × margin ÷ target ROAS multiple.",
      "inputs": [
        {
          "id": "target",
          "label": "Revenue target",
          "kind": "number"
        },
        {
          "id": "aov",
          "label": "Average order value",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Gross margin",
          "kind": "number"
        },
        {
          "id": "cvr",
          "label": "Landing page conversion rate",
          "kind": "number"
        },
        {
          "id": "cpc",
          "label": "Average cost per click",
          "kind": "number"
        },
        {
          "id": "payback",
          "label": "Target profit share of margin kept",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "budget",
          "label": "Required ad budget"
        },
        {
          "id": "cpa",
          "label": "Implied cost per acquisition"
        },
        {
          "id": "allowable",
          "label": "Allowable CPA"
        },
        {
          "id": "orders",
          "label": "Orders needed"
        },
        {
          "id": "clicks",
          "label": "Clicks needed"
        },
        {
          "id": "roas",
          "label": "Implied ROAS"
        }
      ]
    },
    {
      "slug": "affiliate-earnings",
      "url": "https://www.revenuelab.fyi/toolbox/affiliate-earnings",
      "title": "Affiliate Earnings Calculator",
      "category": "financial",
      "summary": "Commission income from traffic, CTR, and conversion rate.",
      "formula": "Earnings = Sessions × CTR × CVR × AOV × commission × (1 − reversals).",
      "inputs": [
        {
          "id": "sessions",
          "label": "Monthly sessions",
          "kind": "number"
        },
        {
          "id": "ctr",
          "label": "Affiliate link CTR",
          "kind": "number"
        },
        {
          "id": "cvr",
          "label": "Merchant conversion rate",
          "kind": "number"
        },
        {
          "id": "aov",
          "label": "Average order value",
          "kind": "number"
        },
        {
          "id": "commission",
          "label": "Commission rate",
          "kind": "number"
        },
        {
          "id": "reversal",
          "label": "Reversal / return rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Monthly affiliate income"
        },
        {
          "id": "annual",
          "label": "Annual income"
        },
        {
          "id": "orders",
          "label": "Attributed orders"
        },
        {
          "id": "epc",
          "label": "Earnings per click"
        },
        {
          "id": "rpm",
          "label": "Affiliate RPM per 1,000 sessions"
        },
        {
          "id": "gross",
          "label": "Gross commission before reversals"
        }
      ]
    },
    {
      "slug": "blog-income",
      "url": "https://www.revenuelab.fyi/toolbox/blog-income",
      "title": "Blog Income Calculator",
      "category": "financial",
      "summary": "Display ads, affiliate, and product revenue from pageviews.",
      "formula": "Income = Pageviews ÷ 1,000 × RPM + affiliate + product revenue.",
      "inputs": [
        {
          "id": "views",
          "label": "Monthly pageviews",
          "kind": "number"
        },
        {
          "id": "rpm",
          "label": "Display ad RPM",
          "kind": "number"
        },
        {
          "id": "affiliate",
          "label": "Affiliate income per month",
          "kind": "number"
        },
        {
          "id": "product",
          "label": "Own product income per month",
          "kind": "number"
        },
        {
          "id": "costs",
          "label": "Monthly costs (hosting, writers)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Monthly revenue"
        },
        {
          "id": "net",
          "label": "Monthly profit"
        },
        {
          "id": "ads",
          "label": "Display ad revenue"
        },
        {
          "id": "blendedRpm",
          "label": "Blended RPM"
        },
        {
          "id": "annual",
          "label": "Annual profit"
        },
        {
          "id": "valuation",
          "label": "Rough sale value (36x monthly profit)"
        }
      ]
    },
    {
      "slug": "podcast-sponsorship",
      "url": "https://www.revenuelab.fyi/toolbox/podcast-sponsorship",
      "title": "Podcast Sponsorship Calculator",
      "category": "financial",
      "summary": "Pre-roll, mid-roll, and post-roll income from downloads.",
      "formula": "Revenue = Downloads ÷ 1,000 × CPM × slots × episodes per month.",
      "inputs": [
        {
          "id": "downloads",
          "label": "Downloads per episode (30 days)",
          "kind": "number"
        },
        {
          "id": "episodes",
          "label": "Episodes per month",
          "kind": "number"
        },
        {
          "id": "pre",
          "label": "Pre-roll CPM",
          "kind": "number"
        },
        {
          "id": "mid",
          "label": "Mid-roll CPM",
          "kind": "number"
        },
        {
          "id": "midSlots",
          "label": "Mid-roll slots per episode",
          "kind": "number"
        },
        {
          "id": "fill",
          "label": "Sell-through rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthly",
          "label": "Monthly sponsorship revenue"
        },
        {
          "id": "perEp",
          "label": "Revenue per episode"
        },
        {
          "id": "annual",
          "label": "Annual revenue"
        },
        {
          "id": "midRev",
          "label": "Mid-roll revenue"
        },
        {
          "id": "preRev",
          "label": "Pre-roll revenue"
        },
        {
          "id": "cpl",
          "label": "Revenue per download"
        }
      ]
    },
    {
      "slug": "video-production-cost",
      "url": "https://www.revenuelab.fyi/toolbox/video-production-cost",
      "title": "Video Production Cost Calculator",
      "category": "financial",
      "summary": "True cost per finished minute, including your own time.",
      "formula": "Cost = (Shoot hours + Edit hours) × rates + gear amortisation + hard costs.",
      "inputs": [
        {
          "id": "minutes",
          "label": "Finished video length (minutes)",
          "kind": "number"
        },
        {
          "id": "shoot",
          "label": "Shoot hours",
          "kind": "number"
        },
        {
          "id": "edit",
          "label": "Edit hours",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Blended hourly rate",
          "kind": "number"
        },
        {
          "id": "hard",
          "label": "Hard costs (props, music, travel)",
          "kind": "number"
        },
        {
          "id": "gear",
          "label": "Gear amortisation per video",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total cost per video"
        },
        {
          "id": "perMinute",
          "label": "Cost per finished minute"
        },
        {
          "id": "labour",
          "label": "Labour cost"
        },
        {
          "id": "ratio",
          "label": "Edit-to-finish ratio (min per finished min)"
        },
        {
          "id": "hours",
          "label": "Total hours"
        },
        {
          "id": "monthly4",
          "label": "Cost of 4 videos a month"
        }
      ]
    },
    {
      "slug": "ugc-creator-rate",
      "url": "https://www.revenuelab.fyi/toolbox/ugc-creator-rate",
      "title": "UGC Creator Rate Calculator",
      "category": "financial",
      "summary": "Price UGC packages by deliverable, usage, and whitelisting.",
      "formula": "Rate = Base per video × videos + usage % + whitelisting % + revisions.",
      "inputs": [
        {
          "id": "base",
          "label": "Base rate per video",
          "kind": "number"
        },
        {
          "id": "videos",
          "label": "Videos in package",
          "kind": "number"
        },
        {
          "id": "hooks",
          "label": "Extra hook variations",
          "kind": "number"
        },
        {
          "id": "hookRate",
          "label": "Rate per extra hook",
          "kind": "number"
        },
        {
          "id": "usage",
          "label": "Paid usage uplift",
          "kind": "number"
        },
        {
          "id": "whitelist",
          "label": "Whitelisting uplift",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Package price"
        },
        {
          "id": "perVideo",
          "label": "Effective rate per video"
        },
        {
          "id": "core",
          "label": "Production subtotal"
        },
        {
          "id": "usageFee",
          "label": "Paid usage fee"
        },
        {
          "id": "whitelistFee",
          "label": "Whitelisting fee"
        },
        {
          "id": "deposit",
          "label": "50% deposit"
        }
      ]
    },
    {
      "slug": "livestream-earnings",
      "url": "https://www.revenuelab.fyi/toolbox/livestream-earnings",
      "title": "Livestream Earnings Calculator",
      "category": "financial",
      "summary": "Subs, bits, tips, and ads across a monthly streaming schedule.",
      "formula": "Monthly = Subs × net share + bits + tips + (hours × viewers ÷ 1,000 × ad CPM).",
      "inputs": [
        {
          "id": "subs",
          "label": "Paid subscribers",
          "kind": "number"
        },
        {
          "id": "subNet",
          "label": "Net per sub after split",
          "kind": "number"
        },
        {
          "id": "bits",
          "label": "Bits / gifts per month",
          "kind": "number"
        },
        {
          "id": "tips",
          "label": "Direct tips per month",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Stream hours per month",
          "kind": "number"
        },
        {
          "id": "viewers",
          "label": "Average concurrent viewers",
          "kind": "number"
        },
        {
          "id": "adCpm",
          "label": "Ad CPM",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Monthly streaming income"
        },
        {
          "id": "subRev",
          "label": "Subscription revenue"
        },
        {
          "id": "adRev",
          "label": "Estimated ad revenue"
        },
        {
          "id": "perHour",
          "label": "Earnings per stream hour"
        },
        {
          "id": "perViewer",
          "label": "Monthly revenue per average viewer"
        },
        {
          "id": "annual",
          "label": "Annual income"
        }
      ]
    },
    {
      "slug": "merch-profit",
      "url": "https://www.revenuelab.fyi/toolbox/merch-profit",
      "title": "Merch Profit Calculator",
      "category": "financial",
      "summary": "Profit per unit and per drop, print-on-demand or bulk.",
      "formula": "Profit = (Price − unit cost − fees − shipping) × units sold − fixed costs.",
      "inputs": [
        {
          "id": "price",
          "label": "Retail price",
          "kind": "number"
        },
        {
          "id": "unitCost",
          "label": "Unit cost",
          "kind": "number"
        },
        {
          "id": "shipping",
          "label": "Shipping cost you absorb",
          "kind": "number"
        },
        {
          "id": "fees",
          "label": "Payment + platform fees",
          "kind": "number"
        },
        {
          "id": "units",
          "label": "Units in the drop",
          "kind": "number"
        },
        {
          "id": "sell",
          "label": "Sell-through rate",
          "kind": "number"
        },
        {
          "id": "fixed",
          "label": "Fixed costs (design, samples, ads)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "profit",
          "label": "Profit on the drop"
        },
        {
          "id": "per",
          "label": "Contribution per unit"
        },
        {
          "id": "revenue",
          "label": "Revenue"
        },
        {
          "id": "margin",
          "label": "Net margin"
        },
        {
          "id": "sold",
          "label": "Units sold"
        },
        {
          "id": "breakeven",
          "label": "Units to break even"
        }
      ]
    },
    {
      "slug": "creator-tax-set-aside",
      "url": "https://www.revenuelab.fyi/toolbox/creator-tax-set-aside",
      "title": "Creator Tax Set-Aside Calculator",
      "category": "financial",
      "summary": "How much of each payout to move into the tax account.",
      "formula": "Set-aside = Net self-employment profit × (SE tax rate + effective income tax rate).",
      "inputs": [
        {
          "id": "income",
          "label": "Annual creator revenue",
          "kind": "number"
        },
        {
          "id": "expenses",
          "label": "Deductible business expenses",
          "kind": "number"
        },
        {
          "id": "otherIncome",
          "label": "Other W-2 income",
          "kind": "number"
        },
        {
          "id": "effRate",
          "label": "Estimated federal + state income tax rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total estimated tax"
        },
        {
          "id": "setAside",
          "label": "Set aside this % of every payout"
        },
        {
          "id": "quarterly",
          "label": "Quarterly estimated payment"
        },
        {
          "id": "se",
          "label": "Self-employment tax"
        },
        {
          "id": "incomeTax",
          "label": "Income tax"
        },
        {
          "id": "profit",
          "label": "Net business profit"
        }
      ]
    },
    {
      "slug": "brand-deal-negotiation",
      "url": "https://www.revenuelab.fyi/toolbox/brand-deal-negotiation",
      "title": "Brand Deal Negotiation Calculator",
      "category": "financial",
      "summary": "Compare an offer against your true cost and walk-away price.",
      "formula": "Walk-away = Production cost + opportunity cost + minimum margin.",
      "inputs": [
        {
          "id": "offer",
          "label": "Brand's offer",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Hours to produce",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Your hourly rate",
          "kind": "number"
        },
        {
          "id": "hard",
          "label": "Hard costs",
          "kind": "number"
        },
        {
          "id": "opportunity",
          "label": "Revenue from the slot if unsponsored",
          "kind": "number"
        },
        {
          "id": "minMargin",
          "label": "Minimum margin required",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "walkaway",
          "label": "Walk-away price"
        },
        {
          "id": "counter",
          "label": "Suggested counter-offer"
        },
        {
          "id": "profit",
          "label": "Profit on the current offer"
        },
        {
          "id": "margin",
          "label": "Margin on the current offer"
        },
        {
          "id": "cost",
          "label": "True cost to deliver"
        },
        {
          "id": "gap",
          "label": "Offer vs walk-away gap"
        }
      ]
    },
    {
      "slug": "audience-value",
      "url": "https://www.revenuelab.fyi/toolbox/audience-value",
      "title": "Audience Value Calculator",
      "category": "financial",
      "summary": "Revenue per follower per year across every channel you own.",
      "formula": "RPF = Annual revenue from a channel ÷ Audience size on that channel.",
      "inputs": [
        {
          "id": "social",
          "label": "Social followers",
          "kind": "number"
        },
        {
          "id": "socialRev",
          "label": "Monthly revenue from social",
          "kind": "number"
        },
        {
          "id": "email",
          "label": "Email subscribers",
          "kind": "number"
        },
        {
          "id": "emailRev",
          "label": "Monthly revenue from email",
          "kind": "number"
        },
        {
          "id": "members",
          "label": "Paying members / customers",
          "kind": "number"
        },
        {
          "id": "memberRev",
          "label": "Monthly revenue from members",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalAnnual",
          "label": "Total annual revenue"
        },
        {
          "id": "emailRpf",
          "label": "Revenue per email subscriber per year"
        },
        {
          "id": "socialRpf",
          "label": "Revenue per social follower per year"
        },
        {
          "id": "memberRpf",
          "label": "Revenue per paying member per year"
        },
        {
          "id": "ownedShare",
          "label": "Share of revenue from owned channels"
        },
        {
          "id": "total",
          "label": "Monthly revenue"
        }
      ]
    },
    {
      "slug": "cross-platform-repurposing",
      "url": "https://www.revenuelab.fyi/toolbox/cross-platform-repurposing",
      "title": "Content Repurposing ROI Calculator",
      "category": "other",
      "summary": "Extra reach and revenue per hour spent repurposing one asset.",
      "formula": "Incremental value = Extra reach ÷ 1,000 × RPM − repurposing hours × hourly rate.",
      "inputs": [
        {
          "id": "sourceViews",
          "label": "Views on the original asset",
          "kind": "number"
        },
        {
          "id": "platforms",
          "label": "Platforms repurposed to",
          "kind": "number"
        },
        {
          "id": "lift",
          "label": "Extra views per platform as % of original",
          "kind": "number"
        },
        {
          "id": "rpm",
          "label": "Blended RPM",
          "kind": "number"
        },
        {
          "id": "minutes",
          "label": "Minutes to repurpose per platform",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Your hourly rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Net value of repurposing"
        },
        {
          "id": "extra",
          "label": "Incremental views"
        },
        {
          "id": "revenue",
          "label": "Incremental revenue"
        },
        {
          "id": "cost",
          "label": "Time cost"
        },
        {
          "id": "perHour",
          "label": "Net value per hour spent"
        },
        {
          "id": "totalViews",
          "label": "Total views across platforms"
        }
      ]
    },
    {
      "slug": "creator-runway",
      "url": "https://www.revenuelab.fyi/toolbox/creator-runway",
      "title": "Creator Runway Calculator",
      "category": "financial",
      "summary": "How many months your savings last at current income and burn.",
      "formula": "Runway months = Savings ÷ (Monthly expenses − Monthly income).",
      "inputs": [
        {
          "id": "savings",
          "label": "Savings available",
          "kind": "number"
        },
        {
          "id": "expenses",
          "label": "Monthly living + business expenses",
          "kind": "number"
        },
        {
          "id": "income",
          "label": "Current monthly creator income",
          "kind": "number"
        },
        {
          "id": "growth",
          "label": "Expected monthly income growth",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "months",
          "label": "Runway with income growth (months)"
        },
        {
          "id": "flatMonths",
          "label": "Runway if income stays flat"
        },
        {
          "id": "breakevenMonth",
          "label": "Month income covers expenses"
        },
        {
          "id": "gap",
          "label": "Monthly shortfall today"
        },
        {
          "id": "incomeIn12",
          "label": "Projected income in 12 months"
        },
        {
          "id": "needed",
          "label": "Cash needed for a year at today's gap"
        }
      ]
    },
    {
      "slug": "shorts-vs-longform",
      "url": "https://www.revenuelab.fyi/toolbox/shorts-vs-longform",
      "title": "Shorts vs Long-Form ROI Calculator",
      "category": "other",
      "summary": "Compare revenue per production hour for short and long video.",
      "formula": "Revenue per hour = (Views ÷ 1,000 × RPM) ÷ Production hours, for each format.",
      "inputs": [
        {
          "id": "shortViews",
          "label": "Views per short",
          "kind": "number"
        },
        {
          "id": "shortRpm",
          "label": "Shorts RPM",
          "kind": "number"
        },
        {
          "id": "shortHours",
          "label": "Hours per short",
          "kind": "number"
        },
        {
          "id": "longViews",
          "label": "Views per long-form video",
          "kind": "number"
        },
        {
          "id": "longRpm",
          "label": "Long-form RPM",
          "kind": "number"
        },
        {
          "id": "longHours",
          "label": "Hours per long-form video",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "shortPerHour",
          "label": "Shorts revenue per production hour"
        },
        {
          "id": "longPerHour",
          "label": "Long-form revenue per production hour"
        },
        {
          "id": "shortRev",
          "label": "Revenue per short"
        },
        {
          "id": "longRev",
          "label": "Revenue per long-form video"
        },
        {
          "id": "ratio",
          "label": "Shorts advantage vs long-form"
        },
        {
          "id": "shortsToMatch",
          "label": "Shorts needed to match one long-form video"
        }
      ]
    },
    {
      "slug": "cm-to-inches",
      "url": "https://www.revenuelab.fyi/toolbox/cm-to-inches",
      "title": "Centimeters to Inches Converter",
      "category": "other",
      "summary": "Convert cm to in instantly, with the reverse conversion shown too.",
      "formula": "Inches = Centimeters × 0.393700787",
      "inputs": [
        {
          "id": "value",
          "label": "Value in centimeters",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Inches (in)"
        },
        {
          "id": "reverse",
          "label": "Same number read as inches → centimeters"
        },
        {
          "id": "per1",
          "label": "1 cm in in"
        },
        {
          "id": "per1Rev",
          "label": "1 in in cm"
        },
        {
          "id": "ten",
          "label": "10× your value in in"
        }
      ]
    },
    {
      "slug": "inches-to-cm",
      "url": "https://www.revenuelab.fyi/toolbox/inches-to-cm",
      "title": "Inches to Centimeters Converter",
      "category": "other",
      "summary": "Convert in to cm instantly, with the reverse conversion shown too.",
      "formula": "Centimeters = Inches × 2.54000000",
      "inputs": [
        {
          "id": "value",
          "label": "Value in inches",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Centimeters (cm)"
        },
        {
          "id": "reverse",
          "label": "Same number read as centimeters → inches"
        },
        {
          "id": "per1",
          "label": "1 in in cm"
        },
        {
          "id": "per1Rev",
          "label": "1 cm in in"
        },
        {
          "id": "ten",
          "label": "10× your value in cm"
        }
      ]
    },
    {
      "slug": "mm-to-inches",
      "url": "https://www.revenuelab.fyi/toolbox/mm-to-inches",
      "title": "Millimeters to Inches Converter",
      "category": "other",
      "summary": "Convert mm to in instantly, with the reverse conversion shown too.",
      "formula": "Inches = Millimeters × 0.0393700787",
      "inputs": [
        {
          "id": "value",
          "label": "Value in millimeters",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Inches (in)"
        },
        {
          "id": "reverse",
          "label": "Same number read as inches → millimeters"
        },
        {
          "id": "per1",
          "label": "1 mm in in"
        },
        {
          "id": "per1Rev",
          "label": "1 in in mm"
        },
        {
          "id": "ten",
          "label": "10× your value in in"
        }
      ]
    },
    {
      "slug": "inches-to-mm",
      "url": "https://www.revenuelab.fyi/toolbox/inches-to-mm",
      "title": "Inches to Millimeters Converter",
      "category": "other",
      "summary": "Convert in to mm instantly, with the reverse conversion shown too.",
      "formula": "Millimeters = Inches × 25.4000000",
      "inputs": [
        {
          "id": "value",
          "label": "Value in inches",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Millimeters (mm)"
        },
        {
          "id": "reverse",
          "label": "Same number read as millimeters → inches"
        },
        {
          "id": "per1",
          "label": "1 in in mm"
        },
        {
          "id": "per1Rev",
          "label": "1 mm in in"
        },
        {
          "id": "ten",
          "label": "10× your value in mm"
        }
      ]
    },
    {
      "slug": "feet-to-meters",
      "url": "https://www.revenuelab.fyi/toolbox/feet-to-meters",
      "title": "Feet to Meters Converter",
      "category": "other",
      "summary": "Convert ft to m instantly, with the reverse conversion shown too.",
      "formula": "Meters = Feet × 0.304800000",
      "inputs": [
        {
          "id": "value",
          "label": "Value in feet",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Meters (m)"
        },
        {
          "id": "reverse",
          "label": "Same number read as meters → feet"
        },
        {
          "id": "per1",
          "label": "1 ft in m"
        },
        {
          "id": "per1Rev",
          "label": "1 m in ft"
        },
        {
          "id": "ten",
          "label": "10× your value in m"
        }
      ]
    },
    {
      "slug": "meters-to-feet",
      "url": "https://www.revenuelab.fyi/toolbox/meters-to-feet",
      "title": "Meters to Feet Converter",
      "category": "other",
      "summary": "Convert m to ft instantly, with the reverse conversion shown too.",
      "formula": "Feet = Meters × 3.28083990",
      "inputs": [
        {
          "id": "value",
          "label": "Value in meters",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Feet (ft)"
        },
        {
          "id": "reverse",
          "label": "Same number read as feet → meters"
        },
        {
          "id": "per1",
          "label": "1 m in ft"
        },
        {
          "id": "per1Rev",
          "label": "1 ft in m"
        },
        {
          "id": "ten",
          "label": "10× your value in ft"
        }
      ]
    },
    {
      "slug": "km-to-miles",
      "url": "https://www.revenuelab.fyi/toolbox/km-to-miles",
      "title": "Kilometers to Miles Converter",
      "category": "other",
      "summary": "Convert km to mi instantly, with the reverse conversion shown too.",
      "formula": "Miles = Kilometers × 0.621371000",
      "inputs": [
        {
          "id": "value",
          "label": "Value in kilometers",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Miles (mi)"
        },
        {
          "id": "reverse",
          "label": "Same number read as miles → kilometers"
        },
        {
          "id": "per1",
          "label": "1 km in mi"
        },
        {
          "id": "per1Rev",
          "label": "1 mi in km"
        },
        {
          "id": "ten",
          "label": "10× your value in mi"
        }
      ]
    },
    {
      "slug": "miles-to-km",
      "url": "https://www.revenuelab.fyi/toolbox/miles-to-km",
      "title": "Miles to Kilometers Converter",
      "category": "other",
      "summary": "Convert mi to km instantly, with the reverse conversion shown too.",
      "formula": "Kilometers = Miles × 1.60934400",
      "inputs": [
        {
          "id": "value",
          "label": "Value in miles",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Kilometers (km)"
        },
        {
          "id": "reverse",
          "label": "Same number read as kilometers → miles"
        },
        {
          "id": "per1",
          "label": "1 mi in km"
        },
        {
          "id": "per1Rev",
          "label": "1 km in mi"
        },
        {
          "id": "ten",
          "label": "10× your value in km"
        }
      ]
    },
    {
      "slug": "yards-to-meters",
      "url": "https://www.revenuelab.fyi/toolbox/yards-to-meters",
      "title": "Yards to Meters Converter",
      "category": "other",
      "summary": "Convert yd to m instantly, with the reverse conversion shown too.",
      "formula": "Meters = Yards × 0.914400000",
      "inputs": [
        {
          "id": "value",
          "label": "Value in yards",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Meters (m)"
        },
        {
          "id": "reverse",
          "label": "Same number read as meters → yards"
        },
        {
          "id": "per1",
          "label": "1 yd in m"
        },
        {
          "id": "per1Rev",
          "label": "1 m in yd"
        },
        {
          "id": "ten",
          "label": "10× your value in m"
        }
      ]
    },
    {
      "slug": "meters-to-yards",
      "url": "https://www.revenuelab.fyi/toolbox/meters-to-yards",
      "title": "Meters to Yards Converter",
      "category": "other",
      "summary": "Convert m to yd instantly, with the reverse conversion shown too.",
      "formula": "Yards = Meters × 1.09361330",
      "inputs": [
        {
          "id": "value",
          "label": "Value in meters",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Yards (yd)"
        },
        {
          "id": "reverse",
          "label": "Same number read as yards → meters"
        },
        {
          "id": "per1",
          "label": "1 m in yd"
        },
        {
          "id": "per1Rev",
          "label": "1 yd in m"
        },
        {
          "id": "ten",
          "label": "10× your value in yd"
        }
      ]
    },
    {
      "slug": "nautical-miles-to-km",
      "url": "https://www.revenuelab.fyi/toolbox/nautical-miles-to-km",
      "title": "Nautical miles to Kilometers Converter",
      "category": "other",
      "summary": "Convert nmi to km instantly, with the reverse conversion shown too.",
      "formula": "Kilometers = Nautical miles × 1.85200000",
      "inputs": [
        {
          "id": "value",
          "label": "Value in nautical miles",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Kilometers (km)"
        },
        {
          "id": "reverse",
          "label": "Same number read as kilometers → nautical miles"
        },
        {
          "id": "per1",
          "label": "1 nmi in km"
        },
        {
          "id": "per1Rev",
          "label": "1 km in nmi"
        },
        {
          "id": "ten",
          "label": "10× your value in km"
        }
      ]
    },
    {
      "slug": "feet-to-inches",
      "url": "https://www.revenuelab.fyi/toolbox/feet-to-inches",
      "title": "Feet to Inches Converter",
      "category": "other",
      "summary": "Convert ft to in instantly, with the reverse conversion shown too.",
      "formula": "Inches = Feet × 12.0000000",
      "inputs": [
        {
          "id": "value",
          "label": "Value in feet",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Inches (in)"
        },
        {
          "id": "reverse",
          "label": "Same number read as inches → feet"
        },
        {
          "id": "per1",
          "label": "1 ft in in"
        },
        {
          "id": "per1Rev",
          "label": "1 in in ft"
        },
        {
          "id": "ten",
          "label": "10× your value in in"
        }
      ]
    },
    {
      "slug": "kg-to-pounds",
      "url": "https://www.revenuelab.fyi/toolbox/kg-to-pounds",
      "title": "Kilograms to Pounds Converter",
      "category": "other",
      "summary": "Convert kg to lb instantly, with the reverse conversion shown too.",
      "formula": "Pounds = Kilograms × 2.20462262",
      "inputs": [
        {
          "id": "value",
          "label": "Value in kilograms",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Pounds (lb)"
        },
        {
          "id": "reverse",
          "label": "Same number read as pounds → kilograms"
        },
        {
          "id": "per1",
          "label": "1 kg in lb"
        },
        {
          "id": "per1Rev",
          "label": "1 lb in kg"
        },
        {
          "id": "ten",
          "label": "10× your value in lb"
        }
      ]
    },
    {
      "slug": "pounds-to-kg",
      "url": "https://www.revenuelab.fyi/toolbox/pounds-to-kg",
      "title": "Pounds to Kilograms Converter",
      "category": "other",
      "summary": "Convert lb to kg instantly, with the reverse conversion shown too.",
      "formula": "Kilograms = Pounds × 0.453592370",
      "inputs": [
        {
          "id": "value",
          "label": "Value in pounds",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Kilograms (kg)"
        },
        {
          "id": "reverse",
          "label": "Same number read as kilograms → pounds"
        },
        {
          "id": "per1",
          "label": "1 lb in kg"
        },
        {
          "id": "per1Rev",
          "label": "1 kg in lb"
        },
        {
          "id": "ten",
          "label": "10× your value in kg"
        }
      ]
    },
    {
      "slug": "grams-to-ounces",
      "url": "https://www.revenuelab.fyi/toolbox/grams-to-ounces",
      "title": "Grams to Ounces Converter",
      "category": "other",
      "summary": "Convert g to oz instantly, with the reverse conversion shown too.",
      "formula": "Ounces = Grams × 0.0352739619",
      "inputs": [
        {
          "id": "value",
          "label": "Value in grams",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Ounces (oz)"
        },
        {
          "id": "reverse",
          "label": "Same number read as ounces → grams"
        },
        {
          "id": "per1",
          "label": "1 g in oz"
        },
        {
          "id": "per1Rev",
          "label": "1 oz in g"
        },
        {
          "id": "ten",
          "label": "10× your value in oz"
        }
      ]
    },
    {
      "slug": "ounces-to-grams",
      "url": "https://www.revenuelab.fyi/toolbox/ounces-to-grams",
      "title": "Ounces to Grams Converter",
      "category": "other",
      "summary": "Convert oz to g instantly, with the reverse conversion shown too.",
      "formula": "Grams = Ounces × 28.3495231",
      "inputs": [
        {
          "id": "value",
          "label": "Value in ounces",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Grams (g)"
        },
        {
          "id": "reverse",
          "label": "Same number read as grams → ounces"
        },
        {
          "id": "per1",
          "label": "1 oz in g"
        },
        {
          "id": "per1Rev",
          "label": "1 g in oz"
        },
        {
          "id": "ten",
          "label": "10× your value in g"
        }
      ]
    },
    {
      "slug": "stone-to-pounds",
      "url": "https://www.revenuelab.fyi/toolbox/stone-to-pounds",
      "title": "Stone to Pounds Converter",
      "category": "other",
      "summary": "Convert st to lb instantly, with the reverse conversion shown too.",
      "formula": "Pounds = Stone × 14.0000000",
      "inputs": [
        {
          "id": "value",
          "label": "Value in stone",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Pounds (lb)"
        },
        {
          "id": "reverse",
          "label": "Same number read as pounds → stone"
        },
        {
          "id": "per1",
          "label": "1 st in lb"
        },
        {
          "id": "per1Rev",
          "label": "1 lb in st"
        },
        {
          "id": "ten",
          "label": "10× your value in lb"
        }
      ]
    },
    {
      "slug": "stone-to-kg",
      "url": "https://www.revenuelab.fyi/toolbox/stone-to-kg",
      "title": "Stone to Kilograms Converter",
      "category": "other",
      "summary": "Convert st to kg instantly, with the reverse conversion shown too.",
      "formula": "Kilograms = Stone × 6.35029318",
      "inputs": [
        {
          "id": "value",
          "label": "Value in stone",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Kilograms (kg)"
        },
        {
          "id": "reverse",
          "label": "Same number read as kilograms → stone"
        },
        {
          "id": "per1",
          "label": "1 st in kg"
        },
        {
          "id": "per1Rev",
          "label": "1 kg in st"
        },
        {
          "id": "ten",
          "label": "10× your value in kg"
        }
      ]
    },
    {
      "slug": "tons-to-kg",
      "url": "https://www.revenuelab.fyi/toolbox/tons-to-kg",
      "title": "US tons to Kilograms Converter",
      "category": "other",
      "summary": "Convert ton to kg instantly, with the reverse conversion shown too.",
      "formula": "Kilograms = US tons × 907.184740",
      "inputs": [
        {
          "id": "value",
          "label": "Value in us tons",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Kilograms (kg)"
        },
        {
          "id": "reverse",
          "label": "Same number read as kilograms → us tons"
        },
        {
          "id": "per1",
          "label": "1 ton in kg"
        },
        {
          "id": "per1Rev",
          "label": "1 kg in ton"
        },
        {
          "id": "ten",
          "label": "10× your value in kg"
        }
      ]
    },
    {
      "slug": "liters-to-gallons",
      "url": "https://www.revenuelab.fyi/toolbox/liters-to-gallons",
      "title": "Liters to US gallons Converter",
      "category": "other",
      "summary": "Convert L to gal instantly, with the reverse conversion shown too.",
      "formula": "US gallons = Liters × 0.264172052",
      "inputs": [
        {
          "id": "value",
          "label": "Value in liters",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "US gallons (gal)"
        },
        {
          "id": "reverse",
          "label": "Same number read as us gallons → liters"
        },
        {
          "id": "per1",
          "label": "1 L in gal"
        },
        {
          "id": "per1Rev",
          "label": "1 gal in L"
        },
        {
          "id": "ten",
          "label": "10× your value in gal"
        }
      ]
    },
    {
      "slug": "gallons-to-liters",
      "url": "https://www.revenuelab.fyi/toolbox/gallons-to-liters",
      "title": "US gallons to Liters Converter",
      "category": "other",
      "summary": "Convert gal to L instantly, with the reverse conversion shown too.",
      "formula": "Liters = US gallons × 3.78541178",
      "inputs": [
        {
          "id": "value",
          "label": "Value in us gallons",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Liters (L)"
        },
        {
          "id": "reverse",
          "label": "Same number read as liters → us gallons"
        },
        {
          "id": "per1",
          "label": "1 gal in L"
        },
        {
          "id": "per1Rev",
          "label": "1 L in gal"
        },
        {
          "id": "ten",
          "label": "10× your value in L"
        }
      ]
    },
    {
      "slug": "ml-to-oz",
      "url": "https://www.revenuelab.fyi/toolbox/ml-to-oz",
      "title": "Milliliters to US fluid ounces Converter",
      "category": "other",
      "summary": "Convert mL to fl oz instantly, with the reverse conversion shown too.",
      "formula": "US fluid ounces = Milliliters × 0.0338140227",
      "inputs": [
        {
          "id": "value",
          "label": "Value in milliliters",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "US fluid ounces (fl oz)"
        },
        {
          "id": "reverse",
          "label": "Same number read as us fluid ounces → milliliters"
        },
        {
          "id": "per1",
          "label": "1 mL in fl oz"
        },
        {
          "id": "per1Rev",
          "label": "1 fl oz in mL"
        },
        {
          "id": "ten",
          "label": "10× your value in fl oz"
        }
      ]
    },
    {
      "slug": "oz-to-ml",
      "url": "https://www.revenuelab.fyi/toolbox/oz-to-ml",
      "title": "US fluid ounces to Milliliters Converter",
      "category": "other",
      "summary": "Convert fl oz to mL instantly, with the reverse conversion shown too.",
      "formula": "Milliliters = US fluid ounces × 29.5735296",
      "inputs": [
        {
          "id": "value",
          "label": "Value in us fluid ounces",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Milliliters (mL)"
        },
        {
          "id": "reverse",
          "label": "Same number read as milliliters → us fluid ounces"
        },
        {
          "id": "per1",
          "label": "1 fl oz in mL"
        },
        {
          "id": "per1Rev",
          "label": "1 mL in fl oz"
        },
        {
          "id": "ten",
          "label": "10× your value in mL"
        }
      ]
    },
    {
      "slug": "cups-to-ml",
      "url": "https://www.revenuelab.fyi/toolbox/cups-to-ml",
      "title": "US cups to Milliliters Converter",
      "category": "other",
      "summary": "Convert cup to mL instantly, with the reverse conversion shown too.",
      "formula": "Milliliters = US cups × 236.588236",
      "inputs": [
        {
          "id": "value",
          "label": "Value in us cups",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Milliliters (mL)"
        },
        {
          "id": "reverse",
          "label": "Same number read as milliliters → us cups"
        },
        {
          "id": "per1",
          "label": "1 cup in mL"
        },
        {
          "id": "per1Rev",
          "label": "1 mL in cup"
        },
        {
          "id": "ten",
          "label": "10× your value in mL"
        }
      ]
    },
    {
      "slug": "tablespoons-to-ml",
      "url": "https://www.revenuelab.fyi/toolbox/tablespoons-to-ml",
      "title": "Tablespoons to Milliliters Converter",
      "category": "other",
      "summary": "Convert tbsp to mL instantly, with the reverse conversion shown too.",
      "formula": "Milliliters = Tablespoons × 14.7867648",
      "inputs": [
        {
          "id": "value",
          "label": "Value in tablespoons",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Milliliters (mL)"
        },
        {
          "id": "reverse",
          "label": "Same number read as milliliters → tablespoons"
        },
        {
          "id": "per1",
          "label": "1 tbsp in mL"
        },
        {
          "id": "per1Rev",
          "label": "1 mL in tbsp"
        },
        {
          "id": "ten",
          "label": "10× your value in mL"
        }
      ]
    },
    {
      "slug": "quarts-to-liters",
      "url": "https://www.revenuelab.fyi/toolbox/quarts-to-liters",
      "title": "US quarts to Liters Converter",
      "category": "other",
      "summary": "Convert qt to L instantly, with the reverse conversion shown too.",
      "formula": "Liters = US quarts × 0.946352946",
      "inputs": [
        {
          "id": "value",
          "label": "Value in us quarts",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Liters (L)"
        },
        {
          "id": "reverse",
          "label": "Same number read as liters → us quarts"
        },
        {
          "id": "per1",
          "label": "1 qt in L"
        },
        {
          "id": "per1Rev",
          "label": "1 L in qt"
        },
        {
          "id": "ten",
          "label": "10× your value in L"
        }
      ]
    },
    {
      "slug": "cubic-feet-to-cubic-meters",
      "url": "https://www.revenuelab.fyi/toolbox/cubic-feet-to-cubic-meters",
      "title": "Cubic feet to Cubic meters Converter",
      "category": "other",
      "summary": "Convert ft³ to m³ instantly, with the reverse conversion shown too.",
      "formula": "Cubic meters = Cubic feet × 0.0283168466",
      "inputs": [
        {
          "id": "value",
          "label": "Value in cubic feet",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Cubic meters (m³)"
        },
        {
          "id": "reverse",
          "label": "Same number read as cubic meters → cubic feet"
        },
        {
          "id": "per1",
          "label": "1 ft³ in m³"
        },
        {
          "id": "per1Rev",
          "label": "1 m³ in ft³"
        },
        {
          "id": "ten",
          "label": "10× your value in m³"
        }
      ]
    },
    {
      "slug": "sqft-to-sqm",
      "url": "https://www.revenuelab.fyi/toolbox/sqft-to-sqm",
      "title": "Square feet to Square meters Converter",
      "category": "other",
      "summary": "Convert sq ft to m² instantly, with the reverse conversion shown too.",
      "formula": "Square meters = Square feet × 0.0929030400",
      "inputs": [
        {
          "id": "value",
          "label": "Value in square feet",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Square meters (m²)"
        },
        {
          "id": "reverse",
          "label": "Same number read as square meters → square feet"
        },
        {
          "id": "per1",
          "label": "1 sq ft in m²"
        },
        {
          "id": "per1Rev",
          "label": "1 m² in sq ft"
        },
        {
          "id": "ten",
          "label": "10× your value in m²"
        }
      ]
    },
    {
      "slug": "sqm-to-sqft",
      "url": "https://www.revenuelab.fyi/toolbox/sqm-to-sqft",
      "title": "Square meters to Square feet Converter",
      "category": "other",
      "summary": "Convert m² to sq ft instantly, with the reverse conversion shown too.",
      "formula": "Square feet = Square meters × 10.7639104",
      "inputs": [
        {
          "id": "value",
          "label": "Value in square meters",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Square feet (sq ft)"
        },
        {
          "id": "reverse",
          "label": "Same number read as square feet → square meters"
        },
        {
          "id": "per1",
          "label": "1 m² in sq ft"
        },
        {
          "id": "per1Rev",
          "label": "1 sq ft in m²"
        },
        {
          "id": "ten",
          "label": "10× your value in sq ft"
        }
      ]
    },
    {
      "slug": "acres-to-sqft",
      "url": "https://www.revenuelab.fyi/toolbox/acres-to-sqft",
      "title": "Acres to Square feet Converter",
      "category": "other",
      "summary": "Convert ac to sq ft instantly, with the reverse conversion shown too.",
      "formula": "Square feet = Acres × 43560.0000",
      "inputs": [
        {
          "id": "value",
          "label": "Value in acres",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Square feet (sq ft)"
        },
        {
          "id": "reverse",
          "label": "Same number read as square feet → acres"
        },
        {
          "id": "per1",
          "label": "1 ac in sq ft"
        },
        {
          "id": "per1Rev",
          "label": "1 sq ft in ac"
        },
        {
          "id": "ten",
          "label": "10× your value in sq ft"
        }
      ]
    },
    {
      "slug": "acres-to-hectares",
      "url": "https://www.revenuelab.fyi/toolbox/acres-to-hectares",
      "title": "Acres to Hectares Converter",
      "category": "other",
      "summary": "Convert ac to ha instantly, with the reverse conversion shown too.",
      "formula": "Hectares = Acres × 0.404685642",
      "inputs": [
        {
          "id": "value",
          "label": "Value in acres",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Hectares (ha)"
        },
        {
          "id": "reverse",
          "label": "Same number read as hectares → acres"
        },
        {
          "id": "per1",
          "label": "1 ac in ha"
        },
        {
          "id": "per1Rev",
          "label": "1 ha in ac"
        },
        {
          "id": "ten",
          "label": "10× your value in ha"
        }
      ]
    },
    {
      "slug": "hectares-to-acres",
      "url": "https://www.revenuelab.fyi/toolbox/hectares-to-acres",
      "title": "Hectares to Acres Converter",
      "category": "other",
      "summary": "Convert ha to ac instantly, with the reverse conversion shown too.",
      "formula": "Acres = Hectares × 2.47105381",
      "inputs": [
        {
          "id": "value",
          "label": "Value in hectares",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Acres (ac)"
        },
        {
          "id": "reverse",
          "label": "Same number read as acres → hectares"
        },
        {
          "id": "per1",
          "label": "1 ha in ac"
        },
        {
          "id": "per1Rev",
          "label": "1 ac in ha"
        },
        {
          "id": "ten",
          "label": "10× your value in ac"
        }
      ]
    },
    {
      "slug": "mph-to-kph",
      "url": "https://www.revenuelab.fyi/toolbox/mph-to-kph",
      "title": "Miles per hour to Kilometers per hour Converter",
      "category": "other",
      "summary": "Convert mph to km/h instantly, with the reverse conversion shown too.",
      "formula": "Kilometers per hour = Miles per hour × 1.60934400",
      "inputs": [
        {
          "id": "value",
          "label": "Value in miles per hour",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Kilometers per hour (km/h)"
        },
        {
          "id": "reverse",
          "label": "Same number read as kilometers per hour → miles per hour"
        },
        {
          "id": "per1",
          "label": "1 mph in km/h"
        },
        {
          "id": "per1Rev",
          "label": "1 km/h in mph"
        },
        {
          "id": "ten",
          "label": "10× your value in km/h"
        }
      ]
    },
    {
      "slug": "kph-to-mph",
      "url": "https://www.revenuelab.fyi/toolbox/kph-to-mph",
      "title": "Kilometers per hour to Miles per hour Converter",
      "category": "other",
      "summary": "Convert km/h to mph instantly, with the reverse conversion shown too.",
      "formula": "Miles per hour = Kilometers per hour × 0.621371192",
      "inputs": [
        {
          "id": "value",
          "label": "Value in kilometers per hour",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Miles per hour (mph)"
        },
        {
          "id": "reverse",
          "label": "Same number read as miles per hour → kilometers per hour"
        },
        {
          "id": "per1",
          "label": "1 km/h in mph"
        },
        {
          "id": "per1Rev",
          "label": "1 mph in km/h"
        },
        {
          "id": "ten",
          "label": "10× your value in mph"
        }
      ]
    },
    {
      "slug": "knots-to-mph",
      "url": "https://www.revenuelab.fyi/toolbox/knots-to-mph",
      "title": "Knots to Miles per hour Converter",
      "category": "other",
      "summary": "Convert kn to mph instantly, with the reverse conversion shown too.",
      "formula": "Miles per hour = Knots × 1.15077945",
      "inputs": [
        {
          "id": "value",
          "label": "Value in knots",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Miles per hour (mph)"
        },
        {
          "id": "reverse",
          "label": "Same number read as miles per hour → knots"
        },
        {
          "id": "per1",
          "label": "1 kn in mph"
        },
        {
          "id": "per1Rev",
          "label": "1 mph in kn"
        },
        {
          "id": "ten",
          "label": "10× your value in mph"
        }
      ]
    },
    {
      "slug": "mps-to-kph",
      "url": "https://www.revenuelab.fyi/toolbox/mps-to-kph",
      "title": "Meters per second to Kilometers per hour Converter",
      "category": "other",
      "summary": "Convert m/s to km/h instantly, with the reverse conversion shown too.",
      "formula": "Kilometers per hour = Meters per second × 3.60000000",
      "inputs": [
        {
          "id": "value",
          "label": "Value in meters per second",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Kilometers per hour (km/h)"
        },
        {
          "id": "reverse",
          "label": "Same number read as kilometers per hour → meters per second"
        },
        {
          "id": "per1",
          "label": "1 m/s in km/h"
        },
        {
          "id": "per1Rev",
          "label": "1 km/h in m/s"
        },
        {
          "id": "ten",
          "label": "10× your value in km/h"
        }
      ]
    },
    {
      "slug": "mb-to-gb",
      "url": "https://www.revenuelab.fyi/toolbox/mb-to-gb",
      "title": "Megabytes to Gigabytes Converter",
      "category": "other",
      "summary": "Convert MB to GB instantly, with the reverse conversion shown too.",
      "formula": "Gigabytes = Megabytes × 0.000976562500",
      "inputs": [
        {
          "id": "value",
          "label": "Value in megabytes",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Gigabytes (GB)"
        },
        {
          "id": "reverse",
          "label": "Same number read as gigabytes → megabytes"
        },
        {
          "id": "per1",
          "label": "1 MB in GB"
        },
        {
          "id": "per1Rev",
          "label": "1 GB in MB"
        },
        {
          "id": "ten",
          "label": "10× your value in GB"
        }
      ]
    },
    {
      "slug": "gb-to-tb",
      "url": "https://www.revenuelab.fyi/toolbox/gb-to-tb",
      "title": "Gigabytes to Terabytes Converter",
      "category": "other",
      "summary": "Convert GB to TB instantly, with the reverse conversion shown too.",
      "formula": "Terabytes = Gigabytes × 0.000976562500",
      "inputs": [
        {
          "id": "value",
          "label": "Value in gigabytes",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Terabytes (TB)"
        },
        {
          "id": "reverse",
          "label": "Same number read as terabytes → gigabytes"
        },
        {
          "id": "per1",
          "label": "1 GB in TB"
        },
        {
          "id": "per1Rev",
          "label": "1 TB in GB"
        },
        {
          "id": "ten",
          "label": "10× your value in TB"
        }
      ]
    },
    {
      "slug": "mbps-to-mbs",
      "url": "https://www.revenuelab.fyi/toolbox/mbps-to-mbs",
      "title": "Megabits per second to Megabytes per second Converter",
      "category": "other",
      "summary": "Convert Mbps to MB/s instantly, with the reverse conversion shown too.",
      "formula": "Megabytes per second = Megabits per second × 0.125000000",
      "inputs": [
        {
          "id": "value",
          "label": "Value in megabits per second",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Megabytes per second (MB/s)"
        },
        {
          "id": "reverse",
          "label": "Same number read as megabytes per second → megabits per second"
        },
        {
          "id": "per1",
          "label": "1 Mbps in MB/s"
        },
        {
          "id": "per1Rev",
          "label": "1 MB/s in Mbps"
        },
        {
          "id": "ten",
          "label": "10× your value in MB/s"
        }
      ]
    },
    {
      "slug": "kb-to-mb",
      "url": "https://www.revenuelab.fyi/toolbox/kb-to-mb",
      "title": "Kilobytes to Megabytes Converter",
      "category": "other",
      "summary": "Convert KB to MB instantly, with the reverse conversion shown too.",
      "formula": "Megabytes = Kilobytes × 0.000976562500",
      "inputs": [
        {
          "id": "value",
          "label": "Value in kilobytes",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Megabytes (MB)"
        },
        {
          "id": "reverse",
          "label": "Same number read as megabytes → kilobytes"
        },
        {
          "id": "per1",
          "label": "1 KB in MB"
        },
        {
          "id": "per1Rev",
          "label": "1 MB in KB"
        },
        {
          "id": "ten",
          "label": "10× your value in MB"
        }
      ]
    },
    {
      "slug": "kwh-to-joules",
      "url": "https://www.revenuelab.fyi/toolbox/kwh-to-joules",
      "title": "Kilowatt-hours to Joules Converter",
      "category": "other",
      "summary": "Convert kWh to J instantly, with the reverse conversion shown too.",
      "formula": "Joules = Kilowatt-hours × 3600000.00",
      "inputs": [
        {
          "id": "value",
          "label": "Value in kilowatt-hours",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Joules (J)"
        },
        {
          "id": "reverse",
          "label": "Same number read as joules → kilowatt-hours"
        },
        {
          "id": "per1",
          "label": "1 kWh in J"
        },
        {
          "id": "per1Rev",
          "label": "1 J in kWh"
        },
        {
          "id": "ten",
          "label": "10× your value in J"
        }
      ]
    },
    {
      "slug": "hp-to-kw",
      "url": "https://www.revenuelab.fyi/toolbox/hp-to-kw",
      "title": "Horsepower to Kilowatts Converter",
      "category": "other",
      "summary": "Convert hp to kW instantly, with the reverse conversion shown too.",
      "formula": "Kilowatts = Horsepower × 0.745699872",
      "inputs": [
        {
          "id": "value",
          "label": "Value in horsepower",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Kilowatts (kW)"
        },
        {
          "id": "reverse",
          "label": "Same number read as kilowatts → horsepower"
        },
        {
          "id": "per1",
          "label": "1 hp in kW"
        },
        {
          "id": "per1Rev",
          "label": "1 kW in hp"
        },
        {
          "id": "ten",
          "label": "10× your value in kW"
        }
      ]
    },
    {
      "slug": "kw-to-hp",
      "url": "https://www.revenuelab.fyi/toolbox/kw-to-hp",
      "title": "Kilowatts to Horsepower Converter",
      "category": "other",
      "summary": "Convert kW to hp instantly, with the reverse conversion shown too.",
      "formula": "Horsepower = Kilowatts × 1.34102209",
      "inputs": [
        {
          "id": "value",
          "label": "Value in kilowatts",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Horsepower (hp)"
        },
        {
          "id": "reverse",
          "label": "Same number read as horsepower → kilowatts"
        },
        {
          "id": "per1",
          "label": "1 kW in hp"
        },
        {
          "id": "per1Rev",
          "label": "1 hp in kW"
        },
        {
          "id": "ten",
          "label": "10× your value in hp"
        }
      ]
    },
    {
      "slug": "btu-to-kwh",
      "url": "https://www.revenuelab.fyi/toolbox/btu-to-kwh",
      "title": "BTU to Kilowatt-hours Converter",
      "category": "other",
      "summary": "Convert BTU to kWh instantly, with the reverse conversion shown too.",
      "formula": "Kilowatt-hours = BTU × 0.000293071000",
      "inputs": [
        {
          "id": "value",
          "label": "Value in btu",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Kilowatt-hours (kWh)"
        },
        {
          "id": "reverse",
          "label": "Same number read as kilowatt-hours → btu"
        },
        {
          "id": "per1",
          "label": "1 BTU in kWh"
        },
        {
          "id": "per1Rev",
          "label": "1 kWh in BTU"
        },
        {
          "id": "ten",
          "label": "10× your value in kWh"
        }
      ]
    },
    {
      "slug": "calories-to-kj",
      "url": "https://www.revenuelab.fyi/toolbox/calories-to-kj",
      "title": "Calories (kcal) to Kilojoules Converter",
      "category": "other",
      "summary": "Convert kcal to kJ instantly, with the reverse conversion shown too.",
      "formula": "Kilojoules = Calories (kcal) × 4.18400000",
      "inputs": [
        {
          "id": "value",
          "label": "Value in calories (kcal)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Kilojoules (kJ)"
        },
        {
          "id": "reverse",
          "label": "Same number read as kilojoules → calories (kcal)"
        },
        {
          "id": "per1",
          "label": "1 kcal in kJ"
        },
        {
          "id": "per1Rev",
          "label": "1 kJ in kcal"
        },
        {
          "id": "ten",
          "label": "10× your value in kJ"
        }
      ]
    },
    {
      "slug": "psi-to-bar",
      "url": "https://www.revenuelab.fyi/toolbox/psi-to-bar",
      "title": "PSI to Bar Converter",
      "category": "other",
      "summary": "Convert psi to bar instantly, with the reverse conversion shown too.",
      "formula": "Bar = PSI × 0.0689475729",
      "inputs": [
        {
          "id": "value",
          "label": "Value in psi",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Bar (bar)"
        },
        {
          "id": "reverse",
          "label": "Same number read as bar → psi"
        },
        {
          "id": "per1",
          "label": "1 psi in bar"
        },
        {
          "id": "per1Rev",
          "label": "1 bar in psi"
        },
        {
          "id": "ten",
          "label": "10× your value in bar"
        }
      ]
    },
    {
      "slug": "bar-to-psi",
      "url": "https://www.revenuelab.fyi/toolbox/bar-to-psi",
      "title": "Bar to PSI Converter",
      "category": "other",
      "summary": "Convert bar to psi instantly, with the reverse conversion shown too.",
      "formula": "PSI = Bar × 14.5037738",
      "inputs": [
        {
          "id": "value",
          "label": "Value in bar",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "PSI (psi)"
        },
        {
          "id": "reverse",
          "label": "Same number read as psi → bar"
        },
        {
          "id": "per1",
          "label": "1 bar in psi"
        },
        {
          "id": "per1Rev",
          "label": "1 psi in bar"
        },
        {
          "id": "ten",
          "label": "10× your value in psi"
        }
      ]
    },
    {
      "slug": "kpa-to-psi",
      "url": "https://www.revenuelab.fyi/toolbox/kpa-to-psi",
      "title": "Kilopascals to PSI Converter",
      "category": "other",
      "summary": "Convert kPa to psi instantly, with the reverse conversion shown too.",
      "formula": "PSI = Kilopascals × 0.145037738",
      "inputs": [
        {
          "id": "value",
          "label": "Value in kilopascals",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "PSI (psi)"
        },
        {
          "id": "reverse",
          "label": "Same number read as psi → kilopascals"
        },
        {
          "id": "per1",
          "label": "1 kPa in psi"
        },
        {
          "id": "per1Rev",
          "label": "1 psi in kPa"
        },
        {
          "id": "ten",
          "label": "10× your value in psi"
        }
      ]
    },
    {
      "slug": "minutes-to-hours",
      "url": "https://www.revenuelab.fyi/toolbox/minutes-to-hours",
      "title": "Minutes to Hours Converter",
      "category": "other",
      "summary": "Convert min to hr instantly, with the reverse conversion shown too.",
      "formula": "Hours = Minutes × 0.0166666667",
      "inputs": [
        {
          "id": "value",
          "label": "Value in minutes",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Hours (hr)"
        },
        {
          "id": "reverse",
          "label": "Same number read as hours → minutes"
        },
        {
          "id": "per1",
          "label": "1 min in hr"
        },
        {
          "id": "per1Rev",
          "label": "1 hr in min"
        },
        {
          "id": "ten",
          "label": "10× your value in hr"
        }
      ]
    },
    {
      "slug": "days-to-hours",
      "url": "https://www.revenuelab.fyi/toolbox/days-to-hours",
      "title": "Days to Hours Converter",
      "category": "other",
      "summary": "Convert days to hr instantly, with the reverse conversion shown too.",
      "formula": "Hours = Days × 24.0000000",
      "inputs": [
        {
          "id": "value",
          "label": "Value in days",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Hours (hr)"
        },
        {
          "id": "reverse",
          "label": "Same number read as hours → days"
        },
        {
          "id": "per1",
          "label": "1 days in hr"
        },
        {
          "id": "per1Rev",
          "label": "1 hr in days"
        },
        {
          "id": "ten",
          "label": "10× your value in hr"
        }
      ]
    },
    {
      "slug": "weeks-to-days",
      "url": "https://www.revenuelab.fyi/toolbox/weeks-to-days",
      "title": "Weeks to Days Converter",
      "category": "other",
      "summary": "Convert weeks to days instantly, with the reverse conversion shown too.",
      "formula": "Days = Weeks × 7.00000000",
      "inputs": [
        {
          "id": "value",
          "label": "Value in weeks",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Days (days)"
        },
        {
          "id": "reverse",
          "label": "Same number read as days → weeks"
        },
        {
          "id": "per1",
          "label": "1 weeks in days"
        },
        {
          "id": "per1Rev",
          "label": "1 days in weeks"
        },
        {
          "id": "ten",
          "label": "10× your value in days"
        }
      ]
    },
    {
      "slug": "seconds-to-minutes",
      "url": "https://www.revenuelab.fyi/toolbox/seconds-to-minutes",
      "title": "Seconds to Minutes Converter",
      "category": "other",
      "summary": "Convert s to min instantly, with the reverse conversion shown too.",
      "formula": "Minutes = Seconds × 0.0166666667",
      "inputs": [
        {
          "id": "value",
          "label": "Value in seconds",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Minutes (min)"
        },
        {
          "id": "reverse",
          "label": "Same number read as minutes → seconds"
        },
        {
          "id": "per1",
          "label": "1 s in min"
        },
        {
          "id": "per1Rev",
          "label": "1 min in s"
        },
        {
          "id": "ten",
          "label": "10× your value in min"
        }
      ]
    },
    {
      "slug": "celsius-to-fahrenheit",
      "url": "https://www.revenuelab.fyi/toolbox/celsius-to-fahrenheit",
      "title": "Celsius to Fahrenheit Converter",
      "category": "other",
      "summary": "°C to °F, plus Kelvin, with the exact formula.",
      "formula": "°F = °C × 9/5 + 32; K = °C + 273.15",
      "inputs": [
        {
          "id": "value",
          "label": "Temperature in °C",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "f",
          "label": "Fahrenheit"
        },
        {
          "id": "k",
          "label": "Kelvin"
        },
        {
          "id": "r",
          "label": "Rankine"
        },
        {
          "id": "delta",
          "label": "Equivalent temperature change in °F"
        }
      ]
    },
    {
      "slug": "fahrenheit-to-celsius",
      "url": "https://www.revenuelab.fyi/toolbox/fahrenheit-to-celsius",
      "title": "Fahrenheit to Celsius Converter",
      "category": "other",
      "summary": "°F to °C and Kelvin, with the exact formula.",
      "formula": "°C = (°F − 32) × 5/9; K = °C + 273.15",
      "inputs": [
        {
          "id": "value",
          "label": "Temperature in °F",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "c",
          "label": "Celsius"
        },
        {
          "id": "k",
          "label": "Kelvin"
        },
        {
          "id": "delta",
          "label": "Equivalent temperature change in °C"
        },
        {
          "id": "body",
          "label": "Difference from normal body temperature (°C)"
        }
      ]
    },
    {
      "slug": "oven-temperature",
      "url": "https://www.revenuelab.fyi/toolbox/oven-temperature",
      "title": "Oven Temperature Converter",
      "category": "other",
      "summary": "Convert recipe oven temperatures, including fan/convection offset.",
      "formula": "°C = (°F − 32) × 5/9; fan setting = conventional °C − 20; gas mark ≈ (°F − 250) ÷ 25 + 1",
      "inputs": [
        {
          "id": "f",
          "label": "Recipe temperature in °F",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "c",
          "label": "Conventional oven (°C)"
        },
        {
          "id": "fan",
          "label": "Fan / convection (°C)"
        },
        {
          "id": "fanF",
          "label": "Fan / convection (°F)"
        },
        {
          "id": "gas",
          "label": "Gas mark"
        }
      ]
    },
    {
      "slug": "sales-tax-alabama",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-alabama",
      "title": "Alabama Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Alabama state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Alabama state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Alabama state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-arizona",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-arizona",
      "title": "Arizona Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Arizona state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Arizona state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Arizona state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-arkansas",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-arkansas",
      "title": "Arkansas Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Arkansas state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Arkansas state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Arkansas state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-california",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-california",
      "title": "California Sales Tax Calculator",
      "category": "financial",
      "summary": "Add California state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "California state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "California state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-colorado",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-colorado",
      "title": "Colorado Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Colorado state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Colorado state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Colorado state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-connecticut",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-connecticut",
      "title": "Connecticut Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Connecticut state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Connecticut state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Connecticut state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-florida",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-florida",
      "title": "Florida Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Florida state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Florida state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Florida state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-georgia",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-georgia",
      "title": "Georgia Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Georgia state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Georgia state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Georgia state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-hawaii",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-hawaii",
      "title": "Hawaii Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Hawaii state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Hawaii state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Hawaii state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-idaho",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-idaho",
      "title": "Idaho Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Idaho state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Idaho state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Idaho state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-illinois",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-illinois",
      "title": "Illinois Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Illinois state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Illinois state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Illinois state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-indiana",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-indiana",
      "title": "Indiana Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Indiana state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Indiana state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Indiana state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-iowa",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-iowa",
      "title": "Iowa Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Iowa state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Iowa state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Iowa state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-kansas",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-kansas",
      "title": "Kansas Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Kansas state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Kansas state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Kansas state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-kentucky",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-kentucky",
      "title": "Kentucky Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Kentucky state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Kentucky state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Kentucky state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-louisiana",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-louisiana",
      "title": "Louisiana Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Louisiana state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Louisiana state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Louisiana state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-maine",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-maine",
      "title": "Maine Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Maine state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Maine state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Maine state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-maryland",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-maryland",
      "title": "Maryland Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Maryland state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Maryland state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Maryland state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-massachusetts",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-massachusetts",
      "title": "Massachusetts Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Massachusetts state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Massachusetts state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Massachusetts state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-michigan",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-michigan",
      "title": "Michigan Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Michigan state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Michigan state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Michigan state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-minnesota",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-minnesota",
      "title": "Minnesota Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Minnesota state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Minnesota state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Minnesota state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-mississippi",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-mississippi",
      "title": "Mississippi Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Mississippi state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Mississippi state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Mississippi state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-missouri",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-missouri",
      "title": "Missouri Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Missouri state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Missouri state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Missouri state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-nebraska",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-nebraska",
      "title": "Nebraska Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Nebraska state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Nebraska state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Nebraska state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-nevada",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-nevada",
      "title": "Nevada Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Nevada state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Nevada state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Nevada state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-new-jersey",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-new-jersey",
      "title": "New Jersey Sales Tax Calculator",
      "category": "financial",
      "summary": "Add New Jersey state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "New Jersey state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "New Jersey state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-new-mexico",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-new-mexico",
      "title": "New Mexico Sales Tax Calculator",
      "category": "financial",
      "summary": "Add New Mexico state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "New Mexico state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "New Mexico state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-new-york",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-new-york",
      "title": "New York Sales Tax Calculator",
      "category": "financial",
      "summary": "Add New York state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "New York state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "New York state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-north-carolina",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-north-carolina",
      "title": "North Carolina Sales Tax Calculator",
      "category": "financial",
      "summary": "Add North Carolina state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "North Carolina state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "North Carolina state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-north-dakota",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-north-dakota",
      "title": "North Dakota Sales Tax Calculator",
      "category": "financial",
      "summary": "Add North Dakota state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "North Dakota state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "North Dakota state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-ohio",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-ohio",
      "title": "Ohio Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Ohio state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Ohio state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Ohio state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-oklahoma",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-oklahoma",
      "title": "Oklahoma Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Oklahoma state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Oklahoma state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Oklahoma state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-pennsylvania",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-pennsylvania",
      "title": "Pennsylvania Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Pennsylvania state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Pennsylvania state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Pennsylvania state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-rhode-island",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-rhode-island",
      "title": "Rhode Island Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Rhode Island state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Rhode Island state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Rhode Island state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-south-carolina",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-south-carolina",
      "title": "South Carolina Sales Tax Calculator",
      "category": "financial",
      "summary": "Add South Carolina state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "South Carolina state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "South Carolina state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-south-dakota",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-south-dakota",
      "title": "South Dakota Sales Tax Calculator",
      "category": "financial",
      "summary": "Add South Dakota state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "South Dakota state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "South Dakota state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-tennessee",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-tennessee",
      "title": "Tennessee Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Tennessee state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Tennessee state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Tennessee state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-texas",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-texas",
      "title": "Texas Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Texas state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Texas state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Texas state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-utah",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-utah",
      "title": "Utah Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Utah state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Utah state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Utah state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-vermont",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-vermont",
      "title": "Vermont Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Vermont state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Vermont state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Vermont state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-virginia",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-virginia",
      "title": "Virginia Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Virginia state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Virginia state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Virginia state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-washington",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-washington",
      "title": "Washington Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Washington state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Washington state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Washington state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-west-virginia",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-west-virginia",
      "title": "West Virginia Sales Tax Calculator",
      "category": "financial",
      "summary": "Add West Virginia state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "West Virginia state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "West Virginia state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-wisconsin",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-wisconsin",
      "title": "Wisconsin Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Wisconsin state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Wisconsin state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Wisconsin state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "sales-tax-wyoming",
      "url": "https://www.revenuelab.fyi/toolbox/sales-tax-wyoming",
      "title": "Wyoming Sales Tax Calculator",
      "category": "financial",
      "summary": "Add Wyoming state and local sales tax to any purchase price.",
      "formula": "Tax = Price × (State rate + Local rate) ÷ 100; Total = Price + Tax.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price before tax",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "Wyoming state rate",
          "kind": "number"
        },
        {
          "id": "local",
          "label": "Local city/county rate",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total with sales tax"
        },
        {
          "id": "tax",
          "label": "Sales tax owed"
        },
        {
          "id": "rate",
          "label": "Combined tax rate"
        },
        {
          "id": "stateTax",
          "label": "Wyoming state portion"
        },
        {
          "id": "localTax",
          "label": "Local portion"
        },
        {
          "id": "reverse",
          "label": "Pre-tax price if your figure already includes tax"
        }
      ]
    },
    {
      "slug": "car-affordability-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/car-affordability-calculator",
      "title": "Car Affordability Calculator",
      "category": "financial",
      "summary": "The car price your income and down payment actually support.",
      "formula": "Affordable price = Down payment + PV of (target payment) over the loan term.",
      "inputs": [
        {
          "id": "income",
          "label": "Gross monthly income",
          "kind": "number"
        },
        {
          "id": "share",
          "label": "Share of income for the payment",
          "kind": "number"
        },
        {
          "id": "down",
          "label": "Down payment + trade-in",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Loan APR",
          "kind": "number"
        },
        {
          "id": "term",
          "label": "Loan term (months)",
          "kind": "number"
        },
        {
          "id": "insurance",
          "label": "Monthly insurance + fuel",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Car price you can afford"
        },
        {
          "id": "payment",
          "label": "Affordable loan payment"
        },
        {
          "id": "financed",
          "label": "Amount you can finance"
        },
        {
          "id": "budget",
          "label": "Total monthly car budget"
        },
        {
          "id": "interest",
          "label": "Interest over the loan"
        },
        {
          "id": "totalCost",
          "label": "Total spend over the term"
        }
      ]
    },
    {
      "slug": "auto-loan-payment",
      "url": "https://www.revenuelab.fyi/toolbox/auto-loan-payment",
      "title": "Auto Loan Payment Calculator",
      "category": "financial",
      "summary": "Monthly payment, total interest, and payoff for a car loan.",
      "formula": "Payment = P × r ÷ (1 − (1 + r)^−n), where r is the monthly rate.",
      "inputs": [
        {
          "id": "price",
          "label": "Vehicle price",
          "kind": "number"
        },
        {
          "id": "down",
          "label": "Down payment",
          "kind": "number"
        },
        {
          "id": "trade",
          "label": "Trade-in value",
          "kind": "number"
        },
        {
          "id": "tax",
          "label": "Sales tax rate",
          "kind": "number"
        },
        {
          "id": "fees",
          "label": "Fees (doc, title, registration)",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "APR",
          "kind": "number"
        },
        {
          "id": "term",
          "label": "Term (months)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "payment",
          "label": "Monthly payment"
        },
        {
          "id": "financed",
          "label": "Amount financed"
        },
        {
          "id": "interest",
          "label": "Total interest"
        },
        {
          "id": "tax",
          "label": "Sales tax"
        },
        {
          "id": "total",
          "label": "Total cost of the vehicle"
        },
        {
          "id": "perYear",
          "label": "Annual payments"
        }
      ]
    },
    {
      "slug": "lease-or-buy-car",
      "url": "https://www.revenuelab.fyi/toolbox/lease-or-buy-car",
      "title": "Lease vs Buy Car Calculator",
      "category": "financial",
      "summary": "Total cost of leasing compared with buying and keeping.",
      "formula": "Compare total outlay minus residual equity across the same holding period.",
      "inputs": [
        {
          "id": "price",
          "label": "Vehicle price",
          "kind": "number"
        },
        {
          "id": "leasePayment",
          "label": "Lease payment",
          "kind": "number"
        },
        {
          "id": "leaseDown",
          "label": "Lease due at signing",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Holding period (months)",
          "kind": "number"
        },
        {
          "id": "buyDown",
          "label": "Purchase down payment",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Purchase APR",
          "kind": "number"
        },
        {
          "id": "term",
          "label": "Purchase loan term (months)",
          "kind": "number"
        },
        {
          "id": "resale",
          "label": "Resale value at end of period",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "diff",
          "label": "Lease costs this much more than buying"
        },
        {
          "id": "buyNet",
          "label": "Net cost of buying (after resale)"
        },
        {
          "id": "leaseTotal",
          "label": "Total lease cost"
        },
        {
          "id": "buyTotal",
          "label": "Total paid if you buy"
        },
        {
          "id": "buyPayment",
          "label": "Purchase monthly payment"
        },
        {
          "id": "buyPerMonth",
          "label": "Effective cost per month of owning"
        }
      ]
    },
    {
      "slug": "car-depreciation",
      "url": "https://www.revenuelab.fyi/toolbox/car-depreciation",
      "title": "Car Depreciation Calculator",
      "category": "financial",
      "summary": "What your vehicle will be worth in 1–10 years.",
      "formula": "Value = Price × (1 − annual depreciation rate)^years.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "firstYear",
          "label": "First-year depreciation",
          "kind": "number"
        },
        {
          "id": "annual",
          "label": "Depreciation after year one",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years to project",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "value",
          "label": "Estimated resale value"
        },
        {
          "id": "lost",
          "label": "Total depreciation"
        },
        {
          "id": "pctLost",
          "label": "Share of value lost"
        },
        {
          "id": "perYear",
          "label": "Depreciation per year"
        },
        {
          "id": "perMonth",
          "label": "Depreciation per month"
        },
        {
          "id": "year1",
          "label": "Value after year one"
        }
      ]
    },
    {
      "slug": "cost-per-mile",
      "url": "https://www.revenuelab.fyi/toolbox/cost-per-mile",
      "title": "Cost Per Mile Calculator",
      "category": "financial",
      "summary": "True driving cost including fuel, insurance, and depreciation.",
      "formula": "Cost per mile = (Fuel + fixed costs + maintenance + depreciation) ÷ Annual miles.",
      "inputs": [
        {
          "id": "miles",
          "label": "Miles driven per year",
          "kind": "number"
        },
        {
          "id": "mpg",
          "label": "Fuel economy (MPG)",
          "kind": "number"
        },
        {
          "id": "fuelPrice",
          "label": "Fuel price per gallon",
          "kind": "number"
        },
        {
          "id": "insurance",
          "label": "Annual insurance",
          "kind": "number"
        },
        {
          "id": "maintenance",
          "label": "Annual maintenance + tires",
          "kind": "number"
        },
        {
          "id": "depreciation",
          "label": "Annual depreciation",
          "kind": "number"
        },
        {
          "id": "other",
          "label": "Registration, parking, tolls",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perMile",
          "label": "True cost per mile"
        },
        {
          "id": "total",
          "label": "Annual cost of ownership"
        },
        {
          "id": "perMonth",
          "label": "Monthly cost"
        },
        {
          "id": "fuel",
          "label": "Annual fuel cost"
        },
        {
          "id": "fuelPerMile",
          "label": "Fuel cost per mile"
        },
        {
          "id": "fuelShare",
          "label": "Fuel share of total cost"
        }
      ]
    },
    {
      "slug": "gas-trip-cost",
      "url": "https://www.revenuelab.fyi/toolbox/gas-trip-cost",
      "title": "Gas Trip Cost Calculator",
      "category": "financial",
      "summary": "Fuel cost for a trip, split between passengers.",
      "formula": "Cost = Distance ÷ MPG × Price per gallon.",
      "inputs": [
        {
          "id": "distance",
          "label": "Trip distance (miles)",
          "kind": "number"
        },
        {
          "id": "mpg",
          "label": "Fuel economy (MPG)",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Gas price per gallon",
          "kind": "number"
        },
        {
          "id": "roundTrip",
          "label": "Trip type",
          "kind": "select"
        },
        {
          "id": "people",
          "label": "People splitting the cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cost",
          "label": "Total fuel cost"
        },
        {
          "id": "perPerson",
          "label": "Cost per person"
        },
        {
          "id": "gallons",
          "label": "Gallons needed"
        },
        {
          "id": "miles",
          "label": "Total miles driven"
        },
        {
          "id": "perMile",
          "label": "Fuel cost per mile"
        },
        {
          "id": "fillups",
          "label": "Approximate fill-ups (14 gal tank)"
        }
      ]
    },
    {
      "slug": "mpg",
      "url": "https://www.revenuelab.fyi/toolbox/mpg",
      "title": "MPG Calculator",
      "category": "other",
      "summary": "Miles per gallon, L/100km, and cost per mile from a fill-up.",
      "formula": "MPG = Miles driven ÷ Gallons used; L/100km = 235.215 ÷ MPG.",
      "inputs": [
        {
          "id": "miles",
          "label": "Miles driven since last fill",
          "kind": "number"
        },
        {
          "id": "gallons",
          "label": "Gallons to refill",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per gallon",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "mpg",
          "label": "Miles per gallon"
        },
        {
          "id": "l100",
          "label": "Liters per 100 km"
        },
        {
          "id": "kmL",
          "label": "Kilometers per liter"
        },
        {
          "id": "costPerMile",
          "label": "Fuel cost per mile"
        },
        {
          "id": "fillCost",
          "label": "Cost of this fill-up"
        },
        {
          "id": "per100",
          "label": "Fuel cost per 100 miles"
        }
      ]
    },
    {
      "slug": "ev-vs-gas",
      "url": "https://www.revenuelab.fyi/toolbox/ev-vs-gas",
      "title": "EV vs Gas Cost Calculator",
      "category": "financial",
      "summary": "Fuel savings, break-even mileage, and years to pay back the price premium.",
      "formula": "Break-even miles = Price premium ÷ (Gas cost per mile − Electricity cost per mile).",
      "inputs": [
        {
          "id": "premium",
          "label": "EV price premium",
          "kind": "number"
        },
        {
          "id": "miles",
          "label": "Annual miles",
          "kind": "number"
        },
        {
          "id": "mpg",
          "label": "Gas car MPG",
          "kind": "number"
        },
        {
          "id": "gasPrice",
          "label": "Gas price per gallon",
          "kind": "number"
        },
        {
          "id": "efficiency",
          "label": "EV efficiency (miles per kWh)",
          "kind": "number"
        },
        {
          "id": "kwhPrice",
          "label": "Electricity price per kWh",
          "kind": "number"
        },
        {
          "id": "maintSaving",
          "label": "Annual maintenance savings on EV",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annual",
          "label": "Annual savings with the EV"
        },
        {
          "id": "payback",
          "label": "Years to pay back the premium"
        },
        {
          "id": "gasPerMile",
          "label": "Gas cost per mile"
        },
        {
          "id": "evPerMile",
          "label": "Electricity cost per mile"
        },
        {
          "id": "breakevenMiles",
          "label": "Break-even miles"
        },
        {
          "id": "tenYear",
          "label": "Net saving over 10 years"
        }
      ]
    },
    {
      "slug": "ev-charging-cost",
      "url": "https://www.revenuelab.fyi/toolbox/ev-charging-cost",
      "title": "EV Charging Cost Calculator",
      "category": "financial",
      "summary": "Cost to charge at home versus public fast charging.",
      "formula": "Cost = Battery kWh × (% added) ÷ efficiency × price per kWh.",
      "inputs": [
        {
          "id": "battery",
          "label": "Battery capacity (kWh)",
          "kind": "number"
        },
        {
          "id": "from",
          "label": "Charge from (%)",
          "kind": "number"
        },
        {
          "id": "to",
          "label": "Charge to (%)",
          "kind": "number"
        },
        {
          "id": "home",
          "label": "Home rate per kWh",
          "kind": "number"
        },
        {
          "id": "publicRate",
          "label": "Public DC fast rate per kWh",
          "kind": "number"
        },
        {
          "id": "loss",
          "label": "Charging losses",
          "kind": "number"
        },
        {
          "id": "efficiency",
          "label": "Miles per kWh",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "homeCost",
          "label": "Cost to charge at home"
        },
        {
          "id": "publicCost",
          "label": "Cost at a public fast charger"
        },
        {
          "id": "added",
          "label": "Energy added to the battery (kWh)"
        },
        {
          "id": "drawn",
          "label": "Energy drawn from the grid (kWh)"
        },
        {
          "id": "miles",
          "label": "Range added (miles)"
        },
        {
          "id": "homePerMile",
          "label": "Home charging cost per mile"
        }
      ]
    },
    {
      "slug": "car-lease-payment",
      "url": "https://www.revenuelab.fyi/toolbox/car-lease-payment",
      "title": "Car Lease Payment Calculator",
      "category": "financial",
      "summary": "Monthly lease payment from cap cost, residual, and money factor.",
      "formula": "Payment = (Cap cost − Residual) ÷ Term + (Cap cost + Residual) × Money factor.",
      "inputs": [
        {
          "id": "msrp",
          "label": "MSRP",
          "kind": "number"
        },
        {
          "id": "cap",
          "label": "Negotiated capitalized cost",
          "kind": "number"
        },
        {
          "id": "down",
          "label": "Cap cost reduction (down)",
          "kind": "number"
        },
        {
          "id": "residualPct",
          "label": "Residual value",
          "kind": "number"
        },
        {
          "id": "mf",
          "label": "Money factor",
          "kind": "number"
        },
        {
          "id": "term",
          "label": "Term (months)",
          "kind": "number"
        },
        {
          "id": "tax",
          "label": "Sales tax on payment",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "withTax",
          "label": "Monthly payment with tax"
        },
        {
          "id": "base",
          "label": "Base payment"
        },
        {
          "id": "depreciation",
          "label": "Depreciation portion"
        },
        {
          "id": "rent",
          "label": "Rent charge (interest)"
        },
        {
          "id": "apr",
          "label": "Equivalent APR"
        },
        {
          "id": "total",
          "label": "Total lease cost"
        }
      ]
    },
    {
      "slug": "car-refinance",
      "url": "https://www.revenuelab.fyi/toolbox/car-refinance",
      "title": "Auto Refinance Calculator",
      "category": "financial",
      "summary": "Savings from refinancing your car loan at a lower rate.",
      "formula": "Savings = (Old payment × months left) − (New payment × new term) − fees.",
      "inputs": [
        {
          "id": "balance",
          "label": "Current loan balance",
          "kind": "number"
        },
        {
          "id": "oldRate",
          "label": "Current APR",
          "kind": "number"
        },
        {
          "id": "monthsLeft",
          "label": "Months remaining",
          "kind": "number"
        },
        {
          "id": "newRate",
          "label": "New APR",
          "kind": "number"
        },
        {
          "id": "newTerm",
          "label": "New term (months)",
          "kind": "number"
        },
        {
          "id": "fees",
          "label": "Refinance fees",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "savings",
          "label": "Total savings from refinancing"
        },
        {
          "id": "monthly",
          "label": "Monthly payment reduction"
        },
        {
          "id": "newP",
          "label": "New monthly payment"
        },
        {
          "id": "oldP",
          "label": "Current monthly payment"
        },
        {
          "id": "newTotal",
          "label": "Total paid after refinancing"
        },
        {
          "id": "oldTotal",
          "label": "Total paid if you keep the loan"
        }
      ]
    },
    {
      "slug": "tire-size-comparison",
      "url": "https://www.revenuelab.fyi/toolbox/tire-size-comparison",
      "title": "Tire Size Calculator",
      "category": "other",
      "summary": "Diameter, circumference, and speedometer error between two tire sizes.",
      "formula": "Diameter (in) = Rim + 2 × (Width mm × Aspect% ÷ 25.4 ÷ 100).",
      "inputs": [
        {
          "id": "w1",
          "label": "Original width (mm)",
          "kind": "number"
        },
        {
          "id": "a1",
          "label": "Original aspect ratio",
          "kind": "number"
        },
        {
          "id": "r1",
          "label": "Original rim (in)",
          "kind": "number"
        },
        {
          "id": "w2",
          "label": "New width (mm)",
          "kind": "number"
        },
        {
          "id": "a2",
          "label": "New aspect ratio",
          "kind": "number"
        },
        {
          "id": "r2",
          "label": "New rim (in)",
          "kind": "number"
        },
        {
          "id": "speed",
          "label": "Indicated speed (mph)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "diff",
          "label": "Diameter difference"
        },
        {
          "id": "d1",
          "label": "Original diameter (in)"
        },
        {
          "id": "d2",
          "label": "New diameter (in)"
        },
        {
          "id": "actualSpeed",
          "label": "True speed at indicated speed (mph)"
        },
        {
          "id": "c2",
          "label": "New tire circumference (in)"
        },
        {
          "id": "revsPerMile",
          "label": "Revolutions per mile"
        }
      ]
    },
    {
      "slug": "towing-capacity",
      "url": "https://www.revenuelab.fyi/toolbox/towing-capacity",
      "title": "Towing Capacity Calculator",
      "category": "other",
      "summary": "Check trailer weight, tongue weight, and payload against your limits.",
      "formula": "Available payload = GVWR − curb weight − passengers − cargo − tongue weight.",
      "inputs": [
        {
          "id": "gvwr",
          "label": "Vehicle GVWR (lb)",
          "kind": "number"
        },
        {
          "id": "curb",
          "label": "Curb weight (lb)",
          "kind": "number"
        },
        {
          "id": "gcwr",
          "label": "GCWR (lb)",
          "kind": "number"
        },
        {
          "id": "passengers",
          "label": "Passengers + gear (lb)",
          "kind": "number"
        },
        {
          "id": "trailer",
          "label": "Loaded trailer weight (lb)",
          "kind": "number"
        },
        {
          "id": "tonguePct",
          "label": "Tongue weight",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "payloadLeft",
          "label": "Payload remaining (lb)"
        },
        {
          "id": "tongue",
          "label": "Tongue weight (lb)"
        },
        {
          "id": "payloadCap",
          "label": "Total payload capacity (lb)"
        },
        {
          "id": "maxTow",
          "label": "Maximum trailer weight (lb)"
        },
        {
          "id": "towMargin",
          "label": "Margin vs your trailer (lb)"
        },
        {
          "id": "utilization",
          "label": "Payload used"
        }
      ]
    },
    {
      "slug": "vehicle-total-cost",
      "url": "https://www.revenuelab.fyi/toolbox/vehicle-total-cost",
      "title": "Total Cost of Vehicle Ownership Calculator",
      "category": "financial",
      "summary": "Depreciation, financing, fuel, insurance, and maintenance in one number.",
      "formula": "TCO = Depreciation + interest + fuel + insurance + maintenance + fees.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "resale",
          "label": "Resale value after the period",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years of ownership",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Loan APR",
          "kind": "number"
        },
        {
          "id": "term",
          "label": "Loan term (months)",
          "kind": "number"
        },
        {
          "id": "down",
          "label": "Down payment",
          "kind": "number"
        },
        {
          "id": "fuelYear",
          "label": "Annual fuel",
          "kind": "number"
        },
        {
          "id": "insuranceYear",
          "label": "Annual insurance",
          "kind": "number"
        },
        {
          "id": "maintYear",
          "label": "Annual maintenance + repairs",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total cost of ownership"
        },
        {
          "id": "perMonth",
          "label": "True cost per month"
        },
        {
          "id": "dep",
          "label": "Depreciation"
        },
        {
          "id": "interest",
          "label": "Finance interest"
        },
        {
          "id": "running",
          "label": "Fuel, insurance, maintenance"
        },
        {
          "id": "perYear",
          "label": "Cost per year"
        }
      ]
    },
    {
      "slug": "dividend-income",
      "url": "https://www.revenuelab.fyi/toolbox/dividend-income",
      "title": "Dividend Income Calculator",
      "category": "financial",
      "summary": "Annual dividend income, yield on cost, and reinvested growth.",
      "formula": "Income = Shares × dividend per share; yield = Income ÷ Market value × 100.",
      "inputs": [
        {
          "id": "invested",
          "label": "Amount invested",
          "kind": "number"
        },
        {
          "id": "yield",
          "label": "Current dividend yield",
          "kind": "number"
        },
        {
          "id": "growth",
          "label": "Annual dividend growth",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years held",
          "kind": "number"
        },
        {
          "id": "reinvest",
          "label": "Reinvest dividends?",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "annualDiv",
          "label": "Annual dividend income at the end"
        },
        {
          "id": "monthly",
          "label": "Monthly income"
        },
        {
          "id": "yoc",
          "label": "Yield on original cost"
        },
        {
          "id": "value",
          "label": "Position value (dividends reinvested)"
        },
        {
          "id": "cash",
          "label": "Cash dividends collected"
        },
        {
          "id": "firstYear",
          "label": "First-year income"
        }
      ]
    },
    {
      "slug": "dividend-reinvestment",
      "url": "https://www.revenuelab.fyi/toolbox/dividend-reinvestment",
      "title": "Dividend Reinvestment (DRIP) Calculator",
      "category": "financial",
      "summary": "Compare reinvesting dividends against taking the cash.",
      "formula": "Balance = Principal × (1 + price growth + yield)^years, with dividends buying more shares.",
      "inputs": [
        {
          "id": "principal",
          "label": "Starting investment",
          "kind": "number"
        },
        {
          "id": "contrib",
          "label": "Monthly contribution",
          "kind": "number"
        },
        {
          "id": "yield",
          "label": "Dividend yield",
          "kind": "number"
        },
        {
          "id": "priceGrowth",
          "label": "Annual price appreciation",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years",
          "kind": "number"
        },
        {
          "id": "taxRate",
          "label": "Dividend tax rate (if taking cash)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "drip",
          "label": "Balance with reinvestment"
        },
        {
          "id": "cashTotal",
          "label": "Balance + cash taken instead"
        },
        {
          "id": "advantage",
          "label": "DRIP advantage"
        },
        {
          "id": "cashPaid",
          "label": "After-tax dividends taken as cash"
        },
        {
          "id": "cashBal",
          "label": "Portfolio value without reinvestment"
        },
        {
          "id": "contributed",
          "label": "Total contributed"
        }
      ]
    },
    {
      "slug": "stock-return",
      "url": "https://www.revenuelab.fyi/toolbox/stock-return",
      "title": "Stock Return Calculator",
      "category": "financial",
      "summary": "Total return, annualized return, and profit after fees and tax.",
      "formula": "CAGR = (Ending ÷ Beginning)^(1/years) − 1.",
      "inputs": [
        {
          "id": "buy",
          "label": "Buy price per share",
          "kind": "number"
        },
        {
          "id": "sell",
          "label": "Sell price per share",
          "kind": "number"
        },
        {
          "id": "shares",
          "label": "Shares",
          "kind": "number"
        },
        {
          "id": "dividends",
          "label": "Dividends received per share",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years held",
          "kind": "number"
        },
        {
          "id": "fees",
          "label": "Total fees and commissions",
          "kind": "number"
        },
        {
          "id": "tax",
          "label": "Capital gains tax rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalReturn",
          "label": "Total return"
        },
        {
          "id": "cagr",
          "label": "Annualized return (CAGR)"
        },
        {
          "id": "gain",
          "label": "Profit before tax"
        },
        {
          "id": "afterTax",
          "label": "Profit after capital gains tax"
        },
        {
          "id": "priceReturn",
          "label": "Price-only return"
        },
        {
          "id": "proceeds",
          "label": "Total proceeds"
        }
      ]
    },
    {
      "slug": "cost-basis",
      "url": "https://www.revenuelab.fyi/toolbox/cost-basis",
      "title": "Cost Basis Calculator",
      "category": "financial",
      "summary": "Average cost per share across multiple buys, plus break-even.",
      "formula": "Average basis = Total invested ÷ Total shares.",
      "inputs": [
        {
          "id": "p1",
          "label": "Buy 1 — price",
          "kind": "number"
        },
        {
          "id": "s1",
          "label": "Buy 1 — shares",
          "kind": "number"
        },
        {
          "id": "p2",
          "label": "Buy 2 — price",
          "kind": "number"
        },
        {
          "id": "s2",
          "label": "Buy 2 — shares",
          "kind": "number"
        },
        {
          "id": "p3",
          "label": "Buy 3 — price",
          "kind": "number"
        },
        {
          "id": "s3",
          "label": "Buy 3 — shares",
          "kind": "number"
        },
        {
          "id": "current",
          "label": "Current price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "basis",
          "label": "Average cost per share"
        },
        {
          "id": "shares",
          "label": "Total shares"
        },
        {
          "id": "invested",
          "label": "Total invested"
        },
        {
          "id": "value",
          "label": "Current position value"
        },
        {
          "id": "gain",
          "label": "Unrealized gain/loss"
        },
        {
          "id": "gainPct",
          "label": "Return on the position"
        }
      ]
    },
    {
      "slug": "portfolio-rebalance",
      "url": "https://www.revenuelab.fyi/toolbox/portfolio-rebalance",
      "title": "Portfolio Rebalancing Calculator",
      "category": "financial",
      "summary": "Exact dollars to move to get back to your target allocation.",
      "formula": "Trade amount = Target % × Total portfolio − Current value of the sleeve.",
      "inputs": [
        {
          "id": "stocks",
          "label": "Stocks value",
          "kind": "number"
        },
        {
          "id": "bonds",
          "label": "Bonds value",
          "kind": "number"
        },
        {
          "id": "cash",
          "label": "Cash value",
          "kind": "number"
        },
        {
          "id": "tStocks",
          "label": "Target stocks",
          "kind": "number"
        },
        {
          "id": "tBonds",
          "label": "Target bonds",
          "kind": "number"
        },
        {
          "id": "tCash",
          "label": "Target cash",
          "kind": "number"
        },
        {
          "id": "newMoney",
          "label": "New money to add",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "stockTrade",
          "label": "Buy (+) or sell (−) stocks"
        },
        {
          "id": "bondTrade",
          "label": "Buy (+) or sell (−) bonds"
        },
        {
          "id": "cashTrade",
          "label": "Add (+) or deploy (−) cash"
        },
        {
          "id": "total",
          "label": "Portfolio total after new money"
        },
        {
          "id": "stockNow",
          "label": "Current stock allocation"
        },
        {
          "id": "drift",
          "label": "Drift from target"
        }
      ]
    },
    {
      "slug": "dollar-cost-average",
      "url": "https://www.revenuelab.fyi/toolbox/dollar-cost-average",
      "title": "Dollar Cost Averaging Calculator",
      "category": "financial",
      "summary": "Compare investing all at once against spreading it over time.",
      "formula": "Balance = Σ contribution × (1 + monthly return)^(remaining months).",
      "inputs": [
        {
          "id": "total",
          "label": "Total to invest",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Months to spread it over",
          "kind": "number"
        },
        {
          "id": "returnRate",
          "label": "Expected annual return",
          "kind": "number"
        },
        {
          "id": "horizon",
          "label": "Total horizon (years)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "dca",
          "label": "Balance with dollar cost averaging"
        },
        {
          "id": "lump",
          "label": "Balance investing it all at once"
        },
        {
          "id": "diff",
          "label": "Lump sum advantage"
        },
        {
          "id": "per",
          "label": "Amount invested per month"
        },
        {
          "id": "dcaGain",
          "label": "DCA gain"
        },
        {
          "id": "lumpGain",
          "label": "Lump sum gain"
        }
      ]
    },
    {
      "slug": "coast-fire",
      "url": "https://www.revenuelab.fyi/toolbox/coast-fire",
      "title": "Coast FIRE Calculator",
      "category": "financial",
      "summary": "The balance where you can stop saving and still retire on time.",
      "formula": "Coast number = Target ÷ (1 + real return)^(years to retirement).",
      "inputs": [
        {
          "id": "current",
          "label": "Current invested balance",
          "kind": "number"
        },
        {
          "id": "age",
          "label": "Current age",
          "kind": "number"
        },
        {
          "id": "retireAge",
          "label": "Retirement age",
          "kind": "number"
        },
        {
          "id": "spend",
          "label": "Annual spending in retirement (today's dollars)",
          "kind": "number"
        },
        {
          "id": "swr",
          "label": "Safe withdrawal rate",
          "kind": "number"
        },
        {
          "id": "realReturn",
          "label": "Real return after inflation",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "coast",
          "label": "Coast FIRE number"
        },
        {
          "id": "gap",
          "label": "Still needed to coast"
        },
        {
          "id": "coastPct",
          "label": "Progress to Coast FIRE"
        },
        {
          "id": "target",
          "label": "Full FIRE number"
        },
        {
          "id": "projected",
          "label": "Projected balance at retirement"
        },
        {
          "id": "surplus",
          "label": "Surplus or shortfall vs target"
        }
      ]
    },
    {
      "slug": "safe-withdrawal-rate",
      "url": "https://www.revenuelab.fyi/toolbox/safe-withdrawal-rate",
      "title": "Safe Withdrawal Rate Calculator",
      "category": "financial",
      "summary": "Sustainable annual income from a portfolio, adjusted for inflation.",
      "formula": "Annual withdrawal = Portfolio × SWR; depletion modelled year by year with real returns.",
      "inputs": [
        {
          "id": "portfolio",
          "label": "Portfolio value",
          "kind": "number"
        },
        {
          "id": "swr",
          "label": "Withdrawal rate",
          "kind": "number"
        },
        {
          "id": "realReturn",
          "label": "Real return after inflation",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Retirement length (years)",
          "kind": "number"
        },
        {
          "id": "other",
          "label": "Other annual income (pension, SS)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "withdrawal",
          "label": "Annual withdrawal"
        },
        {
          "id": "monthly",
          "label": "Monthly income"
        },
        {
          "id": "totalIncome",
          "label": "Total income including other sources"
        },
        {
          "id": "ending",
          "label": "Portfolio at end of horizon"
        },
        {
          "id": "depleted",
          "label": "Year the portfolio runs out (0 = never)"
        },
        {
          "id": "needed",
          "label": "Portfolio needed for this income"
        }
      ]
    },
    {
      "slug": "capital-gains-tax",
      "url": "https://www.revenuelab.fyi/toolbox/capital-gains-tax",
      "title": "Capital Gains Tax Calculator",
      "category": "financial",
      "summary": "Long-term vs short-term tax on an investment sale.",
      "formula": "Tax = (Proceeds − Basis − Losses) × applicable rate.",
      "inputs": [
        {
          "id": "proceeds",
          "label": "Sale proceeds",
          "kind": "number"
        },
        {
          "id": "basis",
          "label": "Cost basis",
          "kind": "number"
        },
        {
          "id": "losses",
          "label": "Capital losses to offset",
          "kind": "number"
        },
        {
          "id": "holding",
          "label": "Holding period",
          "kind": "select"
        },
        {
          "id": "ltRate",
          "label": "Long-term rate",
          "kind": "number"
        },
        {
          "id": "ordinary",
          "label": "Ordinary income tax rate",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "State tax rate",
          "kind": "number"
        },
        {
          "id": "niit",
          "label": "Subject to 3.8% net investment income tax?",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total capital gains tax"
        },
        {
          "id": "net",
          "label": "Profit after tax"
        },
        {
          "id": "gain",
          "label": "Taxable gain"
        },
        {
          "id": "fed",
          "label": "Federal tax"
        },
        {
          "id": "state",
          "label": "State tax"
        },
        {
          "id": "effective",
          "label": "Effective tax rate on the gain"
        }
      ]
    },
    {
      "slug": "crypto-profit",
      "url": "https://www.revenuelab.fyi/toolbox/crypto-profit",
      "title": "Crypto Profit Calculator",
      "category": "financial",
      "summary": "Profit, ROI, and break-even price after exchange fees.",
      "formula": "Profit = (Sell × qty × (1 − fee)) − (Buy × qty × (1 + fee)).",
      "inputs": [
        {
          "id": "buy",
          "label": "Buy price",
          "kind": "number"
        },
        {
          "id": "sell",
          "label": "Sell price",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        },
        {
          "id": "fee",
          "label": "Exchange fee each way",
          "kind": "number"
        },
        {
          "id": "tax",
          "label": "Tax rate on gains",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "profit",
          "label": "Profit before tax"
        },
        {
          "id": "afterTax",
          "label": "Profit after tax"
        },
        {
          "id": "roi",
          "label": "Return on investment"
        },
        {
          "id": "breakeven",
          "label": "Break-even sell price"
        },
        {
          "id": "cost",
          "label": "Total cost including fees"
        },
        {
          "id": "proceeds",
          "label": "Net proceeds"
        }
      ]
    },
    {
      "slug": "crypto-dca",
      "url": "https://www.revenuelab.fyi/toolbox/crypto-dca",
      "title": "Crypto DCA Calculator",
      "category": "financial",
      "summary": "Average entry price and position value from recurring buys.",
      "formula": "Average price = Total invested ÷ Total units accumulated.",
      "inputs": [
        {
          "id": "amount",
          "label": "Amount per buy",
          "kind": "number"
        },
        {
          "id": "frequency",
          "label": "Frequency",
          "kind": "select"
        },
        {
          "id": "months",
          "label": "Months of buying",
          "kind": "number"
        },
        {
          "id": "avgPrice",
          "label": "Average asset price over the period",
          "kind": "number"
        },
        {
          "id": "current",
          "label": "Current price",
          "kind": "number"
        },
        {
          "id": "fee",
          "label": "Fee per buy",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "value",
          "label": "Position value today"
        },
        {
          "id": "invested",
          "label": "Total invested"
        },
        {
          "id": "avgCost",
          "label": "Average cost per unit"
        },
        {
          "id": "units",
          "label": "Units accumulated"
        },
        {
          "id": "profit",
          "label": "Profit / loss"
        },
        {
          "id": "roi",
          "label": "Return"
        }
      ]
    },
    {
      "slug": "bond-yield-to-maturity",
      "url": "https://www.revenuelab.fyi/toolbox/bond-yield-to-maturity",
      "title": "Bond Yield Calculator",
      "category": "financial",
      "summary": "Current yield, yield to maturity, and total coupon income.",
      "formula": "Current yield = Annual coupon ÷ Price; YTM approximated by the standard analytic formula.",
      "inputs": [
        {
          "id": "face",
          "label": "Face value",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "coupon",
          "label": "Coupon rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years to maturity",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Number of bonds",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ytm",
          "label": "Yield to maturity (approx.)"
        },
        {
          "id": "currentYield",
          "label": "Current yield"
        },
        {
          "id": "annual",
          "label": "Annual coupon income"
        },
        {
          "id": "totalCoupons",
          "label": "Total coupons to maturity"
        },
        {
          "id": "gain",
          "label": "Gain at maturity vs price paid"
        },
        {
          "id": "totalReturn",
          "label": "Total return to maturity"
        }
      ]
    },
    {
      "slug": "treasury-bill-yield",
      "url": "https://www.revenuelab.fyi/toolbox/treasury-bill-yield",
      "title": "Treasury Bill Yield Calculator",
      "category": "financial",
      "summary": "Discount yield, investment yield, and after-tax return on T-bills.",
      "formula": "Investment yield = (Face − Price) ÷ Price × (365 ÷ Days) × 100.",
      "inputs": [
        {
          "id": "face",
          "label": "Face value",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Days to maturity",
          "kind": "number"
        },
        {
          "id": "fed",
          "label": "Federal tax rate",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "State tax rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "invYield",
          "label": "Investment (coupon-equivalent) yield"
        },
        {
          "id": "discount",
          "label": "Bank discount yield"
        },
        {
          "id": "interest",
          "label": "Interest earned at maturity"
        },
        {
          "id": "afterTax",
          "label": "After federal tax yield"
        },
        {
          "id": "equivalent",
          "label": "Taxable-equivalent yield vs a CD"
        },
        {
          "id": "netInterest",
          "label": "After-tax interest"
        }
      ]
    },
    {
      "slug": "cd-ladder",
      "url": "https://www.revenuelab.fyi/toolbox/cd-ladder",
      "title": "CD Ladder Calculator",
      "category": "financial",
      "summary": "Build a certificate ladder with staggered maturities and blended yield.",
      "formula": "Blended yield = Σ (Rung amount × rate) ÷ Total invested.",
      "inputs": [
        {
          "id": "total",
          "label": "Total to invest",
          "kind": "number"
        },
        {
          "id": "rungs",
          "label": "Number of rungs",
          "kind": "number"
        },
        {
          "id": "startRate",
          "label": "1-year rate",
          "kind": "number"
        },
        {
          "id": "stepRate",
          "label": "Rate change per extra year",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years to project",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "blended",
          "label": "Blended ladder yield"
        },
        {
          "id": "per",
          "label": "Amount per rung"
        },
        {
          "id": "interestYr1",
          "label": "First-year interest"
        },
        {
          "id": "monthly",
          "label": "Average monthly interest"
        },
        {
          "id": "future",
          "label": "Value at the end of the horizon"
        },
        {
          "id": "interest",
          "label": "Total interest earned"
        }
      ]
    },
    {
      "slug": "inflation-adjusted-return",
      "url": "https://www.revenuelab.fyi/toolbox/inflation-adjusted-return",
      "title": "Inflation Adjusted Return Calculator",
      "category": "financial",
      "summary": "What your investment return is worth after inflation.",
      "formula": "Real return = ((1 + nominal) ÷ (1 + inflation) − 1) × 100.",
      "inputs": [
        {
          "id": "amount",
          "label": "Amount invested",
          "kind": "number"
        },
        {
          "id": "nominal",
          "label": "Nominal annual return",
          "kind": "number"
        },
        {
          "id": "inflation",
          "label": "Annual inflation",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years",
          "kind": "number"
        },
        {
          "id": "tax",
          "label": "Tax drag on returns",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "real",
          "label": "Real annual return"
        },
        {
          "id": "realValue",
          "label": "Value in today's dollars"
        },
        {
          "id": "nominalValue",
          "label": "Nominal value"
        },
        {
          "id": "lost",
          "label": "Purchasing power lost to inflation"
        },
        {
          "id": "purchasingPower",
          "label": "Share of nominal value retained"
        },
        {
          "id": "doubling",
          "label": "Years to double in real terms"
        }
      ]
    },
    {
      "slug": "take-home-pay-california",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-california",
      "title": "California Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your California bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "California income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-new-york",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-new-york",
      "title": "New York Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your New York bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "New York income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-texas",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-texas",
      "title": "Texas Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Texas bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Texas income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-florida",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-florida",
      "title": "Florida Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Florida bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Florida income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-washington",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-washington",
      "title": "Washington Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Washington bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Washington income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-nevada",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-nevada",
      "title": "Nevada Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Nevada bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Nevada income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-tennessee",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-tennessee",
      "title": "Tennessee Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Tennessee bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Tennessee income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-wyoming",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-wyoming",
      "title": "Wyoming Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Wyoming bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Wyoming income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-south-dakota",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-south-dakota",
      "title": "South Dakota Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your South Dakota bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "South Dakota income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-alaska",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-alaska",
      "title": "Alaska Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Alaska bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Alaska income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-illinois",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-illinois",
      "title": "Illinois Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Illinois bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Illinois income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-pennsylvania",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-pennsylvania",
      "title": "Pennsylvania Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Pennsylvania bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Pennsylvania income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-north-carolina",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-north-carolina",
      "title": "North Carolina Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your North Carolina bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "North Carolina income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-georgia",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-georgia",
      "title": "Georgia Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Georgia bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Georgia income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-arizona",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-arizona",
      "title": "Arizona Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Arizona bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Arizona income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-colorado",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-colorado",
      "title": "Colorado Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Colorado bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Colorado income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-michigan",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-michigan",
      "title": "Michigan Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Michigan bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Michigan income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-indiana",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-indiana",
      "title": "Indiana Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Indiana bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Indiana income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-ohio",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-ohio",
      "title": "Ohio Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Ohio bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Ohio income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-new-jersey",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-new-jersey",
      "title": "New Jersey Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your New Jersey bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "New Jersey income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-virginia",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-virginia",
      "title": "Virginia Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Virginia bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Virginia income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-massachusetts",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-massachusetts",
      "title": "Massachusetts Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Massachusetts bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Massachusetts income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-maryland",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-maryland",
      "title": "Maryland Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Maryland bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Maryland income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-minnesota",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-minnesota",
      "title": "Minnesota Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Minnesota bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Minnesota income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-oregon",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-oregon",
      "title": "Oregon Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Oregon bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Oregon income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-wisconsin",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-wisconsin",
      "title": "Wisconsin Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Wisconsin bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Wisconsin income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-missouri",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-missouri",
      "title": "Missouri Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Missouri bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Missouri income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-south-carolina",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-south-carolina",
      "title": "South Carolina Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your South Carolina bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "South Carolina income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-alabama",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-alabama",
      "title": "Alabama Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Alabama bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Alabama income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-utah",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-utah",
      "title": "Utah Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Utah bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Utah income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "take-home-pay-kentucky",
      "url": "https://www.revenuelab.fyi/toolbox/take-home-pay-kentucky",
      "title": "Kentucky Take-Home Pay Calculator (2026)",
      "category": "financial",
      "summary": "What lands in your Kentucky bank account after federal, state, and FICA.",
      "formula": "Net pay = Gross − pre-tax deductions − federal tax − state tax − Social Security (6.2% to the wage base) − Medicare (1.45%).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross annual salary",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "pretax",
          "label": "Pre-tax deductions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Annual take-home pay"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "biweekly",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "state",
          "label": "Kentucky income tax"
        },
        {
          "id": "fica",
          "label": "Social Security + Medicare"
        },
        {
          "id": "effective",
          "label": "Total effective tax rate"
        }
      ]
    },
    {
      "slug": "bmi",
      "url": "https://www.revenuelab.fyi/toolbox/bmi",
      "title": "BMI Calculator",
      "category": "fitness-health",
      "summary": "Calculate your Body Mass Index from height and weight.",
      "formula": "BMI = kg / m².",
      "inputs": [
        {
          "id": "units",
          "label": "Units",
          "kind": "select"
        },
        {
          "id": "weight",
          "label": "Weight",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Height",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "bmi",
          "label": "Your BMI"
        },
        {
          "id": "category",
          "label": "Category"
        }
      ]
    },
    {
      "slug": "bmr",
      "url": "https://www.revenuelab.fyi/toolbox/bmr",
      "title": "BMR Calculator",
      "category": "fitness-health",
      "summary": "Basal metabolic rate — calories burned at rest.",
      "formula": "Mifflin-St Jeor: 10·kg + 6.25·cm − 5·age + s (s=+5 male, −161 female).",
      "inputs": [
        {
          "id": "units",
          "label": "Units",
          "kind": "select"
        },
        {
          "id": "sex",
          "label": "Sex",
          "kind": "select"
        },
        {
          "id": "age",
          "label": "Age",
          "kind": "number"
        },
        {
          "id": "weight",
          "label": "Weight",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Height",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "bmr",
          "label": "BMR"
        }
      ]
    },
    {
      "slug": "tdee",
      "url": "https://www.revenuelab.fyi/toolbox/tdee",
      "title": "TDEE Calculator",
      "category": "fitness-health",
      "summary": "Total daily energy expenditure — calories you burn in a day.",
      "inputs": [
        {
          "id": "units",
          "label": "Units",
          "kind": "select"
        },
        {
          "id": "sex",
          "label": "Sex",
          "kind": "select"
        },
        {
          "id": "age",
          "label": "Age",
          "kind": "number"
        },
        {
          "id": "weight",
          "label": "Weight",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Height",
          "kind": "number"
        },
        {
          "id": "activity",
          "label": "Activity level",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "tdee",
          "label": "TDEE (maintenance)"
        },
        {
          "id": "bmr",
          "label": "BMR"
        },
        {
          "id": "cut",
          "label": "Cut (−500)"
        },
        {
          "id": "bulk",
          "label": "Bulk (+300)"
        }
      ]
    },
    {
      "slug": "calorie",
      "url": "https://www.revenuelab.fyi/toolbox/calorie",
      "title": "Calorie Calculator",
      "category": "fitness-health",
      "summary": "How many calories you need per day for your goal.",
      "inputs": [
        {
          "id": "units",
          "label": "Units",
          "kind": "select"
        },
        {
          "id": "sex",
          "label": "Sex",
          "kind": "select"
        },
        {
          "id": "age",
          "label": "Age",
          "kind": "number"
        },
        {
          "id": "weight",
          "label": "Weight",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Height",
          "kind": "number"
        },
        {
          "id": "activity",
          "label": "Activity level",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "maintain",
          "label": "Maintain weight"
        },
        {
          "id": "mildLoss",
          "label": "Mild loss (~0.25 kg/wk)"
        },
        {
          "id": "loss",
          "label": "Weight loss (~0.5 kg/wk)"
        },
        {
          "id": "extreme",
          "label": "Extreme loss (~1 kg/wk)"
        },
        {
          "id": "gain",
          "label": "Weight gain (~0.5 kg/wk)"
        }
      ]
    },
    {
      "slug": "ideal-weight",
      "url": "https://www.revenuelab.fyi/toolbox/ideal-weight",
      "title": "Ideal Weight Calculator",
      "category": "fitness-health",
      "summary": "Estimate ideal body weight from height and sex.",
      "inputs": [
        {
          "id": "units",
          "label": "Units",
          "kind": "select"
        },
        {
          "id": "height",
          "label": "Height (in or cm)",
          "kind": "number"
        },
        {
          "id": "sex",
          "label": "Sex",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "devine",
          "label": "Devine (kg)"
        },
        {
          "id": "devineLb",
          "label": "Devine (lb)"
        },
        {
          "id": "robinson",
          "label": "Robinson (kg)"
        },
        {
          "id": "robinsonLb",
          "label": "Robinson (lb)"
        }
      ]
    },
    {
      "slug": "body-fat",
      "url": "https://www.revenuelab.fyi/toolbox/body-fat",
      "title": "Body Fat Calculator",
      "category": "fitness-health",
      "summary": "U.S. Navy method for body fat percentage.",
      "inputs": [
        {
          "id": "units",
          "label": "Units",
          "kind": "select"
        },
        {
          "id": "sex",
          "label": "Sex",
          "kind": "select"
        },
        {
          "id": "height",
          "label": "Height",
          "kind": "number"
        },
        {
          "id": "neck",
          "label": "Neck circumference",
          "kind": "number"
        },
        {
          "id": "waist",
          "label": "Waist circumference",
          "kind": "number"
        },
        {
          "id": "hip",
          "label": "Hip (women only)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "bf",
          "label": "Body fat"
        }
      ]
    },
    {
      "slug": "macro",
      "url": "https://www.revenuelab.fyi/toolbox/macro",
      "title": "Macro Calculator",
      "category": "fitness-health",
      "summary": "Split daily calories into protein, carbs, and fat.",
      "formula": "Protein/Carbs use 4 kcal/g; fat uses 9 kcal/g.",
      "inputs": [
        {
          "id": "calories",
          "label": "Daily calories",
          "kind": "number"
        },
        {
          "id": "protein",
          "label": "Protein",
          "kind": "number"
        },
        {
          "id": "carbs",
          "label": "Carbs",
          "kind": "number"
        },
        {
          "id": "fat",
          "label": "Fat",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "proteinG",
          "label": "Protein (g)"
        },
        {
          "id": "carbsG",
          "label": "Carbs (g)"
        },
        {
          "id": "fatG",
          "label": "Fat (g)"
        },
        {
          "id": "total",
          "label": "Split total (should be 100)"
        }
      ]
    },
    {
      "slug": "pace",
      "url": "https://www.revenuelab.fyi/toolbox/pace",
      "title": "Pace Calculator",
      "category": "fitness-health",
      "summary": "Pace, distance, and finish time for runners.",
      "inputs": [
        {
          "id": "distance",
          "label": "Distance",
          "kind": "number"
        },
        {
          "id": "unit",
          "label": "Distance unit",
          "kind": "select"
        },
        {
          "id": "hours",
          "label": "Hours",
          "kind": "number"
        },
        {
          "id": "minutes",
          "label": "Minutes",
          "kind": "number"
        },
        {
          "id": "seconds",
          "label": "Seconds",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pacePerKm",
          "label": "Pace per km"
        },
        {
          "id": "pacePerMi",
          "label": "Pace per mile"
        },
        {
          "id": "speedKmh",
          "label": "Speed (km/h)"
        },
        {
          "id": "speedMph",
          "label": "Speed (mph)"
        }
      ]
    },
    {
      "slug": "one-rep-max",
      "url": "https://www.revenuelab.fyi/toolbox/one-rep-max",
      "title": "One Rep Max Calculator",
      "category": "fitness-health",
      "summary": "Estimate your one rep max from a tested rep.",
      "inputs": [
        {
          "id": "weight",
          "label": "Weight lifted",
          "kind": "number"
        },
        {
          "id": "reps",
          "label": "Reps performed",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "avg",
          "label": "Estimated 1RM (avg)"
        },
        {
          "id": "epley",
          "label": "Epley formula"
        },
        {
          "id": "brzycki",
          "label": "Brzycki formula"
        }
      ]
    },
    {
      "slug": "pregnancy-due-date",
      "url": "https://www.revenuelab.fyi/toolbox/pregnancy-due-date",
      "title": "Pregnancy Due Date Calculator",
      "category": "fitness-health",
      "summary": "Estimate your due date from your last period.",
      "inputs": [
        {
          "id": "lmp",
          "label": "First day of last period",
          "kind": "date"
        }
      ],
      "outputs": [
        {
          "id": "due",
          "label": "Estimated due date"
        },
        {
          "id": "week",
          "label": "Current week"
        }
      ]
    },
    {
      "slug": "ovulation",
      "url": "https://www.revenuelab.fyi/toolbox/ovulation",
      "title": "Ovulation Calculator",
      "category": "fitness-health",
      "summary": "Predict your fertile window.",
      "inputs": [
        {
          "id": "lmp",
          "label": "First day of last period",
          "kind": "date"
        },
        {
          "id": "cycle",
          "label": "Cycle length",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ovulation",
          "label": "Estimated ovulation"
        },
        {
          "id": "fertileStart",
          "label": "Fertile window start"
        },
        {
          "id": "fertileEnd",
          "label": "Fertile window end"
        }
      ]
    },
    {
      "slug": "heart-rate",
      "url": "https://www.revenuelab.fyi/toolbox/heart-rate",
      "title": "Heart Rate Zones Calculator",
      "category": "fitness-health",
      "summary": "Find your training zones from age.",
      "inputs": [
        {
          "id": "age",
          "label": "Age",
          "kind": "number"
        },
        {
          "id": "resting",
          "label": "Resting HR (optional, for Karvonen)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "max",
          "label": "Estimated max HR"
        },
        {
          "id": "z1",
          "label": "Zone 1 (recovery)"
        },
        {
          "id": "z2",
          "label": "Zone 2 (endurance)"
        },
        {
          "id": "z3",
          "label": "Zone 3 (tempo)"
        },
        {
          "id": "z4",
          "label": "Zone 4 (threshold)"
        },
        {
          "id": "z5",
          "label": "Zone 5 (VO2 max)"
        }
      ]
    },
    {
      "slug": "water-intake",
      "url": "https://www.revenuelab.fyi/toolbox/water-intake",
      "title": "Water Intake Calculator",
      "category": "fitness-health",
      "summary": "Daily water target based on body weight and activity.",
      "inputs": [
        {
          "id": "units",
          "label": "Units",
          "kind": "select"
        },
        {
          "id": "weight",
          "label": "Weight",
          "kind": "number"
        },
        {
          "id": "activity",
          "label": "Activity",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "liters",
          "label": "Liters / day"
        },
        {
          "id": "ozFl",
          "label": "Fluid ounces / day"
        },
        {
          "id": "cups",
          "label": "8-oz cups / day"
        }
      ]
    },
    {
      "slug": "percentage",
      "url": "https://www.revenuelab.fyi/toolbox/percentage",
      "title": "Percentage Calculator",
      "category": "math",
      "summary": "What is X% of Y, what % is X of Y, and percent change.",
      "inputs": [
        {
          "id": "x",
          "label": "X",
          "kind": "number"
        },
        {
          "id": "y",
          "label": "Y",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ofY",
          "label": "X% of Y"
        },
        {
          "id": "xPercentY",
          "label": "X is what % of Y"
        },
        {
          "id": "change",
          "label": "% change from X to Y"
        }
      ]
    },
    {
      "slug": "fraction",
      "url": "https://www.revenuelab.fyi/toolbox/fraction",
      "title": "Fraction Calculator",
      "category": "math",
      "summary": "Add, subtract, multiply, and divide two fractions.",
      "inputs": [
        {
          "id": "n1",
          "label": "Numerator 1",
          "kind": "number"
        },
        {
          "id": "d1",
          "label": "Denominator 1",
          "kind": "number"
        },
        {
          "id": "op",
          "label": "Operation",
          "kind": "select"
        },
        {
          "id": "n2",
          "label": "Numerator 2",
          "kind": "number"
        },
        {
          "id": "d2",
          "label": "Denominator 2",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "simplified",
          "label": "Simplified"
        },
        {
          "id": "decimal",
          "label": "Decimal"
        }
      ]
    },
    {
      "slug": "random-number",
      "url": "https://www.revenuelab.fyi/toolbox/random-number",
      "title": "Random Number Generator",
      "category": "math",
      "summary": "Generate a random integer between two bounds.",
      "inputs": [
        {
          "id": "min",
          "label": "Minimum",
          "kind": "number"
        },
        {
          "id": "max",
          "label": "Maximum",
          "kind": "number"
        },
        {
          "id": "seed",
          "label": "Re-roll (any number to re-randomize)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "value",
          "label": "Random number"
        }
      ]
    },
    {
      "slug": "dice-roller",
      "url": "https://www.revenuelab.fyi/toolbox/dice-roller",
      "title": "Dice Roller",
      "category": "math",
      "summary": "Roll N dice with X sides.",
      "inputs": [
        {
          "id": "count",
          "label": "How many dice",
          "kind": "number"
        },
        {
          "id": "sides",
          "label": "Sides per die",
          "kind": "select"
        },
        {
          "id": "reroll",
          "label": "Re-roll (any number to re-randomize)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total"
        },
        {
          "id": "rolls",
          "label": "Individual rolls"
        }
      ]
    },
    {
      "slug": "average",
      "url": "https://www.revenuelab.fyi/toolbox/average",
      "title": "Average Calculator",
      "category": "math",
      "summary": "Mean, median, mode, and range of any number list.",
      "inputs": [
        {
          "id": "list",
          "label": "Numbers",
          "kind": "text"
        }
      ],
      "outputs": [
        {
          "id": "mean",
          "label": "Mean"
        },
        {
          "id": "median",
          "label": "Median"
        },
        {
          "id": "mode",
          "label": "Mode"
        },
        {
          "id": "sum",
          "label": "Sum"
        },
        {
          "id": "range",
          "label": "Range"
        },
        {
          "id": "count",
          "label": "Count"
        }
      ]
    },
    {
      "slug": "standard-deviation",
      "url": "https://www.revenuelab.fyi/toolbox/standard-deviation",
      "title": "Standard Deviation Calculator",
      "category": "math",
      "summary": "Population and sample standard deviation.",
      "inputs": [
        {
          "id": "list",
          "label": "Numbers",
          "kind": "text"
        }
      ],
      "outputs": [
        {
          "id": "sampleSd",
          "label": "Sample SD"
        },
        {
          "id": "popSd",
          "label": "Population SD"
        },
        {
          "id": "variance",
          "label": "Sample variance"
        },
        {
          "id": "mean",
          "label": "Mean"
        }
      ]
    },
    {
      "slug": "ratio",
      "url": "https://www.revenuelab.fyi/toolbox/ratio",
      "title": "Ratio Calculator",
      "category": "math",
      "summary": "Simplify, solve, and scale ratios.",
      "inputs": [
        {
          "id": "a",
          "label": "A",
          "kind": "number"
        },
        {
          "id": "b",
          "label": "B",
          "kind": "number"
        },
        {
          "id": "c",
          "label": "C",
          "kind": "number"
        },
        {
          "id": "d",
          "label": "D (0 to solve)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "solved",
          "label": "Missing term value"
        },
        {
          "id": "which",
          "label": "Solved for"
        },
        {
          "id": "simpA",
          "label": "Simplified A"
        },
        {
          "id": "simpB",
          "label": "Simplified B"
        }
      ]
    },
    {
      "slug": "exponent",
      "url": "https://www.revenuelab.fyi/toolbox/exponent",
      "title": "Exponent Calculator",
      "category": "math",
      "summary": "Compute base^exponent quickly.",
      "inputs": [
        {
          "id": "base",
          "label": "Base",
          "kind": "number"
        },
        {
          "id": "exp",
          "label": "Exponent",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Result"
        }
      ]
    },
    {
      "slug": "log",
      "url": "https://www.revenuelab.fyi/toolbox/log",
      "title": "Logarithm Calculator",
      "category": "math",
      "summary": "log base b of x.",
      "inputs": [
        {
          "id": "x",
          "label": "x",
          "kind": "number"
        },
        {
          "id": "base",
          "label": "Base",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "log_b(x)"
        }
      ]
    },
    {
      "slug": "quadratic",
      "url": "https://www.revenuelab.fyi/toolbox/quadratic",
      "title": "Quadratic Equation Solver",
      "category": "math",
      "summary": "Solve ax² + bx + c = 0.",
      "inputs": [
        {
          "id": "a",
          "label": "a",
          "kind": "number"
        },
        {
          "id": "b",
          "label": "b",
          "kind": "number"
        },
        {
          "id": "c",
          "label": "c",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "x1",
          "label": "Root 1"
        },
        {
          "id": "x2",
          "label": "Root 2"
        },
        {
          "id": "discriminant",
          "label": "Discriminant"
        }
      ]
    },
    {
      "slug": "slope",
      "url": "https://www.revenuelab.fyi/toolbox/slope",
      "title": "Slope Calculator",
      "category": "math",
      "summary": "Slope, intercept, and distance between two points.",
      "formula": "m = (y₂ − y₁) / (x₂ − x₁)",
      "inputs": [
        {
          "id": "x1",
          "label": "x₁",
          "kind": "number"
        },
        {
          "id": "y1",
          "label": "y₁",
          "kind": "number"
        },
        {
          "id": "x2",
          "label": "x₂",
          "kind": "number"
        },
        {
          "id": "y2",
          "label": "y₂",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "slope",
          "label": "Slope (m)"
        },
        {
          "id": "intercept",
          "label": "Y-intercept (b)"
        },
        {
          "id": "distance",
          "label": "Distance"
        }
      ]
    },
    {
      "slug": "area",
      "url": "https://www.revenuelab.fyi/toolbox/area",
      "title": "Area Calculator",
      "category": "math",
      "summary": "Area of a rectangle, triangle, or circle.",
      "inputs": [
        {
          "id": "shape",
          "label": "Shape",
          "kind": "select"
        },
        {
          "id": "a",
          "label": "Dimension 1 (w / base / radius)",
          "kind": "number"
        },
        {
          "id": "b",
          "label": "Dimension 2 (h / height, ignored for circle)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "area",
          "label": "Area"
        }
      ]
    },
    {
      "slug": "volume",
      "url": "https://www.revenuelab.fyi/toolbox/volume",
      "title": "Volume Calculator",
      "category": "math",
      "summary": "Box, cylinder, or sphere.",
      "inputs": [
        {
          "id": "shape",
          "label": "Shape",
          "kind": "select"
        },
        {
          "id": "a",
          "label": "Dim 1 (length / radius)",
          "kind": "number"
        },
        {
          "id": "b",
          "label": "Dim 2 (width / height, sphere ignores)",
          "kind": "number"
        },
        {
          "id": "c",
          "label": "Dim 3 (height for box)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "volume",
          "label": "Volume"
        }
      ]
    },
    {
      "slug": "rounding",
      "url": "https://www.revenuelab.fyi/toolbox/rounding",
      "title": "Rounding Calculator",
      "category": "math",
      "summary": "Round a number to any decimal place or multiple.",
      "inputs": [
        {
          "id": "value",
          "label": "Value",
          "kind": "number"
        },
        {
          "id": "mode",
          "label": "Mode",
          "kind": "select"
        },
        {
          "id": "n",
          "label": "Decimals or multiple",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rounded",
          "label": "Rounded value"
        }
      ]
    },
    {
      "slug": "quadratic-equation",
      "url": "https://www.revenuelab.fyi/toolbox/quadratic-equation",
      "title": "Quadratic Equation Solver",
      "category": "math",
      "summary": "Roots, discriminant, and vertex of ax² + bx + c.",
      "formula": "x = (−b ± √(b² − 4ac)) ÷ 2a.",
      "inputs": [
        {
          "id": "a",
          "label": "a (x² coefficient)",
          "kind": "number"
        },
        {
          "id": "b",
          "label": "b (x coefficient)",
          "kind": "number"
        },
        {
          "id": "c",
          "label": "c (constant)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "roots",
          "label": "Roots"
        },
        {
          "id": "nature",
          "label": "Root type"
        },
        {
          "id": "discriminant",
          "label": "Discriminant (b² − 4ac)"
        },
        {
          "id": "vertexX",
          "label": "Vertex x"
        },
        {
          "id": "vertexY",
          "label": "Vertex y"
        }
      ]
    },
    {
      "slug": "pythagorean",
      "url": "https://www.revenuelab.fyi/toolbox/pythagorean",
      "title": "Pythagorean Theorem Calculator",
      "category": "math",
      "summary": "Find the missing side of a right triangle.",
      "formula": "a² + b² = c², where c is the hypotenuse.",
      "inputs": [
        {
          "id": "a",
          "label": "Side a",
          "kind": "number"
        },
        {
          "id": "b",
          "label": "Side b",
          "kind": "number"
        },
        {
          "id": "c",
          "label": "Hypotenuse c",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "c",
          "label": "Hypotenuse"
        },
        {
          "id": "a",
          "label": "Side a"
        },
        {
          "id": "b",
          "label": "Side b"
        },
        {
          "id": "area",
          "label": "Area"
        },
        {
          "id": "perimeter",
          "label": "Perimeter"
        },
        {
          "id": "angleA",
          "label": "Angle opposite a (°)"
        },
        {
          "id": "angleB",
          "label": "Angle opposite b (°)"
        }
      ]
    },
    {
      "slug": "triangle-area",
      "url": "https://www.revenuelab.fyi/toolbox/triangle-area",
      "title": "Triangle Area Calculator",
      "category": "math",
      "summary": "Area from base and height, or from three sides.",
      "formula": "Area = ½ × base × height, or √(s(s−a)(s−b)(s−c)) where s is the semi-perimeter.",
      "inputs": [
        {
          "id": "method",
          "label": "Method",
          "kind": "select"
        },
        {
          "id": "base",
          "label": "Base",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Height",
          "kind": "number"
        },
        {
          "id": "a",
          "label": "Side a",
          "kind": "number"
        },
        {
          "id": "b",
          "label": "Side b",
          "kind": "number"
        },
        {
          "id": "c",
          "label": "Side c",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "area",
          "label": "Area"
        },
        {
          "id": "valid",
          "label": "Note"
        },
        {
          "id": "perimeter",
          "label": "Perimeter"
        },
        {
          "id": "semi",
          "label": "Semi-perimeter"
        }
      ]
    },
    {
      "slug": "circle",
      "url": "https://www.revenuelab.fyi/toolbox/circle",
      "title": "Circle Calculator",
      "category": "math",
      "summary": "Radius, diameter, circumference, and area from any one value.",
      "formula": "C = 2πr. A = πr².",
      "inputs": [
        {
          "id": "known",
          "label": "What do you know?",
          "kind": "select"
        },
        {
          "id": "value",
          "label": "Value",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "area",
          "label": "Area"
        },
        {
          "id": "radius",
          "label": "Radius"
        },
        {
          "id": "diameter",
          "label": "Diameter"
        },
        {
          "id": "circumference",
          "label": "Circumference"
        }
      ]
    },
    {
      "slug": "cylinder-volume",
      "url": "https://www.revenuelab.fyi/toolbox/cylinder-volume",
      "title": "Cylinder Volume Calculator",
      "category": "math",
      "summary": "Volume, surface area, and capacity of a cylinder.",
      "formula": "V = πr²h. Surface area = 2πr² + 2πrh.",
      "inputs": [
        {
          "id": "radius",
          "label": "Radius",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Height",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "volume",
          "label": "Volume (cu ft)"
        },
        {
          "id": "gallons",
          "label": "US gallons"
        },
        {
          "id": "liters",
          "label": "Litres"
        },
        {
          "id": "cubicYards",
          "label": "Cubic yards"
        },
        {
          "id": "surface",
          "label": "Surface area (sq ft)"
        }
      ]
    },
    {
      "slug": "logarithm",
      "url": "https://www.revenuelab.fyi/toolbox/logarithm",
      "title": "Logarithm Calculator",
      "category": "math",
      "summary": "Log at any base, natural log, and log base 10.",
      "formula": "log_b(x) = ln(x) ÷ ln(b).",
      "inputs": [
        {
          "id": "value",
          "label": "Value (x)",
          "kind": "number"
        },
        {
          "id": "base",
          "label": "Base (b)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "log at your base"
        },
        {
          "id": "ln",
          "label": "Natural log (ln)"
        },
        {
          "id": "log10",
          "label": "Log base 10"
        },
        {
          "id": "log2",
          "label": "Log base 2"
        }
      ]
    },
    {
      "slug": "root",
      "url": "https://www.revenuelab.fyi/toolbox/root",
      "title": "Root Calculator",
      "category": "math",
      "summary": "Square root, cube root, and nth root of any number.",
      "formula": "nth root of x = x^(1/n).",
      "inputs": [
        {
          "id": "value",
          "label": "Number",
          "kind": "number"
        },
        {
          "id": "n",
          "label": "Root (n)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "nth",
          "label": "nth root"
        },
        {
          "id": "note",
          "label": "Note"
        },
        {
          "id": "sqrt",
          "label": "Square root"
        },
        {
          "id": "cbrt",
          "label": "Cube root"
        }
      ]
    },
    {
      "slug": "scientific-notation",
      "url": "https://www.revenuelab.fyi/toolbox/scientific-notation",
      "title": "Scientific Notation Converter",
      "category": "math",
      "summary": "Standard form, engineering notation, and significant figures.",
      "formula": "x = m × 10ⁿ where 1 ≤ |m| < 10.",
      "inputs": [
        {
          "id": "value",
          "label": "Number",
          "kind": "number"
        },
        {
          "id": "sigFigs",
          "label": "Significant figures",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "scientific",
          "label": "Scientific notation"
        },
        {
          "id": "engineering",
          "label": "Engineering notation"
        },
        {
          "id": "rounded",
          "label": "Rounded to significant figures"
        },
        {
          "id": "exponent",
          "label": "Exponent"
        }
      ]
    },
    {
      "slug": "fraction-to-decimal",
      "url": "https://www.revenuelab.fyi/toolbox/fraction-to-decimal",
      "title": "Fraction to Decimal Converter",
      "category": "math",
      "summary": "Fraction, decimal, percentage, and simplest form.",
      "formula": "Decimal = numerator ÷ denominator. Simplify by dividing both by their greatest common divisor.",
      "inputs": [
        {
          "id": "numerator",
          "label": "Numerator",
          "kind": "number"
        },
        {
          "id": "denominator",
          "label": "Denominator",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "decimal",
          "label": "Decimal"
        },
        {
          "id": "percent",
          "label": "Percentage"
        },
        {
          "id": "simplified",
          "label": "Simplest form"
        },
        {
          "id": "mixed",
          "label": "Mixed number"
        }
      ]
    },
    {
      "slug": "permutation-combination",
      "url": "https://www.revenuelab.fyi/toolbox/permutation-combination",
      "title": "Permutation and Combination Calculator",
      "category": "math",
      "summary": "nPr, nCr, and factorials for counting problems.",
      "formula": "nPr = n! ÷ (n−r)!. nCr = n! ÷ (r!(n−r)!).",
      "inputs": [
        {
          "id": "n",
          "label": "n (total items)",
          "kind": "number"
        },
        {
          "id": "r",
          "label": "r (chosen)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "nCr",
          "label": "Combinations (nCr)"
        },
        {
          "id": "nPr",
          "label": "Permutations (nPr)"
        },
        {
          "id": "withRepetition",
          "label": "Arrangements with repetition (nʳ)"
        },
        {
          "id": "factorialN",
          "label": "n factorial"
        },
        {
          "id": "odds",
          "label": "Odds of one specific combination"
        }
      ]
    },
    {
      "slug": "probability",
      "url": "https://www.revenuelab.fyi/toolbox/probability",
      "title": "Probability Calculator",
      "category": "math",
      "summary": "Independent events, unions, intersections, and repeated trials.",
      "formula": "P(A and B) = P(A)P(B). P(A or B) = P(A) + P(B) − P(A)P(B). At least once = 1 − (1−P)ⁿ.",
      "inputs": [
        {
          "id": "pa",
          "label": "Probability of A",
          "kind": "number"
        },
        {
          "id": "pb",
          "label": "Probability of B",
          "kind": "number"
        },
        {
          "id": "trials",
          "label": "Repeated trials of A",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "atLeastOnce",
          "label": "A happens at least once"
        },
        {
          "id": "both",
          "label": "Both A and B"
        },
        {
          "id": "either",
          "label": "A or B"
        },
        {
          "id": "neither",
          "label": "Neither"
        },
        {
          "id": "onlyA",
          "label": "A but not B"
        }
      ]
    },
    {
      "slug": "z-score",
      "url": "https://www.revenuelab.fyi/toolbox/z-score",
      "title": "Z-Score Calculator",
      "category": "math",
      "summary": "Standard score and percentile from a normal distribution.",
      "formula": "z = (x − μ) ÷ σ. Percentile comes from the normal cumulative distribution.",
      "inputs": [
        {
          "id": "value",
          "label": "Your value (x)",
          "kind": "number"
        },
        {
          "id": "mean",
          "label": "Mean (μ)",
          "kind": "number"
        },
        {
          "id": "sd",
          "label": "Standard deviation (σ)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "z",
          "label": "Z-score"
        },
        {
          "id": "percentile",
          "label": "Percentile"
        },
        {
          "id": "above",
          "label": "Share above your value"
        },
        {
          "id": "twoTailed",
          "label": "Two-tailed p-value"
        },
        {
          "id": "interpretation",
          "label": "Read"
        }
      ]
    },
    {
      "slug": "deck-board-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/deck-board-calculator",
      "title": "Deck Board Calculator",
      "category": "other",
      "summary": "Board count, joists, fasteners, and material cost for a deck.",
      "formula": "Boards = deck area ÷ (board width + gap) × length factor, plus waste.",
      "inputs": [
        {
          "id": "length",
          "label": "Deck length",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Deck width",
          "kind": "number"
        },
        {
          "id": "boardWidth",
          "label": "Board width",
          "kind": "number"
        },
        {
          "id": "gap",
          "label": "Gap between boards",
          "kind": "number"
        },
        {
          "id": "boardLen",
          "label": "Board length sold",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per board",
          "kind": "number"
        },
        {
          "id": "waste",
          "label": "Waste factor",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "boards",
          "label": "Deck boards needed"
        },
        {
          "id": "cost",
          "label": "Decking material cost"
        },
        {
          "id": "linearFt",
          "label": "Linear feet of decking"
        },
        {
          "id": "area",
          "label": "Deck area (sq ft)"
        },
        {
          "id": "joists",
          "label": "Joists at 16 in on center"
        },
        {
          "id": "screws",
          "label": "Deck screws (approx)"
        }
      ]
    },
    {
      "slug": "fence-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/fence-calculator",
      "title": "Fence Calculator",
      "category": "other",
      "summary": "Posts, rails, pickets, concrete, and total fence cost.",
      "formula": "Posts = length ÷ spacing + 1; pickets = length × 12 ÷ (picket width + gap).",
      "inputs": [
        {
          "id": "length",
          "label": "Fence length",
          "kind": "number"
        },
        {
          "id": "spacing",
          "label": "Post spacing",
          "kind": "number"
        },
        {
          "id": "picket",
          "label": "Picket width",
          "kind": "number"
        },
        {
          "id": "gap",
          "label": "Picket gap",
          "kind": "number"
        },
        {
          "id": "rails",
          "label": "Rails per section",
          "kind": "number"
        },
        {
          "id": "postCost",
          "label": "Cost per post",
          "kind": "number"
        },
        {
          "id": "picketCost",
          "label": "Cost per picket",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cost",
          "label": "Estimated material cost"
        },
        {
          "id": "posts",
          "label": "Posts"
        },
        {
          "id": "pickets",
          "label": "Pickets"
        },
        {
          "id": "rails",
          "label": "Rails"
        },
        {
          "id": "sections",
          "label": "Sections"
        },
        {
          "id": "concrete",
          "label": "Concrete bags (60 lb)"
        }
      ]
    },
    {
      "slug": "stair-stringer",
      "url": "https://www.revenuelab.fyi/toolbox/stair-stringer",
      "title": "Stair Stringer Calculator",
      "category": "other",
      "summary": "Riser height, tread depth, and stringer length from total rise.",
      "formula": "Risers = round(total rise ÷ target riser); stringer = √(rise² + run²).",
      "inputs": [
        {
          "id": "rise",
          "label": "Total rise (floor to floor)",
          "kind": "number"
        },
        {
          "id": "target",
          "label": "Target riser height",
          "kind": "number"
        },
        {
          "id": "tread",
          "label": "Tread depth",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "riserH",
          "label": "Riser height (in)"
        },
        {
          "id": "risers",
          "label": "Number of risers"
        },
        {
          "id": "treads",
          "label": "Number of treads"
        },
        {
          "id": "run",
          "label": "Total run (in)"
        },
        {
          "id": "stringer",
          "label": "Stringer length (in)"
        },
        {
          "id": "angle",
          "label": "Stair angle (degrees)"
        }
      ]
    },
    {
      "slug": "roof-pitch",
      "url": "https://www.revenuelab.fyi/toolbox/roof-pitch",
      "title": "Roof Pitch Calculator",
      "category": "other",
      "summary": "Convert pitch to degrees and get rafter length.",
      "formula": "Angle = atan(rise ÷ 12); rafter = run × √(1 + (rise/12)²).",
      "inputs": [
        {
          "id": "pitch",
          "label": "Rise per 12 in run",
          "kind": "number"
        },
        {
          "id": "span",
          "label": "Building span",
          "kind": "number"
        },
        {
          "id": "overhang",
          "label": "Overhang",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "angle",
          "label": "Roof angle (degrees)"
        },
        {
          "id": "rafter",
          "label": "Rafter length (ft)"
        },
        {
          "id": "rise",
          "label": "Ridge rise (ft)"
        },
        {
          "id": "factor",
          "label": "Roof pitch multiplier"
        },
        {
          "id": "gradePct",
          "label": "Slope (%)"
        },
        {
          "id": "area",
          "label": "Sloped area per ft of ridge"
        }
      ]
    },
    {
      "slug": "gutter-sizing",
      "url": "https://www.revenuelab.fyi/toolbox/gutter-sizing",
      "title": "Gutter Sizing Calculator",
      "category": "other",
      "summary": "Required gutter capacity and downspout count for your roof.",
      "formula": "Adjusted area = roof area × pitch factor; downspouts = area ÷ capacity per spout.",
      "inputs": [
        {
          "id": "area",
          "label": "Roof footprint area",
          "kind": "number"
        },
        {
          "id": "pitch",
          "label": "Roof pitch (rise per 12)",
          "kind": "number"
        },
        {
          "id": "rain",
          "label": "Peak rainfall intensity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "gutterIn",
          "label": "Recommended gutter size (in)"
        },
        {
          "id": "spouts3",
          "label": "3 in downspouts needed"
        },
        {
          "id": "spouts4",
          "label": "4 in downspouts needed"
        },
        {
          "id": "adj",
          "label": "Pitch-adjusted roof area"
        },
        {
          "id": "drainage",
          "label": "Design drainage area"
        },
        {
          "id": "gpm",
          "label": "Peak flow (gal/min)"
        }
      ]
    },
    {
      "slug": "rain-barrel",
      "url": "https://www.revenuelab.fyi/toolbox/rain-barrel",
      "title": "Rainwater Harvest Calculator",
      "category": "other",
      "summary": "Gallons captured per storm and per year from your roof.",
      "formula": "Gallons = area × inches × 0.623 × efficiency.",
      "inputs": [
        {
          "id": "area",
          "label": "Roof catchment area",
          "kind": "number"
        },
        {
          "id": "storm",
          "label": "Rain per storm",
          "kind": "number"
        },
        {
          "id": "annual",
          "label": "Annual rainfall",
          "kind": "number"
        },
        {
          "id": "eff",
          "label": "Collection efficiency",
          "kind": "number"
        },
        {
          "id": "use",
          "label": "Garden use per week",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "storm",
          "label": "Gallons per storm"
        },
        {
          "id": "yearly",
          "label": "Gallons per year"
        },
        {
          "id": "barrels",
          "label": "55-gal barrels to hold one storm"
        },
        {
          "id": "weeks",
          "label": "Weeks of garden watering"
        },
        {
          "id": "monthly",
          "label": "Average gallons per month"
        },
        {
          "id": "savings",
          "label": "Water bill savings per year"
        }
      ]
    },
    {
      "slug": "sprinkler-run-time",
      "url": "https://www.revenuelab.fyi/toolbox/sprinkler-run-time",
      "title": "Sprinkler Run Time Calculator",
      "category": "other",
      "summary": "Minutes per zone to deliver the right weekly water depth.",
      "formula": "Minutes = target inches ÷ precipitation rate per hour × 60 ÷ cycles.",
      "inputs": [
        {
          "id": "target",
          "label": "Weekly water target",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Sprinkler precipitation rate",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Watering days per week",
          "kind": "number"
        },
        {
          "id": "zones",
          "label": "Number of zones",
          "kind": "number"
        },
        {
          "id": "gpm",
          "label": "Flow per zone",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Water price per 1,000 gal",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perDay",
          "label": "Minutes per zone per watering day"
        },
        {
          "id": "weeklyMin",
          "label": "Weekly minutes per zone"
        },
        {
          "id": "totalDaily",
          "label": "Total system minutes per day"
        },
        {
          "id": "gallons",
          "label": "Gallons per week"
        },
        {
          "id": "weeklyCost",
          "label": "Water cost per week"
        },
        {
          "id": "seasonCost",
          "label": "Cost per 26-week season"
        }
      ]
    },
    {
      "slug": "drywall-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/drywall-calculator",
      "title": "Drywall Calculator",
      "category": "other",
      "summary": "Sheets, joint compound, tape, and screws for a room.",
      "formula": "Sheets = (wall + ceiling area) × (1 + waste) ÷ sheet area.",
      "inputs": [
        {
          "id": "length",
          "label": "Room length",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Room width",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Ceiling height",
          "kind": "number"
        },
        {
          "id": "sheet",
          "label": "Sheet size",
          "kind": "number"
        },
        {
          "id": "ceiling",
          "label": "Include ceiling?",
          "kind": "select"
        },
        {
          "id": "waste",
          "label": "Waste factor",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per sheet",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "sheets",
          "label": "Drywall sheets"
        },
        {
          "id": "cost",
          "label": "Sheet cost"
        },
        {
          "id": "area",
          "label": "Total area with waste (sq ft)"
        },
        {
          "id": "mud",
          "label": "Joint compound (gallons)"
        },
        {
          "id": "tape",
          "label": "Joint tape (linear ft)"
        },
        {
          "id": "screws",
          "label": "Screws"
        }
      ]
    },
    {
      "slug": "insulation-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/insulation-calculator",
      "title": "Insulation Calculator",
      "category": "other",
      "summary": "Bags, batts, and estimated heating savings by R-value.",
      "formula": "Batts = area ÷ coverage per bag; loss ∝ 1 ÷ R-value.",
      "inputs": [
        {
          "id": "area",
          "label": "Area to insulate",
          "kind": "number"
        },
        {
          "id": "current",
          "label": "Current R-value",
          "kind": "number"
        },
        {
          "id": "target",
          "label": "Target R-value",
          "kind": "number"
        },
        {
          "id": "coverage",
          "label": "Coverage per bag/bundle",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per bag/bundle",
          "kind": "number"
        },
        {
          "id": "heat",
          "label": "Annual heating + cooling bill",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "bags",
          "label": "Bags / bundles needed"
        },
        {
          "id": "cost",
          "label": "Material cost"
        },
        {
          "id": "savings",
          "label": "Estimated annual savings"
        },
        {
          "id": "payback",
          "label": "Payback (years)"
        },
        {
          "id": "reduction",
          "label": "Heat loss reduction (%)"
        },
        {
          "id": "tenYear",
          "label": "10-year net"
        }
      ]
    },
    {
      "slug": "paint-coverage",
      "url": "https://www.revenuelab.fyi/toolbox/paint-coverage",
      "title": "Paint Coverage Calculator",
      "category": "other",
      "summary": "Gallons per coat, primer, and total paint spend.",
      "formula": "Gallons = (wall area − openings) × coats ÷ coverage.",
      "inputs": [
        {
          "id": "perimeter",
          "label": "Room perimeter",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Wall height",
          "kind": "number"
        },
        {
          "id": "doors",
          "label": "Doors",
          "kind": "number"
        },
        {
          "id": "windows",
          "label": "Windows",
          "kind": "number"
        },
        {
          "id": "coats",
          "label": "Coats",
          "kind": "number"
        },
        {
          "id": "coverage",
          "label": "Coverage per gallon",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per gallon",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "buy",
          "label": "Gallons to buy"
        },
        {
          "id": "gallons",
          "label": "Gallons required"
        },
        {
          "id": "cost",
          "label": "Paint cost"
        },
        {
          "id": "net",
          "label": "Paintable area (sq ft)"
        },
        {
          "id": "gross",
          "label": "Gross wall area (sq ft)"
        },
        {
          "id": "primer",
          "label": "Primer gallons (1 coat)"
        }
      ]
    },
    {
      "slug": "wallpaper-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/wallpaper-calculator",
      "title": "Wallpaper Calculator",
      "category": "other",
      "summary": "Rolls needed accounting for pattern repeat and waste.",
      "formula": "Drops per roll = roll length ÷ (wall height + repeat); rolls = total drops ÷ drops per roll.",
      "inputs": [
        {
          "id": "perimeter",
          "label": "Room perimeter",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Wall height",
          "kind": "number"
        },
        {
          "id": "rollW",
          "label": "Roll width",
          "kind": "number"
        },
        {
          "id": "rollL",
          "label": "Roll length",
          "kind": "number"
        },
        {
          "id": "repeat",
          "label": "Pattern repeat",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per roll",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rolls",
          "label": "Rolls to buy"
        },
        {
          "id": "cost",
          "label": "Wallpaper cost"
        },
        {
          "id": "drops",
          "label": "Strips (drops) needed"
        },
        {
          "id": "perRoll",
          "label": "Drops per roll"
        },
        {
          "id": "dropLen",
          "label": "Cut length per drop (ft)"
        },
        {
          "id": "wastePct",
          "label": "Leftover waste (%)"
        }
      ]
    },
    {
      "slug": "gravel-driveway",
      "url": "https://www.revenuelab.fyi/toolbox/gravel-driveway",
      "title": "Gravel Driveway Calculator",
      "category": "other",
      "summary": "Cubic yards, tons, and delivered cost of gravel.",
      "formula": "Cubic yards = length × width × depth ÷ 27; tons = yards × density.",
      "inputs": [
        {
          "id": "length",
          "label": "Length",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Width",
          "kind": "number"
        },
        {
          "id": "depth",
          "label": "Depth",
          "kind": "number"
        },
        {
          "id": "density",
          "label": "Tons per cubic yard",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per ton delivered",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "tons",
          "label": "Tons of gravel"
        },
        {
          "id": "cy",
          "label": "Cubic yards"
        },
        {
          "id": "cost",
          "label": "Delivered cost"
        },
        {
          "id": "area",
          "label": "Surface area (sq ft)"
        },
        {
          "id": "cf",
          "label": "Cubic feet"
        },
        {
          "id": "loads",
          "label": "Dump truck loads (15 t)"
        }
      ]
    },
    {
      "slug": "topsoil-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/topsoil-calculator",
      "title": "Topsoil Calculator",
      "category": "other",
      "summary": "Cubic yards and bags of soil for beds and lawns.",
      "formula": "Cubic yards = area × depth ÷ 12 ÷ 27.",
      "inputs": [
        {
          "id": "length",
          "label": "Length",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Width",
          "kind": "number"
        },
        {
          "id": "depth",
          "label": "Depth",
          "kind": "number"
        },
        {
          "id": "bag",
          "label": "Bag size",
          "kind": "number"
        },
        {
          "id": "bulk",
          "label": "Bulk price per cubic yard",
          "kind": "number"
        },
        {
          "id": "bagPrice",
          "label": "Price per bag",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cy",
          "label": "Cubic yards of soil"
        },
        {
          "id": "cf",
          "label": "Cubic feet"
        },
        {
          "id": "bags",
          "label": "Bags if buying bagged"
        },
        {
          "id": "bulkCost",
          "label": "Bulk delivered cost"
        },
        {
          "id": "bagCost",
          "label": "Bagged cost"
        },
        {
          "id": "savings",
          "label": "Savings buying bulk"
        }
      ]
    },
    {
      "slug": "wire-gauge",
      "url": "https://www.revenuelab.fyi/toolbox/wire-gauge",
      "title": "Wire Gauge & Voltage Drop Calculator",
      "category": "other",
      "summary": "Voltage drop over a run and the gauge you actually need.",
      "formula": "Vdrop = 2 × K × I × L ÷ circular mils (K ≈ 12.9 for copper).",
      "inputs": [
        {
          "id": "amps",
          "label": "Load current",
          "kind": "number"
        },
        {
          "id": "volts",
          "label": "System voltage",
          "kind": "number"
        },
        {
          "id": "length",
          "label": "One-way run length",
          "kind": "number"
        },
        {
          "id": "awg",
          "label": "Wire gauge (AWG)",
          "kind": "number"
        },
        {
          "id": "material",
          "label": "Conductor",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "pct",
          "label": "Voltage drop (%)"
        },
        {
          "id": "drop",
          "label": "Voltage drop (V)"
        },
        {
          "id": "endVolts",
          "label": "Voltage at load"
        },
        {
          "id": "recAwg",
          "label": "Recommended AWG for 3% drop"
        },
        {
          "id": "watts",
          "label": "Power lost in wire (W)"
        },
        {
          "id": "needMils",
          "label": "Required circular mils"
        }
      ]
    },
    {
      "slug": "pipe-flow-rate",
      "url": "https://www.revenuelab.fyi/toolbox/pipe-flow-rate",
      "title": "Pipe Flow Rate Calculator",
      "category": "other",
      "summary": "GPM, velocity, and fill time for a given pipe size.",
      "formula": "GPM = area (sq ft) × velocity (ft/s) × 448.8.",
      "inputs": [
        {
          "id": "diameter",
          "label": "Inside diameter",
          "kind": "number"
        },
        {
          "id": "velocity",
          "label": "Flow velocity",
          "kind": "number"
        },
        {
          "id": "volume",
          "label": "Volume to fill",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "gpm",
          "label": "Flow rate (gal/min)"
        },
        {
          "id": "gph",
          "label": "Gallons per hour"
        },
        {
          "id": "lpm",
          "label": "Liters per minute"
        },
        {
          "id": "fillMin",
          "label": "Minutes to fill volume"
        },
        {
          "id": "areaSqIn",
          "label": "Pipe area (sq in)"
        },
        {
          "id": "cfs",
          "label": "Cubic feet per second"
        }
      ]
    },
    {
      "slug": "pump-horsepower",
      "url": "https://www.revenuelab.fyi/toolbox/pump-horsepower",
      "title": "Pump Horsepower Calculator",
      "category": "other",
      "summary": "Required HP from flow, head, and efficiency — plus run cost.",
      "formula": "HP = GPM × head (ft) ÷ 3,960 ÷ efficiency.",
      "inputs": [
        {
          "id": "gpm",
          "label": "Flow rate",
          "kind": "number"
        },
        {
          "id": "head",
          "label": "Total dynamic head",
          "kind": "number"
        },
        {
          "id": "eff",
          "label": "Pump efficiency",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Run hours per day",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Electricity rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "bhp",
          "label": "Required brake horsepower"
        },
        {
          "id": "hyd",
          "label": "Hydraulic horsepower"
        },
        {
          "id": "kw",
          "label": "Motor draw (kW)"
        },
        {
          "id": "daily",
          "label": "Daily energy cost"
        },
        {
          "id": "monthly",
          "label": "Monthly energy cost"
        },
        {
          "id": "annual",
          "label": "Annual energy cost"
        }
      ]
    },
    {
      "slug": "septic-tank-size",
      "url": "https://www.revenuelab.fyi/toolbox/septic-tank-size",
      "title": "Septic Tank Size Calculator",
      "category": "other",
      "summary": "Tank gallons by bedrooms plus pump-out interval.",
      "formula": "Gallons = base (bedrooms) ; interval ≈ tank ÷ (people × daily solids accumulation).",
      "inputs": [
        {
          "id": "bedrooms",
          "label": "Bedrooms",
          "kind": "number"
        },
        {
          "id": "people",
          "label": "People in household",
          "kind": "number"
        },
        {
          "id": "gpd",
          "label": "Water use per person",
          "kind": "number"
        },
        {
          "id": "cost",
          "label": "Pump-out cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "size",
          "label": "Minimum tank size (gal)"
        },
        {
          "id": "years",
          "label": "Years between pump-outs"
        },
        {
          "id": "months",
          "label": "Months between pump-outs"
        },
        {
          "id": "daily",
          "label": "Daily wastewater (gal)"
        },
        {
          "id": "retention",
          "label": "Retention time (days)"
        },
        {
          "id": "annualCost",
          "label": "Amortized pumping cost per year"
        }
      ]
    },
    {
      "slug": "board-foot",
      "url": "https://www.revenuelab.fyi/toolbox/board-foot",
      "title": "Board Foot Calculator",
      "category": "other",
      "summary": "Board feet and cost for rough or dimensional lumber.",
      "formula": "BF = thickness (in) × width (in) × length (in) ÷ 144.",
      "inputs": [
        {
          "id": "thickness",
          "label": "Thickness",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Width",
          "kind": "number"
        },
        {
          "id": "length",
          "label": "Length",
          "kind": "number"
        },
        {
          "id": "pieces",
          "label": "Number of pieces",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per board foot",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total board feet"
        },
        {
          "id": "cost",
          "label": "Total lumber cost"
        },
        {
          "id": "bf",
          "label": "Board feet per piece"
        },
        {
          "id": "perPiece",
          "label": "Cost per piece"
        },
        {
          "id": "linearFt",
          "label": "Total linear feet"
        },
        {
          "id": "cuIn",
          "label": "Total cubic inches"
        }
      ]
    },
    {
      "slug": "framing-studs",
      "url": "https://www.revenuelab.fyi/toolbox/framing-studs",
      "title": "Wall Framing Calculator",
      "category": "other",
      "summary": "Stud count, plates, and lumber cost for a stud wall.",
      "formula": "Studs = wall length ÷ spacing + 1 + corners/openings allowance.",
      "inputs": [
        {
          "id": "length",
          "label": "Wall length",
          "kind": "number"
        },
        {
          "id": "spacing",
          "label": "Stud spacing",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Wall height",
          "kind": "number"
        },
        {
          "id": "openings",
          "label": "Doors + windows",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per stud",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "studs",
          "label": "Studs needed"
        },
        {
          "id": "cost",
          "label": "Framing lumber cost"
        },
        {
          "id": "base",
          "label": "Field studs"
        },
        {
          "id": "extra",
          "label": "Extra studs for openings"
        },
        {
          "id": "plateFt",
          "label": "Plate lumber (linear ft)"
        },
        {
          "id": "sheathing",
          "label": "Sheathing sheets"
        }
      ]
    },
    {
      "slug": "contractor-hourly-rate",
      "url": "https://www.revenuelab.fyi/toolbox/contractor-hourly-rate",
      "title": "Contractor Hourly Rate Calculator",
      "category": "financial",
      "summary": "The rate you must charge to hit your target take-home.",
      "formula": "Rate = (target income + overhead) ÷ billable hours ÷ (1 − profit margin).",
      "inputs": [
        {
          "id": "income",
          "label": "Target take-home income",
          "kind": "number"
        },
        {
          "id": "overhead",
          "label": "Annual overhead",
          "kind": "number"
        },
        {
          "id": "weeks",
          "label": "Working weeks per year",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Working hours per week",
          "kind": "number"
        },
        {
          "id": "billable",
          "label": "Billable share of hours",
          "kind": "number"
        },
        {
          "id": "tax",
          "label": "Tax rate on profit",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rate",
          "label": "Hourly rate to charge"
        },
        {
          "id": "dayRate",
          "label": "8-hour day rate"
        },
        {
          "id": "billableHours",
          "label": "Billable hours per year"
        },
        {
          "id": "needed",
          "label": "Revenue needed per year"
        },
        {
          "id": "weekly",
          "label": "Revenue needed per week"
        },
        {
          "id": "breakEven",
          "label": "Overhead cost per billable hour"
        }
      ]
    },
    {
      "slug": "job-bid-markup",
      "url": "https://www.revenuelab.fyi/toolbox/job-bid-markup",
      "title": "Job Bid Markup Calculator",
      "category": "financial",
      "summary": "Turn job costs into a bid price that actually holds margin.",
      "formula": "Price = cost ÷ (1 − target margin); markup% = price ÷ cost − 1.",
      "inputs": [
        {
          "id": "materials",
          "label": "Material cost",
          "kind": "number"
        },
        {
          "id": "labor",
          "label": "Labor cost",
          "kind": "number"
        },
        {
          "id": "subs",
          "label": "Subcontractor cost",
          "kind": "number"
        },
        {
          "id": "other",
          "label": "Permits, dump, equipment",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Target gross margin",
          "kind": "number"
        },
        {
          "id": "contingency",
          "label": "Contingency",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Bid price"
        },
        {
          "id": "profit",
          "label": "Gross profit"
        },
        {
          "id": "markup",
          "label": "Markup on cost (%)"
        },
        {
          "id": "cost",
          "label": "Hard cost"
        },
        {
          "id": "withCont",
          "label": "Cost with contingency"
        },
        {
          "id": "deposit",
          "label": "Suggested 30% deposit"
        }
      ]
    },
    {
      "slug": "protein-intake",
      "url": "https://www.revenuelab.fyi/toolbox/protein-intake",
      "title": "Protein Intake Calculator",
      "category": "fitness-health",
      "summary": "Grams of protein per day for your goal and training load.",
      "formula": "Protein (g) = Body weight (lb) × goal multiplier.",
      "inputs": [
        {
          "id": "weight",
          "label": "Body weight",
          "kind": "number"
        },
        {
          "id": "goal",
          "label": "Goal",
          "kind": "select"
        },
        {
          "id": "meals",
          "label": "Meals per day",
          "kind": "number"
        },
        {
          "id": "bodyFat",
          "label": "Body fat",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "grams",
          "label": "Daily protein target"
        },
        {
          "id": "perMeal",
          "label": "Grams per meal"
        },
        {
          "id": "calories",
          "label": "Calories from protein"
        },
        {
          "id": "leanBased",
          "label": "Alternative target from lean mass"
        },
        {
          "id": "rda",
          "label": "Minimum RDA"
        },
        {
          "id": "ounces",
          "label": "Equivalent ounces of protein"
        }
      ]
    },
    {
      "slug": "calorie-deficit",
      "url": "https://www.revenuelab.fyi/toolbox/calorie-deficit",
      "title": "Calorie Deficit Calculator",
      "category": "fitness-health",
      "summary": "Daily calories and weeks to reach your goal weight.",
      "formula": "Weeks = (Current − goal) × 3,500 ÷ (daily deficit × 7).",
      "inputs": [
        {
          "id": "maintenance",
          "label": "Maintenance calories (TDEE)",
          "kind": "number"
        },
        {
          "id": "weight",
          "label": "Current weight",
          "kind": "number"
        },
        {
          "id": "goalWeight",
          "label": "Goal weight",
          "kind": "number"
        },
        {
          "id": "deficit",
          "label": "Daily deficit",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "calories",
          "label": "Daily calorie target"
        },
        {
          "id": "weeks",
          "label": "Weeks to goal"
        },
        {
          "id": "perWeek",
          "label": "Pounds lost per week"
        },
        {
          "id": "months",
          "label": "Months to goal"
        },
        {
          "id": "lbs",
          "label": "Pounds to lose"
        },
        {
          "id": "deficitPct",
          "label": "Deficit as % of maintenance"
        }
      ]
    },
    {
      "slug": "wilks-score",
      "url": "https://www.revenuelab.fyi/toolbox/wilks-score",
      "title": "Strength Score Calculator",
      "category": "fitness-health",
      "summary": "Compare total across bodyweights with a relative strength score.",
      "formula": "Relative strength = Total lifted ÷ bodyweight; per-lift ratios benchmark each movement.",
      "inputs": [
        {
          "id": "bw",
          "label": "Bodyweight",
          "kind": "number"
        },
        {
          "id": "squat",
          "label": "Squat 1RM",
          "kind": "number"
        },
        {
          "id": "bench",
          "label": "Bench 1RM",
          "kind": "number"
        },
        {
          "id": "dead",
          "label": "Deadlift 1RM",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Powerlifting total"
        },
        {
          "id": "ratio",
          "label": "Total ÷ bodyweight"
        },
        {
          "id": "squatRatio",
          "label": "Squat ÷ bodyweight"
        },
        {
          "id": "benchRatio",
          "label": "Bench ÷ bodyweight"
        },
        {
          "id": "deadRatio",
          "label": "Deadlift ÷ bodyweight"
        },
        {
          "id": "score",
          "label": "Relative strength score"
        }
      ]
    },
    {
      "slug": "running-pace",
      "url": "https://www.revenuelab.fyi/toolbox/running-pace",
      "title": "Running Pace Calculator",
      "category": "fitness-health",
      "summary": "Pace per mile and km, plus finish times for common races.",
      "formula": "Pace = Total minutes ÷ distance; race projections use Riegel's endurance exponent (1.06).",
      "inputs": [
        {
          "id": "distance",
          "label": "Distance",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Hours",
          "kind": "number"
        },
        {
          "id": "minutes",
          "label": "Minutes",
          "kind": "number"
        },
        {
          "id": "seconds",
          "label": "Seconds",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pace",
          "label": "Pace per mile"
        },
        {
          "id": "paceKm",
          "label": "Pace per kilometer"
        },
        {
          "id": "speed",
          "label": "Average speed (mph)"
        },
        {
          "id": "p5k",
          "label": "Projected 5K"
        },
        {
          "id": "pHalf",
          "label": "Projected half marathon"
        },
        {
          "id": "pMarathon",
          "label": "Projected marathon"
        }
      ]
    },
    {
      "slug": "calories-burned-running",
      "url": "https://www.revenuelab.fyi/toolbox/calories-burned-running",
      "title": "Calories Burned Calculator",
      "category": "fitness-health",
      "summary": "Energy burned using MET values for common activities.",
      "formula": "Calories = MET × 3.5 × weight(kg) ÷ 200 × minutes.",
      "inputs": [
        {
          "id": "weight",
          "label": "Body weight",
          "kind": "number"
        },
        {
          "id": "activity",
          "label": "Activity",
          "kind": "select"
        },
        {
          "id": "minutes",
          "label": "Duration",
          "kind": "number"
        },
        {
          "id": "sessions",
          "label": "Sessions per week",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cal",
          "label": "Calories burned per session"
        },
        {
          "id": "weekly",
          "label": "Weekly burn"
        },
        {
          "id": "monthly",
          "label": "Monthly burn"
        },
        {
          "id": "fatLbs",
          "label": "Pounds of fat equivalent per month"
        },
        {
          "id": "perMinute",
          "label": "Calories per minute"
        },
        {
          "id": "met",
          "label": "MET value used"
        }
      ]
    },
    {
      "slug": "steps-to-miles",
      "url": "https://www.revenuelab.fyi/toolbox/steps-to-miles",
      "title": "Steps to Miles Calculator",
      "category": "fitness-health",
      "summary": "Convert daily steps into distance and calories burned.",
      "formula": "Miles = Steps × stride length (ft) ÷ 5,280.",
      "inputs": [
        {
          "id": "steps",
          "label": "Steps per day",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Height",
          "kind": "number"
        },
        {
          "id": "weight",
          "label": "Weight",
          "kind": "number"
        },
        {
          "id": "sex",
          "label": "Stride basis",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "miles",
          "label": "Miles walked"
        },
        {
          "id": "km",
          "label": "Kilometers"
        },
        {
          "id": "cal",
          "label": "Calories burned"
        },
        {
          "id": "stepsPerMile",
          "label": "Your steps per mile"
        },
        {
          "id": "stride",
          "label": "Stride length (in)"
        },
        {
          "id": "weeklyMiles",
          "label": "Miles per week"
        }
      ]
    },
    {
      "slug": "body-fat-navy",
      "url": "https://www.revenuelab.fyi/toolbox/body-fat-navy",
      "title": "Navy Body Fat Calculator",
      "category": "fitness-health",
      "summary": "Body fat percentage from tape measurements.",
      "formula": "Men: 86.010 × log10(waist − neck) − 70.041 × log10(height) + 36.76.",
      "inputs": [
        {
          "id": "sex",
          "label": "Sex",
          "kind": "select"
        },
        {
          "id": "height",
          "label": "Height",
          "kind": "number"
        },
        {
          "id": "weight",
          "label": "Weight",
          "kind": "number"
        },
        {
          "id": "neck",
          "label": "Neck",
          "kind": "number"
        },
        {
          "id": "waist",
          "label": "Waist",
          "kind": "number"
        },
        {
          "id": "hip",
          "label": "Hip (women)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "bf",
          "label": "Body fat"
        },
        {
          "id": "category",
          "label": "Category"
        },
        {
          "id": "fatMass",
          "label": "Fat mass (lb)"
        },
        {
          "id": "lean",
          "label": "Lean mass (lb)"
        },
        {
          "id": "toTen",
          "label": "Pounds to lose for a lean target"
        },
        {
          "id": "bmi",
          "label": "BMI for reference"
        }
      ]
    },
    {
      "slug": "heart-rate-zones",
      "url": "https://www.revenuelab.fyi/toolbox/heart-rate-zones",
      "title": "Heart Rate Zone Calculator",
      "category": "fitness-health",
      "summary": "Five training zones using the Karvonen reserve method.",
      "formula": "Target HR = ((Max − resting) × intensity%) + resting.",
      "inputs": [
        {
          "id": "age",
          "label": "Age",
          "kind": "number"
        },
        {
          "id": "resting",
          "label": "Resting heart rate",
          "kind": "number"
        },
        {
          "id": "maxOverride",
          "label": "Known max HR (0 to estimate)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "max",
          "label": "Estimated max heart rate"
        },
        {
          "id": "z2",
          "label": "Zone 2 — endurance base"
        },
        {
          "id": "z3",
          "label": "Zone 3 — tempo"
        },
        {
          "id": "z4",
          "label": "Zone 4 — threshold"
        },
        {
          "id": "z5",
          "label": "Zone 5 — VO2 max"
        },
        {
          "id": "z1",
          "label": "Zone 1 — recovery"
        }
      ]
    },
    {
      "slug": "due-date",
      "url": "https://www.revenuelab.fyi/toolbox/due-date",
      "title": "Pregnancy Due Date Calculator",
      "category": "fitness-health",
      "summary": "Estimated due date, trimesters, and weeks along.",
      "formula": "Due date = Last period + 280 days (adjusted for cycle length).",
      "inputs": [
        {
          "id": "lmp",
          "label": "First day of last period",
          "kind": "date"
        },
        {
          "id": "cycle",
          "label": "Average cycle length",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "due",
          "label": "Estimated due date"
        },
        {
          "id": "weeks",
          "label": "How far along today"
        },
        {
          "id": "trimester",
          "label": "Current trimester"
        },
        {
          "id": "daysLeft",
          "label": "Days remaining"
        },
        {
          "id": "conception",
          "label": "Estimated conception date"
        },
        {
          "id": "viability",
          "label": "24-week viability milestone"
        }
      ]
    },
    {
      "slug": "bac-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/bac-calculator",
      "title": "BAC Calculator",
      "category": "fitness-health",
      "summary": "Estimated BAC from drinks, weight, and time elapsed.",
      "formula": "BAC = (Alcohol grams ÷ (weight g × r)) × 100 − 0.015 × hours.",
      "inputs": [
        {
          "id": "drinks",
          "label": "Standard drinks",
          "kind": "number"
        },
        {
          "id": "weight",
          "label": "Body weight",
          "kind": "number"
        },
        {
          "id": "sex",
          "label": "Sex",
          "kind": "select"
        },
        {
          "id": "hours",
          "label": "Hours since first drink",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "bac",
          "label": "Estimated BAC"
        },
        {
          "id": "legal",
          "label": "Status"
        },
        {
          "id": "hoursToZero",
          "label": "Hours until roughly zero"
        },
        {
          "id": "hoursTo08",
          "label": "Hours until below 0.08%"
        },
        {
          "id": "peak",
          "label": "Peak BAC before metabolism"
        },
        {
          "id": "drinks",
          "label": "Standard drinks counted"
        }
      ]
    },
    {
      "slug": "macro-split",
      "url": "https://www.revenuelab.fyi/toolbox/macro-split",
      "title": "Macro Split Calculator",
      "category": "fitness-health",
      "summary": "Grams of protein, carbs, and fat for your calorie target.",
      "formula": "Protein and carbs at 4 cal/g, fat at 9 cal/g, summing to your calorie target.",
      "inputs": [
        {
          "id": "calories",
          "label": "Daily calories",
          "kind": "number"
        },
        {
          "id": "split",
          "label": "Split",
          "kind": "select"
        },
        {
          "id": "meals",
          "label": "Meals per day",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "protein",
          "label": "Protein per day (g)"
        },
        {
          "id": "carbs",
          "label": "Carbs per day (g)"
        },
        {
          "id": "fat",
          "label": "Fat per day (g)"
        },
        {
          "id": "proteinMeal",
          "label": "Protein per meal (g)"
        },
        {
          "id": "carbMeal",
          "label": "Carbs per meal (g)"
        },
        {
          "id": "fatMeal",
          "label": "Fat per meal (g)"
        }
      ]
    },
    {
      "slug": "led-savings",
      "url": "https://www.revenuelab.fyi/toolbox/led-savings",
      "title": "LED Bulb Savings Calculator",
      "category": "other",
      "summary": "Annual savings and payback from switching bulbs.",
      "formula": "Savings = (Old W − new W) ÷ 1,000 × hours × days × rate × bulbs.",
      "inputs": [
        {
          "id": "bulbs",
          "label": "Number of bulbs",
          "kind": "number"
        },
        {
          "id": "oldW",
          "label": "Old bulb wattage",
          "kind": "number"
        },
        {
          "id": "newW",
          "label": "LED wattage",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Hours on per day",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Electricity rate",
          "kind": "number"
        },
        {
          "id": "cost",
          "label": "Cost per LED bulb",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annual",
          "label": "Annual savings"
        },
        {
          "id": "payback",
          "label": "Payback period (months)"
        },
        {
          "id": "monthly",
          "label": "Monthly savings"
        },
        {
          "id": "tenYear",
          "label": "10-year net savings"
        },
        {
          "id": "savedKwh",
          "label": "kWh saved per year"
        },
        {
          "id": "invest",
          "label": "Upfront bulb cost"
        }
      ]
    },
    {
      "slug": "solar-savings",
      "url": "https://www.revenuelab.fyi/toolbox/solar-savings",
      "title": "Solar Savings Calculator",
      "category": "other",
      "summary": "System size, annual production, payback, and 25-year savings.",
      "formula": "Production = kW × sun hours × 365 × 0.8 derate; payback = net cost ÷ annual savings.",
      "inputs": [
        {
          "id": "usage",
          "label": "Monthly electricity use",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Electricity rate",
          "kind": "number"
        },
        {
          "id": "sunHours",
          "label": "Peak sun hours per day",
          "kind": "number"
        },
        {
          "id": "costPerWatt",
          "label": "Installed cost",
          "kind": "number"
        },
        {
          "id": "credit",
          "label": "Tax credit",
          "kind": "number"
        },
        {
          "id": "offset",
          "label": "Target offset of usage",
          "kind": "number"
        },
        {
          "id": "escalator",
          "label": "Annual utility rate increase",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "kw",
          "label": "System size (kW)"
        },
        {
          "id": "net",
          "label": "Net cost after tax credit"
        },
        {
          "id": "payback",
          "label": "Payback period (years)"
        },
        {
          "id": "year1",
          "label": "First-year savings"
        },
        {
          "id": "lifetime",
          "label": "25-year net savings"
        },
        {
          "id": "panels",
          "label": "Approx. 400 W panels needed"
        }
      ]
    },
    {
      "slug": "hvac-run-cost",
      "url": "https://www.revenuelab.fyi/toolbox/hvac-run-cost",
      "title": "Heating & Cooling Cost Calculator",
      "category": "other",
      "summary": "Monthly heating or cooling cost by system type and efficiency.",
      "formula": "Cost = BTU load ÷ efficiency rating × hours × energy price.",
      "inputs": [
        {
          "id": "btu",
          "label": "System capacity",
          "kind": "number"
        },
        {
          "id": "system",
          "label": "System type",
          "kind": "select"
        },
        {
          "id": "efficiency",
          "label": "Efficiency rating (SEER/HSPF/AFUE %)",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Runtime hours per day",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Days per month",
          "kind": "number"
        },
        {
          "id": "elecRate",
          "label": "Electricity rate",
          "kind": "number"
        },
        {
          "id": "gasRate",
          "label": "Gas rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthly",
          "label": "Monthly running cost"
        },
        {
          "id": "daily",
          "label": "Daily cost"
        },
        {
          "id": "season",
          "label": "5-month season cost"
        },
        {
          "id": "perHour",
          "label": "Cost per runtime hour"
        },
        {
          "id": "unitsDay",
          "label": "Energy units used per day"
        },
        {
          "id": "annual",
          "label": "Annualized cost at this usage"
        }
      ]
    },
    {
      "slug": "btu-sizing",
      "url": "https://www.revenuelab.fyi/toolbox/btu-sizing",
      "title": "BTU Sizing Calculator",
      "category": "other",
      "summary": "How many BTUs a room needs based on size and conditions.",
      "formula": "BTU = Square feet × 20, adjusted for sun, ceiling height, insulation, and occupants.",
      "inputs": [
        {
          "id": "sqft",
          "label": "Room area",
          "kind": "number"
        },
        {
          "id": "ceiling",
          "label": "Ceiling height",
          "kind": "number"
        },
        {
          "id": "sun",
          "label": "Sun exposure",
          "kind": "select"
        },
        {
          "id": "insulation",
          "label": "Insulation",
          "kind": "select"
        },
        {
          "id": "occupants",
          "label": "Regular occupants",
          "kind": "number"
        },
        {
          "id": "kitchen",
          "label": "Is it a kitchen?",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "recommended",
          "label": "Recommended cooling capacity (BTU)"
        },
        {
          "id": "tons",
          "label": "Tons of cooling"
        },
        {
          "id": "heating",
          "label": "Heating BTU estimate"
        },
        {
          "id": "watts",
          "label": "Equivalent electric watts"
        },
        {
          "id": "volume",
          "label": "Room volume (cu ft)"
        },
        {
          "id": "btu",
          "label": "Raw calculated BTU"
        }
      ]
    },
    {
      "slug": "water-heater-cost",
      "url": "https://www.revenuelab.fyi/toolbox/water-heater-cost",
      "title": "Water Heater Cost Calculator",
      "category": "other",
      "summary": "Annual cost of hot water and tankless payback.",
      "formula": "Energy = Gallons × 8.34 × ΔT ÷ efficiency; cost = energy × rate.",
      "inputs": [
        {
          "id": "people",
          "label": "People in the household",
          "kind": "number"
        },
        {
          "id": "gallonsPerPerson",
          "label": "Hot water per person",
          "kind": "number"
        },
        {
          "id": "inletTemp",
          "label": "Incoming water temp",
          "kind": "number"
        },
        {
          "id": "setTemp",
          "label": "Tank setpoint",
          "kind": "number"
        },
        {
          "id": "type",
          "label": "Heater type",
          "kind": "select"
        },
        {
          "id": "elecRate",
          "label": "Electricity rate",
          "kind": "number"
        },
        {
          "id": "gasRate",
          "label": "Gas rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annual",
          "label": "Annual water heating cost"
        },
        {
          "id": "monthly",
          "label": "Monthly cost"
        },
        {
          "id": "daily",
          "label": "Daily cost"
        },
        {
          "id": "hpSavings",
          "label": "Annual savings if you switch to a heat pump unit"
        },
        {
          "id": "gallons",
          "label": "Hot water used per day (gal)"
        },
        {
          "id": "btuDay",
          "label": "Heat delivered per day (BTU)"
        }
      ]
    },
    {
      "slug": "generator-sizing",
      "url": "https://www.revenuelab.fyi/toolbox/generator-sizing",
      "title": "Generator Sizing Calculator",
      "category": "other",
      "summary": "Running and starting watts needed for your backup loads.",
      "formula": "Required = Sum of running watts + largest starting surge.",
      "inputs": [
        {
          "id": "fridge",
          "label": "Refrigerators",
          "kind": "number"
        },
        {
          "id": "sumpPump",
          "label": "Sump or well pumps",
          "kind": "number"
        },
        {
          "id": "furnace",
          "label": "Furnace blowers",
          "kind": "number"
        },
        {
          "id": "lights",
          "label": "Lighting load",
          "kind": "number"
        },
        {
          "id": "electronics",
          "label": "Electronics and networking",
          "kind": "number"
        },
        {
          "id": "ac",
          "label": "Window AC units",
          "kind": "number"
        },
        {
          "id": "microwave",
          "label": "Microwaves",
          "kind": "number"
        },
        {
          "id": "fuelRate",
          "label": "Fuel cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "recommended",
          "label": "Recommended generator size (W)"
        },
        {
          "id": "running",
          "label": "Total running watts"
        },
        {
          "id": "surge",
          "label": "Peak starting watts"
        },
        {
          "id": "gph",
          "label": "Estimated fuel burn (gal/hr)"
        },
        {
          "id": "dailyFuel",
          "label": "Fuel cost for 12 hours"
        },
        {
          "id": "required",
          "label": "Calculated requirement (W)"
        }
      ]
    },
    {
      "slug": "lawn-fertilizer",
      "url": "https://www.revenuelab.fyi/toolbox/lawn-fertilizer",
      "title": "Lawn Fertilizer Calculator",
      "category": "other",
      "summary": "Bags of fertilizer and pounds of seed for your lawn size.",
      "formula": "Bags = (Area ÷ 1,000 × lb N target) ÷ (bag weight × N%).",
      "inputs": [
        {
          "id": "area",
          "label": "Lawn area",
          "kind": "number"
        },
        {
          "id": "nitrogen",
          "label": "Nitrogen in the bag (first number)",
          "kind": "number"
        },
        {
          "id": "bagWeight",
          "label": "Bag weight",
          "kind": "number"
        },
        {
          "id": "targetN",
          "label": "Nitrogen target",
          "kind": "number"
        },
        {
          "id": "seedRate",
          "label": "Seed rate",
          "kind": "number"
        },
        {
          "id": "bagCost",
          "label": "Cost per bag",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "bagsRounded",
          "label": "Bags to buy"
        },
        {
          "id": "productLbs",
          "label": "Pounds of product to spread"
        },
        {
          "id": "seedLbs",
          "label": "Pounds of grass seed"
        },
        {
          "id": "cost",
          "label": "Fertilizer cost"
        },
        {
          "id": "nNeeded",
          "label": "Pounds of actual nitrogen needed"
        },
        {
          "id": "bags",
          "label": "Exact bags required"
        }
      ]
    },
    {
      "slug": "mulch-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/mulch-calculator",
      "title": "Mulch Calculator",
      "category": "other",
      "summary": "Cubic yards and bags of mulch for your beds.",
      "formula": "Cubic yards = Area × depth (in) ÷ 12 ÷ 27.",
      "inputs": [
        {
          "id": "area",
          "label": "Bed area",
          "kind": "number"
        },
        {
          "id": "depth",
          "label": "Depth",
          "kind": "number"
        },
        {
          "id": "bagSize",
          "label": "Bag size",
          "kind": "number"
        },
        {
          "id": "bagCost",
          "label": "Cost per bag",
          "kind": "number"
        },
        {
          "id": "yardCost",
          "label": "Cost per cubic yard delivered",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "yards",
          "label": "Cubic yards needed"
        },
        {
          "id": "bags",
          "label": "Bags needed"
        },
        {
          "id": "bagCost",
          "label": "Cost buying bags"
        },
        {
          "id": "bulkCost",
          "label": "Cost buying bulk"
        },
        {
          "id": "savings",
          "label": "Savings by going bulk"
        },
        {
          "id": "cuft",
          "label": "Cubic feet"
        }
      ]
    },
    {
      "slug": "home-appliance-replacement",
      "url": "https://www.revenuelab.fyi/toolbox/home-appliance-replacement",
      "title": "Repair or Replace Calculator",
      "category": "other",
      "summary": "Whether fixing it beats buying new, including energy costs.",
      "formula": "Compare repair cost over remaining life with new unit cost plus energy over full life.",
      "inputs": [
        {
          "id": "repair",
          "label": "Repair quote",
          "kind": "number"
        },
        {
          "id": "newCost",
          "label": "New appliance cost installed",
          "kind": "number"
        },
        {
          "id": "age",
          "label": "Current age",
          "kind": "number"
        },
        {
          "id": "lifespan",
          "label": "Typical lifespan",
          "kind": "number"
        },
        {
          "id": "oldEnergy",
          "label": "Current annual energy cost",
          "kind": "number"
        },
        {
          "id": "newEnergy",
          "label": "New unit annual energy cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "verdict",
          "label": "Recommendation"
        },
        {
          "id": "repairAnnual",
          "label": "Annual cost if you repair"
        },
        {
          "id": "newAnnual",
          "label": "Annual cost if you replace"
        },
        {
          "id": "ruleOfThumb",
          "label": "Repair as % of replacement (50% rule)"
        },
        {
          "id": "remaining",
          "label": "Remaining life if repaired (years)"
        },
        {
          "id": "energySavings",
          "label": "Lifetime energy savings from a new unit"
        }
      ]
    },
    {
      "slug": "student-loan-payoff",
      "url": "https://www.revenuelab.fyi/toolbox/student-loan-payoff",
      "title": "Student Loan Payoff Calculator",
      "category": "financial",
      "summary": "Payoff date, total interest, and the effect of extra payments.",
      "formula": "Amortize the balance at the monthly rate, applying any extra payment to principal.",
      "inputs": [
        {
          "id": "balance",
          "label": "Loan balance",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Interest rate",
          "kind": "number"
        },
        {
          "id": "term",
          "label": "Standard term",
          "kind": "number"
        },
        {
          "id": "extra",
          "label": "Extra monthly payment",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "years",
          "label": "Years to payoff"
        },
        {
          "id": "saved",
          "label": "Interest saved by paying extra"
        },
        {
          "id": "interest",
          "label": "Total interest paid"
        },
        {
          "id": "payment",
          "label": "Monthly payment"
        },
        {
          "id": "monthsSaved",
          "label": "Months shaved off"
        },
        {
          "id": "months",
          "label": "Total months"
        }
      ]
    },
    {
      "slug": "student-loan-refinance",
      "url": "https://www.revenuelab.fyi/toolbox/student-loan-refinance",
      "title": "Student Loan Refinance Calculator",
      "category": "financial",
      "summary": "Savings from refinancing, and what federal protections you give up.",
      "formula": "Savings = Old total payments − new total payments.",
      "inputs": [
        {
          "id": "balance",
          "label": "Balance to refinance",
          "kind": "number"
        },
        {
          "id": "oldRate",
          "label": "Current rate",
          "kind": "number"
        },
        {
          "id": "oldYears",
          "label": "Years remaining",
          "kind": "number"
        },
        {
          "id": "newRate",
          "label": "New rate",
          "kind": "number"
        },
        {
          "id": "newYears",
          "label": "New term",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "saved",
          "label": "Total savings from refinancing"
        },
        {
          "id": "newP",
          "label": "New monthly payment"
        },
        {
          "id": "oldP",
          "label": "Current monthly payment"
        },
        {
          "id": "diff",
          "label": "Monthly payment change"
        },
        {
          "id": "newInterest",
          "label": "Interest on the new loan"
        },
        {
          "id": "oldInterest",
          "label": "Interest on the current loan"
        }
      ]
    },
    {
      "slug": "college-savings-529",
      "url": "https://www.revenuelab.fyi/toolbox/college-savings-529",
      "title": "529 College Savings Calculator",
      "category": "financial",
      "summary": "Monthly contribution needed to cover future tuition.",
      "formula": "Future cost = Current cost × (1 + education inflation)^years; solve for the monthly contribution.",
      "inputs": [
        {
          "id": "currentCost",
          "label": "Annual cost today",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years until enrollment",
          "kind": "number"
        },
        {
          "id": "duration",
          "label": "Years of school",
          "kind": "number"
        },
        {
          "id": "inflation",
          "label": "Education inflation",
          "kind": "number"
        },
        {
          "id": "coverage",
          "label": "Share you plan to cover",
          "kind": "number"
        },
        {
          "id": "saved",
          "label": "Already saved",
          "kind": "number"
        },
        {
          "id": "returnRate",
          "label": "Investment return",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthly",
          "label": "Monthly contribution needed"
        },
        {
          "id": "target",
          "label": "Savings target"
        },
        {
          "id": "firstYear",
          "label": "Projected first-year cost"
        },
        {
          "id": "fvSaved",
          "label": "Current savings grown to enrollment"
        },
        {
          "id": "need",
          "label": "Gap to fund"
        },
        {
          "id": "totalContrib",
          "label": "Total you will contribute"
        }
      ]
    },
    {
      "slug": "gpa-weighted",
      "url": "https://www.revenuelab.fyi/toolbox/gpa-weighted",
      "title": "Weighted GPA Calculator",
      "category": "other",
      "summary": "GPA across regular, honors, and AP coursework.",
      "formula": "GPA = Σ(grade points × credits) ÷ Σ credits, with course-level bonuses.",
      "inputs": [
        {
          "id": "regularCredits",
          "label": "Regular course credits",
          "kind": "number"
        },
        {
          "id": "regularGpa",
          "label": "Average grade in regular courses (4.0 scale)",
          "kind": "number"
        },
        {
          "id": "honorsCredits",
          "label": "Honors credits",
          "kind": "number"
        },
        {
          "id": "honorsGpa",
          "label": "Average grade in honors",
          "kind": "number"
        },
        {
          "id": "apCredits",
          "label": "AP / IB credits",
          "kind": "number"
        },
        {
          "id": "apGpa",
          "label": "Average grade in AP / IB",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "weighted",
          "label": "Weighted GPA"
        },
        {
          "id": "unweighted",
          "label": "Unweighted GPA"
        },
        {
          "id": "bonus",
          "label": "Boost from course rigor"
        },
        {
          "id": "credits",
          "label": "Total credits"
        },
        {
          "id": "points",
          "label": "Total quality points"
        },
        {
          "id": "rigorPct",
          "label": "Share of credits in honors/AP"
        }
      ]
    },
    {
      "slug": "grade-needed",
      "url": "https://www.revenuelab.fyi/toolbox/grade-needed",
      "title": "Final Grade Calculator",
      "category": "other",
      "summary": "The score you need on the final to hit your target grade.",
      "formula": "Needed = (Target − current × (1 − weight)) ÷ weight.",
      "inputs": [
        {
          "id": "current",
          "label": "Current grade",
          "kind": "number"
        },
        {
          "id": "target",
          "label": "Target final grade",
          "kind": "number"
        },
        {
          "id": "weight",
          "label": "Final exam weight",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "needed",
          "label": "Score needed on the final"
        },
        {
          "id": "possible",
          "label": "Verdict"
        },
        {
          "id": "maxGrade",
          "label": "Best possible course grade"
        },
        {
          "id": "minGrade",
          "label": "Grade if you score zero"
        },
        {
          "id": "passNeeded",
          "label": "Score needed to finish at 60%"
        },
        {
          "id": "cushion",
          "label": "Points of cushion above the requirement"
        }
      ]
    },
    {
      "slug": "salary-negotiation",
      "url": "https://www.revenuelab.fyi/toolbox/salary-negotiation",
      "title": "Salary Negotiation Calculator",
      "category": "financial",
      "summary": "Lifetime value of negotiating a higher starting salary.",
      "formula": "Compare compounded earnings at each starting salary over your remaining career.",
      "inputs": [
        {
          "id": "offer",
          "label": "Current offer",
          "kind": "number"
        },
        {
          "id": "counter",
          "label": "Your counter",
          "kind": "number"
        },
        {
          "id": "raise",
          "label": "Average annual raise",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years until retirement",
          "kind": "number"
        },
        {
          "id": "bonusPct",
          "label": "Bonus target",
          "kind": "number"
        },
        {
          "id": "matchPct",
          "label": "401(k) match",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "lifetime",
          "label": "Lifetime value of the negotiation"
        },
        {
          "id": "year1",
          "label": "First-year gain including bonus and match"
        },
        {
          "id": "gap",
          "label": "Base salary difference"
        },
        {
          "id": "perPaycheck",
          "label": "Extra per biweekly paycheck after tax"
        },
        {
          "id": "totalCounter",
          "label": "Career earnings at your counter"
        },
        {
          "id": "totalOffer",
          "label": "Career earnings at the original offer"
        }
      ]
    },
    {
      "slug": "job-offer-compare",
      "url": "https://www.revenuelab.fyi/toolbox/job-offer-compare",
      "title": "Job Offer Comparison Calculator",
      "category": "financial",
      "summary": "Total compensation of two offers, adjusted for cost of living.",
      "formula": "Total = Base + bonus + equity/year + match + benefits − commute, ÷ cost-of-living index.",
      "inputs": [
        {
          "id": "baseA",
          "label": "Offer A base",
          "kind": "number"
        },
        {
          "id": "bonusA",
          "label": "Offer A bonus",
          "kind": "number"
        },
        {
          "id": "equityA",
          "label": "Offer A annual equity",
          "kind": "number"
        },
        {
          "id": "benefitsA",
          "label": "Offer A benefits + match value",
          "kind": "number"
        },
        {
          "id": "colA",
          "label": "Offer A cost-of-living index (100 = US avg)",
          "kind": "number"
        },
        {
          "id": "baseB",
          "label": "Offer B base",
          "kind": "number"
        },
        {
          "id": "bonusB",
          "label": "Offer B bonus",
          "kind": "number"
        },
        {
          "id": "equityB",
          "label": "Offer B annual equity",
          "kind": "number"
        },
        {
          "id": "benefitsB",
          "label": "Offer B benefits + match value",
          "kind": "number"
        },
        {
          "id": "colB",
          "label": "Offer B cost-of-living index",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "winner",
          "label": "Better offer after cost of living"
        },
        {
          "id": "diff",
          "label": "Adjusted advantage"
        },
        {
          "id": "adjA",
          "label": "Offer A adjusted value"
        },
        {
          "id": "adjB",
          "label": "Offer B adjusted value"
        },
        {
          "id": "a",
          "label": "Offer A raw total comp"
        },
        {
          "id": "b",
          "label": "Offer B raw total comp"
        }
      ]
    },
    {
      "slug": "contractor-vs-employee",
      "url": "https://www.revenuelab.fyi/toolbox/contractor-vs-employee",
      "title": "Contractor vs Employee Calculator",
      "category": "financial",
      "summary": "The hourly rate a contractor needs to match a salary.",
      "formula": "Required rate = (Salary + benefits + SE tax) ÷ billable hours.",
      "inputs": [
        {
          "id": "salary",
          "label": "W-2 salary",
          "kind": "number"
        },
        {
          "id": "benefits",
          "label": "Employer benefits value",
          "kind": "number"
        },
        {
          "id": "ptoDays",
          "label": "Paid time off + holidays",
          "kind": "number"
        },
        {
          "id": "billableWeeks",
          "label": "Billable weeks per year",
          "kind": "number"
        },
        {
          "id": "hoursWeek",
          "label": "Billable hours per week",
          "kind": "number"
        },
        {
          "id": "overhead",
          "label": "Business overhead",
          "kind": "number"
        },
        {
          "id": "seTax",
          "label": "Extra self-employment tax",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rate",
          "label": "Hourly rate you need as a contractor"
        },
        {
          "id": "dayRate",
          "label": "Equivalent day rate"
        },
        {
          "id": "w2Rate",
          "label": "W-2 equivalent hourly"
        },
        {
          "id": "premium",
          "label": "Premium over W-2 rate"
        },
        {
          "id": "hours",
          "label": "Billable hours per year"
        },
        {
          "id": "annual",
          "label": "Annual billings at that rate"
        }
      ]
    },
    {
      "slug": "commute-cost",
      "url": "https://www.revenuelab.fyi/toolbox/commute-cost",
      "title": "Commute Cost Calculator",
      "category": "financial",
      "summary": "Annual dollars and hours your commute actually costs.",
      "formula": "Cost = Miles × cost per mile + parking + tolls; time cost = hours × hourly wage.",
      "inputs": [
        {
          "id": "miles",
          "label": "Round-trip miles",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Commute days per week",
          "kind": "number"
        },
        {
          "id": "weeks",
          "label": "Weeks per year",
          "kind": "number"
        },
        {
          "id": "mpg",
          "label": "Vehicle MPG",
          "kind": "number"
        },
        {
          "id": "gas",
          "label": "Gas price",
          "kind": "number"
        },
        {
          "id": "wearPerMile",
          "label": "Maintenance + depreciation",
          "kind": "number"
        },
        {
          "id": "parking",
          "label": "Parking + tolls per day",
          "kind": "number"
        },
        {
          "id": "minutes",
          "label": "Round-trip minutes",
          "kind": "number"
        },
        {
          "id": "wage",
          "label": "Your hourly wage",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "True annual cost including your time"
        },
        {
          "id": "cash",
          "label": "Out-of-pocket cost"
        },
        {
          "id": "hours",
          "label": "Hours per year commuting"
        },
        {
          "id": "timeValue",
          "label": "Value of that time"
        },
        {
          "id": "perDay",
          "label": "Cash cost per commute day"
        },
        {
          "id": "miles",
          "label": "Miles driven per year"
        }
      ]
    },
    {
      "slug": "cost-per-hire",
      "url": "https://www.revenuelab.fyi/toolbox/cost-per-hire",
      "title": "Cost Per Hire Calculator",
      "category": "financial",
      "summary": "Fully loaded recruiting cost per accepted offer.",
      "formula": "Cost per hire = (External + internal costs) ÷ hires made.",
      "inputs": [
        {
          "id": "hires",
          "label": "Hires made",
          "kind": "number"
        },
        {
          "id": "jobAds",
          "label": "Job ads and sourcing tools",
          "kind": "number"
        },
        {
          "id": "agencyPct",
          "label": "Agency fee",
          "kind": "number"
        },
        {
          "id": "agencyHires",
          "label": "Hires placed by agencies",
          "kind": "number"
        },
        {
          "id": "avgSalary",
          "label": "Average starting salary",
          "kind": "number"
        },
        {
          "id": "recruiterCost",
          "label": "Internal recruiting salaries",
          "kind": "number"
        },
        {
          "id": "interviewHours",
          "label": "Interview hours per hire",
          "kind": "number"
        },
        {
          "id": "interviewerCost",
          "label": "Loaded interviewer cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cph",
          "label": "Cost per hire"
        },
        {
          "id": "total",
          "label": "Total recruiting spend"
        },
        {
          "id": "agency",
          "label": "Agency fees"
        },
        {
          "id": "interview",
          "label": "Interview time cost"
        },
        {
          "id": "internal",
          "label": "Internal cost per hire"
        },
        {
          "id": "pctOfSalary",
          "label": "Cost per hire as % of salary"
        }
      ]
    },
    {
      "slug": "certification-roi",
      "url": "https://www.revenuelab.fyi/toolbox/certification-roi",
      "title": "Certification ROI Calculator",
      "category": "financial",
      "summary": "Payback on a certification, bootcamp, or degree.",
      "formula": "Payback = (Tuition + opportunity cost) ÷ annual salary increase.",
      "inputs": [
        {
          "id": "tuition",
          "label": "Tuition and materials",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Study hours required",
          "kind": "number"
        },
        {
          "id": "hourlyValue",
          "label": "Value of your time",
          "kind": "number"
        },
        {
          "id": "raise",
          "label": "Expected salary increase",
          "kind": "number"
        },
        {
          "id": "probability",
          "label": "Probability it lands the raise",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years the benefit lasts",
          "kind": "number"
        },
        {
          "id": "employerPct",
          "label": "Employer reimbursement",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "payback",
          "label": "Payback period (years)"
        },
        {
          "id": "lifetime",
          "label": "Net gain over the benefit period"
        },
        {
          "id": "roi",
          "label": "Return on investment"
        },
        {
          "id": "cost",
          "label": "True cost including your time"
        },
        {
          "id": "expected",
          "label": "Probability-weighted annual raise"
        },
        {
          "id": "oppCost",
          "label": "Opportunity cost of study time"
        }
      ]
    },
    {
      "slug": "pto-accrual",
      "url": "https://www.revenuelab.fyi/toolbox/pto-accrual",
      "title": "PTO Accrual Calculator",
      "category": "other",
      "summary": "Hours accrued per pay period and your balance at any date.",
      "formula": "Accrual per period = Annual hours ÷ pay periods per year.",
      "inputs": [
        {
          "id": "annualDays",
          "label": "Annual PTO",
          "kind": "number"
        },
        {
          "id": "hoursPerDay",
          "label": "Hours per day",
          "kind": "number"
        },
        {
          "id": "frequency",
          "label": "Pay frequency",
          "kind": "select"
        },
        {
          "id": "current",
          "label": "Current balance",
          "kind": "number"
        },
        {
          "id": "periods",
          "label": "Pay periods from now",
          "kind": "number"
        },
        {
          "id": "used",
          "label": "Hours you plan to use",
          "kind": "number"
        },
        {
          "id": "cap",
          "label": "Accrual cap",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perPeriod",
          "label": "Hours accrued per pay period"
        },
        {
          "id": "projected",
          "label": "Projected balance (hours)"
        },
        {
          "id": "days",
          "label": "Projected balance in days"
        },
        {
          "id": "annualHours",
          "label": "Annual PTO hours"
        },
        {
          "id": "perHourWorked",
          "label": "PTO hours earned per hour worked"
        },
        {
          "id": "periodsToCap",
          "label": "Pay periods until you hit the cap"
        }
      ]
    },
    {
      "slug": "rental-cash-flow",
      "url": "https://www.revenuelab.fyi/toolbox/rental-cash-flow",
      "title": "Rental Property Cash Flow Calculator",
      "category": "financial",
      "summary": "Monthly cash flow after mortgage, vacancy, and reserves.",
      "formula": "Cash flow = Rent − (mortgage + taxes + insurance + HOA + vacancy + repairs + capex + management).",
      "inputs": [
        {
          "id": "rent",
          "label": "Monthly rent",
          "kind": "number"
        },
        {
          "id": "mortgage",
          "label": "Mortgage payment (P&I)",
          "kind": "number"
        },
        {
          "id": "taxes",
          "label": "Property taxes per month",
          "kind": "number"
        },
        {
          "id": "insurance",
          "label": "Insurance per month",
          "kind": "number"
        },
        {
          "id": "hoa",
          "label": "HOA per month",
          "kind": "number"
        },
        {
          "id": "vacancy",
          "label": "Vacancy reserve",
          "kind": "number"
        },
        {
          "id": "repairs",
          "label": "Repairs reserve",
          "kind": "number"
        },
        {
          "id": "capex",
          "label": "CapEx reserve",
          "kind": "number"
        },
        {
          "id": "management",
          "label": "Property management",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cash",
          "label": "Monthly cash flow"
        },
        {
          "id": "annual",
          "label": "Annual cash flow"
        },
        {
          "id": "noi",
          "label": "Annual net operating income"
        },
        {
          "id": "reserves",
          "label": "Monthly reserves set aside"
        },
        {
          "id": "expenseRatio",
          "label": "Operating expense ratio"
        },
        {
          "id": "dscr",
          "label": "Debt service coverage ratio"
        }
      ]
    },
    {
      "slug": "cash-on-cash-return",
      "url": "https://www.revenuelab.fyi/toolbox/cash-on-cash-return",
      "title": "Cash on Cash Return Calculator",
      "category": "financial",
      "summary": "Annual cash flow as a return on the money you actually put in.",
      "formula": "CoC = Annual pre-tax cash flow ÷ Total cash invested × 100.",
      "inputs": [
        {
          "id": "down",
          "label": "Down payment",
          "kind": "number"
        },
        {
          "id": "closing",
          "label": "Closing costs",
          "kind": "number"
        },
        {
          "id": "rehab",
          "label": "Rehab / make-ready",
          "kind": "number"
        },
        {
          "id": "monthlyCash",
          "label": "Monthly cash flow",
          "kind": "number"
        },
        {
          "id": "appreciation",
          "label": "Annual appreciation",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Property price",
          "kind": "number"
        },
        {
          "id": "principal",
          "label": "Annual principal paydown",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "coc",
          "label": "Cash-on-cash return"
        },
        {
          "id": "totalRoi",
          "label": "Total return incl. appreciation and paydown"
        },
        {
          "id": "annualCash",
          "label": "Annual cash flow"
        },
        {
          "id": "invested",
          "label": "Total cash invested"
        },
        {
          "id": "totalReturn",
          "label": "Total annual return in dollars"
        },
        {
          "id": "payback",
          "label": "Years to recover your cash"
        }
      ]
    },
    {
      "slug": "one-percent-rule",
      "url": "https://www.revenuelab.fyi/toolbox/one-percent-rule",
      "title": "1% Rule Calculator",
      "category": "financial",
      "summary": "Quick screen: does monthly rent hit 1% of the purchase price?",
      "formula": "Rent-to-price = Monthly rent ÷ Purchase price × 100.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "rehab",
          "label": "Rehab budget",
          "kind": "number"
        },
        {
          "id": "rent",
          "label": "Expected monthly rent",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ratio",
          "label": "Rent-to-price ratio"
        },
        {
          "id": "needed1",
          "label": "Rent needed to hit the 1% rule"
        },
        {
          "id": "needed2",
          "label": "Rent needed for the 2% rule"
        },
        {
          "id": "maxPrice",
          "label": "Max price that passes at this rent"
        },
        {
          "id": "grm",
          "label": "Gross rent multiplier"
        },
        {
          "id": "annualRent",
          "label": "Annual gross rent"
        }
      ]
    },
    {
      "slug": "brrrr",
      "url": "https://www.revenuelab.fyi/toolbox/brrrr",
      "title": "BRRRR Calculator",
      "category": "financial",
      "summary": "Cash left in the deal after buy, rehab, rent, refinance.",
      "formula": "Cash left = (Purchase + rehab + costs) − (ARV × LTV).",
      "inputs": [
        {
          "id": "purchase",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "rehab",
          "label": "Rehab cost",
          "kind": "number"
        },
        {
          "id": "holding",
          "label": "Holding + closing costs",
          "kind": "number"
        },
        {
          "id": "arv",
          "label": "After repair value",
          "kind": "number"
        },
        {
          "id": "ltv",
          "label": "Refinance LTV",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Refinance rate",
          "kind": "number"
        },
        {
          "id": "rent",
          "label": "Monthly rent",
          "kind": "number"
        },
        {
          "id": "expenses",
          "label": "Monthly operating expenses",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "left",
          "label": "Cash left in the deal"
        },
        {
          "id": "loan",
          "label": "Refinance loan amount"
        },
        {
          "id": "cash",
          "label": "Monthly cash flow after refi"
        },
        {
          "id": "equity",
          "label": "Equity retained"
        },
        {
          "id": "allIn",
          "label": "All-in cost"
        },
        {
          "id": "coc",
          "label": "Cash-on-cash on remaining cash"
        }
      ]
    },
    {
      "slug": "house-flip-profit",
      "url": "https://www.revenuelab.fyi/toolbox/house-flip-profit",
      "title": "House Flip Profit Calculator",
      "category": "financial",
      "summary": "Net profit, ROI, and maximum allowable offer on a flip.",
      "formula": "Profit = ARV − purchase − rehab − holding − selling costs; MAO = ARV × 70% − rehab.",
      "inputs": [
        {
          "id": "arv",
          "label": "After repair value",
          "kind": "number"
        },
        {
          "id": "purchase",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "rehab",
          "label": "Rehab budget",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Months to complete and sell",
          "kind": "number"
        },
        {
          "id": "holdingMonthly",
          "label": "Monthly holding costs",
          "kind": "number"
        },
        {
          "id": "sellingPct",
          "label": "Selling costs",
          "kind": "number"
        },
        {
          "id": "buyingCosts",
          "label": "Buying / closing costs",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "profit",
          "label": "Net profit"
        },
        {
          "id": "roi",
          "label": "Return on invested capital"
        },
        {
          "id": "annualized",
          "label": "Annualized ROI"
        },
        {
          "id": "mao",
          "label": "Maximum allowable offer (70% rule)"
        },
        {
          "id": "holding",
          "label": "Total holding costs"
        },
        {
          "id": "selling",
          "label": "Selling costs"
        }
      ]
    },
    {
      "slug": "pmi",
      "url": "https://www.revenuelab.fyi/toolbox/pmi",
      "title": "PMI Calculator",
      "category": "financial",
      "summary": "Monthly PMI cost and when you can drop it.",
      "formula": "PMI = Loan × annual PMI rate ÷ 12; drops when LTV reaches 80%.",
      "inputs": [
        {
          "id": "price",
          "label": "Home price",
          "kind": "number"
        },
        {
          "id": "down",
          "label": "Down payment",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Mortgage rate",
          "kind": "number"
        },
        {
          "id": "term",
          "label": "Term (years)",
          "kind": "number"
        },
        {
          "id": "pmiRate",
          "label": "Annual PMI rate",
          "kind": "number"
        },
        {
          "id": "appreciation",
          "label": "Annual home appreciation",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthlyPmi",
          "label": "Monthly PMI"
        },
        {
          "id": "years",
          "label": "Years until PMI can be removed"
        },
        {
          "id": "totalPmi",
          "label": "Total PMI you will pay"
        },
        {
          "id": "ltv",
          "label": "Starting loan-to-value"
        },
        {
          "id": "payment",
          "label": "Payment including PMI"
        },
        {
          "id": "months",
          "label": "Months of PMI"
        }
      ]
    },
    {
      "slug": "home-equity",
      "url": "https://www.revenuelab.fyi/toolbox/home-equity",
      "title": "Home Equity Calculator",
      "category": "financial",
      "summary": "Equity available, LTV, and how much you can borrow.",
      "formula": "Available = Value × max CLTV − Mortgage balance.",
      "inputs": [
        {
          "id": "value",
          "label": "Current home value",
          "kind": "number"
        },
        {
          "id": "balance",
          "label": "Mortgage balance",
          "kind": "number"
        },
        {
          "id": "second",
          "label": "Other liens / second mortgage",
          "kind": "number"
        },
        {
          "id": "cltv",
          "label": "Max combined LTV allowed",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "HELOC rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "available",
          "label": "Equity you can borrow"
        },
        {
          "id": "equity",
          "label": "Total equity"
        },
        {
          "id": "equityPct",
          "label": "Equity share of value"
        },
        {
          "id": "ltv",
          "label": "Current loan-to-value"
        },
        {
          "id": "interestOnly",
          "label": "Interest-only payment on the full draw"
        },
        {
          "id": "payment10",
          "label": "10-year amortizing payment"
        }
      ]
    },
    {
      "slug": "cash-out-refinance",
      "url": "https://www.revenuelab.fyi/toolbox/cash-out-refinance",
      "title": "Cash-Out Refinance Calculator",
      "category": "financial",
      "summary": "Cash you can pull, new payment, and lifetime interest change.",
      "formula": "Cash out = New loan − old balance − closing costs.",
      "inputs": [
        {
          "id": "value",
          "label": "Home value",
          "kind": "number"
        },
        {
          "id": "balance",
          "label": "Current balance",
          "kind": "number"
        },
        {
          "id": "oldRate",
          "label": "Current rate",
          "kind": "number"
        },
        {
          "id": "oldYearsLeft",
          "label": "Years remaining",
          "kind": "number"
        },
        {
          "id": "ltv",
          "label": "Max LTV on the new loan",
          "kind": "number"
        },
        {
          "id": "newRate",
          "label": "New rate",
          "kind": "number"
        },
        {
          "id": "newTerm",
          "label": "New term (years)",
          "kind": "number"
        },
        {
          "id": "costs",
          "label": "Closing costs",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cash",
          "label": "Cash you would receive"
        },
        {
          "id": "newP",
          "label": "New monthly payment"
        },
        {
          "id": "oldP",
          "label": "Current monthly payment"
        },
        {
          "id": "diff",
          "label": "Payment increase"
        },
        {
          "id": "newLoan",
          "label": "New loan amount"
        },
        {
          "id": "interestDelta",
          "label": "Extra lifetime interest"
        }
      ]
    },
    {
      "slug": "rent-vs-buy",
      "url": "https://www.revenuelab.fyi/toolbox/rent-vs-buy",
      "title": "Rent vs Buy Calculator",
      "category": "financial",
      "summary": "Which is cheaper over your actual holding period.",
      "formula": "Compare total cost of owning (net of equity) with total rent paid plus invested down payment.",
      "inputs": [
        {
          "id": "price",
          "label": "Home price",
          "kind": "number"
        },
        {
          "id": "downPct",
          "label": "Down payment",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Mortgage rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years you will stay",
          "kind": "number"
        },
        {
          "id": "rent",
          "label": "Monthly rent",
          "kind": "number"
        },
        {
          "id": "rentGrowth",
          "label": "Annual rent increase",
          "kind": "number"
        },
        {
          "id": "appreciation",
          "label": "Home appreciation",
          "kind": "number"
        },
        {
          "id": "ownCosts",
          "label": "Monthly taxes, insurance, upkeep",
          "kind": "number"
        },
        {
          "id": "invReturn",
          "label": "Return on invested down payment",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "diff",
          "label": "Buying saves this much vs renting"
        },
        {
          "id": "ownNet",
          "label": "Net cost of owning"
        },
        {
          "id": "rentNet",
          "label": "Net cost of renting"
        },
        {
          "id": "equity",
          "label": "Home equity at the end"
        },
        {
          "id": "payment",
          "label": "Mortgage payment (P&I)"
        },
        {
          "id": "rentTotal",
          "label": "Total rent paid"
        }
      ]
    },
    {
      "slug": "airbnb-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/airbnb-revenue",
      "title": "Airbnb Revenue Calculator",
      "category": "financial",
      "summary": "Nightly rate, occupancy, and net profit after fees and cleaning.",
      "formula": "Net = (Nights × rate) − platform fee − cleaning − operating costs − mortgage.",
      "inputs": [
        {
          "id": "rate",
          "label": "Average nightly rate",
          "kind": "number"
        },
        {
          "id": "occupancy",
          "label": "Occupancy",
          "kind": "number"
        },
        {
          "id": "cleaningFee",
          "label": "Cleaning fee charged per stay",
          "kind": "number"
        },
        {
          "id": "cleaningCost",
          "label": "Cleaning cost per stay",
          "kind": "number"
        },
        {
          "id": "avgStay",
          "label": "Average nights per stay",
          "kind": "number"
        },
        {
          "id": "platformFee",
          "label": "Platform fee",
          "kind": "number"
        },
        {
          "id": "opex",
          "label": "Monthly utilities, supplies, internet",
          "kind": "number"
        },
        {
          "id": "mortgage",
          "label": "Monthly mortgage + taxes + insurance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Monthly net profit"
        },
        {
          "id": "gross",
          "label": "Monthly gross bookings"
        },
        {
          "id": "annual",
          "label": "Annual net profit"
        },
        {
          "id": "nights",
          "label": "Booked nights per month"
        },
        {
          "id": "stays",
          "label": "Stays per month"
        },
        {
          "id": "revpar",
          "label": "Revenue per available night"
        }
      ]
    },
    {
      "slug": "property-tax-proration",
      "url": "https://www.revenuelab.fyi/toolbox/property-tax-proration",
      "title": "Property Tax Proration Calculator",
      "category": "financial",
      "summary": "Split annual property taxes between buyer and seller at closing.",
      "formula": "Seller share = Annual tax ÷ 365 × days owned in the tax year.",
      "inputs": [
        {
          "id": "annual",
          "label": "Annual property tax",
          "kind": "number"
        },
        {
          "id": "daysOwned",
          "label": "Days the seller owned in the tax year",
          "kind": "number"
        },
        {
          "id": "paid",
          "label": "Taxes already paid by the seller",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "seller",
          "label": "Seller's share of taxes"
        },
        {
          "id": "buyer",
          "label": "Buyer's share"
        },
        {
          "id": "credit",
          "label": "Credit to seller at closing (negative = debit)"
        },
        {
          "id": "daily",
          "label": "Daily tax rate"
        },
        {
          "id": "buyerDays",
          "label": "Days owned by buyer"
        },
        {
          "id": "monthly",
          "label": "Monthly escrow amount"
        }
      ]
    },
    {
      "slug": "landlord-rent-increase",
      "url": "https://www.revenuelab.fyi/toolbox/landlord-rent-increase",
      "title": "Rent Increase Calculator",
      "category": "financial",
      "summary": "New rent, annual impact, and turnover break-even.",
      "formula": "New rent = Current × (1 + increase%); break-even = added annual rent ÷ monthly rent.",
      "inputs": [
        {
          "id": "rent",
          "label": "Current monthly rent",
          "kind": "number"
        },
        {
          "id": "increase",
          "label": "Increase",
          "kind": "number"
        },
        {
          "id": "turnoverCost",
          "label": "Turnover cost if they leave",
          "kind": "number"
        },
        {
          "id": "vacancyMonths",
          "label": "Vacancy if they leave (months)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "newRent",
          "label": "New monthly rent"
        },
        {
          "id": "monthlyAdd",
          "label": "Extra rent per month"
        },
        {
          "id": "added",
          "label": "Extra rent per year"
        },
        {
          "id": "turnoverLoss",
          "label": "Cost if the tenant leaves"
        },
        {
          "id": "yearsToRecover",
          "label": "Years of the increase to cover a turnover"
        },
        {
          "id": "netFirstYear",
          "label": "Net first-year gain if they leave"
        }
      ]
    },
    {
      "slug": "real-estate-commission",
      "url": "https://www.revenuelab.fyi/toolbox/real-estate-commission",
      "title": "Real Estate Commission Calculator",
      "category": "financial",
      "summary": "Commission split between brokerages and agents, and seller net.",
      "formula": "Commission = Sale price × rate; net = price − commission − other costs − payoff.",
      "inputs": [
        {
          "id": "price",
          "label": "Sale price",
          "kind": "number"
        },
        {
          "id": "listSide",
          "label": "Listing side commission",
          "kind": "number"
        },
        {
          "id": "buySide",
          "label": "Buyer side commission",
          "kind": "number"
        },
        {
          "id": "split",
          "label": "Agent's split with brokerage",
          "kind": "number"
        },
        {
          "id": "otherCosts",
          "label": "Other seller closing costs",
          "kind": "number"
        },
        {
          "id": "payoff",
          "label": "Mortgage payoff",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total commission"
        },
        {
          "id": "sellerNet",
          "label": "Seller net proceeds"
        },
        {
          "id": "listing",
          "label": "Listing side"
        },
        {
          "id": "buying",
          "label": "Buyer side"
        },
        {
          "id": "agentTakeHome",
          "label": "Listing agent's share after split"
        },
        {
          "id": "pct",
          "label": "Total commission rate"
        }
      ]
    },
    {
      "slug": "life-insurance-needs",
      "url": "https://www.revenuelab.fyi/toolbox/life-insurance-needs",
      "title": "Life Insurance Needs Calculator",
      "category": "financial",
      "summary": "How much term coverage your family actually needs.",
      "formula": "Coverage = Debt + income × years + mortgage + education − savings − existing policies.",
      "inputs": [
        {
          "id": "income",
          "label": "Annual income to replace",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years of income replacement",
          "kind": "number"
        },
        {
          "id": "mortgage",
          "label": "Mortgage balance",
          "kind": "number"
        },
        {
          "id": "debt",
          "label": "Other debts",
          "kind": "number"
        },
        {
          "id": "education",
          "label": "Future education costs",
          "kind": "number"
        },
        {
          "id": "final",
          "label": "Final expenses",
          "kind": "number"
        },
        {
          "id": "savings",
          "label": "Savings and investments",
          "kind": "number"
        },
        {
          "id": "existing",
          "label": "Existing coverage",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "gap",
          "label": "Coverage you still need"
        },
        {
          "id": "rounded",
          "label": "Rounded policy size to quote"
        },
        {
          "id": "need",
          "label": "Total need before offsets"
        },
        {
          "id": "assets",
          "label": "Assets and coverage you already have"
        },
        {
          "id": "incomePortion",
          "label": "Income replacement portion"
        },
        {
          "id": "multiple",
          "label": "Multiple of your income"
        }
      ]
    },
    {
      "slug": "term-vs-whole-life",
      "url": "https://www.revenuelab.fyi/toolbox/term-vs-whole-life",
      "title": "Term vs Whole Life Calculator",
      "category": "financial",
      "summary": "Buy term and invest the difference, compared head to head.",
      "formula": "Compare whole life cash value with the invested premium difference over the same period.",
      "inputs": [
        {
          "id": "termPremium",
          "label": "Annual term premium",
          "kind": "number"
        },
        {
          "id": "wholePremium",
          "label": "Annual whole life premium",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years to compare",
          "kind": "number"
        },
        {
          "id": "invReturn",
          "label": "Investment return",
          "kind": "number"
        },
        {
          "id": "cashValueReturn",
          "label": "Whole life cash value growth",
          "kind": "number"
        },
        {
          "id": "cashValuePct",
          "label": "Premium credited to cash value",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "advantage",
          "label": "Term + invest advantage"
        },
        {
          "id": "invested",
          "label": "Value of invested difference"
        },
        {
          "id": "cash",
          "label": "Whole life cash value"
        },
        {
          "id": "diff",
          "label": "Annual premium difference"
        },
        {
          "id": "totalTerm",
          "label": "Total term premiums paid"
        },
        {
          "id": "totalWhole",
          "label": "Total whole life premiums paid"
        }
      ]
    },
    {
      "slug": "disability-insurance-needs",
      "url": "https://www.revenuelab.fyi/toolbox/disability-insurance-needs",
      "title": "Disability Insurance Calculator",
      "category": "financial",
      "summary": "Monthly benefit needed to cover expenses if you cannot work.",
      "formula": "Gap = Monthly expenses − (employer benefit + other income).",
      "inputs": [
        {
          "id": "income",
          "label": "Gross monthly income",
          "kind": "number"
        },
        {
          "id": "expenses",
          "label": "Essential monthly expenses",
          "kind": "number"
        },
        {
          "id": "employer",
          "label": "Employer benefit",
          "kind": "number"
        },
        {
          "id": "employerTaxable",
          "label": "Employer benefit taxed?",
          "kind": "select"
        },
        {
          "id": "taxRate",
          "label": "Effective tax rate",
          "kind": "number"
        },
        {
          "id": "otherIncome",
          "label": "Other monthly income",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "gap",
          "label": "Monthly benefit gap to insure"
        },
        {
          "id": "net",
          "label": "After-tax employer benefit"
        },
        {
          "id": "annualGap",
          "label": "Annual shortfall"
        },
        {
          "id": "coverageRatio",
          "label": "Expenses covered today"
        },
        {
          "id": "shortfallPct",
          "label": "Share of expenses uncovered"
        },
        {
          "id": "gross",
          "label": "Gross employer benefit"
        }
      ]
    },
    {
      "slug": "budget-50-30-20",
      "url": "https://www.revenuelab.fyi/toolbox/budget-50-30-20",
      "title": "50/30/20 Budget Calculator",
      "category": "financial",
      "summary": "Split take-home pay into needs, wants, and savings.",
      "formula": "Needs = 50%, wants = 30%, savings = 20% of take-home pay.",
      "inputs": [
        {
          "id": "takeHome",
          "label": "Monthly take-home pay",
          "kind": "number"
        },
        {
          "id": "needs",
          "label": "Actual spending on needs",
          "kind": "number"
        },
        {
          "id": "wants",
          "label": "Actual spending on wants",
          "kind": "number"
        },
        {
          "id": "savings",
          "label": "Actual savings and debt payoff",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "needsTarget",
          "label": "Needs budget (50%)"
        },
        {
          "id": "wantsTarget",
          "label": "Wants budget (30%)"
        },
        {
          "id": "savingsTarget",
          "label": "Savings budget (20%)"
        },
        {
          "id": "needsPct",
          "label": "Your actual needs share"
        },
        {
          "id": "savingsPct",
          "label": "Your actual savings rate"
        },
        {
          "id": "unallocated",
          "label": "Unallocated each month"
        }
      ]
    },
    {
      "slug": "sinking-fund",
      "url": "https://www.revenuelab.fyi/toolbox/sinking-fund",
      "title": "Sinking Fund Calculator",
      "category": "financial",
      "summary": "Monthly set-aside for a known future expense.",
      "formula": "Monthly = (Goal − saved) ÷ months remaining.",
      "inputs": [
        {
          "id": "goal",
          "label": "Total needed",
          "kind": "number"
        },
        {
          "id": "saved",
          "label": "Already saved",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Months until you need it",
          "kind": "number"
        },
        {
          "id": "apy",
          "label": "Savings APY",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthly",
          "label": "Save this much per month"
        },
        {
          "id": "weekly",
          "label": "Weekly equivalent"
        },
        {
          "id": "perPaycheck",
          "label": "Per biweekly paycheck"
        },
        {
          "id": "gap",
          "label": "Amount still needed"
        },
        {
          "id": "total",
          "label": "Total you will contribute"
        },
        {
          "id": "interest",
          "label": "Interest earned along the way"
        }
      ]
    },
    {
      "slug": "savings-rate-fi",
      "url": "https://www.revenuelab.fyi/toolbox/savings-rate-fi",
      "title": "Savings Rate to Retirement Calculator",
      "category": "financial",
      "summary": "How your savings rate maps to years until you can stop working.",
      "formula": "Years = time for portfolio to reach annual expenses ÷ safe withdrawal rate.",
      "inputs": [
        {
          "id": "income",
          "label": "Annual take-home income",
          "kind": "number"
        },
        {
          "id": "spending",
          "label": "Annual spending",
          "kind": "number"
        },
        {
          "id": "portfolio",
          "label": "Current portfolio",
          "kind": "number"
        },
        {
          "id": "returnRate",
          "label": "Real return after inflation",
          "kind": "number"
        },
        {
          "id": "swr",
          "label": "Safe withdrawal rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "years",
          "label": "Years to financial independence"
        },
        {
          "id": "rate",
          "label": "Your savings rate"
        },
        {
          "id": "target",
          "label": "Portfolio target"
        },
        {
          "id": "save",
          "label": "Saved per year"
        },
        {
          "id": "monthly",
          "label": "Saved per month"
        },
        {
          "id": "gap",
          "label": "Gap to target"
        }
      ]
    },
    {
      "slug": "health-insurance-cost",
      "url": "https://www.revenuelab.fyi/toolbox/health-insurance-cost",
      "title": "Health Plan Comparison Calculator",
      "category": "financial",
      "summary": "Total annual cost of two plans at your expected usage.",
      "formula": "Total = Premiums + min(expected costs, deductible) + coinsurance, capped at out-of-pocket max.",
      "inputs": [
        {
          "id": "premiumA",
          "label": "Plan A monthly premium",
          "kind": "number"
        },
        {
          "id": "deductibleA",
          "label": "Plan A deductible",
          "kind": "number"
        },
        {
          "id": "coinsA",
          "label": "Plan A coinsurance",
          "kind": "number"
        },
        {
          "id": "oopA",
          "label": "Plan A out-of-pocket max",
          "kind": "number"
        },
        {
          "id": "premiumB",
          "label": "Plan B monthly premium",
          "kind": "number"
        },
        {
          "id": "deductibleB",
          "label": "Plan B deductible",
          "kind": "number"
        },
        {
          "id": "coinsB",
          "label": "Plan B coinsurance",
          "kind": "number"
        },
        {
          "id": "oopB",
          "label": "Plan B out-of-pocket max",
          "kind": "number"
        },
        {
          "id": "expected",
          "label": "Expected annual medical costs",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cheaper",
          "label": "Cheaper plan at this usage"
        },
        {
          "id": "savings",
          "label": "Annual savings"
        },
        {
          "id": "a",
          "label": "Plan A total annual cost"
        },
        {
          "id": "b",
          "label": "Plan B total annual cost"
        },
        {
          "id": "worstA",
          "label": "Plan A worst case"
        },
        {
          "id": "worstB",
          "label": "Plan B worst case"
        }
      ]
    },
    {
      "slug": "hsa-contribution",
      "url": "https://www.revenuelab.fyi/toolbox/hsa-contribution",
      "title": "HSA Contribution Calculator",
      "category": "financial",
      "summary": "Max contribution, tax savings, and long-term growth.",
      "formula": "Tax savings = Contribution × (marginal rate + FICA if payroll-deducted).",
      "inputs": [
        {
          "id": "coverage",
          "label": "Coverage type",
          "kind": "select"
        },
        {
          "id": "age55",
          "label": "Age 55 or older?",
          "kind": "select"
        },
        {
          "id": "contribution",
          "label": "Your planned annual contribution",
          "kind": "number"
        },
        {
          "id": "employer",
          "label": "Employer contribution",
          "kind": "number"
        },
        {
          "id": "taxRate",
          "label": "Marginal tax rate",
          "kind": "number"
        },
        {
          "id": "payroll",
          "label": "Contributed via payroll?",
          "kind": "select"
        },
        {
          "id": "years",
          "label": "Years invested",
          "kind": "number"
        },
        {
          "id": "returnRate",
          "label": "Investment return",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "limit",
          "label": "2026 contribution limit"
        },
        {
          "id": "taxSavings",
          "label": "Tax saved this year"
        },
        {
          "id": "room",
          "label": "Remaining contribution room"
        },
        {
          "id": "total",
          "label": "Total going in this year"
        },
        {
          "id": "fv",
          "label": "Balance after your investing horizon"
        },
        {
          "id": "contributed",
          "label": "Total contributed over that period"
        }
      ]
    },
    {
      "slug": "car-insurance-deductible",
      "url": "https://www.revenuelab.fyi/toolbox/car-insurance-deductible",
      "title": "Insurance Deductible Calculator",
      "category": "financial",
      "summary": "Is the higher deductible worth the premium savings?",
      "formula": "Break-even years = Extra deductible ÷ annual premium savings.",
      "inputs": [
        {
          "id": "lowDed",
          "label": "Lower deductible",
          "kind": "number"
        },
        {
          "id": "lowPrem",
          "label": "Premium at the lower deductible",
          "kind": "number"
        },
        {
          "id": "highDed",
          "label": "Higher deductible",
          "kind": "number"
        },
        {
          "id": "highPrem",
          "label": "Premium at the higher deductible",
          "kind": "number"
        },
        {
          "id": "claimFreq",
          "label": "Expected claims per decade",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakEven",
          "label": "Claim-free years to break even"
        },
        {
          "id": "savings",
          "label": "Annual premium savings"
        },
        {
          "id": "extra",
          "label": "Extra out of pocket per claim"
        },
        {
          "id": "tenYearSavings",
          "label": "Expected 10-year net savings"
        },
        {
          "id": "expectedCost",
          "label": "Expected annual net cost (negative = you win)"
        },
        {
          "id": "savingsPct",
          "label": "Premium reduction"
        }
      ]
    },
    {
      "slug": "days-between-dates",
      "url": "https://www.revenuelab.fyi/toolbox/days-between-dates",
      "title": "Days Between Dates Calculator",
      "category": "other",
      "summary": "Exact days, weeks, weekdays, and months between two dates.",
      "formula": "Days = (End − Start) ÷ 86,400,000 milliseconds.",
      "inputs": [
        {
          "id": "start",
          "label": "Start date",
          "kind": "date"
        },
        {
          "id": "end",
          "label": "End date",
          "kind": "date"
        }
      ],
      "outputs": [
        {
          "id": "days",
          "label": "Total days"
        },
        {
          "id": "business",
          "label": "Business days"
        },
        {
          "id": "weeks",
          "label": "Weeks"
        },
        {
          "id": "weekends",
          "label": "Weekend days"
        },
        {
          "id": "months",
          "label": "Approximate months"
        },
        {
          "id": "years",
          "label": "Approximate years"
        }
      ]
    },
    {
      "slug": "add-days-to-date",
      "url": "https://www.revenuelab.fyi/toolbox/add-days-to-date",
      "title": "Date Add / Subtract Calculator",
      "category": "other",
      "summary": "Find the date a number of days, weeks, or months away.",
      "formula": "Result = Start date + days + weeks × 7 + months + years.",
      "inputs": [
        {
          "id": "start",
          "label": "Start date",
          "kind": "date"
        },
        {
          "id": "days",
          "label": "Days to add",
          "kind": "number"
        },
        {
          "id": "weeks",
          "label": "Weeks to add",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Months to add",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years to add",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "result",
          "label": "Resulting date"
        },
        {
          "id": "isoDate",
          "label": "ISO format"
        },
        {
          "id": "weekday",
          "label": "Day of the week"
        },
        {
          "id": "totalDays",
          "label": "Total days shifted"
        },
        {
          "id": "weeksOut",
          "label": "Weeks shifted"
        },
        {
          "id": "dayOfYear",
          "label": "Day of the year"
        }
      ]
    },
    {
      "slug": "business-days",
      "url": "https://www.revenuelab.fyi/toolbox/business-days",
      "title": "Business Days Calculator",
      "category": "other",
      "summary": "Count working days between dates, excluding weekends and holidays.",
      "formula": "Business days = Total days − weekends − holidays.",
      "inputs": [
        {
          "id": "start",
          "label": "Start date",
          "kind": "date"
        },
        {
          "id": "end",
          "label": "End date",
          "kind": "date"
        },
        {
          "id": "holidays",
          "label": "Holidays in the range",
          "kind": "number"
        },
        {
          "id": "hoursPerDay",
          "label": "Working hours per day",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Working days"
        },
        {
          "id": "hours",
          "label": "Working hours"
        },
        {
          "id": "business",
          "label": "Weekdays before holidays"
        },
        {
          "id": "weekend",
          "label": "Weekend days"
        },
        {
          "id": "days",
          "label": "Calendar days"
        },
        {
          "id": "weeks",
          "label": "Working weeks"
        }
      ]
    },
    {
      "slug": "deadline-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/deadline-calculator",
      "title": "Deadline Calculator",
      "category": "other",
      "summary": "Back into a start date from a due date and effort estimate.",
      "formula": "Start = Due date − (effort hours ÷ daily capacity × buffer) working days.",
      "inputs": [
        {
          "id": "due",
          "label": "Due date",
          "kind": "date"
        },
        {
          "id": "effort",
          "label": "Total effort",
          "kind": "number"
        },
        {
          "id": "capacity",
          "label": "Hours available per working day",
          "kind": "number"
        },
        {
          "id": "buffer",
          "label": "Buffer",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "start",
          "label": "Latest safe start date"
        },
        {
          "id": "workDays",
          "label": "Working days required"
        },
        {
          "id": "calendarDays",
          "label": "Calendar days required"
        },
        {
          "id": "totalHours",
          "label": "Total hours with buffer"
        },
        {
          "id": "bufferHours",
          "label": "Buffer hours"
        },
        {
          "id": "weeks",
          "label": "Working weeks"
        }
      ]
    },
    {
      "slug": "age-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/age-calculator",
      "title": "Age Calculator",
      "category": "other",
      "summary": "Exact age in years, months, days, hours, and next birthday.",
      "formula": "Age = whole years, months, and days elapsed since the birth date.",
      "inputs": [
        {
          "id": "birth",
          "label": "Date of birth",
          "kind": "date"
        },
        {
          "id": "asOf",
          "label": "As of date",
          "kind": "date"
        }
      ],
      "outputs": [
        {
          "id": "age",
          "label": "Exact age"
        },
        {
          "id": "years",
          "label": "Age in whole years"
        },
        {
          "id": "nextBirthday",
          "label": "Days until next birthday"
        },
        {
          "id": "totalDays",
          "label": "Total days lived"
        },
        {
          "id": "weeks",
          "label": "Total weeks lived"
        },
        {
          "id": "totalHours",
          "label": "Total hours lived"
        }
      ]
    },
    {
      "slug": "retirement-date",
      "url": "https://www.revenuelab.fyi/toolbox/retirement-date",
      "title": "Retirement Date Calculator",
      "category": "other",
      "summary": "The date you hit your target retirement age.",
      "formula": "Retirement date = Birth date + target age; working days remaining excludes weekends and vacation.",
      "inputs": [
        {
          "id": "birth",
          "label": "Date of birth",
          "kind": "date"
        },
        {
          "id": "age",
          "label": "Target retirement age",
          "kind": "number"
        },
        {
          "id": "vacationDays",
          "label": "Vacation days per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "date",
          "label": "Retirement date"
        },
        {
          "id": "years",
          "label": "Years to go"
        },
        {
          "id": "workDays",
          "label": "Working days remaining"
        },
        {
          "id": "months",
          "label": "Months to go"
        },
        {
          "id": "days",
          "label": "Calendar days to go"
        },
        {
          "id": "ssaFull",
          "label": "Full Social Security retirement date (age 67)"
        }
      ]
    },
    {
      "slug": "timecard-weekly",
      "url": "https://www.revenuelab.fyi/toolbox/timecard-weekly",
      "title": "Weekly Timecard Calculator",
      "category": "other",
      "summary": "Weekly hours, overtime, and gross pay from daily totals.",
      "formula": "Gross = Regular hours × rate + overtime hours × rate × multiplier.",
      "inputs": [
        {
          "id": "mon",
          "label": "Monday hours",
          "kind": "number"
        },
        {
          "id": "tue",
          "label": "Tuesday hours",
          "kind": "number"
        },
        {
          "id": "wed",
          "label": "Wednesday hours",
          "kind": "number"
        },
        {
          "id": "thu",
          "label": "Thursday hours",
          "kind": "number"
        },
        {
          "id": "fri",
          "label": "Friday hours",
          "kind": "number"
        },
        {
          "id": "sat",
          "label": "Saturday hours",
          "kind": "number"
        },
        {
          "id": "sun",
          "label": "Sunday hours",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Hourly rate",
          "kind": "number"
        },
        {
          "id": "otMult",
          "label": "Overtime multiplier",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "gross",
          "label": "Gross weekly pay"
        },
        {
          "id": "total",
          "label": "Total hours"
        },
        {
          "id": "reg",
          "label": "Regular hours"
        },
        {
          "id": "ot",
          "label": "Overtime hours"
        },
        {
          "id": "otPay",
          "label": "Overtime pay"
        },
        {
          "id": "avgDay",
          "label": "Average hours per day"
        }
      ]
    },
    {
      "slug": "countdown-days",
      "url": "https://www.revenuelab.fyi/toolbox/countdown-days",
      "title": "Countdown Calculator",
      "category": "other",
      "summary": "Days, weeks, and weekends left until an event.",
      "formula": "Remaining = Target date − today, broken into weeks, weekends, and pay periods.",
      "inputs": [
        {
          "id": "target",
          "label": "Target date",
          "kind": "date"
        },
        {
          "id": "hoursPerDay",
          "label": "Prep hours available per day",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "days",
          "label": "Days remaining"
        },
        {
          "id": "weeks",
          "label": "Weeks remaining"
        },
        {
          "id": "weekends",
          "label": "Weekends remaining"
        },
        {
          "id": "workdays",
          "label": "Workdays remaining"
        },
        {
          "id": "paychecks",
          "label": "Biweekly paychecks remaining"
        },
        {
          "id": "prepHours",
          "label": "Prep hours available"
        }
      ]
    },
    {
      "slug": "sleep-time",
      "url": "https://www.revenuelab.fyi/toolbox/sleep-time",
      "title": "Sleep Cycle Calculator",
      "category": "other",
      "summary": "Bedtimes that let you wake between sleep cycles.",
      "formula": "Bedtime = Wake time − (cycles × 90 minutes) − time to fall asleep.",
      "inputs": [
        {
          "id": "wakeH",
          "label": "Wake hour (0–23)",
          "kind": "number"
        },
        {
          "id": "wakeM",
          "label": "Wake minute",
          "kind": "number"
        },
        {
          "id": "fallAsleep",
          "label": "Minutes to fall asleep",
          "kind": "number"
        },
        {
          "id": "cycles",
          "label": "Target sleep cycles",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "best",
          "label": "Ideal bedtime"
        },
        {
          "id": "alt1",
          "label": "One cycle later"
        },
        {
          "id": "alt2",
          "label": "One cycle earlier"
        },
        {
          "id": "hours",
          "label": "Hours asleep"
        },
        {
          "id": "totalMinutes",
          "label": "Total time in bed (min)"
        },
        {
          "id": "cycles",
          "label": "Sleep cycles"
        }
      ]
    },
    {
      "slug": "tip",
      "url": "https://www.revenuelab.fyi/toolbox/tip",
      "title": "Tip Calculator",
      "category": "other",
      "summary": "Calculate the tip and split a bill between people.",
      "inputs": [
        {
          "id": "bill",
          "label": "Bill total",
          "kind": "number"
        },
        {
          "id": "tipPct",
          "label": "Tip",
          "kind": "number"
        },
        {
          "id": "people",
          "label": "People",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perPerson",
          "label": "Per person"
        },
        {
          "id": "tip",
          "label": "Tip amount"
        },
        {
          "id": "total",
          "label": "Bill + tip"
        }
      ]
    },
    {
      "slug": "age",
      "url": "https://www.revenuelab.fyi/toolbox/age",
      "title": "Age Calculator",
      "category": "other",
      "summary": "Your exact age in years, months, and days.",
      "inputs": [
        {
          "id": "dob",
          "label": "Date of birth",
          "kind": "date"
        },
        {
          "id": "on",
          "label": "Age on",
          "kind": "date"
        }
      ],
      "outputs": [
        {
          "id": "readable",
          "label": "Age"
        },
        {
          "id": "years",
          "label": "Years"
        },
        {
          "id": "totalDays",
          "label": "Total days"
        }
      ]
    },
    {
      "slug": "date",
      "url": "https://www.revenuelab.fyi/toolbox/date",
      "title": "Date Calculator",
      "category": "other",
      "summary": "Days between two dates, or add/subtract days from a date.",
      "inputs": [
        {
          "id": "start",
          "label": "Start date",
          "kind": "date"
        },
        {
          "id": "end",
          "label": "End date",
          "kind": "date"
        }
      ],
      "outputs": [
        {
          "id": "days",
          "label": "Days between"
        },
        {
          "id": "weeks",
          "label": "Weeks between"
        },
        {
          "id": "absDays",
          "label": "Absolute days"
        }
      ]
    },
    {
      "slug": "time-duration",
      "url": "https://www.revenuelab.fyi/toolbox/time-duration",
      "title": "Time Duration Calculator",
      "category": "other",
      "summary": "How long between two times — in hours and minutes.",
      "inputs": [
        {
          "id": "startH",
          "label": "Start hour",
          "kind": "number"
        },
        {
          "id": "startM",
          "label": "Start minute",
          "kind": "number"
        },
        {
          "id": "endH",
          "label": "End hour",
          "kind": "number"
        },
        {
          "id": "endM",
          "label": "End minute",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "readable",
          "label": "Duration"
        },
        {
          "id": "hours",
          "label": "Total hours"
        },
        {
          "id": "minutes",
          "label": "Total minutes"
        }
      ]
    },
    {
      "slug": "hours",
      "url": "https://www.revenuelab.fyi/toolbox/hours",
      "title": "Hours Calculator",
      "category": "other",
      "summary": "Sum hours worked across multiple shifts.",
      "inputs": [
        {
          "id": "s1",
          "label": "Shift 1 — start (hours, decimal)",
          "kind": "number"
        },
        {
          "id": "e1",
          "label": "Shift 1 — end",
          "kind": "number"
        },
        {
          "id": "s2",
          "label": "Shift 2 — start",
          "kind": "number"
        },
        {
          "id": "e2",
          "label": "Shift 2 — end",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Hourly rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total hours"
        },
        {
          "id": "pay",
          "label": "Pay"
        }
      ]
    },
    {
      "slug": "gpa",
      "url": "https://www.revenuelab.fyi/toolbox/gpa",
      "title": "GPA Calculator",
      "category": "other",
      "summary": "Weighted GPA from grades and credit hours.",
      "inputs": [
        {
          "id": "g1",
          "label": "Class 1 — grade",
          "kind": "select"
        },
        {
          "id": "c1",
          "label": "Class 1 — credits",
          "kind": "number"
        },
        {
          "id": "g2",
          "label": "Class 2 — grade",
          "kind": "select"
        },
        {
          "id": "c2",
          "label": "Class 2 — credits",
          "kind": "number"
        },
        {
          "id": "g3",
          "label": "Class 3 — grade",
          "kind": "select"
        },
        {
          "id": "c3",
          "label": "Class 3 — credits",
          "kind": "number"
        },
        {
          "id": "g4",
          "label": "Class 4 — grade",
          "kind": "select"
        },
        {
          "id": "c4",
          "label": "Class 4 — credits",
          "kind": "number"
        },
        {
          "id": "g5",
          "label": "Class 5 — grade",
          "kind": "select"
        },
        {
          "id": "c5",
          "label": "Class 5 — credits",
          "kind": "number"
        },
        {
          "id": "g6",
          "label": "Class 6 — grade",
          "kind": "select"
        },
        {
          "id": "c6",
          "label": "Class 6 — credits",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "gpa",
          "label": "GPA"
        },
        {
          "id": "credits",
          "label": "Total credits"
        }
      ]
    },
    {
      "slug": "grade",
      "url": "https://www.revenuelab.fyi/toolbox/grade",
      "title": "Grade Calculator",
      "category": "other",
      "summary": "Final course grade from assignment weights and scores.",
      "inputs": [
        {
          "id": "s1",
          "label": "Item 1 — score (%)",
          "kind": "number"
        },
        {
          "id": "w1",
          "label": "Item 1 — weight (%)",
          "kind": "number"
        },
        {
          "id": "s2",
          "label": "Item 2 — score (%)",
          "kind": "number"
        },
        {
          "id": "w2",
          "label": "Item 2 — weight (%)",
          "kind": "number"
        },
        {
          "id": "s3",
          "label": "Item 3 — score (%)",
          "kind": "number"
        },
        {
          "id": "w3",
          "label": "Item 3 — weight (%)",
          "kind": "number"
        },
        {
          "id": "s4",
          "label": "Item 4 — score (%)",
          "kind": "number"
        },
        {
          "id": "w4",
          "label": "Item 4 — weight (%)",
          "kind": "number"
        },
        {
          "id": "s5",
          "label": "Item 5 — score (%)",
          "kind": "number"
        },
        {
          "id": "w5",
          "label": "Item 5 — weight (%)",
          "kind": "number"
        },
        {
          "id": "s6",
          "label": "Item 6 — score (%)",
          "kind": "number"
        },
        {
          "id": "w6",
          "label": "Item 6 — weight (%)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pct",
          "label": "Course grade"
        },
        {
          "id": "letter",
          "label": "Letter"
        },
        {
          "id": "weight",
          "label": "Total weight (should = 100)"
        }
      ]
    },
    {
      "slug": "concrete",
      "url": "https://www.revenuelab.fyi/toolbox/concrete",
      "title": "Concrete Calculator",
      "category": "other",
      "summary": "Cubic yards of concrete for a slab.",
      "inputs": [
        {
          "id": "length",
          "label": "Length",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Width",
          "kind": "number"
        },
        {
          "id": "thickness",
          "label": "Thickness",
          "kind": "number"
        },
        {
          "id": "waste",
          "label": "Waste / overage",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cubicYd",
          "label": "Concrete needed"
        },
        {
          "id": "cubicFt",
          "label": "Cubic feet (no waste)"
        },
        {
          "id": "bags60",
          "label": "60-lb bags (estimate)"
        }
      ]
    },
    {
      "slug": "tire-size",
      "url": "https://www.revenuelab.fyi/toolbox/tire-size",
      "title": "Tire Size Calculator",
      "category": "other",
      "summary": "Outer diameter, sidewall height, and circumference from a tire code.",
      "inputs": [
        {
          "id": "width",
          "label": "Section width",
          "kind": "number"
        },
        {
          "id": "ratio",
          "label": "Aspect ratio",
          "kind": "number"
        },
        {
          "id": "rim",
          "label": "Rim diameter",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "diameter",
          "label": "Outer diameter"
        },
        {
          "id": "sidewall",
          "label": "Sidewall height"
        },
        {
          "id": "circumference",
          "label": "Circumference"
        },
        {
          "id": "revsPerMile",
          "label": "Revolutions per mile"
        }
      ]
    },
    {
      "slug": "love",
      "url": "https://www.revenuelab.fyi/toolbox/love",
      "title": "Love Calculator",
      "category": "other",
      "summary": "A totally unscientific compatibility score from two names.",
      "inputs": [
        {
          "id": "a",
          "label": "First name",
          "kind": "text"
        },
        {
          "id": "b",
          "label": "Second name",
          "kind": "text"
        }
      ],
      "outputs": [
        {
          "id": "score",
          "label": "Compatibility"
        },
        {
          "id": "verdict",
          "label": "Verdict"
        }
      ]
    },
    {
      "slug": "fuel-cost",
      "url": "https://www.revenuelab.fyi/toolbox/fuel-cost",
      "title": "Fuel Cost Calculator",
      "category": "other",
      "summary": "How much a trip costs in gas.",
      "inputs": [
        {
          "id": "distance",
          "label": "Trip distance",
          "kind": "number"
        },
        {
          "id": "unit",
          "label": "Units",
          "kind": "select"
        },
        {
          "id": "efficiency",
          "label": "Efficiency",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Fuel price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cost",
          "label": "Trip cost"
        },
        {
          "id": "fuel",
          "label": "Fuel used"
        }
      ]
    },
    {
      "slug": "gas-mileage",
      "url": "https://www.revenuelab.fyi/toolbox/gas-mileage",
      "title": "Gas Mileage Calculator",
      "category": "other",
      "summary": "MPG or km/L from distance and fuel used.",
      "inputs": [
        {
          "id": "distance",
          "label": "Distance (miles)",
          "kind": "number"
        },
        {
          "id": "fuel",
          "label": "Fuel used (gallons)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "mpg",
          "label": "MPG"
        },
        {
          "id": "kml",
          "label": "km / L"
        },
        {
          "id": "l100km",
          "label": "L / 100 km"
        }
      ]
    },
    {
      "slug": "length-converter",
      "url": "https://www.revenuelab.fyi/toolbox/length-converter",
      "title": "Length Converter",
      "category": "other",
      "summary": "Inches, feet, meters, miles, km, yards.",
      "inputs": [
        {
          "id": "value",
          "label": "Value",
          "kind": "number"
        },
        {
          "id": "from",
          "label": "From",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "m",
          "label": "Meters"
        },
        {
          "id": "km",
          "label": "Kilometers"
        },
        {
          "id": "cm",
          "label": "Centimeters"
        },
        {
          "id": "mm",
          "label": "Millimeters"
        },
        {
          "id": "in",
          "label": "Inches"
        },
        {
          "id": "ft",
          "label": "Feet"
        },
        {
          "id": "yd",
          "label": "Yards"
        },
        {
          "id": "mi",
          "label": "Miles"
        }
      ]
    },
    {
      "slug": "weight-converter",
      "url": "https://www.revenuelab.fyi/toolbox/weight-converter",
      "title": "Weight Converter",
      "category": "other",
      "summary": "Pounds, kilograms, grams, ounces, stones.",
      "inputs": [
        {
          "id": "value",
          "label": "Value",
          "kind": "number"
        },
        {
          "id": "from",
          "label": "From",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "kg",
          "label": "Kilograms"
        },
        {
          "id": "lb",
          "label": "Pounds"
        },
        {
          "id": "g",
          "label": "Grams"
        },
        {
          "id": "oz",
          "label": "Ounces"
        },
        {
          "id": "st",
          "label": "Stones"
        },
        {
          "id": "mg",
          "label": "Milligrams"
        }
      ]
    },
    {
      "slug": "temperature-converter",
      "url": "https://www.revenuelab.fyi/toolbox/temperature-converter",
      "title": "Temperature Converter",
      "category": "other",
      "summary": "Celsius, Fahrenheit, Kelvin.",
      "inputs": [
        {
          "id": "value",
          "label": "Value",
          "kind": "number"
        },
        {
          "id": "from",
          "label": "From",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "c",
          "label": "Celsius"
        },
        {
          "id": "f",
          "label": "Fahrenheit"
        },
        {
          "id": "k",
          "label": "Kelvin"
        }
      ]
    },
    {
      "slug": "password-generator",
      "url": "https://www.revenuelab.fyi/toolbox/password-generator",
      "title": "Password Generator",
      "category": "other",
      "summary": "Strong random passwords, your length and rules.",
      "inputs": [
        {
          "id": "length",
          "label": "Length",
          "kind": "number"
        },
        {
          "id": "set",
          "label": "Character set",
          "kind": "select"
        },
        {
          "id": "seed",
          "label": "Reroll (any number)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "password",
          "label": "Password"
        },
        {
          "id": "length",
          "label": "Length"
        }
      ]
    },
    {
      "slug": "sleep",
      "url": "https://www.revenuelab.fyi/toolbox/sleep",
      "title": "Sleep Calculator",
      "category": "other",
      "summary": "When to sleep (or wake) to align with 90-minute cycles.",
      "inputs": [
        {
          "id": "wake",
          "label": "Wake time (HH:MM, 24h)",
          "kind": "text"
        },
        {
          "id": "fallAsleepMin",
          "label": "Mins to fall asleep",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "c6",
          "label": "9 hrs sleep — bed at"
        },
        {
          "id": "c5",
          "label": "7.5 hrs sleep — bed at"
        },
        {
          "id": "c4",
          "label": "6 hrs sleep — bed at"
        }
      ]
    },
    {
      "slug": "height-converter",
      "url": "https://www.revenuelab.fyi/toolbox/height-converter",
      "title": "Height Converter",
      "category": "other",
      "summary": "Feet/inches ↔ centimeters.",
      "inputs": [
        {
          "id": "mode",
          "label": "Convert",
          "kind": "select"
        },
        {
          "id": "feet",
          "label": "Feet",
          "kind": "number"
        },
        {
          "id": "inches",
          "label": "Inches",
          "kind": "number"
        },
        {
          "id": "cm",
          "label": "Centimeters",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cm",
          "label": "Centimeters"
        },
        {
          "id": "feet",
          "label": "Feet"
        },
        {
          "id": "inches",
          "label": "Inches"
        }
      ]
    },
    {
      "slug": "roman-numeral",
      "url": "https://www.revenuelab.fyi/toolbox/roman-numeral",
      "title": "Roman Numeral Converter",
      "category": "other",
      "summary": "Number ↔ Roman, up to 3,999,999.",
      "inputs": [
        {
          "id": "value",
          "label": "Number",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "roman",
          "label": "Roman numeral"
        },
        {
          "id": "value",
          "label": "Decimal value"
        }
      ]
    },
    {
      "slug": "countdown",
      "url": "https://www.revenuelab.fyi/toolbox/countdown",
      "title": "Countdown Calculator",
      "category": "other",
      "summary": "Days, hours, minutes until any date.",
      "inputs": [
        {
          "id": "target",
          "label": "Target date",
          "kind": "date"
        }
      ],
      "outputs": [
        {
          "id": "days",
          "label": "Days"
        },
        {
          "id": "hours",
          "label": "Hours"
        },
        {
          "id": "minutes",
          "label": "Minutes"
        }
      ]
    },
    {
      "slug": "ohms-law",
      "url": "https://www.revenuelab.fyi/toolbox/ohms-law",
      "title": "Ohm's Law Calculator",
      "category": "math",
      "summary": "Solve voltage, current, resistance, and power.",
      "formula": "V = I × R, P = V × I",
      "inputs": [
        {
          "id": "volts",
          "label": "Voltage",
          "kind": "number"
        },
        {
          "id": "amps",
          "label": "Current",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "resistance",
          "label": "Resistance (Ω)"
        },
        {
          "id": "power",
          "label": "Power (W)"
        },
        {
          "id": "energyHr",
          "label": "Energy per hour (kWh)"
        },
        {
          "id": "milliamps",
          "label": "Current (mA)"
        }
      ]
    },
    {
      "slug": "voltage-drop",
      "url": "https://www.revenuelab.fyi/toolbox/voltage-drop",
      "title": "Voltage Drop Calculator",
      "category": "math",
      "summary": "Check drop across a run before you pull the wire.",
      "formula": "Vdrop = 2 × K × I × L ÷ CM (K ≈ 12.9 for copper)",
      "inputs": [
        {
          "id": "volts",
          "label": "System voltage",
          "kind": "number"
        },
        {
          "id": "amps",
          "label": "Load current",
          "kind": "number"
        },
        {
          "id": "length",
          "label": "One-way run length",
          "kind": "number"
        },
        {
          "id": "cm",
          "label": "Wire area (circular mils)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pct",
          "label": "Voltage drop (%)"
        },
        {
          "id": "drop",
          "label": "Drop (V)"
        },
        {
          "id": "endVolts",
          "label": "Voltage at load"
        },
        {
          "id": "ok",
          "label": "Verdict"
        }
      ]
    },
    {
      "slug": "molarity",
      "url": "https://www.revenuelab.fyi/toolbox/molarity",
      "title": "Molarity Calculator",
      "category": "math",
      "summary": "Moles, mass, and molar concentration for any solution.",
      "formula": "M = (mass ÷ molar mass) ÷ litres",
      "inputs": [
        {
          "id": "mass",
          "label": "Solute mass",
          "kind": "number"
        },
        {
          "id": "mm",
          "label": "Molar mass",
          "kind": "number"
        },
        {
          "id": "vol",
          "label": "Solution volume",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "molarity",
          "label": "Molarity (mol/L)"
        },
        {
          "id": "moles",
          "label": "Moles of solute"
        },
        {
          "id": "mM",
          "label": "Millimolar (mM)"
        },
        {
          "id": "gPerL",
          "label": "Concentration (g/L)"
        }
      ]
    },
    {
      "slug": "dilution",
      "url": "https://www.revenuelab.fyi/toolbox/dilution",
      "title": "Dilution Calculator (C1V1 = C2V2)",
      "category": "math",
      "summary": "Stock volume needed to hit a target concentration.",
      "formula": "C1 × V1 = C2 × V2",
      "inputs": [
        {
          "id": "c1",
          "label": "Stock concentration (C1)",
          "kind": "number"
        },
        {
          "id": "c2",
          "label": "Target concentration (C2)",
          "kind": "number"
        },
        {
          "id": "v2",
          "label": "Final volume (V2)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "v1",
          "label": "Stock volume needed (mL)"
        },
        {
          "id": "diluent",
          "label": "Diluent to add (mL)"
        },
        {
          "id": "factor",
          "label": "Dilution factor (×)"
        }
      ]
    },
    {
      "slug": "ideal-gas-law",
      "url": "https://www.revenuelab.fyi/toolbox/ideal-gas-law",
      "title": "Ideal Gas Law Calculator",
      "category": "math",
      "summary": "Pressure, volume, moles, and temperature in one shot.",
      "formula": "PV = nRT",
      "inputs": [
        {
          "id": "p",
          "label": "Pressure",
          "kind": "number"
        },
        {
          "id": "vol",
          "label": "Volume",
          "kind": "number"
        },
        {
          "id": "t",
          "label": "Temperature",
          "kind": "number"
        },
        {
          "id": "mm",
          "label": "Molar mass (optional)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "moles",
          "label": "Moles (n)"
        },
        {
          "id": "grams",
          "label": "Mass (g)"
        },
        {
          "id": "density",
          "label": "Density (g/L)"
        },
        {
          "id": "celsius",
          "label": "Temperature (°C)"
        }
      ]
    },
    {
      "slug": "projectile-motion",
      "url": "https://www.revenuelab.fyi/toolbox/projectile-motion",
      "title": "Projectile Motion Calculator",
      "category": "math",
      "summary": "Range, peak height, and flight time from speed and angle.",
      "formula": "R = v² sin(2θ) ÷ g; h = v² sin²θ ÷ 2g",
      "inputs": [
        {
          "id": "v0",
          "label": "Launch speed",
          "kind": "number"
        },
        {
          "id": "angle",
          "label": "Launch angle",
          "kind": "number"
        },
        {
          "id": "g",
          "label": "Gravity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "range",
          "label": "Horizontal range (m)"
        },
        {
          "id": "apex",
          "label": "Max height (m)"
        },
        {
          "id": "time",
          "label": "Flight time (s)"
        },
        {
          "id": "vx",
          "label": "Horizontal velocity (m/s)"
        }
      ]
    },
    {
      "slug": "free-fall",
      "url": "https://www.revenuelab.fyi/toolbox/free-fall",
      "title": "Free Fall Calculator",
      "category": "math",
      "summary": "Drop time, impact speed, and energy.",
      "formula": "t = √(2h ÷ g); v = g × t",
      "inputs": [
        {
          "id": "h",
          "label": "Drop height",
          "kind": "number"
        },
        {
          "id": "mass",
          "label": "Mass",
          "kind": "number"
        },
        {
          "id": "g",
          "label": "Gravity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "time",
          "label": "Fall time (s)"
        },
        {
          "id": "speed",
          "label": "Impact speed (m/s)"
        },
        {
          "id": "kmh",
          "label": "Impact speed (km/h)"
        },
        {
          "id": "energy",
          "label": "Kinetic energy (J)"
        }
      ]
    },
    {
      "slug": "density",
      "url": "https://www.revenuelab.fyi/toolbox/density",
      "title": "Density Calculator",
      "category": "math",
      "summary": "Mass, volume, and density in metric or imperial.",
      "formula": "ρ = m ÷ V",
      "inputs": [
        {
          "id": "mass",
          "label": "Mass",
          "kind": "number"
        },
        {
          "id": "vol",
          "label": "Volume",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "density",
          "label": "Density (g/cm³)"
        },
        {
          "id": "kgm3",
          "label": "Density (kg/m³)"
        },
        {
          "id": "lbft3",
          "label": "Density (lb/ft³)"
        },
        {
          "id": "floats",
          "label": "Water test"
        }
      ]
    },
    {
      "slug": "force-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/force-calculator",
      "title": "Force Calculator (F = ma)",
      "category": "math",
      "summary": "Newtons, pounds-force, weight, and momentum.",
      "formula": "F = m × a",
      "inputs": [
        {
          "id": "mass",
          "label": "Mass",
          "kind": "number"
        },
        {
          "id": "accel",
          "label": "Acceleration",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "force",
          "label": "Force (N)"
        },
        {
          "id": "lbf",
          "label": "Force (lbf)"
        },
        {
          "id": "weight",
          "label": "Weight on Earth (N)"
        },
        {
          "id": "kgf",
          "label": "Force (kgf)"
        }
      ]
    },
    {
      "slug": "torque-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/torque-calculator",
      "title": "Torque Calculator",
      "category": "math",
      "summary": "Torque from force and lever arm, in Nm and ft-lb.",
      "formula": "τ = F × r × sin θ",
      "inputs": [
        {
          "id": "force",
          "label": "Force",
          "kind": "number"
        },
        {
          "id": "r",
          "label": "Lever arm",
          "kind": "number"
        },
        {
          "id": "angle",
          "label": "Angle",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "torque",
          "label": "Torque (N·m)"
        },
        {
          "id": "ftlb",
          "label": "Torque (ft·lb)"
        },
        {
          "id": "inlb",
          "label": "Torque (in·lb)"
        },
        {
          "id": "kgfm",
          "label": "Torque (kgf·m)"
        }
      ]
    },
    {
      "slug": "wavelength-frequency",
      "url": "https://www.revenuelab.fyi/toolbox/wavelength-frequency",
      "title": "Wavelength & Frequency Calculator",
      "category": "math",
      "summary": "Convert between frequency, wavelength, and photon energy.",
      "formula": "λ = c ÷ f; E = h × f",
      "inputs": [
        {
          "id": "freq",
          "label": "Frequency",
          "kind": "number"
        },
        {
          "id": "speed",
          "label": "Wave speed",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "wavelength",
          "label": "Wavelength (m)"
        },
        {
          "id": "cm",
          "label": "Wavelength (cm)"
        },
        {
          "id": "quarter",
          "label": "Quarter-wave (m)"
        },
        {
          "id": "energy",
          "label": "Photon energy (eV)"
        }
      ]
    },
    {
      "slug": "ph-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/ph-calculator",
      "title": "pH Calculator",
      "category": "math",
      "summary": "pH, pOH, and ion concentrations from either direction.",
      "formula": "pH = −log₁₀[H⁺]; pH + pOH = 14",
      "inputs": [
        {
          "id": "conc",
          "label": "[H⁺] concentration",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pH",
          "label": "pH"
        },
        {
          "id": "pOH",
          "label": "pOH"
        },
        {
          "id": "oh",
          "label": "[OH⁻] (mol/L)"
        },
        {
          "id": "verdict",
          "label": "Classification"
        }
      ]
    },
    {
      "slug": "half-life",
      "url": "https://www.revenuelab.fyi/toolbox/half-life",
      "title": "Half-Life Calculator",
      "category": "math",
      "summary": "Remaining quantity after any elapsed time.",
      "formula": "N = N₀ × (1/2)^(t ÷ t½)",
      "inputs": [
        {
          "id": "n0",
          "label": "Starting quantity",
          "kind": "number"
        },
        {
          "id": "half",
          "label": "Half-life",
          "kind": "number"
        },
        {
          "id": "time",
          "label": "Elapsed time",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "remaining",
          "label": "Remaining quantity"
        },
        {
          "id": "pct",
          "label": "Percent remaining"
        },
        {
          "id": "decayed",
          "label": "Amount decayed"
        },
        {
          "id": "halves",
          "label": "Half-lives elapsed"
        }
      ]
    },
    {
      "slug": "specific-heat",
      "url": "https://www.revenuelab.fyi/toolbox/specific-heat",
      "title": "Specific Heat Calculator",
      "category": "math",
      "summary": "Energy needed to change a material's temperature.",
      "formula": "Q = m × c × ΔT",
      "inputs": [
        {
          "id": "mass",
          "label": "Mass",
          "kind": "number"
        },
        {
          "id": "c",
          "label": "Specific heat",
          "kind": "number"
        },
        {
          "id": "dt",
          "label": "Temperature change",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "kj",
          "label": "Energy (kJ)"
        },
        {
          "id": "joules",
          "label": "Energy (J)"
        },
        {
          "id": "kwh",
          "label": "Energy (kWh)"
        },
        {
          "id": "btu",
          "label": "Energy (BTU)"
        }
      ]
    },
    {
      "slug": "resistor-parallel",
      "url": "https://www.revenuelab.fyi/toolbox/resistor-parallel",
      "title": "Parallel & Series Resistor Calculator",
      "category": "math",
      "summary": "Equivalent resistance for up to four resistors.",
      "formula": "Series: R = ΣR. Parallel: 1/R = Σ(1/Rᵢ)",
      "inputs": [
        {
          "id": "r1",
          "label": "R1",
          "kind": "number"
        },
        {
          "id": "r2",
          "label": "R2",
          "kind": "number"
        },
        {
          "id": "r3",
          "label": "R3 (0 to skip)",
          "kind": "number"
        },
        {
          "id": "r4",
          "label": "R4 (0 to skip)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "parallel",
          "label": "Parallel equivalent (Ω)"
        },
        {
          "id": "series",
          "label": "Series equivalent (Ω)"
        },
        {
          "id": "count",
          "label": "Resistors used"
        },
        {
          "id": "ratio",
          "label": "Parallel ÷ series"
        }
      ]
    },
    {
      "slug": "battery-runtime",
      "url": "https://www.revenuelab.fyi/toolbox/battery-runtime",
      "title": "Battery Runtime Calculator",
      "category": "math",
      "summary": "How long a battery lasts under a given load.",
      "formula": "Hours = Ah × DoD ÷ load A",
      "inputs": [
        {
          "id": "ah",
          "label": "Battery capacity",
          "kind": "number"
        },
        {
          "id": "volts",
          "label": "Battery voltage",
          "kind": "number"
        },
        {
          "id": "watts",
          "label": "Load",
          "kind": "number"
        },
        {
          "id": "dod",
          "label": "Usable depth of discharge",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "hours",
          "label": "Runtime (hours)"
        },
        {
          "id": "minutes",
          "label": "Runtime (minutes)"
        },
        {
          "id": "amps",
          "label": "Load current (A)"
        },
        {
          "id": "wh",
          "label": "Usable energy (Wh)"
        }
      ]
    },
    {
      "slug": "sound-db",
      "url": "https://www.revenuelab.fyi/toolbox/sound-db",
      "title": "Decibel Distance Calculator",
      "category": "math",
      "summary": "How loudness drops as you move away from a source.",
      "formula": "dB₂ = dB₁ − 20 log₁₀(d₂ ÷ d₁)",
      "inputs": [
        {
          "id": "db1",
          "label": "Level at reference distance",
          "kind": "number"
        },
        {
          "id": "d1",
          "label": "Reference distance",
          "kind": "number"
        },
        {
          "id": "d2",
          "label": "New distance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "db2",
          "label": "Level at new distance (dB)"
        },
        {
          "id": "drop",
          "label": "Reduction (dB)"
        },
        {
          "id": "safe",
          "label": "Exposure note"
        },
        {
          "id": "times",
          "label": "Relative intensity (×)"
        }
      ]
    },
    {
      "slug": "roof-solar-tilt",
      "url": "https://www.revenuelab.fyi/toolbox/roof-solar-tilt",
      "title": "Solar Panel Tilt Calculator",
      "category": "math",
      "summary": "Best fixed tilt angle for your latitude, by season.",
      "formula": "Winter ≈ lat + 15°, summer ≈ lat − 15°, annual ≈ lat × 0.87 + 3.1",
      "inputs": [
        {
          "id": "lat",
          "label": "Latitude",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annual",
          "label": "Year-round tilt (°)"
        },
        {
          "id": "winter",
          "label": "Winter tilt (°)"
        },
        {
          "id": "summer",
          "label": "Summer tilt (°)"
        },
        {
          "id": "azimuth",
          "label": "Orientation"
        }
      ]
    },
    {
      "slug": "kinetic-energy",
      "url": "https://www.revenuelab.fyi/toolbox/kinetic-energy",
      "title": "Kinetic Energy Calculator",
      "category": "math",
      "summary": "Energy of a moving mass, plus stored height energy.",
      "formula": "KE = ½mv²; PE = mgh",
      "inputs": [
        {
          "id": "mass",
          "label": "Mass",
          "kind": "number"
        },
        {
          "id": "speed",
          "label": "Speed",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Height",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ke",
          "label": "Kinetic energy (J)"
        },
        {
          "id": "kj",
          "label": "Kinetic energy (kJ)"
        },
        {
          "id": "pe",
          "label": "Potential energy (J)"
        },
        {
          "id": "total",
          "label": "Total mechanical energy (J)"
        }
      ]
    },
    {
      "slug": "pressure-conversion",
      "url": "https://www.revenuelab.fyi/toolbox/pressure-conversion",
      "title": "Pressure Converter",
      "category": "math",
      "summary": "PSI, bar, kPa, atm, and mmHg at once.",
      "formula": "1 bar = 14.5038 psi = 100 kPa = 0.98692 atm",
      "inputs": [
        {
          "id": "psi",
          "label": "Pressure",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "bar",
          "label": "Bar"
        },
        {
          "id": "kpa",
          "label": "Kilopascal (kPa)"
        },
        {
          "id": "atm",
          "label": "Atmospheres"
        },
        {
          "id": "mmhg",
          "label": "mmHg (torr)"
        }
      ]
    },
    {
      "slug": "401k-growth",
      "url": "https://www.revenuelab.fyi/toolbox/401k-growth",
      "title": "401(k) Growth Calculator",
      "category": "financial",
      "summary": "Project your balance with contributions and employer match.",
      "formula": "FV = balance × (1+r)^n + annual contributions compounded",
      "inputs": [
        {
          "id": "balance",
          "label": "Current balance",
          "kind": "number"
        },
        {
          "id": "salary",
          "label": "Annual salary",
          "kind": "number"
        },
        {
          "id": "pct",
          "label": "Your contribution",
          "kind": "number"
        },
        {
          "id": "match",
          "label": "Employer match",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years to retirement",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Annual return",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Balance at retirement"
        },
        {
          "id": "contributed",
          "label": "Total contributed"
        },
        {
          "id": "growth",
          "label": "Investment growth"
        },
        {
          "id": "employerTotal",
          "label": "Employer match total"
        },
        {
          "id": "monthly",
          "label": "Monthly contribution"
        }
      ]
    },
    {
      "slug": "roth-vs-traditional",
      "url": "https://www.revenuelab.fyi/toolbox/roth-vs-traditional",
      "title": "Roth vs Traditional IRA Calculator",
      "category": "financial",
      "summary": "After-tax value of each account type side by side.",
      "formula": "Roth after-tax = FV. Traditional after-tax = FV × (1 − retirement rate)",
      "inputs": [
        {
          "id": "annual",
          "label": "Annual contribution",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years invested",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Annual return",
          "kind": "number"
        },
        {
          "id": "nowTax",
          "label": "Tax rate today",
          "kind": "number"
        },
        {
          "id": "laterTax",
          "label": "Tax rate in retirement",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "winner",
          "label": "Better option"
        },
        {
          "id": "roth",
          "label": "Roth after-tax value"
        },
        {
          "id": "trad",
          "label": "Traditional after-tax value"
        },
        {
          "id": "diff",
          "label": "Difference"
        },
        {
          "id": "gross",
          "label": "Pre-tax balance"
        }
      ]
    },
    {
      "slug": "social-security-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/social-security-estimate",
      "title": "Social Security Benefit Estimator",
      "category": "financial",
      "summary": "Compare monthly benefit at 62, full retirement age, and 70.",
      "formula": "Early: −5/9% per month before FRA. Delayed: +8% per year after FRA.",
      "inputs": [
        {
          "id": "pia",
          "label": "Benefit at full retirement age",
          "kind": "number"
        },
        {
          "id": "fra",
          "label": "Full retirement age",
          "kind": "number"
        },
        {
          "id": "life",
          "label": "Life expectancy",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "late",
          "label": "Monthly at 70"
        },
        {
          "id": "full",
          "label": "Monthly at full retirement age"
        },
        {
          "id": "early",
          "label": "Monthly at 62"
        },
        {
          "id": "lifetimeLate",
          "label": "Lifetime total claiming at 70"
        },
        {
          "id": "lifetimeEarly",
          "label": "Lifetime total claiming at 62"
        }
      ]
    },
    {
      "slug": "retirement-withdrawal",
      "url": "https://www.revenuelab.fyi/toolbox/retirement-withdrawal",
      "title": "Retirement Withdrawal Calculator",
      "category": "financial",
      "summary": "How long a nest egg lasts at a given withdrawal rate.",
      "formula": "Each year: balance = (balance − withdrawal) × (1 + return); withdrawal grows with inflation.",
      "inputs": [
        {
          "id": "balance",
          "label": "Starting balance",
          "kind": "number"
        },
        {
          "id": "withdraw",
          "label": "Annual withdrawal",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Annual return",
          "kind": "number"
        },
        {
          "id": "infl",
          "label": "Inflation",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "years",
          "label": "Years the money lasts"
        },
        {
          "id": "verdict",
          "label": "Outlook"
        },
        {
          "id": "rate",
          "label": "Initial withdrawal rate (%)"
        },
        {
          "id": "totalOut",
          "label": "Total withdrawn"
        }
      ]
    },
    {
      "slug": "rmd-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/rmd-calculator",
      "title": "RMD Calculator",
      "category": "financial",
      "summary": "Your required withdrawal from a traditional retirement account.",
      "formula": "RMD = prior year-end balance ÷ IRS life expectancy factor",
      "inputs": [
        {
          "id": "balance",
          "label": "Prior year-end balance",
          "kind": "number"
        },
        {
          "id": "age",
          "label": "Your age this year",
          "kind": "number"
        },
        {
          "id": "tax",
          "label": "Marginal tax rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rmd",
          "label": "Required distribution"
        },
        {
          "id": "net",
          "label": "After-tax amount"
        },
        {
          "id": "tax",
          "label": "Estimated tax owed"
        },
        {
          "id": "monthly",
          "label": "Monthly equivalent"
        },
        {
          "id": "factor",
          "label": "Life expectancy factor"
        }
      ]
    },
    {
      "slug": "pension-lump-sum",
      "url": "https://www.revenuelab.fyi/toolbox/pension-lump-sum",
      "title": "Pension Lump Sum vs Annuity Calculator",
      "category": "financial",
      "summary": "Which payout option is worth more to you.",
      "formula": "PV of annuity = Σ payment ÷ (1+r)^t",
      "inputs": [
        {
          "id": "lump",
          "label": "Lump sum offer",
          "kind": "number"
        },
        {
          "id": "monthly",
          "label": "Monthly pension",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years of payments expected",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Discount / return rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "winner",
          "label": "Better option"
        },
        {
          "id": "pv",
          "label": "Present value of pension"
        },
        {
          "id": "lump",
          "label": "Lump sum offer"
        },
        {
          "id": "diff",
          "label": "Difference"
        },
        {
          "id": "total",
          "label": "Total nominal payments"
        }
      ]
    },
    {
      "slug": "annuity-payout",
      "url": "https://www.revenuelab.fyi/toolbox/annuity-payout",
      "title": "Annuity Payout Calculator",
      "category": "financial",
      "summary": "Monthly income a lump sum can buy.",
      "formula": "Payment = PV × r ÷ (1 − (1+r)^−n)",
      "inputs": [
        {
          "id": "pv",
          "label": "Principal",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Payout period",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Annual rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthly",
          "label": "Monthly income"
        },
        {
          "id": "annual",
          "label": "Annual income"
        },
        {
          "id": "total",
          "label": "Total paid out"
        },
        {
          "id": "interest",
          "label": "Interest earned"
        }
      ]
    },
    {
      "slug": "hsa-growth",
      "url": "https://www.revenuelab.fyi/toolbox/hsa-growth",
      "title": "HSA Growth Calculator",
      "category": "financial",
      "summary": "Triple-tax-advantaged balance projection.",
      "formula": "FV of contributions + tax deduction value",
      "inputs": [
        {
          "id": "annual",
          "label": "Annual contribution",
          "kind": "number"
        },
        {
          "id": "spend",
          "label": "Annual medical spending from HSA",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Annual return",
          "kind": "number"
        },
        {
          "id": "tax",
          "label": "Marginal tax rate",
          "kind": "number"
        },
        {
          "id": "balance",
          "label": "Current balance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "HSA balance"
        },
        {
          "id": "taxSaved",
          "label": "Lifetime tax savings"
        },
        {
          "id": "growth",
          "label": "Investment growth"
        },
        {
          "id": "contributed",
          "label": "Total contributed"
        }
      ]
    },
    {
      "slug": "inflation-impact",
      "url": "https://www.revenuelab.fyi/toolbox/inflation-impact",
      "title": "Inflation Impact Calculator",
      "category": "financial",
      "summary": "What today's money is worth in the future.",
      "formula": "Future value of purchasing power = amount ÷ (1 + i)^years",
      "inputs": [
        {
          "id": "amount",
          "label": "Amount today",
          "kind": "number"
        },
        {
          "id": "infl",
          "label": "Inflation rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "real",
          "label": "Buying power in today's dollars"
        },
        {
          "id": "needed",
          "label": "Amount needed to match today"
        },
        {
          "id": "lost",
          "label": "Purchasing power lost"
        },
        {
          "id": "pctLost",
          "label": "Percent lost"
        }
      ]
    },
    {
      "slug": "millionaire-timeline",
      "url": "https://www.revenuelab.fyi/toolbox/millionaire-timeline",
      "title": "How Long to a Million Calculator",
      "category": "financial",
      "summary": "Years to your first million at your savings rate.",
      "formula": "Solve FV = target for n",
      "inputs": [
        {
          "id": "start",
          "label": "Current invested",
          "kind": "number"
        },
        {
          "id": "monthly",
          "label": "Monthly investment",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Annual return",
          "kind": "number"
        },
        {
          "id": "target",
          "label": "Target",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "years",
          "label": "Years to target"
        },
        {
          "id": "months",
          "label": "Months to target"
        },
        {
          "id": "contributed",
          "label": "Total you contribute"
        },
        {
          "id": "growth",
          "label": "Growth from returns"
        }
      ]
    },
    {
      "slug": "sabbatical-fund",
      "url": "https://www.revenuelab.fyi/toolbox/sabbatical-fund",
      "title": "Sabbatical Fund Calculator",
      "category": "financial",
      "summary": "How much to bank before you take time off.",
      "formula": "Fund = (monthly costs × months off) + reentry buffer",
      "inputs": [
        {
          "id": "costs",
          "label": "Monthly living costs",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Months off",
          "kind": "number"
        },
        {
          "id": "health",
          "label": "Monthly health coverage",
          "kind": "number"
        },
        {
          "id": "buffer",
          "label": "Re-entry buffer",
          "kind": "number"
        },
        {
          "id": "save",
          "label": "Monthly savings ability",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "fund",
          "label": "Fund needed"
        },
        {
          "id": "saveMonths",
          "label": "Months of saving required"
        },
        {
          "id": "monthly",
          "label": "Monthly burn while off"
        },
        {
          "id": "livingOnly",
          "label": "Living costs only"
        }
      ]
    },
    {
      "slug": "llc-vs-scorp",
      "url": "https://www.revenuelab.fyi/toolbox/llc-vs-scorp",
      "title": "LLC vs S-Corp Tax Savings Calculator",
      "category": "financial",
      "summary": "Self-employment tax you'd save by electing S-corp.",
      "formula": "Savings = (profit − salary) × 15.3% − payroll/admin cost",
      "inputs": [
        {
          "id": "profit",
          "label": "Net business profit",
          "kind": "number"
        },
        {
          "id": "salary",
          "label": "Reasonable salary",
          "kind": "number"
        },
        {
          "id": "admin",
          "label": "Payroll + extra accounting cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Net annual savings"
        },
        {
          "id": "verdict",
          "label": "Verdict"
        },
        {
          "id": "saved",
          "label": "SE tax avoided"
        },
        {
          "id": "dist",
          "label": "Distribution portion"
        },
        {
          "id": "breakeven",
          "label": "Break-even profit"
        }
      ]
    },
    {
      "slug": "quarterly-tax-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/quarterly-tax-estimate",
      "title": "Quarterly Estimated Tax Calculator",
      "category": "financial",
      "summary": "What to send the IRS every quarter as a freelancer.",
      "formula": "SE tax on 92.35% of profit + income tax on profit − half SE tax",
      "inputs": [
        {
          "id": "profit",
          "label": "Expected annual net profit",
          "kind": "number"
        },
        {
          "id": "otherIncome",
          "label": "Other W-2 income",
          "kind": "number"
        },
        {
          "id": "bracket",
          "label": "Effective income tax rate",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "State tax rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "quarterly",
          "label": "Each quarterly payment"
        },
        {
          "id": "total",
          "label": "Total annual tax"
        },
        {
          "id": "se",
          "label": "Self-employment tax"
        },
        {
          "id": "fed",
          "label": "Federal income tax"
        },
        {
          "id": "st",
          "label": "State income tax"
        }
      ]
    },
    {
      "slug": "payment-processing-fees",
      "url": "https://www.revenuelab.fyi/toolbox/payment-processing-fees",
      "title": "Payment Processing Fee Calculator",
      "category": "financial",
      "summary": "What Stripe, PayPal, or Square actually take.",
      "formula": "Fee = amount × rate% + fixed; net = amount − fee",
      "inputs": [
        {
          "id": "amount",
          "label": "Transaction amount",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Percentage fee",
          "kind": "number"
        },
        {
          "id": "fixed",
          "label": "Fixed fee",
          "kind": "number"
        },
        {
          "id": "count",
          "label": "Transactions per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "You receive"
        },
        {
          "id": "fee",
          "label": "Fee per transaction"
        },
        {
          "id": "effective",
          "label": "Effective rate (%)"
        },
        {
          "id": "monthlyFees",
          "label": "Monthly fees"
        },
        {
          "id": "grossUp",
          "label": "Charge this to net the full amount"
        }
      ]
    },
    {
      "slug": "business-loan-payment",
      "url": "https://www.revenuelab.fyi/toolbox/business-loan-payment",
      "title": "Business Loan Payment Calculator",
      "category": "financial",
      "summary": "Monthly payment, total interest, and true cost.",
      "formula": "P = L × r ÷ (1 − (1+r)^−n)",
      "inputs": [
        {
          "id": "amount",
          "label": "Loan amount",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Interest rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Term",
          "kind": "number"
        },
        {
          "id": "fee",
          "label": "Origination fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthly",
          "label": "Monthly payment"
        },
        {
          "id": "interest",
          "label": "Total interest"
        },
        {
          "id": "totalCost",
          "label": "Total cost with fees"
        },
        {
          "id": "fee",
          "label": "Origination fee"
        },
        {
          "id": "netProceeds",
          "label": "Cash actually received"
        }
      ]
    },
    {
      "slug": "equipment-lease-vs-buy",
      "url": "https://www.revenuelab.fyi/toolbox/equipment-lease-vs-buy",
      "title": "Equipment Lease vs Buy Calculator",
      "category": "financial",
      "summary": "Total cost of leasing versus purchasing outright.",
      "formula": "Lease cost = payments × term. Buy cost = price − resale + financing.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "lease",
          "label": "Monthly lease payment",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Term",
          "kind": "number"
        },
        {
          "id": "resale",
          "label": "Resale value after term",
          "kind": "number"
        },
        {
          "id": "maint",
          "label": "Owner maintenance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "winner",
          "label": "Cheaper option"
        },
        {
          "id": "buyCost",
          "label": "Net cost to buy"
        },
        {
          "id": "leaseCost",
          "label": "Total lease cost"
        },
        {
          "id": "diff",
          "label": "Difference"
        },
        {
          "id": "monthlyBuy",
          "label": "Effective monthly cost of buying"
        }
      ]
    },
    {
      "slug": "cash-conversion-cycle",
      "url": "https://www.revenuelab.fyi/toolbox/cash-conversion-cycle",
      "title": "Cash Conversion Cycle Calculator",
      "category": "financial",
      "summary": "Days between paying suppliers and getting paid.",
      "formula": "CCC = DIO + DSO − DPO",
      "inputs": [
        {
          "id": "dio",
          "label": "Days inventory outstanding",
          "kind": "number"
        },
        {
          "id": "dso",
          "label": "Days sales outstanding",
          "kind": "number"
        },
        {
          "id": "dpo",
          "label": "Days payables outstanding",
          "kind": "number"
        },
        {
          "id": "revenue",
          "label": "Annual revenue",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ccc",
          "label": "Cash conversion cycle (days)"
        },
        {
          "id": "working",
          "label": "Working capital required"
        },
        {
          "id": "verdict",
          "label": "Assessment"
        },
        {
          "id": "daily",
          "label": "Revenue per day"
        }
      ]
    },
    {
      "slug": "employee-true-cost",
      "url": "https://www.revenuelab.fyi/toolbox/employee-true-cost",
      "title": "True Cost of an Employee Calculator",
      "category": "financial",
      "summary": "Fully loaded cost beyond base salary.",
      "formula": "Total = salary + payroll tax + benefits + overhead",
      "inputs": [
        {
          "id": "salary",
          "label": "Base salary",
          "kind": "number"
        },
        {
          "id": "tax",
          "label": "Employer payroll tax",
          "kind": "number"
        },
        {
          "id": "benefits",
          "label": "Benefits",
          "kind": "number"
        },
        {
          "id": "equipment",
          "label": "Equipment + software",
          "kind": "number"
        },
        {
          "id": "space",
          "label": "Space + overhead",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Fully loaded annual cost"
        },
        {
          "id": "multiplier",
          "label": "Cost multiplier vs salary (×)"
        },
        {
          "id": "hourly",
          "label": "Effective hourly cost"
        },
        {
          "id": "monthly",
          "label": "Monthly cost"
        },
        {
          "id": "overhead",
          "label": "Cost above salary"
        }
      ]
    },
    {
      "slug": "consulting-day-rate",
      "url": "https://www.revenuelab.fyi/toolbox/consulting-day-rate",
      "title": "Consulting Day Rate Calculator",
      "category": "financial",
      "summary": "What to charge per day to hit your income target.",
      "formula": "Day rate = (target income + costs) ÷ billable days",
      "inputs": [
        {
          "id": "target",
          "label": "Target annual income",
          "kind": "number"
        },
        {
          "id": "costs",
          "label": "Annual business costs",
          "kind": "number"
        },
        {
          "id": "weeks",
          "label": "Working weeks per year",
          "kind": "number"
        },
        {
          "id": "billable",
          "label": "Billable days per week",
          "kind": "number"
        },
        {
          "id": "buffer",
          "label": "Profit buffer",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rate",
          "label": "Day rate to charge"
        },
        {
          "id": "hourly",
          "label": "Equivalent hourly rate"
        },
        {
          "id": "days",
          "label": "Billable days per year"
        },
        {
          "id": "weekly",
          "label": "Weekly billing"
        },
        {
          "id": "annual",
          "label": "Annual gross billings"
        }
      ]
    },
    {
      "slug": "profit-sharing-split",
      "url": "https://www.revenuelab.fyi/toolbox/profit-sharing-split",
      "title": "Profit Sharing Split Calculator",
      "category": "financial",
      "summary": "Split profits across partners by equity and contribution.",
      "formula": "Blend = (equity% × w) + (effort% × (1 − w))",
      "inputs": [
        {
          "id": "profit",
          "label": "Profit to distribute",
          "kind": "number"
        },
        {
          "id": "eqA",
          "label": "Partner A equity",
          "kind": "number"
        },
        {
          "id": "effA",
          "label": "Partner A effort share",
          "kind": "number"
        },
        {
          "id": "weight",
          "label": "Weight on equity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "a",
          "label": "Partner A payout"
        },
        {
          "id": "b",
          "label": "Partner B payout"
        },
        {
          "id": "pctA",
          "label": "Partner A blended share (%)"
        },
        {
          "id": "pctB",
          "label": "Partner B blended share (%)"
        },
        {
          "id": "pureA",
          "label": "Partner A under pure equity split"
        }
      ]
    },
    {
      "slug": "sales-commission",
      "url": "https://www.revenuelab.fyi/toolbox/sales-commission",
      "title": "Sales Commission Calculator",
      "category": "financial",
      "summary": "Commission, accelerators, and total comp against quota.",
      "formula": "Commission = base rate × min(sales, quota) + accel rate × overage",
      "inputs": [
        {
          "id": "sales",
          "label": "Closed revenue",
          "kind": "number"
        },
        {
          "id": "quota",
          "label": "Annual quota",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Commission rate",
          "kind": "number"
        },
        {
          "id": "accel",
          "label": "Accelerator rate above quota",
          "kind": "number"
        },
        {
          "id": "base",
          "label": "Base salary",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total compensation"
        },
        {
          "id": "comm",
          "label": "Commission earned"
        },
        {
          "id": "attainment",
          "label": "Quota attainment (%)"
        },
        {
          "id": "over",
          "label": "Accelerator earnings"
        },
        {
          "id": "monthly",
          "label": "Average monthly comp"
        }
      ]
    },
    {
      "slug": "grant-runway",
      "url": "https://www.revenuelab.fyi/toolbox/grant-runway",
      "title": "Startup Runway Calculator",
      "category": "financial",
      "summary": "Months of cash left and the revenue needed to extend it.",
      "formula": "Runway = cash ÷ (expenses − revenue)",
      "inputs": [
        {
          "id": "cash",
          "label": "Cash in bank",
          "kind": "number"
        },
        {
          "id": "expenses",
          "label": "Monthly expenses",
          "kind": "number"
        },
        {
          "id": "revenue",
          "label": "Monthly revenue",
          "kind": "number"
        },
        {
          "id": "growth",
          "label": "Monthly revenue growth",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "months",
          "label": "Runway with growth (months)"
        },
        {
          "id": "verdict",
          "label": "Status"
        },
        {
          "id": "flatRunway",
          "label": "Runway at flat revenue (months)"
        },
        {
          "id": "burn",
          "label": "Current net burn"
        },
        {
          "id": "breakeven",
          "label": "Revenue needed to break even"
        }
      ]
    },
    {
      "slug": "road-trip-cost",
      "url": "https://www.revenuelab.fyi/toolbox/road-trip-cost",
      "title": "Road Trip Cost Calculator",
      "category": "other",
      "summary": "Fuel, lodging, food, and per-person split for the whole trip.",
      "formula": "Fuel = miles ÷ mpg × price; total adds lodging, food, tolls.",
      "inputs": [
        {
          "id": "miles",
          "label": "Round-trip distance",
          "kind": "number"
        },
        {
          "id": "mpg",
          "label": "Fuel economy",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Fuel price",
          "kind": "number"
        },
        {
          "id": "nights",
          "label": "Nights of lodging",
          "kind": "number"
        },
        {
          "id": "hotel",
          "label": "Cost per night",
          "kind": "number"
        },
        {
          "id": "food",
          "label": "Food per person per day",
          "kind": "number"
        },
        {
          "id": "people",
          "label": "Travelers",
          "kind": "number"
        },
        {
          "id": "tolls",
          "label": "Tolls + parking",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total trip cost"
        },
        {
          "id": "perPerson",
          "label": "Cost per person"
        },
        {
          "id": "fuel",
          "label": "Fuel cost"
        },
        {
          "id": "lodging",
          "label": "Lodging"
        },
        {
          "id": "food",
          "label": "Food"
        },
        {
          "id": "gallons",
          "label": "Gallons needed"
        }
      ]
    },
    {
      "slug": "flight-carbon",
      "url": "https://www.revenuelab.fyi/toolbox/flight-carbon",
      "title": "Flight Carbon Footprint Calculator",
      "category": "other",
      "summary": "CO₂ per passenger and the cost to offset it.",
      "formula": "CO₂ = km × factor × class multiplier",
      "inputs": [
        {
          "id": "km",
          "label": "Flight distance",
          "kind": "number"
        },
        {
          "id": "passengers",
          "label": "Passengers",
          "kind": "number"
        },
        {
          "id": "cls",
          "label": "Cabin class",
          "kind": "select"
        },
        {
          "id": "roundTrip",
          "label": "Trip type",
          "kind": "select"
        },
        {
          "id": "offset",
          "label": "Offset price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "kg",
          "label": "CO₂ emitted (kg)"
        },
        {
          "id": "tonnes",
          "label": "CO₂ (tonnes)"
        },
        {
          "id": "cost",
          "label": "Offset cost"
        },
        {
          "id": "trees",
          "label": "Tree-years to absorb"
        },
        {
          "id": "perPerson",
          "label": "Per passenger (kg)"
        }
      ]
    },
    {
      "slug": "travel-points-value",
      "url": "https://www.revenuelab.fyi/toolbox/travel-points-value",
      "title": "Travel Points Value Calculator",
      "category": "other",
      "summary": "Cents per point on a redemption, and whether it's worth it.",
      "formula": "cpp = (cash price − fees) ÷ points × 100",
      "inputs": [
        {
          "id": "cash",
          "label": "Cash price of the booking",
          "kind": "number"
        },
        {
          "id": "points",
          "label": "Points required",
          "kind": "number"
        },
        {
          "id": "fees",
          "label": "Taxes and fees on award",
          "kind": "number"
        },
        {
          "id": "baseline",
          "label": "Baseline point value",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cpp",
          "label": "Cents per point"
        },
        {
          "id": "verdict",
          "label": "Verdict"
        },
        {
          "id": "saved",
          "label": "Cash avoided"
        },
        {
          "id": "baselineValue",
          "label": "Points value at baseline"
        }
      ]
    },
    {
      "slug": "trip-savings-plan",
      "url": "https://www.revenuelab.fyi/toolbox/trip-savings-plan",
      "title": "Vacation Savings Plan Calculator",
      "category": "other",
      "summary": "How much to set aside each month to fund the trip.",
      "formula": "Monthly = (goal − saved) ÷ months remaining",
      "inputs": [
        {
          "id": "goal",
          "label": "Trip cost",
          "kind": "number"
        },
        {
          "id": "saved",
          "label": "Already saved",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Months until departure",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthly",
          "label": "Save per month"
        },
        {
          "id": "weekly",
          "label": "Save per week"
        },
        {
          "id": "daily",
          "label": "Save per day"
        },
        {
          "id": "need",
          "label": "Still needed"
        },
        {
          "id": "pct",
          "label": "Progress (%)"
        }
      ]
    },
    {
      "slug": "currency-exchange-fee",
      "url": "https://www.revenuelab.fyi/toolbox/currency-exchange-fee",
      "title": "Currency Exchange Fee Calculator",
      "category": "financial",
      "summary": "What the spread and foreign transaction fee really cost you.",
      "formula": "Received = amount × offered rate − fees",
      "inputs": [
        {
          "id": "amount",
          "label": "Amount to exchange",
          "kind": "number"
        },
        {
          "id": "mid",
          "label": "Mid-market rate",
          "kind": "number"
        },
        {
          "id": "offered",
          "label": "Rate you're offered",
          "kind": "number"
        },
        {
          "id": "fee",
          "label": "Transaction fee",
          "kind": "number"
        },
        {
          "id": "flat",
          "label": "Flat fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "got",
          "label": "Foreign currency received"
        },
        {
          "id": "lost",
          "label": "Lost to spread and fees"
        },
        {
          "id": "pctLost",
          "label": "Total cost (%)"
        },
        {
          "id": "ideal",
          "label": "At mid-market rate"
        },
        {
          "id": "spread",
          "label": "Rate spread (%)"
        }
      ]
    },
    {
      "slug": "hotel-vs-airbnb",
      "url": "https://www.revenuelab.fyi/toolbox/hotel-vs-airbnb",
      "title": "Hotel vs Airbnb Cost Calculator",
      "category": "other",
      "summary": "All-in nightly cost once fees and food are counted.",
      "formula": "Airbnb = (nightly × nights) + cleaning + service. Hotel = (nightly + fees) × nights + eating out.",
      "inputs": [
        {
          "id": "nights",
          "label": "Nights",
          "kind": "number"
        },
        {
          "id": "abnb",
          "label": "Airbnb nightly rate",
          "kind": "number"
        },
        {
          "id": "clean",
          "label": "Cleaning fee",
          "kind": "number"
        },
        {
          "id": "service",
          "label": "Service fee",
          "kind": "number"
        },
        {
          "id": "hotel",
          "label": "Hotel nightly rate",
          "kind": "number"
        },
        {
          "id": "resort",
          "label": "Resort/parking fee",
          "kind": "number"
        },
        {
          "id": "foodDiff",
          "label": "Extra food cost without a kitchen",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "winner",
          "label": "Cheaper option"
        },
        {
          "id": "abnbTotal",
          "label": "Airbnb all-in"
        },
        {
          "id": "hotelTotal",
          "label": "Hotel all-in"
        },
        {
          "id": "diff",
          "label": "Difference"
        },
        {
          "id": "abnbNightly",
          "label": "True Airbnb nightly"
        },
        {
          "id": "hotelNightly",
          "label": "True hotel nightly"
        }
      ]
    },
    {
      "slug": "jet-lag-recovery",
      "url": "https://www.revenuelab.fyi/toolbox/jet-lag-recovery",
      "title": "Jet Lag Recovery Calculator",
      "category": "other",
      "summary": "Days to adjust and when to shift your sleep.",
      "formula": "Days ≈ zones ÷ 1.5 (west) or zones ÷ 1 (east)",
      "inputs": [
        {
          "id": "zones",
          "label": "Time zones crossed",
          "kind": "number"
        },
        {
          "id": "dir",
          "label": "Direction",
          "kind": "select"
        },
        {
          "id": "prep",
          "label": "Days you can prep before flying",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "days",
          "label": "Days to fully adjust"
        },
        {
          "id": "adjusted",
          "label": "Days with pre-trip shifting"
        },
        {
          "id": "shiftPerDay",
          "label": "Pre-flight plan"
        },
        {
          "id": "light",
          "label": "Light exposure"
        }
      ]
    },
    {
      "slug": "cruise-cost-per-day",
      "url": "https://www.revenuelab.fyi/toolbox/cruise-cost-per-day",
      "title": "Cruise Cost Per Day Calculator",
      "category": "other",
      "summary": "Real daily cost once gratuities and extras land.",
      "formula": "Total ÷ days ÷ travelers",
      "inputs": [
        {
          "id": "fare",
          "label": "Cabin fare (total)",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Nights",
          "kind": "number"
        },
        {
          "id": "people",
          "label": "Travelers",
          "kind": "number"
        },
        {
          "id": "grat",
          "label": "Gratuities",
          "kind": "number"
        },
        {
          "id": "drinks",
          "label": "Drink package",
          "kind": "number"
        },
        {
          "id": "excursions",
          "label": "Excursions (total)",
          "kind": "number"
        },
        {
          "id": "flights",
          "label": "Flights + transfers (total)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perDay",
          "label": "Cost per person per day"
        },
        {
          "id": "total",
          "label": "Total trip cost"
        },
        {
          "id": "perPerson",
          "label": "Cost per person"
        },
        {
          "id": "extras",
          "label": "Extras beyond the fare"
        },
        {
          "id": "markup",
          "label": "Extras as % of fare"
        }
      ]
    },
    {
      "slug": "pet-food-cost",
      "url": "https://www.revenuelab.fyi/toolbox/pet-food-cost",
      "title": "Pet Food Cost Calculator",
      "category": "other",
      "summary": "Daily, monthly, and lifetime feeding cost.",
      "formula": "Daily cups × cost per cup × 365",
      "inputs": [
        {
          "id": "weight",
          "label": "Pet weight",
          "kind": "number"
        },
        {
          "id": "cupsPer10",
          "label": "Cups per day per 10 lb",
          "kind": "number"
        },
        {
          "id": "bagPrice",
          "label": "Bag price",
          "kind": "number"
        },
        {
          "id": "bagLb",
          "label": "Bag size",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Expected years remaining",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthly",
          "label": "Monthly food cost"
        },
        {
          "id": "daily",
          "label": "Daily cost"
        },
        {
          "id": "annual",
          "label": "Annual cost"
        },
        {
          "id": "lifetime",
          "label": "Lifetime cost"
        },
        {
          "id": "bagDays",
          "label": "Days per bag"
        }
      ]
    },
    {
      "slug": "wedding-cost-split",
      "url": "https://www.revenuelab.fyi/toolbox/wedding-cost-split",
      "title": "Wedding Budget Split Calculator",
      "category": "other",
      "summary": "Category-by-category budget from your total and guest count.",
      "formula": "Category = total × industry share; per guest = total ÷ guests",
      "inputs": [
        {
          "id": "budget",
          "label": "Total budget",
          "kind": "number"
        },
        {
          "id": "guests",
          "label": "Guest count",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perGuest",
          "label": "Cost per guest"
        },
        {
          "id": "venueFood",
          "label": "Venue + catering (45%)"
        },
        {
          "id": "photo",
          "label": "Photo + video (12%)"
        },
        {
          "id": "flowersDecor",
          "label": "Flowers + decor (10%)"
        },
        {
          "id": "attire",
          "label": "Attire + beauty (8%)"
        },
        {
          "id": "musicEnt",
          "label": "Music + entertainment (8%)"
        },
        {
          "id": "contingency",
          "label": "Contingency (7%)"
        }
      ]
    },
    {
      "slug": "moving-cost",
      "url": "https://www.revenuelab.fyi/toolbox/moving-cost",
      "title": "Moving Cost Calculator",
      "category": "other",
      "summary": "DIY truck versus full-service movers, all in.",
      "formula": "DIY = truck + fuel + lodging; movers = weight × rate + distance",
      "inputs": [
        {
          "id": "miles",
          "label": "Distance",
          "kind": "number"
        },
        {
          "id": "rooms",
          "label": "Bedrooms",
          "kind": "number"
        },
        {
          "id": "truck",
          "label": "Truck rental per day",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Rental days",
          "kind": "number"
        },
        {
          "id": "mpg",
          "label": "Truck fuel economy",
          "kind": "number"
        },
        {
          "id": "gas",
          "label": "Fuel price",
          "kind": "number"
        },
        {
          "id": "moverRate",
          "label": "Mover rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "winner",
          "label": "Cheaper option"
        },
        {
          "id": "diy",
          "label": "DIY total"
        },
        {
          "id": "movers",
          "label": "Full-service movers"
        },
        {
          "id": "savings",
          "label": "Difference"
        },
        {
          "id": "weight",
          "label": "Estimated shipment weight (lb)"
        }
      ]
    },
    {
      "slug": "grocery-budget",
      "url": "https://www.revenuelab.fyi/toolbox/grocery-budget",
      "title": "Grocery Budget Calculator",
      "category": "other",
      "summary": "Household food budget with eating-out split.",
      "formula": "Budget = adults × rate + kids × rate × 0.7",
      "inputs": [
        {
          "id": "adults",
          "label": "Adults",
          "kind": "number"
        },
        {
          "id": "kids",
          "label": "Children",
          "kind": "number"
        },
        {
          "id": "level",
          "label": "Spending plan",
          "kind": "select"
        },
        {
          "id": "takeout",
          "label": "Current takeout spend",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "groceries",
          "label": "Monthly grocery budget"
        },
        {
          "id": "weekly",
          "label": "Weekly grocery target"
        },
        {
          "id": "total",
          "label": "Total food spend with takeout"
        },
        {
          "id": "perPerson",
          "label": "Per person per month"
        },
        {
          "id": "takeoutSaving",
          "label": "Annual takeout spend"
        }
      ]
    },
    {
      "slug": "recipe-scaler",
      "url": "https://www.revenuelab.fyi/toolbox/recipe-scaler",
      "title": "Recipe Scaling Calculator",
      "category": "other",
      "summary": "Scale any ingredient up or down for a different number of servings.",
      "formula": "Scaled amount = original amount × (target servings ÷ original servings).",
      "inputs": [
        {
          "id": "orig",
          "label": "Original servings",
          "kind": "number"
        },
        {
          "id": "target",
          "label": "Servings you need",
          "kind": "number"
        },
        {
          "id": "amount",
          "label": "Ingredient amount in the recipe",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "scaled",
          "label": "Scaled ingredient amount"
        },
        {
          "id": "factor",
          "label": "Multiply everything by"
        },
        {
          "id": "perServing",
          "label": "Amount per serving"
        }
      ]
    },
    {
      "slug": "baking-pan-conversion",
      "url": "https://www.revenuelab.fyi/toolbox/baking-pan-conversion",
      "title": "Baking Pan Size Conversion Calculator",
      "category": "other",
      "summary": "Swap pan sizes without ruining the bake — area ratio and batter depth.",
      "formula": "Ratio = new pan area ÷ original pan area.",
      "inputs": [
        {
          "id": "ow",
          "label": "Recipe pan width/diameter",
          "kind": "number"
        },
        {
          "id": "ol",
          "label": "Recipe pan length (same as width if round)",
          "kind": "number"
        },
        {
          "id": "nw",
          "label": "Your pan width/diameter",
          "kind": "number"
        },
        {
          "id": "nl",
          "label": "Your pan length",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ratio",
          "label": "Area ratio (new ÷ old)"
        },
        {
          "id": "batter",
          "label": "Batter needed vs recipe"
        },
        {
          "id": "depth",
          "label": "Relative batter depth"
        },
        {
          "id": "a1",
          "label": "Recipe pan area"
        },
        {
          "id": "a2",
          "label": "Your pan area"
        }
      ]
    },
    {
      "slug": "turkey-cooking-time",
      "url": "https://www.revenuelab.fyi/toolbox/turkey-cooking-time",
      "title": "Turkey Cooking Time Calculator",
      "category": "other",
      "summary": "Roast time, thaw time, and the hour you need to put it in the oven.",
      "formula": "Unstuffed ≈ 13 min/lb at 325°F; stuffed ≈ 15 min/lb. Fridge thaw ≈ 24 h per 4–5 lb.",
      "inputs": [
        {
          "id": "lbs",
          "label": "Turkey weight",
          "kind": "number"
        },
        {
          "id": "stuffed",
          "label": "Stuffed?",
          "kind": "select"
        },
        {
          "id": "rest",
          "label": "Resting time",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "roast",
          "label": "Roasting time"
        },
        {
          "id": "total",
          "label": "Oven-in to carving"
        },
        {
          "id": "thaw",
          "label": "Fridge thaw time needed"
        },
        {
          "id": "roastHours",
          "label": "Roast time in hours"
        }
      ]
    },
    {
      "slug": "party-food-quantity",
      "url": "https://www.revenuelab.fyi/toolbox/party-food-quantity",
      "title": "Party Food & Drink Quantity Calculator",
      "category": "other",
      "summary": "How much food, ice, and drink to buy for your guest count.",
      "formula": "Appetizers ≈ 6 pieces/guest first hour + 3/hour after; 1 drink/guest/hour; 1.5 lb ice/guest.",
      "inputs": [
        {
          "id": "guests",
          "label": "Guests",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Event length",
          "kind": "number"
        },
        {
          "id": "mainOz",
          "label": "Main protein per guest",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "apps",
          "label": "Appetizer pieces"
        },
        {
          "id": "drinks",
          "label": "Total drinks"
        },
        {
          "id": "protein",
          "label": "Main protein"
        },
        {
          "id": "ice",
          "label": "Ice (lb)"
        },
        {
          "id": "sides",
          "label": "Sides (lb)"
        }
      ]
    },
    {
      "slug": "coffee-ratio",
      "url": "https://www.revenuelab.fyi/toolbox/coffee-ratio",
      "title": "Coffee Brew Ratio Calculator",
      "category": "other",
      "summary": "Grams of coffee and water for any brew ratio and batch size.",
      "formula": "Coffee = water ÷ ratio. Grounds retain about 2 g water per gram of coffee.",
      "inputs": [
        {
          "id": "cups",
          "label": "Finished coffee",
          "kind": "number"
        },
        {
          "id": "ratio",
          "label": "Water : coffee ratio",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "coffee",
          "label": "Coffee dose (g)"
        },
        {
          "id": "water",
          "label": "Brew water (g)"
        },
        {
          "id": "absorbed",
          "label": "Absorbed by grounds (g)"
        },
        {
          "id": "tbsp",
          "label": "Approx. tablespoons"
        }
      ]
    },
    {
      "slug": "sourdough-hydration",
      "url": "https://www.revenuelab.fyi/toolbox/sourdough-hydration",
      "title": "Sourdough Hydration Calculator",
      "category": "other",
      "summary": "Baker's percentages for flour, water, salt, and starter.",
      "formula": "Baker's % = ingredient ÷ total flour. Starter at 100% hydration is half flour, half water.",
      "inputs": [
        {
          "id": "flour",
          "label": "Total flour",
          "kind": "number"
        },
        {
          "id": "hydration",
          "label": "Target hydration",
          "kind": "number"
        },
        {
          "id": "starterPct",
          "label": "Starter",
          "kind": "number"
        },
        {
          "id": "saltPct",
          "label": "Salt",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "addFlour",
          "label": "Flour to add (g)"
        },
        {
          "id": "addWater",
          "label": "Water to add (g)"
        },
        {
          "id": "starter",
          "label": "Starter (g)"
        },
        {
          "id": "salt",
          "label": "Salt (g)"
        },
        {
          "id": "dough",
          "label": "Total dough weight (g)"
        }
      ]
    },
    {
      "slug": "meal-prep-cost",
      "url": "https://www.revenuelab.fyi/toolbox/meal-prep-cost",
      "title": "Meal Prep Cost Per Serving Calculator",
      "category": "other",
      "summary": "Cost per serving vs takeout, and what prepping actually saves you.",
      "formula": "Per-serving = batch cost ÷ servings. Annual savings = (takeout − per-serving) × meals/week × 52.",
      "inputs": [
        {
          "id": "batch",
          "label": "Total ingredient cost",
          "kind": "number"
        },
        {
          "id": "servings",
          "label": "Servings produced",
          "kind": "number"
        },
        {
          "id": "takeout",
          "label": "Typical takeout meal",
          "kind": "number"
        },
        {
          "id": "perWeek",
          "label": "Prepped meals per week",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Prep hours per batch",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "per",
          "label": "Cost per serving"
        },
        {
          "id": "weekly",
          "label": "Weekly savings"
        },
        {
          "id": "annual",
          "label": "Annual savings"
        },
        {
          "id": "hourly",
          "label": "Effective $ per prep hour"
        }
      ]
    },
    {
      "slug": "grill-smoke-time",
      "url": "https://www.revenuelab.fyi/toolbox/grill-smoke-time",
      "title": "Smoking & BBQ Time Calculator",
      "category": "other",
      "summary": "Low-and-slow cook time, stall allowance, and start time.",
      "formula": "Base ≈ 1.5 h/lb at 225°F, scaled inversely with temperature; brisket and pork shoulder add a stall allowance.",
      "inputs": [
        {
          "id": "lbs",
          "label": "Meat weight",
          "kind": "number"
        },
        {
          "id": "temp",
          "label": "Smoker temperature",
          "kind": "number"
        },
        {
          "id": "cut",
          "label": "Cut",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated cook time (hours)"
        },
        {
          "id": "base",
          "label": "Base smoke time (hours)"
        },
        {
          "id": "stall",
          "label": "Stall allowance (hours)"
        },
        {
          "id": "rest",
          "label": "Rest before slicing (hours)"
        },
        {
          "id": "minutes",
          "label": "Total minutes"
        }
      ]
    },
    {
      "slug": "freezer-storage-cost",
      "url": "https://www.revenuelab.fyi/toolbox/freezer-storage-cost",
      "title": "Bulk Buying & Freezer Storage Calculator",
      "category": "other",
      "summary": "Does buying in bulk beat the freezer's running cost and spoilage?",
      "formula": "Effective unit cost = (bulk price ÷ usable units) + freezer energy share.",
      "inputs": [
        {
          "id": "bulkPrice",
          "label": "Bulk pack price",
          "kind": "number"
        },
        {
          "id": "units",
          "label": "Units in the pack",
          "kind": "number"
        },
        {
          "id": "spoil",
          "label": "Expected waste",
          "kind": "number"
        },
        {
          "id": "normal",
          "label": "Normal unit price",
          "kind": "number"
        },
        {
          "id": "freezerKwh",
          "label": "Freezer use",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Electricity rate",
          "kind": "number"
        },
        {
          "id": "packsPerYear",
          "label": "Bulk packs per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "effective",
          "label": "True cost per unit"
        },
        {
          "id": "savingsPerUnit",
          "label": "Savings vs normal price"
        },
        {
          "id": "annual",
          "label": "Annual savings"
        },
        {
          "id": "energy",
          "label": "Freezer energy per pack"
        }
      ]
    },
    {
      "slug": "home-cleaning-schedule",
      "url": "https://www.revenuelab.fyi/toolbox/home-cleaning-schedule",
      "title": "House Cleaning Time & Cost Calculator",
      "category": "other",
      "summary": "Time per clean, DIY hourly value, and whether hiring out pays.",
      "formula": "Time ≈ 1 min per 10 sq ft + 15 min per bathroom, scaled by depth of clean.",
      "inputs": [
        {
          "id": "sqft",
          "label": "Home size",
          "kind": "number"
        },
        {
          "id": "baths",
          "label": "Bathrooms",
          "kind": "number"
        },
        {
          "id": "depth",
          "label": "Clean type",
          "kind": "select"
        },
        {
          "id": "quote",
          "label": "Service quote",
          "kind": "number"
        },
        {
          "id": "myRate",
          "label": "Your time is worth",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "mins",
          "label": "Estimated clean time"
        },
        {
          "id": "diyValue",
          "label": "Your time cost to DIY"
        },
        {
          "id": "delta",
          "label": "DIY cost minus quote"
        },
        {
          "id": "serviceHourly",
          "label": "Service effective rate"
        },
        {
          "id": "hours",
          "label": "Hours"
        }
      ]
    },
    {
      "slug": "laundry-cost",
      "url": "https://www.revenuelab.fyi/toolbox/laundry-cost",
      "title": "Laundry Cost Per Load Calculator",
      "category": "other",
      "summary": "Water, electricity, and detergent per load — home vs laundromat.",
      "formula": "Load cost = water + water heating + machine kWh + dryer kWh + detergent.",
      "inputs": [
        {
          "id": "loads",
          "label": "Loads per week",
          "kind": "number"
        },
        {
          "id": "gallons",
          "label": "Water per load",
          "kind": "number"
        },
        {
          "id": "waterRate",
          "label": "Water + sewer",
          "kind": "number"
        },
        {
          "id": "dryerKwh",
          "label": "Dryer energy per load",
          "kind": "number"
        },
        {
          "id": "washerKwh",
          "label": "Washer energy per load",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Electricity rate",
          "kind": "number"
        },
        {
          "id": "detergent",
          "label": "Detergent per load",
          "kind": "number"
        },
        {
          "id": "mat",
          "label": "Laundromat wash + dry",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "per",
          "label": "Cost per load at home"
        },
        {
          "id": "annual",
          "label": "Annual home laundry cost"
        },
        {
          "id": "matAnnual",
          "label": "Annual laundromat cost"
        },
        {
          "id": "savings",
          "label": "Annual savings at home"
        }
      ]
    },
    {
      "slug": "pet-food-budget",
      "url": "https://www.revenuelab.fyi/toolbox/pet-food-budget",
      "title": "Pet Food & Care Budget Calculator",
      "category": "other",
      "summary": "Monthly and lifetime cost of feeding and caring for a pet.",
      "formula": "Monthly = food + vet/12 + grooming + supplies; lifetime = monthly × 12 × years.",
      "inputs": [
        {
          "id": "foodLb",
          "label": "Food per month",
          "kind": "number"
        },
        {
          "id": "pricePerLb",
          "label": "Food price",
          "kind": "number"
        },
        {
          "id": "vet",
          "label": "Annual vet + meds",
          "kind": "number"
        },
        {
          "id": "groom",
          "label": "Grooming per month",
          "kind": "number"
        },
        {
          "id": "supplies",
          "label": "Supplies + treats per month",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Expected lifespan remaining",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthly",
          "label": "Monthly cost"
        },
        {
          "id": "annual",
          "label": "Annual cost"
        },
        {
          "id": "lifetime",
          "label": "Lifetime cost"
        },
        {
          "id": "food",
          "label": "Food per month"
        }
      ]
    },
    {
      "slug": "garden-yield",
      "url": "https://www.revenuelab.fyi/toolbox/garden-yield",
      "title": "Vegetable Garden Yield & Savings Calculator",
      "category": "other",
      "summary": "Pounds of produce per bed and what you save versus grocery prices.",
      "formula": "Yield = area × lb/sq ft; net = yield × grocery price − input cost.",
      "inputs": [
        {
          "id": "area",
          "label": "Growing area",
          "kind": "number"
        },
        {
          "id": "yieldRate",
          "label": "Yield rate",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Grocery price",
          "kind": "number"
        },
        {
          "id": "inputs",
          "label": "Season input cost",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Hours worked this season",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "lbs",
          "label": "Season yield (lb)"
        },
        {
          "id": "value",
          "label": "Grocery-equivalent value"
        },
        {
          "id": "net",
          "label": "Net savings"
        },
        {
          "id": "perHour",
          "label": "Value per hour worked"
        },
        {
          "id": "perSqFt",
          "label": "Net per square foot"
        }
      ]
    },
    {
      "slug": "firewood-cord",
      "url": "https://www.revenuelab.fyi/toolbox/firewood-cord",
      "title": "Firewood Cord & Heating Cost Calculator",
      "category": "other",
      "summary": "Cords in a stack, seasonal need, and cost per million BTU.",
      "formula": "1 cord = 128 cu ft. Seasoned hardwood ≈ 20 million BTU per cord.",
      "inputs": [
        {
          "id": "len",
          "label": "Stack length",
          "kind": "number"
        },
        {
          "id": "ht",
          "label": "Stack height",
          "kind": "number"
        },
        {
          "id": "depth",
          "label": "Log length (stack depth)",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per cord",
          "kind": "number"
        },
        {
          "id": "seasonCords",
          "label": "Cords burned per season",
          "kind": "number"
        },
        {
          "id": "efficiency",
          "label": "Stove efficiency",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cords",
          "label": "Cords in the stack"
        },
        {
          "id": "value",
          "label": "Stack value"
        },
        {
          "id": "seasonCost",
          "label": "Season heating cost"
        },
        {
          "id": "perMmbtu",
          "label": "Cost per million BTU"
        },
        {
          "id": "cubic",
          "label": "Cubic feet"
        }
      ]
    },
    {
      "slug": "wallpaper-tile-grout",
      "url": "https://www.revenuelab.fyi/toolbox/wallpaper-tile-grout",
      "title": "Tile & Grout Quantity Calculator",
      "category": "other",
      "summary": "Tiles, boxes, and grout volume for any floor or wall area.",
      "formula": "Tiles = area ÷ tile area × (1 + waste). Grout volume scales with joint width and tile perimeter.",
      "inputs": [
        {
          "id": "roomW",
          "label": "Area width",
          "kind": "number"
        },
        {
          "id": "roomL",
          "label": "Area length",
          "kind": "number"
        },
        {
          "id": "tileW",
          "label": "Tile width",
          "kind": "number"
        },
        {
          "id": "tileL",
          "label": "Tile length",
          "kind": "number"
        },
        {
          "id": "waste",
          "label": "Waste allowance",
          "kind": "number"
        },
        {
          "id": "perBox",
          "label": "Tiles per box",
          "kind": "number"
        },
        {
          "id": "joint",
          "label": "Grout joint width",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "tiles",
          "label": "Tiles needed"
        },
        {
          "id": "boxes",
          "label": "Boxes to buy"
        },
        {
          "id": "sqft",
          "label": "Area (sq ft)"
        },
        {
          "id": "groutLb",
          "label": "Grout needed (lb)"
        }
      ]
    },
    {
      "slug": "appliance-replace-vs-repair",
      "url": "https://www.revenuelab.fyi/toolbox/appliance-replace-vs-repair",
      "title": "Repair vs Replace Appliance Calculator",
      "category": "other",
      "summary": "Compare repair cost against a new unit over remaining life.",
      "formula": "Annualized repair = repair ÷ remaining years; annualized new = (price − energy savings × life) ÷ life.",
      "inputs": [
        {
          "id": "repair",
          "label": "Repair quote",
          "kind": "number"
        },
        {
          "id": "remaining",
          "label": "Years the repair buys",
          "kind": "number"
        },
        {
          "id": "newPrice",
          "label": "New appliance price",
          "kind": "number"
        },
        {
          "id": "newLife",
          "label": "New unit expected life",
          "kind": "number"
        },
        {
          "id": "energySave",
          "label": "Annual energy savings if new",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "repairAnnual",
          "label": "Repair cost per year"
        },
        {
          "id": "newAnnual",
          "label": "New unit cost per year"
        },
        {
          "id": "delta",
          "label": "Repair minus new (per year)"
        },
        {
          "id": "ratio",
          "label": "Repair as % of new price"
        }
      ]
    },
    {
      "slug": "marathon-finish-time",
      "url": "https://www.revenuelab.fyi/toolbox/marathon-finish-time",
      "title": "Marathon Finish Time Predictor",
      "category": "fitness-health",
      "summary": "Project a marathon or half finish time from a recent race result.",
      "formula": "T2 = T1 × (D2 ÷ D1)^1.06 (Riegel).",
      "inputs": [
        {
          "id": "dist",
          "label": "Recent race distance",
          "kind": "number"
        },
        {
          "id": "mins",
          "label": "Finish time",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "marathon",
          "label": "Projected marathon"
        },
        {
          "id": "half",
          "label": "Projected half marathon"
        },
        {
          "id": "tenK",
          "label": "Projected 10K"
        },
        {
          "id": "fiveK",
          "label": "Projected 5K"
        },
        {
          "id": "marPace",
          "label": "Marathon pace (min/mi)"
        }
      ]
    },
    {
      "slug": "cycling-power-speed",
      "url": "https://www.revenuelab.fyi/toolbox/cycling-power-speed",
      "title": "Cycling Power to Speed Calculator",
      "category": "fitness-health",
      "summary": "Estimate speed from watts, or watts needed to hold a speed.",
      "formula": "P = (½·ρ·CdA·v³) + (Crr·m·g·v) + (m·g·grade·v), solved for v.",
      "inputs": [
        {
          "id": "watts",
          "label": "Sustained power",
          "kind": "number"
        },
        {
          "id": "riderKg",
          "label": "Rider weight",
          "kind": "number"
        },
        {
          "id": "bikeKg",
          "label": "Bike + kit weight",
          "kind": "number"
        },
        {
          "id": "grade",
          "label": "Gradient",
          "kind": "number"
        },
        {
          "id": "cda",
          "label": "Aero drag area (CdA)",
          "kind": "number"
        },
        {
          "id": "crr",
          "label": "Rolling resistance (Crr)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "mph",
          "label": "Estimated speed (mph)"
        },
        {
          "id": "kph",
          "label": "Speed (km/h)"
        },
        {
          "id": "wkg",
          "label": "Power to weight (W/kg)"
        },
        {
          "id": "perMile",
          "label": "Minutes per mile"
        }
      ]
    },
    {
      "slug": "swim-pace",
      "url": "https://www.revenuelab.fyi/toolbox/swim-pace",
      "title": "Swim Pace & Split Calculator",
      "category": "fitness-health",
      "summary": "Pace per 100, total time, and split targets for any swim distance.",
      "formula": "Pace per 100 = time ÷ (distance ÷ 100).",
      "inputs": [
        {
          "id": "dist",
          "label": "Distance swum",
          "kind": "number"
        },
        {
          "id": "mins",
          "label": "Time",
          "kind": "number"
        },
        {
          "id": "secs",
          "label": "Seconds",
          "kind": "number"
        },
        {
          "id": "target",
          "label": "Target race distance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "per100",
          "label": "Pace per 100 (seconds)"
        },
        {
          "id": "per50",
          "label": "Pace per 50 (seconds)"
        },
        {
          "id": "targetTime",
          "label": "Projected target time (min)"
        },
        {
          "id": "per100Min",
          "label": "Pace per 100 (minutes)"
        }
      ]
    },
    {
      "slug": "triathlon-split",
      "url": "https://www.revenuelab.fyi/toolbox/triathlon-split",
      "title": "Triathlon Split & Finish Time Calculator",
      "category": "fitness-health",
      "summary": "Swim, bike, run, and transition times for any triathlon distance.",
      "formula": "Total = swim + T1 + bike + T2 + run.",
      "inputs": [
        {
          "id": "swimDist",
          "label": "Swim distance",
          "kind": "number"
        },
        {
          "id": "swimPace",
          "label": "Swim pace per 100 m",
          "kind": "number"
        },
        {
          "id": "bikeDist",
          "label": "Bike distance",
          "kind": "number"
        },
        {
          "id": "bikeMph",
          "label": "Bike speed",
          "kind": "number"
        },
        {
          "id": "runDist",
          "label": "Run distance",
          "kind": "number"
        },
        {
          "id": "runPace",
          "label": "Run pace",
          "kind": "number"
        },
        {
          "id": "t1",
          "label": "T1",
          "kind": "number"
        },
        {
          "id": "t2",
          "label": "T2",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Projected finish time"
        },
        {
          "id": "swim",
          "label": "Swim split"
        },
        {
          "id": "bike",
          "label": "Bike split"
        },
        {
          "id": "run",
          "label": "Run split"
        },
        {
          "id": "hours",
          "label": "Total hours"
        }
      ]
    },
    {
      "slug": "golf-handicap",
      "url": "https://www.revenuelab.fyi/toolbox/golf-handicap",
      "title": "Golf Handicap Index Calculator",
      "category": "other",
      "summary": "Score differential and handicap index from your rounds.",
      "formula": "Differential = (113 ÷ slope) × (adjusted score − course rating). Index = average of best differentials × 0.96.",
      "inputs": [
        {
          "id": "score",
          "label": "Adjusted gross score",
          "kind": "number"
        },
        {
          "id": "rating",
          "label": "Course rating",
          "kind": "number"
        },
        {
          "id": "slope",
          "label": "Slope rating",
          "kind": "number"
        },
        {
          "id": "playSlope",
          "label": "Slope of course you're playing",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "diff",
          "label": "Score differential"
        },
        {
          "id": "index",
          "label": "Handicap index (this round)"
        },
        {
          "id": "courseHandicap",
          "label": "Course handicap"
        },
        {
          "id": "netScore",
          "label": "Net score"
        }
      ]
    },
    {
      "slug": "bowling-average",
      "url": "https://www.revenuelab.fyi/toolbox/bowling-average",
      "title": "Bowling Average & Handicap Calculator",
      "category": "other",
      "summary": "League average, handicap, and handicap series total.",
      "formula": "Average = pins ÷ games. Handicap = (basis − average) × percentage.",
      "inputs": [
        {
          "id": "pins",
          "label": "Total pins",
          "kind": "number"
        },
        {
          "id": "games",
          "label": "Games bowled",
          "kind": "number"
        },
        {
          "id": "basis",
          "label": "League handicap basis",
          "kind": "number"
        },
        {
          "id": "pct",
          "label": "Handicap percentage",
          "kind": "number"
        },
        {
          "id": "series",
          "label": "Games per series",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "avg",
          "label": "Bowling average"
        },
        {
          "id": "hcp",
          "label": "Handicap per game"
        },
        {
          "id": "seriesHcp",
          "label": "Handicap per series"
        },
        {
          "id": "scratchSeries",
          "label": "Expected scratch series"
        }
      ]
    },
    {
      "slug": "fantasy-trade-value",
      "url": "https://www.revenuelab.fyi/toolbox/fantasy-trade-value",
      "title": "Fantasy Football Trade Value Calculator",
      "category": "other",
      "summary": "Compare both sides of a trade using projected points and games left.",
      "formula": "Value = PPG × games remaining × (1 − injury risk).",
      "inputs": [
        {
          "id": "aPpg",
          "label": "Your side: total PPG",
          "kind": "number"
        },
        {
          "id": "aRisk",
          "label": "Your side: injury risk",
          "kind": "number"
        },
        {
          "id": "bPpg",
          "label": "Their side: total PPG",
          "kind": "number"
        },
        {
          "id": "bRisk",
          "label": "Their side: injury risk",
          "kind": "number"
        },
        {
          "id": "weeks",
          "label": "Weeks remaining",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "delta",
          "label": "Net points gained"
        },
        {
          "id": "a",
          "label": "Value you give up"
        },
        {
          "id": "b",
          "label": "Value you receive"
        },
        {
          "id": "edge",
          "label": "Edge"
        }
      ]
    },
    {
      "slug": "parlay-odds",
      "url": "https://www.revenuelab.fyi/toolbox/parlay-odds",
      "title": "Parlay Odds & Payout Calculator",
      "category": "math",
      "summary": "Combine American odds into a parlay payout and implied probability.",
      "formula": "Decimal odds multiply; implied probability = 1 ÷ combined decimal odds.",
      "inputs": [
        {
          "id": "stake",
          "label": "Stake",
          "kind": "number"
        },
        {
          "id": "o1",
          "label": "Leg 1 (American odds)",
          "kind": "number"
        },
        {
          "id": "o2",
          "label": "Leg 2",
          "kind": "number"
        },
        {
          "id": "o3",
          "label": "Leg 3",
          "kind": "number"
        },
        {
          "id": "o4",
          "label": "Leg 4 (0 to skip)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "payout",
          "label": "Total payout"
        },
        {
          "id": "profit",
          "label": "Profit"
        },
        {
          "id": "combined",
          "label": "Combined decimal odds"
        },
        {
          "id": "american",
          "label": "Combined American odds"
        },
        {
          "id": "implied",
          "label": "Implied win probability"
        }
      ]
    },
    {
      "slug": "kelly-criterion",
      "url": "https://www.revenuelab.fyi/toolbox/kelly-criterion",
      "title": "Kelly Criterion Bet Size Calculator",
      "category": "math",
      "summary": "Optimal stake as a fraction of bankroll for a given edge.",
      "formula": "f* = (bp − q) ÷ b, where b = decimal odds − 1, p = win probability, q = 1 − p.",
      "inputs": [
        {
          "id": "bankroll",
          "label": "Bankroll",
          "kind": "number"
        },
        {
          "id": "prob",
          "label": "Your win probability",
          "kind": "number"
        },
        {
          "id": "odds",
          "label": "Decimal odds offered",
          "kind": "number"
        },
        {
          "id": "fraction",
          "label": "Kelly fraction used",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "stake",
          "label": "Recommended stake"
        },
        {
          "id": "kelly",
          "label": "Full Kelly fraction"
        },
        {
          "id": "usedPct",
          "label": "Fraction of bankroll used"
        },
        {
          "id": "ev",
          "label": "Expected value per unit"
        }
      ]
    },
    {
      "slug": "hiking-time",
      "url": "https://www.revenuelab.fyi/toolbox/hiking-time",
      "title": "Hiking Time Calculator (Naismith's Rule)",
      "category": "other",
      "summary": "Trail time from distance, elevation gain, pack weight, and terrain.",
      "formula": "Time = distance ÷ pace + elevation gain ÷ 2,000 ft per hour, adjusted for load and terrain.",
      "inputs": [
        {
          "id": "miles",
          "label": "Trail distance",
          "kind": "number"
        },
        {
          "id": "gain",
          "label": "Elevation gain",
          "kind": "number"
        },
        {
          "id": "pace",
          "label": "Flat walking pace",
          "kind": "number"
        },
        {
          "id": "pack",
          "label": "Pack weight",
          "kind": "number"
        },
        {
          "id": "terrain",
          "label": "Terrain",
          "kind": "select"
        },
        {
          "id": "breaks",
          "label": "Break time",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total time on trail"
        },
        {
          "id": "moving",
          "label": "Moving time"
        },
        {
          "id": "climb",
          "label": "Time added by climbing"
        },
        {
          "id": "avgMph",
          "label": "Average speed (mph)"
        }
      ]
    },
    {
      "slug": "backpacking-food-weight",
      "url": "https://www.revenuelab.fyi/toolbox/backpacking-food-weight",
      "title": "Backpacking Food Weight & Calorie Calculator",
      "category": "other",
      "summary": "Daily calories, food weight, and resupply planning for a thru-hike.",
      "formula": "Calories ≈ BMR + 100 × miles + 0.05 × gain; weight = calories ÷ calorie density.",
      "inputs": [
        {
          "id": "lbs",
          "label": "Body weight",
          "kind": "number"
        },
        {
          "id": "miles",
          "label": "Miles per day",
          "kind": "number"
        },
        {
          "id": "gain",
          "label": "Daily elevation gain",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Days between resupply",
          "kind": "number"
        },
        {
          "id": "density",
          "label": "Food calorie density",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "daily",
          "label": "Calories needed per day"
        },
        {
          "id": "lbsPerDay",
          "label": "Food weight per day (lb)"
        },
        {
          "id": "carryLbs",
          "label": "Food to carry (lb)"
        },
        {
          "id": "ozPerDay",
          "label": "Ounces per day"
        },
        {
          "id": "totalCal",
          "label": "Total calories to pack"
        }
      ]
    },
    {
      "slug": "tent-campsite-cost",
      "url": "https://www.revenuelab.fyi/toolbox/tent-campsite-cost",
      "title": "Camping vs Hotel Trip Cost Calculator",
      "category": "other",
      "summary": "Compare camping totals against a hotel trip, including gear payback.",
      "formula": "Camp total = fees + fuel + food + gear ÷ trips over gear life.",
      "inputs": [
        {
          "id": "nights",
          "label": "Nights",
          "kind": "number"
        },
        {
          "id": "siteFee",
          "label": "Campsite fee per night",
          "kind": "number"
        },
        {
          "id": "hotel",
          "label": "Hotel per night",
          "kind": "number"
        },
        {
          "id": "gear",
          "label": "Gear cost",
          "kind": "number"
        },
        {
          "id": "tripsLife",
          "label": "Trips over gear lifetime",
          "kind": "number"
        },
        {
          "id": "miles",
          "label": "Round-trip drive",
          "kind": "number"
        },
        {
          "id": "mpg",
          "label": "Fuel economy",
          "kind": "number"
        },
        {
          "id": "gas",
          "label": "Fuel price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "camp",
          "label": "Camping trip total"
        },
        {
          "id": "hotelTotal",
          "label": "Hotel trip total"
        },
        {
          "id": "savings",
          "label": "Savings by camping"
        },
        {
          "id": "perNight",
          "label": "Camping cost per night"
        },
        {
          "id": "gearShare",
          "label": "Gear cost this trip"
        }
      ]
    },
    {
      "slug": "fishing-boat-cost",
      "url": "https://www.revenuelab.fyi/toolbox/fishing-boat-cost",
      "title": "Boat Ownership Cost Per Outing Calculator",
      "category": "other",
      "summary": "The real hourly cost of a boat once slip, insurance, and fuel land.",
      "formula": "Per outing = (depreciation + fixed costs + fuel) ÷ outings per year.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years you'll keep it",
          "kind": "number"
        },
        {
          "id": "resale",
          "label": "Expected resale",
          "kind": "number"
        },
        {
          "id": "slip",
          "label": "Slip / storage per year",
          "kind": "number"
        },
        {
          "id": "insurance",
          "label": "Insurance + registration per year",
          "kind": "number"
        },
        {
          "id": "maint",
          "label": "Maintenance per year",
          "kind": "number"
        },
        {
          "id": "outings",
          "label": "Outings per year",
          "kind": "number"
        },
        {
          "id": "fuelPer",
          "label": "Fuel per outing",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perOuting",
          "label": "Cost per outing"
        },
        {
          "id": "annual",
          "label": "Total annual cost"
        },
        {
          "id": "dep",
          "label": "Annual depreciation"
        },
        {
          "id": "fixedPerOuting",
          "label": "Fixed cost per outing"
        }
      ]
    },
    {
      "slug": "ski-pass-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/ski-pass-breakeven",
      "title": "Ski Season Pass Break-Even Calculator",
      "category": "other",
      "summary": "How many days it takes for a season pass to beat day tickets.",
      "formula": "Break-even days = pass price ÷ (day ticket − pass holder discount).",
      "inputs": [
        {
          "id": "pass",
          "label": "Season pass price",
          "kind": "number"
        },
        {
          "id": "dayTicket",
          "label": "Walk-up day ticket",
          "kind": "number"
        },
        {
          "id": "plannedDays",
          "label": "Days you'll ski",
          "kind": "number"
        },
        {
          "id": "perks",
          "label": "Pass perks value per day",
          "kind": "number"
        },
        {
          "id": "travel",
          "label": "Travel cost per day",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "be",
          "label": "Break-even days"
        },
        {
          "id": "savings",
          "label": "Savings with the pass"
        },
        {
          "id": "passTotal",
          "label": "Season total with pass"
        },
        {
          "id": "ticketTotal",
          "label": "Season total on day tickets"
        },
        {
          "id": "perDay",
          "label": "Effective cost per ski day"
        }
      ]
    },
    {
      "slug": "iv-drip-rate",
      "url": "https://www.revenuelab.fyi/toolbox/iv-drip-rate",
      "title": "IV Drip Rate Calculator",
      "category": "fitness-health",
      "summary": "Drops per minute and mL/hr for any infusion volume and time.",
      "formula": "mL/hr = volume ÷ hours. gtt/min = (volume × drop factor) ÷ minutes.",
      "inputs": [
        {
          "id": "volume",
          "label": "Total volume",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Infusion time",
          "kind": "number"
        },
        {
          "id": "dropFactor",
          "label": "Tubing drop factor",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "mlhr",
          "label": "Pump rate (mL/hr)"
        },
        {
          "id": "gtt",
          "label": "Gravity rate (drops/min)"
        },
        {
          "id": "gttSec",
          "label": "Seconds between drops"
        },
        {
          "id": "mlmin",
          "label": "mL per minute"
        }
      ]
    },
    {
      "slug": "pediatric-dose",
      "url": "https://www.revenuelab.fyi/toolbox/pediatric-dose",
      "title": "Weight-Based Dosage Calculator",
      "category": "fitness-health",
      "summary": "Total dose and volume to draw from a mg/kg order.",
      "formula": "Dose = weight (kg) × mg/kg. Volume = dose ÷ concentration.",
      "inputs": [
        {
          "id": "kg",
          "label": "Patient weight",
          "kind": "number"
        },
        {
          "id": "mgkg",
          "label": "Ordered dose",
          "kind": "number"
        },
        {
          "id": "conc",
          "label": "Concentration",
          "kind": "number"
        },
        {
          "id": "perDay",
          "label": "Doses per day",
          "kind": "number"
        },
        {
          "id": "maxDay",
          "label": "Max daily dose",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "dose",
          "label": "Dose per administration (mg)"
        },
        {
          "id": "volume",
          "label": "Volume to draw (mL)"
        },
        {
          "id": "daily",
          "label": "Total daily dose (mg)"
        },
        {
          "id": "headroom",
          "label": "Remaining under daily max (mg)"
        },
        {
          "id": "pctMax",
          "label": "Percent of daily max"
        }
      ]
    },
    {
      "slug": "egfr",
      "url": "https://www.revenuelab.fyi/toolbox/egfr",
      "title": "eGFR Kidney Function Calculator",
      "category": "fitness-health",
      "summary": "Estimated glomerular filtration rate from serum creatinine.",
      "formula": "CKD-EPI 2021: 142 × min(Scr/κ,1)^α × max(Scr/κ,1)^−1.200 × 0.9938^age × 1.012 if female.",
      "inputs": [
        {
          "id": "scr",
          "label": "Serum creatinine",
          "kind": "number"
        },
        {
          "id": "age",
          "label": "Age",
          "kind": "number"
        },
        {
          "id": "sex",
          "label": "Sex",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "egfr",
          "label": "eGFR (mL/min/1.73 m²)"
        },
        {
          "id": "stage",
          "label": "CKD stage"
        },
        {
          "id": "pctNormal",
          "label": "Percent of typical function"
        }
      ]
    },
    {
      "slug": "anion-gap",
      "url": "https://www.revenuelab.fyi/toolbox/anion-gap",
      "title": "Anion Gap Calculator",
      "category": "fitness-health",
      "summary": "Serum anion gap with albumin correction and delta gap.",
      "formula": "AG = Na − (Cl + HCO₃). Corrected AG adds 2.5 per g/dL albumin below 4.0.",
      "inputs": [
        {
          "id": "na",
          "label": "Sodium",
          "kind": "number"
        },
        {
          "id": "cl",
          "label": "Chloride",
          "kind": "number"
        },
        {
          "id": "hco3",
          "label": "Bicarbonate",
          "kind": "number"
        },
        {
          "id": "alb",
          "label": "Albumin",
          "kind": "number"
        },
        {
          "id": "k",
          "label": "Potassium (optional)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ag",
          "label": "Anion gap (mEq/L)"
        },
        {
          "id": "corrected",
          "label": "Albumin-corrected gap"
        },
        {
          "id": "delta",
          "label": "Delta gap"
        },
        {
          "id": "deltaRatio",
          "label": "Delta ratio"
        },
        {
          "id": "withK",
          "label": "Gap including potassium"
        }
      ]
    },
    {
      "slug": "corrected-sodium",
      "url": "https://www.revenuelab.fyi/toolbox/corrected-sodium",
      "title": "Corrected Sodium Calculator",
      "category": "fitness-health",
      "summary": "Adjust measured sodium for hyperglycemia, plus free water deficit.",
      "formula": "Corrected Na = measured Na + factor × (glucose − 100) ÷ 100.",
      "inputs": [
        {
          "id": "na",
          "label": "Measured sodium",
          "kind": "number"
        },
        {
          "id": "glucose",
          "label": "Serum glucose",
          "kind": "number"
        },
        {
          "id": "kg",
          "label": "Body weight",
          "kind": "number"
        },
        {
          "id": "sex",
          "label": "Sex",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "classic",
          "label": "Corrected Na (1.6 factor)"
        },
        {
          "id": "hillier",
          "label": "Corrected Na (2.4 factor)"
        },
        {
          "id": "deficit",
          "label": "Free water deficit (L)"
        },
        {
          "id": "tbw",
          "label": "Total body water (L)"
        }
      ]
    },
    {
      "slug": "insulin-carb-ratio",
      "url": "https://www.revenuelab.fyi/toolbox/insulin-carb-ratio",
      "title": "Insulin Dose & Carb Ratio Calculator",
      "category": "fitness-health",
      "summary": "Meal bolus, correction dose, and insulin sensitivity factor.",
      "formula": "Bolus = carbs ÷ I:C ratio + (current BG − target) ÷ correction factor.",
      "inputs": [
        {
          "id": "carbs",
          "label": "Carbohydrates in meal",
          "kind": "number"
        },
        {
          "id": "icr",
          "label": "Insulin-to-carb ratio (1 unit per X g)",
          "kind": "number"
        },
        {
          "id": "bg",
          "label": "Current blood glucose",
          "kind": "number"
        },
        {
          "id": "target",
          "label": "Target glucose",
          "kind": "number"
        },
        {
          "id": "cf",
          "label": "Correction factor (mg/dL per unit)",
          "kind": "number"
        },
        {
          "id": "tdd",
          "label": "Total daily dose",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total bolus (units)"
        },
        {
          "id": "meal",
          "label": "Meal coverage (units)"
        },
        {
          "id": "correction",
          "label": "Correction dose (units)"
        },
        {
          "id": "rule500",
          "label": "Suggested I:C from 500 rule"
        },
        {
          "id": "rule1800",
          "label": "Suggested correction factor (1800 rule)"
        }
      ]
    },
    {
      "slug": "a1c-to-glucose",
      "url": "https://www.revenuelab.fyi/toolbox/a1c-to-glucose",
      "title": "A1C to Average Glucose Converter",
      "category": "fitness-health",
      "summary": "Convert HbA1c to estimated average glucose in mg/dL and mmol/L.",
      "formula": "eAG (mg/dL) = 28.7 × A1C − 46.7.",
      "inputs": [
        {
          "id": "a1c",
          "label": "HbA1c",
          "kind": "number"
        },
        {
          "id": "avgBg",
          "label": "Or your meter average",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "eag",
          "label": "Estimated average glucose (mg/dL)"
        },
        {
          "id": "mmol",
          "label": "Average glucose (mmol/L)"
        },
        {
          "id": "ifcc",
          "label": "IFCC A1C (mmol/mol)"
        },
        {
          "id": "a1cFromBg",
          "label": "A1C implied by your meter average"
        }
      ]
    },
    {
      "slug": "map-blood-pressure",
      "url": "https://www.revenuelab.fyi/toolbox/map-blood-pressure",
      "title": "Mean Arterial Pressure Calculator",
      "category": "fitness-health",
      "summary": "Mean arterial pressure, pulse pressure, and perfusion check.",
      "formula": "MAP = DBP + ⅓ × (SBP − DBP).",
      "inputs": [
        {
          "id": "sbp",
          "label": "Systolic",
          "kind": "number"
        },
        {
          "id": "dbp",
          "label": "Diastolic",
          "kind": "number"
        },
        {
          "id": "icp",
          "label": "ICP or CVP (optional)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "map",
          "label": "Mean arterial pressure"
        },
        {
          "id": "pp",
          "label": "Pulse pressure"
        },
        {
          "id": "ppi",
          "label": "Pulse pressure index"
        },
        {
          "id": "cpp",
          "label": "Perfusion pressure (MAP − ICP/CVP)"
        }
      ]
    },
    {
      "slug": "body-surface-area",
      "url": "https://www.revenuelab.fyi/toolbox/body-surface-area",
      "title": "Body Surface Area (BSA) Calculator",
      "category": "fitness-health",
      "summary": "BSA by Mosteller, Du Bois, and Haycock formulas.",
      "formula": "Mosteller: √(height cm × weight kg ÷ 3600).",
      "inputs": [
        {
          "id": "cm",
          "label": "Height",
          "kind": "number"
        },
        {
          "id": "kg",
          "label": "Weight",
          "kind": "number"
        },
        {
          "id": "co",
          "label": "Cardiac output (optional)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "mosteller",
          "label": "BSA — Mosteller (m²)"
        },
        {
          "id": "dubois",
          "label": "BSA — Du Bois (m²)"
        },
        {
          "id": "haycock",
          "label": "BSA — Haycock (m²)"
        },
        {
          "id": "cardiacIndex",
          "label": "Cardiac index (L/min/m²)"
        }
      ]
    },
    {
      "slug": "burn-tbsa",
      "url": "https://www.revenuelab.fyi/toolbox/burn-tbsa",
      "title": "Burn TBSA & Fluid Resuscitation Calculator",
      "category": "fitness-health",
      "summary": "Rule of nines total body surface area and Parkland fluid volume.",
      "formula": "Parkland: 4 mL × kg × %TBSA, half in the first 8 hours.",
      "inputs": [
        {
          "id": "tbsa",
          "label": "Burned surface area",
          "kind": "number"
        },
        {
          "id": "kg",
          "label": "Body weight",
          "kind": "number"
        },
        {
          "id": "factor",
          "label": "Formula",
          "kind": "select"
        },
        {
          "id": "elapsed",
          "label": "Hours since injury",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "24-hour fluid volume (mL)"
        },
        {
          "id": "first8",
          "label": "First 8 hours (mL)"
        },
        {
          "id": "rateNow",
          "label": "Current rate to catch up (mL/hr)"
        },
        {
          "id": "next16Rate",
          "label": "Hours 8–24 rate (mL/hr)"
        },
        {
          "id": "urineTarget",
          "label": "Urine output target (mL/hr)"
        }
      ]
    },
    {
      "slug": "apgar-score",
      "url": "https://www.revenuelab.fyi/toolbox/apgar-score",
      "title": "Apgar Score Calculator",
      "category": "fitness-health",
      "summary": "Score a newborn across the five Apgar criteria.",
      "formula": "Sum of five criteria scored 0, 1, or 2 each.",
      "inputs": [
        {
          "id": "appearance",
          "label": "Appearance (skin color) 0–2",
          "kind": "number"
        },
        {
          "id": "pulse",
          "label": "Pulse 0–2",
          "kind": "number"
        },
        {
          "id": "grimace",
          "label": "Grimace (reflex) 0–2",
          "kind": "number"
        },
        {
          "id": "activity",
          "label": "Activity (tone) 0–2",
          "kind": "number"
        },
        {
          "id": "respiration",
          "label": "Respiration 0–2",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Apgar score"
        },
        {
          "id": "band",
          "label": "Interpretation band"
        },
        {
          "id": "pct",
          "label": "Score as percentage"
        }
      ]
    },
    {
      "slug": "medication-cost-per-dose",
      "url": "https://www.revenuelab.fyi/toolbox/medication-cost-per-dose",
      "title": "Medication Cost Per Dose Calculator",
      "category": "fitness-health",
      "summary": "Cost per dose, per day, and annual — brand vs generic.",
      "formula": "Per dose = pack price ÷ doses per pack; annual = per-dose × doses/day × 365.",
      "inputs": [
        {
          "id": "packPrice",
          "label": "Price per package",
          "kind": "number"
        },
        {
          "id": "dosesPack",
          "label": "Doses per package",
          "kind": "number"
        },
        {
          "id": "perDay",
          "label": "Doses per day",
          "kind": "number"
        },
        {
          "id": "genericPrice",
          "label": "Generic package price",
          "kind": "number"
        },
        {
          "id": "copay",
          "label": "Your copay per fill",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perDose",
          "label": "Cost per dose"
        },
        {
          "id": "daily",
          "label": "Cost per day"
        },
        {
          "id": "annual",
          "label": "Annual cost (cash price)"
        },
        {
          "id": "genericAnnual",
          "label": "Annual cost on generic"
        },
        {
          "id": "copayAnnual",
          "label": "Annual cost at your copay"
        }
      ]
    },
    {
      "slug": "crop-yield-per-acre",
      "url": "https://www.revenuelab.fyi/toolbox/crop-yield-per-acre",
      "title": "Crop Yield & Revenue Per Acre Calculator",
      "category": "other",
      "summary": "Bushels per acre, gross revenue, and net margin after inputs.",
      "formula": "Revenue = yield × price; net = revenue − inputs − land.",
      "inputs": [
        {
          "id": "acres",
          "label": "Acres planted",
          "kind": "number"
        },
        {
          "id": "yieldAcre",
          "label": "Yield",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price",
          "kind": "number"
        },
        {
          "id": "inputs",
          "label": "Input cost per acre",
          "kind": "number"
        },
        {
          "id": "land",
          "label": "Land / rent per acre",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netAcre",
          "label": "Net margin per acre"
        },
        {
          "id": "revAcre",
          "label": "Gross revenue per acre"
        },
        {
          "id": "totalNet",
          "label": "Total net on the operation"
        },
        {
          "id": "totalRev",
          "label": "Total gross revenue"
        },
        {
          "id": "breakeven",
          "label": "Break-even price per bushel"
        }
      ]
    },
    {
      "slug": "seeding-rate",
      "url": "https://www.revenuelab.fyi/toolbox/seeding-rate",
      "title": "Seeding Rate Calculator",
      "category": "other",
      "summary": "Seeds per acre, pounds of seed, and bags to order.",
      "formula": "Seeding rate = target population ÷ (germination × survival).",
      "inputs": [
        {
          "id": "target",
          "label": "Target plant population",
          "kind": "number"
        },
        {
          "id": "germ",
          "label": "Germination",
          "kind": "number"
        },
        {
          "id": "survival",
          "label": "Expected field survival",
          "kind": "number"
        },
        {
          "id": "seedsPerLb",
          "label": "Seeds per pound",
          "kind": "number"
        },
        {
          "id": "acres",
          "label": "Acres",
          "kind": "number"
        },
        {
          "id": "bagLb",
          "label": "Pounds per bag",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rate",
          "label": "Seeding rate (seeds/acre)"
        },
        {
          "id": "lbsAcre",
          "label": "Pounds per acre"
        },
        {
          "id": "totalLbs",
          "label": "Total seed needed (lb)"
        },
        {
          "id": "bags",
          "label": "Bags to order"
        },
        {
          "id": "totalSeeds",
          "label": "Total seeds"
        }
      ]
    },
    {
      "slug": "fertilizer-blend",
      "url": "https://www.revenuelab.fyi/toolbox/fertilizer-blend",
      "title": "Fertilizer Blend & NPK Rate Calculator",
      "category": "other",
      "summary": "Product pounds needed to hit an N-P-K target per acre.",
      "formula": "Product lb/acre = nutrient lb/acre ÷ (analysis % ÷ 100).",
      "inputs": [
        {
          "id": "nTarget",
          "label": "Nitrogen target",
          "kind": "number"
        },
        {
          "id": "nPct",
          "label": "Product nitrogen",
          "kind": "number"
        },
        {
          "id": "pTarget",
          "label": "Phosphate target",
          "kind": "number"
        },
        {
          "id": "pPct",
          "label": "Product phosphate",
          "kind": "number"
        },
        {
          "id": "acres",
          "label": "Acres",
          "kind": "number"
        },
        {
          "id": "nPrice",
          "label": "N product price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "nRate",
          "label": "Nitrogen product (lb/acre)"
        },
        {
          "id": "pRate",
          "label": "Phosphate product (lb/acre)"
        },
        {
          "id": "nTons",
          "label": "Nitrogen product needed (tons)"
        },
        {
          "id": "nCost",
          "label": "Nitrogen cost"
        },
        {
          "id": "costPerLbN",
          "label": "Cost per pound of N"
        }
      ]
    },
    {
      "slug": "cattle-stocking-rate",
      "url": "https://www.revenuelab.fyi/toolbox/cattle-stocking-rate",
      "title": "Cattle Stocking Rate Calculator",
      "category": "other",
      "summary": "Animal units your pasture supports and grazing days available.",
      "formula": "AUM = (forage lb/acre × utilization) ÷ 780 lb per animal unit month.",
      "inputs": [
        {
          "id": "acres",
          "label": "Pasture acres",
          "kind": "number"
        },
        {
          "id": "forage",
          "label": "Forage production",
          "kind": "number"
        },
        {
          "id": "util",
          "label": "Harvest efficiency",
          "kind": "number"
        },
        {
          "id": "cowLb",
          "label": "Average cow weight",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Grazing season",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "head",
          "label": "Head the pasture supports"
        },
        {
          "id": "acresPerCow",
          "label": "Acres per cow"
        },
        {
          "id": "aum",
          "label": "Animal unit months available"
        },
        {
          "id": "usable",
          "label": "Usable forage (lb)"
        },
        {
          "id": "grazingDays",
          "label": "Grazing days at that stocking"
        }
      ]
    },
    {
      "slug": "hay-bale-needs",
      "url": "https://www.revenuelab.fyi/toolbox/hay-bale-needs",
      "title": "Hay Feeding & Bale Requirement Calculator",
      "category": "other",
      "summary": "Bales and tons needed to feed a herd through winter.",
      "formula": "Daily need = weight × intake % × (1 + waste); bales = total lb ÷ bale weight.",
      "inputs": [
        {
          "id": "head",
          "label": "Head to feed",
          "kind": "number"
        },
        {
          "id": "lbs",
          "label": "Average body weight",
          "kind": "number"
        },
        {
          "id": "intake",
          "label": "Daily intake",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Feeding days",
          "kind": "number"
        },
        {
          "id": "waste",
          "label": "Feeding waste",
          "kind": "number"
        },
        {
          "id": "baleLb",
          "label": "Bale weight",
          "kind": "number"
        },
        {
          "id": "balePrice",
          "label": "Price per bale",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "bales",
          "label": "Bales needed"
        },
        {
          "id": "tons",
          "label": "Total hay (tons)"
        },
        {
          "id": "cost",
          "label": "Total hay cost"
        },
        {
          "id": "daily",
          "label": "Daily herd need (lb)"
        },
        {
          "id": "costPerHeadDay",
          "label": "Cost per head per day"
        }
      ]
    },
    {
      "slug": "chicken-flock-economics",
      "url": "https://www.revenuelab.fyi/toolbox/chicken-flock-economics",
      "title": "Backyard Chicken Economics Calculator",
      "category": "other",
      "summary": "Cost per egg, annual feed cost, and payback on the coop.",
      "formula": "Cost per egg = (feed + amortized coop + supplies) ÷ eggs produced.",
      "inputs": [
        {
          "id": "hens",
          "label": "Laying hens",
          "kind": "number"
        },
        {
          "id": "eggsWeek",
          "label": "Eggs per hen per week",
          "kind": "number"
        },
        {
          "id": "feedLb",
          "label": "Feed per hen per day",
          "kind": "number"
        },
        {
          "id": "feedPrice",
          "label": "Feed price",
          "kind": "number"
        },
        {
          "id": "coop",
          "label": "Coop + setup cost",
          "kind": "number"
        },
        {
          "id": "coopYears",
          "label": "Coop lifespan",
          "kind": "number"
        },
        {
          "id": "misc",
          "label": "Bedding + misc per year",
          "kind": "number"
        },
        {
          "id": "storePrice",
          "label": "Store price per dozen",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perDozen",
          "label": "Your cost per dozen"
        },
        {
          "id": "eggsYear",
          "label": "Eggs per year"
        },
        {
          "id": "annual",
          "label": "Total annual cost"
        },
        {
          "id": "feedYear",
          "label": "Feed cost per year"
        },
        {
          "id": "savings",
          "label": "Annual savings vs store"
        }
      ]
    },
    {
      "slug": "irrigation-water-need",
      "url": "https://www.revenuelab.fyi/toolbox/irrigation-water-need",
      "title": "Irrigation Water Requirement Calculator",
      "category": "other",
      "summary": "Inches of water, gallons, and run time for a field or garden.",
      "formula": "Deficit = (ET × Kc − rainfall) ÷ efficiency. 1 acre-inch = 27,154 gallons.",
      "inputs": [
        {
          "id": "area",
          "label": "Area",
          "kind": "number"
        },
        {
          "id": "et",
          "label": "Reference ET this period",
          "kind": "number"
        },
        {
          "id": "kc",
          "label": "Crop coefficient (Kc)",
          "kind": "number"
        },
        {
          "id": "rain",
          "label": "Effective rainfall",
          "kind": "number"
        },
        {
          "id": "eff",
          "label": "System efficiency",
          "kind": "number"
        },
        {
          "id": "gpm",
          "label": "System flow rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "applied",
          "label": "Water to apply (inches)"
        },
        {
          "id": "gallons",
          "label": "Total gallons"
        },
        {
          "id": "hours",
          "label": "System run time (hours)"
        },
        {
          "id": "need",
          "label": "Net crop need (inches)"
        },
        {
          "id": "acreInches",
          "label": "Acre-inches applied"
        }
      ]
    },
    {
      "slug": "greenhouse-heating",
      "url": "https://www.revenuelab.fyi/toolbox/greenhouse-heating",
      "title": "Greenhouse Heating Cost Calculator",
      "category": "other",
      "summary": "BTU load and seasonal heating cost for any glazing type.",
      "formula": "BTU/hr = surface area × U-value × ΔT.",
      "inputs": [
        {
          "id": "area",
          "label": "Glazing surface area",
          "kind": "number"
        },
        {
          "id": "uValue",
          "label": "U-value of glazing",
          "kind": "number"
        },
        {
          "id": "inside",
          "label": "Target inside temp",
          "kind": "number"
        },
        {
          "id": "outside",
          "label": "Design outside temp",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Heating hours per season",
          "kind": "number"
        },
        {
          "id": "fuelPrice",
          "label": "Propane price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "btuHr",
          "label": "Peak heat load (BTU/hr)"
        },
        {
          "id": "cost",
          "label": "Season propane cost"
        },
        {
          "id": "gallons",
          "label": "Propane needed (gal)"
        },
        {
          "id": "seasonMmbtu",
          "label": "Season energy (MMBTU)"
        },
        {
          "id": "kwh",
          "label": "Equivalent kWh"
        }
      ]
    },
    {
      "slug": "beehive-honey-yield",
      "url": "https://www.revenuelab.fyi/toolbox/beehive-honey-yield",
      "title": "Beekeeping Honey Yield & Profit Calculator",
      "category": "other",
      "summary": "Pounds of honey per hive, jars filled, and net profit.",
      "formula": "Net = (yield × hives × price per lb) − per-hive costs.",
      "inputs": [
        {
          "id": "hives",
          "label": "Productive hives",
          "kind": "number"
        },
        {
          "id": "yieldHive",
          "label": "Honey per hive",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Retail price",
          "kind": "number"
        },
        {
          "id": "jarOz",
          "label": "Jar size",
          "kind": "number"
        },
        {
          "id": "costHive",
          "label": "Annual cost per hive",
          "kind": "number"
        },
        {
          "id": "jarCost",
          "label": "Jar + label cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Net profit"
        },
        {
          "id": "lbs",
          "label": "Total honey (lb)"
        },
        {
          "id": "jars",
          "label": "Jars filled"
        },
        {
          "id": "revenue",
          "label": "Gross revenue"
        },
        {
          "id": "perHive",
          "label": "Profit per hive"
        }
      ]
    },
    {
      "slug": "farm-equipment-cost-per-acre",
      "url": "https://www.revenuelab.fyi/toolbox/farm-equipment-cost-per-acre",
      "title": "Farm Equipment Cost Per Acre Calculator",
      "category": "other",
      "summary": "Ownership plus operating cost of a machine per acre covered.",
      "formula": "Per acre = (depreciation + interest + insurance) ÷ acres + fuel + repairs + labor per acre.",
      "inputs": [
        {
          "id": "price",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "salvage",
          "label": "Salvage value",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years of ownership",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Interest rate",
          "kind": "number"
        },
        {
          "id": "acres",
          "label": "Acres covered per year",
          "kind": "number"
        },
        {
          "id": "acresHr",
          "label": "Acres per hour",
          "kind": "number"
        },
        {
          "id": "fuelGph",
          "label": "Fuel use",
          "kind": "number"
        },
        {
          "id": "dieselPrice",
          "label": "Diesel price",
          "kind": "number"
        },
        {
          "id": "laborHr",
          "label": "Labor",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total cost per acre"
        },
        {
          "id": "ownAcre",
          "label": "Ownership cost per acre"
        },
        {
          "id": "fuelAcre",
          "label": "Fuel per acre"
        },
        {
          "id": "laborAcre",
          "label": "Labor per acre"
        },
        {
          "id": "annual",
          "label": "Total annual machine cost"
        }
      ]
    },
    {
      "slug": "grain-bin-capacity",
      "url": "https://www.revenuelab.fyi/toolbox/grain-bin-capacity",
      "title": "Grain Bin Capacity Calculator",
      "category": "other",
      "summary": "Bushels in a round bin, including the peak cone.",
      "formula": "Bushels = π r² × depth × 0.8036; cone adds ⅓ × π r² × cone height.",
      "inputs": [
        {
          "id": "diameter",
          "label": "Bin diameter",
          "kind": "number"
        },
        {
          "id": "depth",
          "label": "Grain depth (level)",
          "kind": "number"
        },
        {
          "id": "coneHt",
          "label": "Peak cone height",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Market price",
          "kind": "number"
        },
        {
          "id": "testWt",
          "label": "Test weight",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total bushels"
        },
        {
          "id": "cyl",
          "label": "Bushels in cylinder"
        },
        {
          "id": "cone",
          "label": "Bushels in peak"
        },
        {
          "id": "value",
          "label": "Value at market price"
        },
        {
          "id": "tons",
          "label": "Weight (tons)"
        }
      ]
    },
    {
      "slug": "compost-mix-ratio",
      "url": "https://www.revenuelab.fyi/toolbox/compost-mix-ratio",
      "title": "Compost C:N Ratio Calculator",
      "category": "other",
      "summary": "Balance browns and greens to hit an ideal carbon-to-nitrogen ratio.",
      "formula": "Blended C:N = total carbon ÷ total nitrogen, weighted by mass.",
      "inputs": [
        {
          "id": "brownLb",
          "label": "Browns (carbon material)",
          "kind": "number"
        },
        {
          "id": "brownCn",
          "label": "Browns C:N ratio",
          "kind": "number"
        },
        {
          "id": "greenLb",
          "label": "Greens (nitrogen material)",
          "kind": "number"
        },
        {
          "id": "greenCn",
          "label": "Greens C:N ratio",
          "kind": "number"
        },
        {
          "id": "target",
          "label": "Target C:N",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ratio",
          "label": "Blended C:N ratio"
        },
        {
          "id": "neededBrown",
          "label": "Browns needed for target (lb)"
        },
        {
          "id": "adjust",
          "label": "Browns to add (lb)"
        },
        {
          "id": "totalLb",
          "label": "Total pile weight (lb)"
        }
      ]
    },
    {
      "slug": "grazing-carrying-capacity",
      "url": "https://www.revenuelab.fyi/toolbox/grazing-carrying-capacity",
      "title": "Grazing Carrying Capacity Calculator",
      "category": "other",
      "summary": "How many head your pasture can carry through a grazing season.",
      "formula": "Usable forage (lb) = standing forage/acre × acres × utilization %; AUMs = usable forage ÷ 780; head supported = AUMs ÷ months ÷ AU size factor.",
      "inputs": [
        {
          "id": "acres",
          "label": "Pasture size",
          "kind": "number"
        },
        {
          "id": "forageLb",
          "label": "Standing forage",
          "kind": "number"
        },
        {
          "id": "utilization",
          "label": "Harvest utilization",
          "kind": "number"
        },
        {
          "id": "auSize",
          "label": "Animal unit equivalent per head",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Grazing season length",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "head",
          "label": "Head supported"
        },
        {
          "id": "aums",
          "label": "Total animal unit months"
        },
        {
          "id": "usable",
          "label": "Usable forage (lb)"
        },
        {
          "id": "grazingDays",
          "label": "Grazing days at that stock count"
        },
        {
          "id": "acresPerHead",
          "label": "Acres needed per head"
        }
      ]
    },
    {
      "slug": "hay-bale-cost-per-ton",
      "url": "https://www.revenuelab.fyi/toolbox/hay-bale-cost-per-ton",
      "title": "Hay Bale Cost Per Ton Calculator",
      "category": "financial",
      "summary": "Compare round and square bale pricing on an apples-to-apples ton basis.",
      "formula": "Cost/ton = (price per bale ÷ bale weight in lb) × 2000; effective cost/ton = cost/ton ÷ (1 − storage loss %) ÷ (1 − feeding loss %).",
      "inputs": [
        {
          "id": "price",
          "label": "Price per bale",
          "kind": "number"
        },
        {
          "id": "weight",
          "label": "Bale weight",
          "kind": "number"
        },
        {
          "id": "storageLoss",
          "label": "Storage/weathering loss",
          "kind": "number"
        },
        {
          "id": "feedingLoss",
          "label": "Feeding refusal/waste loss",
          "kind": "number"
        },
        {
          "id": "haulCost",
          "label": "Delivery cost per bale",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "effectiveCostTon",
          "label": "Effective cost per ton (delivered to animal)"
        },
        {
          "id": "rawCostTon",
          "label": "Sticker cost per ton"
        },
        {
          "id": "usableWeight",
          "label": "Usable weight per bale (lb)"
        },
        {
          "id": "wasteLbPerBale",
          "label": "Lost to waste per bale (lb)"
        }
      ]
    },
    {
      "slug": "silage-shrink-loss",
      "url": "https://www.revenuelab.fyi/toolbox/silage-shrink-loss",
      "title": "Silage Shrink Loss Calculator",
      "category": "financial",
      "summary": "Estimate dry matter and dollar loss from silage storage shrink.",
      "formula": "Dry matter lost (tons) = tons ensiled × shrink %; dollar loss = lost tons × value per ton; usable tons = tons ensiled − lost tons.",
      "inputs": [
        {
          "id": "tonsEnsiled",
          "label": "Tons ensiled (as-fed)",
          "kind": "number"
        },
        {
          "id": "storageType",
          "label": "Storage type",
          "kind": "select"
        },
        {
          "id": "customShrink",
          "label": "Override shrink % (0 = use storage default)",
          "kind": "number"
        },
        {
          "id": "valuePerTon",
          "label": "Value per ton as-fed",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "dollarLoss",
          "label": "Value lost to shrink"
        },
        {
          "id": "lostTons",
          "label": "Tons lost"
        },
        {
          "id": "usableTons",
          "label": "Usable tons remaining"
        },
        {
          "id": "shrinkPct",
          "label": "Shrink rate applied"
        }
      ]
    },
    {
      "slug": "irrigation-pumping-cost",
      "url": "https://www.revenuelab.fyi/toolbox/irrigation-pumping-cost",
      "title": "Irrigation Pumping Cost Calculator",
      "category": "financial",
      "summary": "Fuel or electricity cost to pump water for a given acre-inch of irrigation.",
      "formula": "Water HP = (GPM × TDH) ÷ 3960; input HP = water HP ÷ plant efficiency; fuel/energy = input HP × hours × consumption rate.",
      "inputs": [
        {
          "id": "acres",
          "label": "Acres irrigated",
          "kind": "number"
        },
        {
          "id": "acreInches",
          "label": "Water applied",
          "kind": "number"
        },
        {
          "id": "gpm",
          "label": "Pump flow rate",
          "kind": "number"
        },
        {
          "id": "tdh",
          "label": "Total dynamic head",
          "kind": "number"
        },
        {
          "id": "efficiency",
          "label": "Pumping plant efficiency",
          "kind": "number"
        },
        {
          "id": "powerSource",
          "label": "Power source",
          "kind": "select"
        },
        {
          "id": "unitCost",
          "label": "Fuel/energy unit cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalCost",
          "label": "Total pumping cost"
        },
        {
          "id": "costPerAcreInch",
          "label": "Cost per acre-inch"
        },
        {
          "id": "hours",
          "label": "Pumping hours needed"
        },
        {
          "id": "consumption",
          "label": "Fuel/energy consumed"
        },
        {
          "id": "inputHp",
          "label": "Input horsepower required"
        }
      ]
    },
    {
      "slug": "cover-crop-roi",
      "url": "https://www.revenuelab.fyi/toolbox/cover-crop-roi",
      "title": "Cover Crop ROI Calculator",
      "category": "financial",
      "summary": "Net cost or return of planting a cover crop versus fallow ground.",
      "formula": "Net return/acre = (N credit value + grazing value + cost-share − seed cost − termination cost − drilling cost).",
      "inputs": [
        {
          "id": "acres",
          "label": "Acres planted",
          "kind": "number"
        },
        {
          "id": "seedCost",
          "label": "Seed cost",
          "kind": "number"
        },
        {
          "id": "drillCost",
          "label": "Drilling/planting cost",
          "kind": "number"
        },
        {
          "id": "terminationCost",
          "label": "Termination (spray/roll/till)",
          "kind": "number"
        },
        {
          "id": "nCreditLb",
          "label": "Nitrogen credit from legume mix",
          "kind": "number"
        },
        {
          "id": "nPrice",
          "label": "Nitrogen price",
          "kind": "number"
        },
        {
          "id": "costShare",
          "label": "Cost-share payment",
          "kind": "number"
        },
        {
          "id": "grazingValue",
          "label": "Grazing/forage value",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netPerAcre",
          "label": "Net return per acre"
        },
        {
          "id": "totalNet",
          "label": "Total farm net return"
        },
        {
          "id": "cost",
          "label": "Total cost per acre"
        },
        {
          "id": "benefit",
          "label": "Total offsetting value per acre"
        },
        {
          "id": "nCreditValue",
          "label": "Nitrogen credit value"
        }
      ]
    },
    {
      "slug": "grain-drying-cost",
      "url": "https://www.revenuelab.fyi/toolbox/grain-drying-cost",
      "title": "Grain Drying Cost Calculator",
      "category": "financial",
      "summary": "Fuel cost and shrink to dry corn or beans down to storage moisture.",
      "formula": "Points removed = harvest moisture − target moisture; fuel cost = bushels × points × gal/pt × fuel price; shrink bu = bushels × points × shrink factor.",
      "inputs": [
        {
          "id": "bushels",
          "label": "Bushels to dry",
          "kind": "number"
        },
        {
          "id": "harvestMoisture",
          "label": "Harvest moisture",
          "kind": "number"
        },
        {
          "id": "targetMoisture",
          "label": "Target storage moisture",
          "kind": "number"
        },
        {
          "id": "galPerPoint",
          "label": "Fuel use per point per 1000 bu",
          "kind": "number"
        },
        {
          "id": "fuelPrice",
          "label": "Propane price",
          "kind": "number"
        },
        {
          "id": "shrinkFactor",
          "label": "Shrink factor per point",
          "kind": "number"
        },
        {
          "id": "grainPrice",
          "label": "Grain price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalCost",
          "label": "Total drying cost"
        },
        {
          "id": "costPerBu",
          "label": "Cost per bushel"
        },
        {
          "id": "fuelCost",
          "label": "Fuel cost"
        },
        {
          "id": "shrinkCost",
          "label": "Shrink cost (lost bushels)"
        },
        {
          "id": "shrinkBu",
          "label": "Bushels lost to shrink"
        }
      ]
    },
    {
      "slug": "cash-rent-vs-crop-share",
      "url": "https://www.revenuelab.fyi/toolbox/cash-rent-vs-crop-share",
      "title": "Cash Rent vs Crop Share Calculator",
      "category": "financial",
      "summary": "Compare landlord and tenant returns under a flat cash lease vs a crop share.",
      "formula": "Cash rent: landlord gets flat rent, tenant keeps (revenue − costs − rent). Crop share: landlord gets share of revenue minus share of shared costs, tenant gets the rest.",
      "inputs": [
        {
          "id": "acres",
          "label": "Acres",
          "kind": "number"
        },
        {
          "id": "yieldBu",
          "label": "Expected yield",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Expected price",
          "kind": "number"
        },
        {
          "id": "totalCostAcre",
          "label": "Total input cost",
          "kind": "number"
        },
        {
          "id": "cashRentAcre",
          "label": "Cash rent rate",
          "kind": "number"
        },
        {
          "id": "landlordSharePct",
          "label": "Landlord's crop share",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "tenantCashNet",
          "label": "Tenant net — cash rent"
        },
        {
          "id": "landlordCashNet",
          "label": "Landlord net — cash rent"
        },
        {
          "id": "tenantCropNet",
          "label": "Tenant net — crop share"
        },
        {
          "id": "landlordCropNet",
          "label": "Landlord net — crop share"
        },
        {
          "id": "revenuePerAcre",
          "label": "Gross revenue per acre"
        }
      ]
    },
    {
      "slug": "calf-weaning-weight-value",
      "url": "https://www.revenuelab.fyi/toolbox/calf-weaning-weight-value",
      "title": "Calf Weaning Weight Value Calculator",
      "category": "financial",
      "summary": "Adjusted 205-day weaning weight and sale value for a calf crop.",
      "formula": "Adj WW = ((actual WW − birth wt) ÷ age in days × 205) + birth wt + age-of-dam adjustment; sale value = adj WW × (base price − slide × (weight − base weight)/100).",
      "inputs": [
        {
          "id": "actualWeight",
          "label": "Actual weaning weight",
          "kind": "number"
        },
        {
          "id": "birthWeight",
          "label": "Birth weight",
          "kind": "number"
        },
        {
          "id": "ageDays",
          "label": "Age at weaning",
          "kind": "number"
        },
        {
          "id": "damAgeAdj",
          "label": "Age-of-dam adjustment",
          "kind": "number"
        },
        {
          "id": "basePrice",
          "label": "Base price at 500 lb",
          "kind": "number"
        },
        {
          "id": "slide",
          "label": "Price slide",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "adjWW",
          "label": "Adjusted 205-day weaning weight"
        },
        {
          "id": "priceCwt",
          "label": "Estimated price"
        },
        {
          "id": "saleValue",
          "label": "Estimated sale value per calf"
        },
        {
          "id": "adg",
          "label": "Average daily gain since birth"
        }
      ]
    },
    {
      "slug": "dairy-feed-cost-per-cwt",
      "url": "https://www.revenuelab.fyi/toolbox/dairy-feed-cost-per-cwt",
      "title": "Dairy Feed Cost Per Cwt Calculator",
      "category": "financial",
      "summary": "Daily ration cost translated into feed cost per hundredweight of milk shipped.",
      "formula": "Feed cost/cwt = daily ration cost ÷ (daily milk lb ÷ 100); IOFC = milk price × (milk lb/100) − ration cost.",
      "inputs": [
        {
          "id": "rationCost",
          "label": "Daily ration cost per cow",
          "kind": "number"
        },
        {
          "id": "milkLb",
          "label": "Daily milk production per cow",
          "kind": "number"
        },
        {
          "id": "milkPrice",
          "label": "Milk price",
          "kind": "number"
        },
        {
          "id": "dmi",
          "label": "Dry matter intake per cow",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "feedCostCwt",
          "label": "Feed cost per cwt of milk"
        },
        {
          "id": "iofc",
          "label": "Income over feed cost per cow/day"
        },
        {
          "id": "income",
          "label": "Milk income per cow/day"
        },
        {
          "id": "feedEfficiency",
          "label": "Feed efficiency (lb milk/lb DMI)"
        }
      ]
    },
    {
      "slug": "orchard-establishment-payback",
      "url": "https://www.revenuelab.fyi/toolbox/orchard-establishment-payback",
      "title": "Orchard Establishment Payback Calculator",
      "category": "financial",
      "summary": "Years to break even on planting a new orchard or vineyard block.",
      "formula": "Cumulative cash flow(year) = −establishment cost − Σ(carrying costs through non-bearing years) + Σ(revenue × yield ramp % − annual production cost); payback = first year cumulative ≥ 0.",
      "inputs": [
        {
          "id": "acres",
          "label": "Acres planted",
          "kind": "number"
        },
        {
          "id": "establishCostAcre",
          "label": "Establishment cost",
          "kind": "number"
        },
        {
          "id": "nonBearingYears",
          "label": "Non-bearing years",
          "kind": "number"
        },
        {
          "id": "carryingCostAcre",
          "label": "Annual carrying cost during non-bearing",
          "kind": "number"
        },
        {
          "id": "fullYieldRevenueAcre",
          "label": "Revenue per acre at full production",
          "kind": "number"
        },
        {
          "id": "annualProdCostAcre",
          "label": "Annual production cost once bearing",
          "kind": "number"
        },
        {
          "id": "yearsToFull",
          "label": "Years from first fruit to full production",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paybackYear",
          "label": "Years to payback"
        },
        {
          "id": "establish",
          "label": "Total establishment cost"
        },
        {
          "id": "totalCarrying",
          "label": "Total non-bearing carrying cost"
        },
        {
          "id": "cumulative",
          "label": "Cumulative cash flow at year 20"
        }
      ]
    },
    {
      "slug": "farm-equipment-own-vs-custom-hire",
      "url": "https://www.revenuelab.fyi/toolbox/farm-equipment-own-vs-custom-hire",
      "title": "Farm Equipment Own vs Custom Hire Calculator",
      "category": "financial",
      "summary": "Break-even acreage where owning equipment beats hiring custom work.",
      "formula": "Breakeven acres = annual fixed ownership cost ÷ (custom rate − owner operating cost per acre).",
      "inputs": [
        {
          "id": "purchasePrice",
          "label": "Equipment purchase price",
          "kind": "number"
        },
        {
          "id": "usefulLifeYears",
          "label": "Useful life",
          "kind": "number"
        },
        {
          "id": "salvagePct",
          "label": "Salvage value",
          "kind": "number"
        },
        {
          "id": "interestRate",
          "label": "Financing/opportunity rate",
          "kind": "number"
        },
        {
          "id": "annualInsuranceRepairs",
          "label": "Annual insurance + repairs",
          "kind": "number"
        },
        {
          "id": "ownerOpCostAcre",
          "label": "Owner's fuel/labor cost",
          "kind": "number"
        },
        {
          "id": "customRateAcre",
          "label": "Custom hire rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenAcres",
          "label": "Break-even acres to own"
        },
        {
          "id": "fixedCost",
          "label": "Annual fixed ownership cost"
        },
        {
          "id": "depreciation",
          "label": "Annual depreciation"
        },
        {
          "id": "interestCost",
          "label": "Annual interest/opportunity cost"
        }
      ]
    },
    {
      "slug": "crop-insurance-revenue-protection",
      "url": "https://www.revenuelab.fyi/toolbox/crop-insurance-revenue-protection",
      "title": "Crop Insurance Revenue Protection Payout Calculator",
      "category": "financial",
      "summary": "Estimate an RP crop insurance indemnity from yield and price outcomes.",
      "formula": "Guarantee = APH × coverage % × max(projected price, harvest price); actual revenue = actual yield × harvest price; indemnity = max(0, guarantee − actual revenue) × acres.",
      "inputs": [
        {
          "id": "aph",
          "label": "Approved APH yield",
          "kind": "number"
        },
        {
          "id": "coverageLevel",
          "label": "Coverage level",
          "kind": "number"
        },
        {
          "id": "projectedPrice",
          "label": "Projected (spring) price",
          "kind": "number"
        },
        {
          "id": "harvestPrice",
          "label": "Harvest price",
          "kind": "number"
        },
        {
          "id": "actualYield",
          "label": "Actual yield",
          "kind": "number"
        },
        {
          "id": "acres",
          "label": "Insured acres",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalIndemnity",
          "label": "Estimated total indemnity"
        },
        {
          "id": "indemnityAcre",
          "label": "Indemnity per acre"
        },
        {
          "id": "guaranteeRevenueAcre",
          "label": "Guaranteed revenue per acre"
        },
        {
          "id": "actualRevenueAcre",
          "label": "Actual revenue per acre"
        }
      ]
    },
    {
      "slug": "cattle-breakeven-price",
      "url": "https://www.revenuelab.fyi/toolbox/cattle-breakeven-price",
      "title": "Cattle Breakeven Price Calculator",
      "category": "financial",
      "summary": "Minimum sale price needed to cover purchase, feed, and yardage costs.",
      "formula": "Total cost = purchase cost + (gain lb × cost of gain per lb) + yardage (days × rate) + death loss adj + interest; breakeven $/cwt = total cost ÷ (finished weight ÷ 100).",
      "inputs": [
        {
          "id": "buyWeight",
          "label": "Purchase weight",
          "kind": "number"
        },
        {
          "id": "buyPrice",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "finishWeight",
          "label": "Finished/sale weight",
          "kind": "number"
        },
        {
          "id": "costOfGain",
          "label": "Cost of gain",
          "kind": "number"
        },
        {
          "id": "yardageDay",
          "label": "Yardage",
          "kind": "number"
        },
        {
          "id": "daysOnFeed",
          "label": "Days on feed",
          "kind": "number"
        },
        {
          "id": "deathLossPct",
          "label": "Death loss",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenCwt",
          "label": "Breakeven sale price"
        },
        {
          "id": "totalCost",
          "label": "Total cost per head"
        },
        {
          "id": "purchaseCost",
          "label": "Purchase cost"
        },
        {
          "id": "gainCost",
          "label": "Cost of gain, total"
        },
        {
          "id": "yardage",
          "label": "Total yardage cost"
        }
      ]
    },
    {
      "slug": "feedlot-cost-of-gain",
      "url": "https://www.revenuelab.fyi/toolbox/feedlot-cost-of-gain",
      "title": "Feedlot Cost of Gain Calculator",
      "category": "financial",
      "summary": "Dollar cost per pound of gain from ration cost and feed conversion.",
      "formula": "Cost of gain ($/lb) = (daily ration cost + daily yardage) ÷ average daily gain.",
      "inputs": [
        {
          "id": "rationCostDay",
          "label": "Daily ration cost",
          "kind": "number"
        },
        {
          "id": "yardageDay",
          "label": "Daily yardage",
          "kind": "number"
        },
        {
          "id": "adg",
          "label": "Average daily gain",
          "kind": "number"
        },
        {
          "id": "marketPriceLb",
          "label": "Expected market price for the gain",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cogLb",
          "label": "Cost per pound of gain"
        },
        {
          "id": "marginLb",
          "label": "Margin per pound of gain"
        },
        {
          "id": "dailyMargin",
          "label": "Margin per head per day"
        },
        {
          "id": "dailyCost",
          "label": "Total daily cost per head"
        }
      ]
    },
    {
      "slug": "manure-nutrient-value",
      "url": "https://www.revenuelab.fyi/toolbox/manure-nutrient-value",
      "title": "Manure Nutrient Value Calculator",
      "category": "financial",
      "summary": "Fertilizer value of applied manure based on N-P-K content and prices.",
      "formula": "Value/ton = (N lb × availability % × N price) + (P2O5 lb × P price) + (K2O lb × K price).",
      "inputs": [
        {
          "id": "nLb",
          "label": "Total nitrogen",
          "kind": "number"
        },
        {
          "id": "nAvailability",
          "label": "First-year N availability",
          "kind": "number"
        },
        {
          "id": "p2o5Lb",
          "label": "P2O5",
          "kind": "number"
        },
        {
          "id": "k2oLb",
          "label": "K2O",
          "kind": "number"
        },
        {
          "id": "nPrice",
          "label": "Nitrogen price",
          "kind": "number"
        },
        {
          "id": "pPrice",
          "label": "P2O5 price",
          "kind": "number"
        },
        {
          "id": "kPrice",
          "label": "K2O price",
          "kind": "number"
        },
        {
          "id": "tons",
          "label": "Tons applied",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "valuePerTon",
          "label": "Fertilizer value per ton"
        },
        {
          "id": "totalValue",
          "label": "Total value applied"
        },
        {
          "id": "nValue",
          "label": "Nitrogen value per ton"
        },
        {
          "id": "pValue",
          "label": "Phosphate value per ton"
        },
        {
          "id": "kValue",
          "label": "Potash value per ton"
        }
      ]
    },
    {
      "slug": "livestock-water-requirement",
      "url": "https://www.revenuelab.fyi/toolbox/livestock-water-requirement",
      "title": "Livestock Water Requirement Calculator",
      "category": "other",
      "summary": "Daily and peak water demand for a herd or flock by species and weather.",
      "formula": "Daily demand = head count × base gal/head/day × temperature adjustment factor; peak storage = daily demand × hours of no-flow buffer ÷ 24.",
      "inputs": [
        {
          "id": "species",
          "label": "Species",
          "kind": "select"
        },
        {
          "id": "head",
          "label": "Number of head",
          "kind": "number"
        },
        {
          "id": "temp",
          "label": "Expected high temperature",
          "kind": "number"
        },
        {
          "id": "bufferHours",
          "label": "Storage buffer needed",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "dailyDemand",
          "label": "Total daily water demand"
        },
        {
          "id": "gpm",
          "label": "Average flow rate needed"
        },
        {
          "id": "storageNeeded",
          "label": "Storage capacity for buffer window"
        },
        {
          "id": "tempFactor",
          "label": "Heat adjustment factor applied"
        }
      ]
    },
    {
      "slug": "pasture-rest-rotation",
      "url": "https://www.revenuelab.fyi/toolbox/pasture-rest-rotation",
      "title": "Pasture Rest & Rotation Planner",
      "category": "other",
      "summary": "Number of paddocks and rest days needed for a rotational grazing plan.",
      "formula": "Paddocks needed = (rest days ÷ grazing days per paddock) + 1; acres per paddock = total acres ÷ paddocks needed.",
      "inputs": [
        {
          "id": "totalAcres",
          "label": "Total grazing acres",
          "kind": "number"
        },
        {
          "id": "restDays",
          "label": "Target rest period",
          "kind": "number"
        },
        {
          "id": "grazeDaysPerPaddock",
          "label": "Grazing period per paddock",
          "kind": "number"
        },
        {
          "id": "head",
          "label": "Head in the rotation",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paddocks",
          "label": "Paddocks needed"
        },
        {
          "id": "acresPerPaddock",
          "label": "Acres per paddock"
        },
        {
          "id": "cycleDays",
          "label": "Full rotation cycle length"
        },
        {
          "id": "headAcreDay",
          "label": "Stock density during grazing"
        }
      ]
    },
    {
      "slug": "vineyard-establishment-cost",
      "url": "https://www.revenuelab.fyi/toolbox/vineyard-establishment-cost",
      "title": "Vineyard Establishment Cost Calculator",
      "category": "financial",
      "summary": "Per-acre buildout cost for trellis, vines, and irrigation on a new vineyard.",
      "formula": "Total/acre = (vines/acre × vine cost) + (posts/acre × post cost) + wire cost/acre + irrigation cost/acre + prep & labor/acre.",
      "inputs": [
        {
          "id": "acres",
          "label": "Acres to plant",
          "kind": "number"
        },
        {
          "id": "vineSpacingSqft",
          "label": "Space per vine",
          "kind": "number"
        },
        {
          "id": "vineCost",
          "label": "Cost per vine",
          "kind": "number"
        },
        {
          "id": "postsPerAcre",
          "label": "Trellis posts per acre",
          "kind": "number"
        },
        {
          "id": "postCost",
          "label": "Cost per post installed",
          "kind": "number"
        },
        {
          "id": "wireIrrigationAcre",
          "label": "Wire + drip irrigation cost",
          "kind": "number"
        },
        {
          "id": "prepLaborAcre",
          "label": "Land prep + planting labor",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalCost",
          "label": "Total establishment cost"
        },
        {
          "id": "costPerAcre",
          "label": "Cost per acre"
        },
        {
          "id": "vinesPerAcre",
          "label": "Vines per acre"
        },
        {
          "id": "vineCostAcre",
          "label": "Vine cost per acre"
        }
      ]
    },
    {
      "slug": "poultry-feed-conversion-cost",
      "url": "https://www.revenuelab.fyi/toolbox/poultry-feed-conversion-cost",
      "title": "Poultry Feed Conversion Cost Calculator",
      "category": "financial",
      "summary": "Feed cost per bird and per pound of live weight from FCR and feed price.",
      "formula": "Feed consumed/bird = market weight × FCR; feed cost/bird = feed consumed × feed price/lb; cost per lb live weight = feed cost/bird ÷ market weight.",
      "inputs": [
        {
          "id": "birds",
          "label": "Number of birds",
          "kind": "number"
        },
        {
          "id": "marketWeight",
          "label": "Target market weight",
          "kind": "number"
        },
        {
          "id": "fcr",
          "label": "Feed conversion ratio",
          "kind": "number"
        },
        {
          "id": "feedPriceLb",
          "label": "Feed price",
          "kind": "number"
        },
        {
          "id": "otherCostBird",
          "label": "Chick + other non-feed cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerLb",
          "label": "Total cost per lb of live weight"
        },
        {
          "id": "feedCostBird",
          "label": "Feed cost per bird"
        },
        {
          "id": "totalCostBird",
          "label": "Total cost per bird"
        },
        {
          "id": "totalFlockCost",
          "label": "Total cost for the flock"
        }
      ]
    },
    {
      "slug": "beef-cutout-value",
      "url": "https://www.revenuelab.fyi/toolbox/beef-cutout-value",
      "title": "Beef Cutout Value Calculator",
      "category": "financial",
      "summary": "Estimated wholesale value of a beef carcass from primal cut yields and prices.",
      "formula": "Cutout value = Σ(primal yield % × carcass weight × primal wholesale price/lb).",
      "inputs": [
        {
          "id": "hangingWeight",
          "label": "Hot carcass weight",
          "kind": "number"
        },
        {
          "id": "chuckPct",
          "label": "Chuck yield",
          "kind": "number"
        },
        {
          "id": "chuckPrice",
          "label": "Chuck price",
          "kind": "number"
        },
        {
          "id": "ribLoinPct",
          "label": "Rib + loin yield",
          "kind": "number"
        },
        {
          "id": "ribLoinPrice",
          "label": "Rib + loin price",
          "kind": "number"
        },
        {
          "id": "roundPct",
          "label": "Round yield",
          "kind": "number"
        },
        {
          "id": "roundPrice",
          "label": "Round price",
          "kind": "number"
        },
        {
          "id": "otherPct",
          "label": "Trim/other yield",
          "kind": "number"
        },
        {
          "id": "otherPrice",
          "label": "Trim/other price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalCutout",
          "label": "Total cutout value"
        },
        {
          "id": "cutoutPerLb",
          "label": "Cutout value per lb carcass"
        },
        {
          "id": "ribLoinVal",
          "label": "Rib + loin value"
        },
        {
          "id": "chuckVal",
          "label": "Chuck value"
        }
      ]
    },
    {
      "slug": "farmland-cash-rent-cap-rate",
      "url": "https://www.revenuelab.fyi/toolbox/farmland-cash-rent-cap-rate",
      "title": "Farmland Cash Rent Cap Rate Calculator",
      "category": "financial",
      "summary": "Investment return on farmland from cash rent income and land value.",
      "formula": "Net operating income = cash rent − property tax − other landlord costs; cap rate = NOI ÷ land value; cash flow after debt = NOI − annual debt service.",
      "inputs": [
        {
          "id": "acres",
          "label": "Acres",
          "kind": "number"
        },
        {
          "id": "cashRentAcre",
          "label": "Cash rent",
          "kind": "number"
        },
        {
          "id": "propertyTaxAcre",
          "label": "Property tax",
          "kind": "number"
        },
        {
          "id": "otherCostAcre",
          "label": "Other landlord costs (drainage, insurance)",
          "kind": "number"
        },
        {
          "id": "landValueAcre",
          "label": "Land value",
          "kind": "number"
        },
        {
          "id": "annualDebtService",
          "label": "Annual debt service (if financed)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "capRate",
          "label": "Cap rate"
        },
        {
          "id": "totalNoi",
          "label": "Net operating income"
        },
        {
          "id": "cashFlowAfterDebt",
          "label": "Cash flow after debt service"
        },
        {
          "id": "landValue",
          "label": "Total land value"
        }
      ]
    },
    {
      "slug": "no-till-fuel-savings",
      "url": "https://www.revenuelab.fyi/toolbox/no-till-fuel-savings",
      "title": "No-Till Fuel & Labor Savings Calculator",
      "category": "financial",
      "summary": "Fuel, labor, and equipment wear savings from switching to no-till.",
      "formula": "Savings = (tillage passes × fuel/pass + labor/pass) − (no-till fuel + labor + extra herbicide cost), all per acre × acres.",
      "inputs": [
        {
          "id": "acres",
          "label": "Acres",
          "kind": "number"
        },
        {
          "id": "tillagePasses",
          "label": "Current tillage passes per year",
          "kind": "number"
        },
        {
          "id": "fuelPerPassAcre",
          "label": "Fuel cost per pass",
          "kind": "number"
        },
        {
          "id": "laborPerPassAcre",
          "label": "Labor cost per pass",
          "kind": "number"
        },
        {
          "id": "noTillPlanterExtraAcre",
          "label": "No-till planting extra cost",
          "kind": "number"
        },
        {
          "id": "extraHerbicideAcre",
          "label": "Extra herbicide/burndown cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalSavings",
          "label": "Total annual savings"
        },
        {
          "id": "savingsAcre",
          "label": "Savings per acre"
        },
        {
          "id": "tillageCostAcre",
          "label": "Current tillage cost per acre"
        },
        {
          "id": "noTillCostAcre",
          "label": "No-till system cost per acre"
        }
      ]
    },
    {
      "slug": "corn-silage-yield-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/corn-silage-yield-estimate",
      "title": "Corn Silage Yield Estimator",
      "category": "other",
      "summary": "Estimate tons of silage per acre from expected grain yield.",
      "formula": "Silage tons/acre ≈ grain yield (bu/acre) ÷ ratio × moisture adjustment; total tons = tons/acre × acres.",
      "inputs": [
        {
          "id": "acres",
          "label": "Acres to chop",
          "kind": "number"
        },
        {
          "id": "grainYield",
          "label": "Expected grain-equivalent yield",
          "kind": "number"
        },
        {
          "id": "ratio",
          "label": "Bushels per ton of silage (65% moisture)",
          "kind": "number"
        },
        {
          "id": "targetMoisture",
          "label": "Target harvest moisture",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalTons",
          "label": "Total silage tons (as harvested)"
        },
        {
          "id": "tonsAcre",
          "label": "Tons per acre"
        },
        {
          "id": "dmTonsAcre",
          "label": "Dry matter tons per acre"
        }
      ]
    },
    {
      "slug": "wool-shearing-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/wool-shearing-revenue",
      "title": "Wool Shearing Revenue Calculator",
      "category": "financial",
      "summary": "Net revenue per head and per flock from wool after shearing costs.",
      "formula": "Net revenue/head = (fleece weight lb × wool price/lb × yield %) − shearing cost − other handling cost.",
      "inputs": [
        {
          "id": "head",
          "label": "Ewes/flock size",
          "kind": "number"
        },
        {
          "id": "fleeceWeight",
          "label": "Fleece weight",
          "kind": "number"
        },
        {
          "id": "woolPrice",
          "label": "Wool price (grease)",
          "kind": "number"
        },
        {
          "id": "cleanYieldPct",
          "label": "Clean yield (if selling scoured)",
          "kind": "number"
        },
        {
          "id": "shearingCostHead",
          "label": "Shearing cost",
          "kind": "number"
        },
        {
          "id": "handlingCostHead",
          "label": "Other handling/hauling cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netHead",
          "label": "Net wool revenue per head"
        },
        {
          "id": "totalNet",
          "label": "Total flock net wool revenue"
        },
        {
          "id": "grossHead",
          "label": "Gross wool value per head"
        },
        {
          "id": "costHead",
          "label": "Shearing + handling cost per head"
        }
      ]
    },
    {
      "slug": "aquaculture-pond-stocking-density",
      "url": "https://www.revenuelab.fyi/toolbox/aquaculture-pond-stocking-density",
      "title": "Aquaculture Pond Stocking Density Calculator",
      "category": "other",
      "summary": "Fingerling stocking rate and expected harvest biomass for a farm pond.",
      "formula": "Fingerlings to stock = (target harvest lb/acre × acres) ÷ (harvest weight/fish × survival %); harvest biomass = fingerlings × survival % × harvest weight/fish.",
      "inputs": [
        {
          "id": "acres",
          "label": "Pond surface area",
          "kind": "number"
        },
        {
          "id": "targetHarvestLbAcre",
          "label": "Target harvest density",
          "kind": "number"
        },
        {
          "id": "harvestWeightFish",
          "label": "Target individual harvest weight",
          "kind": "number"
        },
        {
          "id": "survivalPct",
          "label": "Expected survival to harvest",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "fingerlingsNeeded",
          "label": "Fingerlings to stock"
        },
        {
          "id": "fingerlingsPerAcre",
          "label": "Stocking rate per acre"
        },
        {
          "id": "harvestBiomass",
          "label": "Projected harvest biomass (lb)"
        },
        {
          "id": "totalTargetLb",
          "label": "Target total harvest weight (lb)"
        }
      ]
    },
    {
      "slug": "twitch-sub-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/twitch-sub-revenue",
      "title": "Twitch Subscription Revenue Calculator",
      "category": "financial",
      "summary": "Net monthly income from subs at your split, after taxes and fees.",
      "formula": "Net = Σ(tier price × count × split) − platform fees − self-employment tax reserve.",
      "inputs": [
        {
          "id": "t1",
          "label": "Tier 1 subs",
          "kind": "number"
        },
        {
          "id": "t2",
          "label": "Tier 2 subs",
          "kind": "number"
        },
        {
          "id": "t3",
          "label": "Tier 3 subs",
          "kind": "number"
        },
        {
          "id": "primeSubs",
          "label": "Prime subs",
          "kind": "number"
        },
        {
          "id": "split",
          "label": "Your revenue split",
          "kind": "number"
        },
        {
          "id": "taxRate",
          "label": "Tax reserve",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Net monthly after tax reserve"
        },
        {
          "id": "gross",
          "label": "Gross monthly sub revenue"
        },
        {
          "id": "annual",
          "label": "Annual net"
        },
        {
          "id": "perSub",
          "label": "Average revenue per sub"
        }
      ]
    },
    {
      "slug": "streamer-growth-goal",
      "url": "https://www.revenuelab.fyi/toolbox/streamer-growth-goal",
      "title": "Streamer Growth Goal Calculator",
      "category": "financial",
      "summary": "Followers and average viewers needed to hit an income target.",
      "formula": "Required CCV = income goal ÷ (revenue per viewer per hour × hours streamed).",
      "inputs": [
        {
          "id": "goal",
          "label": "Monthly income goal",
          "kind": "number"
        },
        {
          "id": "hoursMonth",
          "label": "Stream hours per month",
          "kind": "number"
        },
        {
          "id": "revPerViewerHr",
          "label": "Revenue per viewer-hour",
          "kind": "number"
        },
        {
          "id": "followerToCcv",
          "label": "Followers per 1 average viewer",
          "kind": "number"
        },
        {
          "id": "currentCcv",
          "label": "Current average viewers",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ccv",
          "label": "Average viewers needed"
        },
        {
          "id": "followers",
          "label": "Follower base implied"
        },
        {
          "id": "gap",
          "label": "Viewers to gain"
        },
        {
          "id": "current",
          "label": "Current monthly revenue"
        },
        {
          "id": "multiple",
          "label": "Growth multiple required"
        }
      ]
    },
    {
      "slug": "game-dev-budget",
      "url": "https://www.revenuelab.fyi/toolbox/game-dev-budget",
      "title": "Indie Game Development Budget Calculator",
      "category": "financial",
      "summary": "Total build cost, burn rate, and units needed to break even.",
      "formula": "Units to break even = total budget ÷ (price × (1 − store cut) × (1 − refund rate)).",
      "inputs": [
        {
          "id": "devs",
          "label": "Team size",
          "kind": "number"
        },
        {
          "id": "salary",
          "label": "Average annual cost per person",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Development months",
          "kind": "number"
        },
        {
          "id": "tools",
          "label": "Tools, art, audio, contractors",
          "kind": "number"
        },
        {
          "id": "marketing",
          "label": "Marketing budget",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Launch price",
          "kind": "number"
        },
        {
          "id": "storeCut",
          "label": "Storefront cut",
          "kind": "number"
        },
        {
          "id": "refunds",
          "label": "Refund rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "units",
          "label": "Units to break even"
        },
        {
          "id": "total",
          "label": "Total project budget"
        },
        {
          "id": "burn",
          "label": "Monthly burn rate"
        },
        {
          "id": "netPerUnit",
          "label": "Net revenue per copy"
        },
        {
          "id": "labor",
          "label": "Labor cost"
        }
      ]
    },
    {
      "slug": "steam-revenue-split",
      "url": "https://www.revenuelab.fyi/toolbox/steam-revenue-split",
      "title": "Game Store Revenue Split Calculator",
      "category": "financial",
      "summary": "What you keep per copy after store cut, regional pricing, and tax.",
      "formula": "Take-home = price × (1 − store) × (1 − refunds) × (1 − publisher) × (1 − tax).",
      "inputs": [
        {
          "id": "price",
          "label": "List price",
          "kind": "number"
        },
        {
          "id": "storeCut",
          "label": "Store cut",
          "kind": "number"
        },
        {
          "id": "regional",
          "label": "Regional pricing discount (blended)",
          "kind": "number"
        },
        {
          "id": "refunds",
          "label": "Refund rate",
          "kind": "number"
        },
        {
          "id": "publisher",
          "label": "Publisher share",
          "kind": "number"
        },
        {
          "id": "tax",
          "label": "Tax withholding",
          "kind": "number"
        },
        {
          "id": "units",
          "label": "Expected units sold",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Take-home per copy"
        },
        {
          "id": "total",
          "label": "Total net revenue"
        },
        {
          "id": "gross",
          "label": "Gross storefront revenue"
        },
        {
          "id": "afterStore",
          "label": "Per copy after store cut"
        },
        {
          "id": "keepPct",
          "label": "Percent of list price kept"
        }
      ]
    },
    {
      "slug": "esports-prize-split",
      "url": "https://www.revenuelab.fyi/toolbox/esports-prize-split",
      "title": "Esports Prize Pool Split Calculator",
      "category": "financial",
      "summary": "Per-player payout after org cut, coach share, and taxes.",
      "formula": "Player share = (prize × (1 − org cut) × (1 − staff share)) ÷ roster size × (1 − tax).",
      "inputs": [
        {
          "id": "prize",
          "label": "Prize won",
          "kind": "number"
        },
        {
          "id": "orgCut",
          "label": "Organization cut",
          "kind": "number"
        },
        {
          "id": "staffPct",
          "label": "Coach + staff share",
          "kind": "number"
        },
        {
          "id": "players",
          "label": "Players on roster",
          "kind": "number"
        },
        {
          "id": "tax",
          "label": "Tax withholding",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perPlayerNet",
          "label": "Per player after tax"
        },
        {
          "id": "perPlayerGross",
          "label": "Per player before tax"
        },
        {
          "id": "playerPool",
          "label": "Total player pool"
        },
        {
          "id": "orgTake",
          "label": "Organization take"
        },
        {
          "id": "staffTake",
          "label": "Staff and coach take"
        }
      ]
    },
    {
      "slug": "gaming-pc-vs-cloud",
      "url": "https://www.revenuelab.fyi/toolbox/gaming-pc-vs-cloud",
      "title": "Gaming PC vs Cloud Gaming Cost Calculator",
      "category": "other",
      "summary": "Five-year cost of owning hardware versus streaming games.",
      "formula": "PC total = build + power + upgrades − resale; cloud total = subscription × months.",
      "inputs": [
        {
          "id": "build",
          "label": "PC build cost",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Comparison horizon",
          "kind": "number"
        },
        {
          "id": "resale",
          "label": "Resale value at the end",
          "kind": "number"
        },
        {
          "id": "watts",
          "label": "Average draw while gaming",
          "kind": "number"
        },
        {
          "id": "hoursWeek",
          "label": "Gaming hours per week",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Electricity rate",
          "kind": "number"
        },
        {
          "id": "cloudMonth",
          "label": "Cloud subscription",
          "kind": "number"
        },
        {
          "id": "upgrade",
          "label": "Mid-cycle upgrades",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pc",
          "label": "Total PC cost"
        },
        {
          "id": "cloud",
          "label": "Total cloud cost"
        },
        {
          "id": "delta",
          "label": "PC minus cloud"
        },
        {
          "id": "power",
          "label": "Electricity over the period"
        },
        {
          "id": "perHourPc",
          "label": "PC cost per hour played"
        }
      ]
    },
    {
      "slug": "game-monetization-arpdau",
      "url": "https://www.revenuelab.fyi/toolbox/game-monetization-arpdau",
      "title": "Mobile Game ARPDAU & LTV Calculator",
      "category": "financial",
      "summary": "Average revenue per daily active user, LTV, and payback on UA.",
      "formula": "ARPDAU = daily revenue ÷ DAU. LTV ≈ ARPDAU × average lifetime days.",
      "inputs": [
        {
          "id": "dau",
          "label": "Daily active users",
          "kind": "number"
        },
        {
          "id": "impressions",
          "label": "Ad impressions per DAU",
          "kind": "number"
        },
        {
          "id": "ecpm",
          "label": "Ad eCPM",
          "kind": "number"
        },
        {
          "id": "payerPct",
          "label": "Daily payer rate",
          "kind": "number"
        },
        {
          "id": "avgSpend",
          "label": "Average purchase",
          "kind": "number"
        },
        {
          "id": "lifetimeDays",
          "label": "Average player lifetime",
          "kind": "number"
        },
        {
          "id": "cpi",
          "label": "Cost per install",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "arpdau",
          "label": "ARPDAU"
        },
        {
          "id": "ltv",
          "label": "Player lifetime value"
        },
        {
          "id": "daily",
          "label": "Daily revenue"
        },
        {
          "id": "ltvCpi",
          "label": "LTV : CPI ratio"
        },
        {
          "id": "paybackDays",
          "label": "UA payback (days)"
        }
      ]
    },
    {
      "slug": "speedrun-pace",
      "url": "https://www.revenuelab.fyi/toolbox/speedrun-pace",
      "title": "Speedrun Pace & Split Calculator",
      "category": "other",
      "summary": "Compare a live run against personal best pace and projected finish.",
      "formula": "Projected finish = PB total + (current split − PB split).",
      "inputs": [
        {
          "id": "currentSplit",
          "label": "Current elapsed at split",
          "kind": "number"
        },
        {
          "id": "pbSplit",
          "label": "PB time at that split",
          "kind": "number"
        },
        {
          "id": "pbTotal",
          "label": "PB total time",
          "kind": "number"
        },
        {
          "id": "goal",
          "label": "Goal time",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "projected",
          "label": "Projected finish (seconds)"
        },
        {
          "id": "delta",
          "label": "Ahead / behind PB (seconds)"
        },
        {
          "id": "projectedMin",
          "label": "Projected finish (minutes)"
        },
        {
          "id": "goalGap",
          "label": "Seconds off goal"
        },
        {
          "id": "pacePct",
          "label": "Run progress vs PB total"
        }
      ]
    },
    {
      "slug": "gacha-pull-probability",
      "url": "https://www.revenuelab.fyi/toolbox/gacha-pull-probability",
      "title": "Gacha Pull Probability Calculator",
      "category": "math",
      "summary": "Odds of at least one hit across N pulls, and pity cost.",
      "formula": "P(at least one) = 1 − (1 − p)^n. Pulls for confidence c = ln(1 − c) ÷ ln(1 − p).",
      "inputs": [
        {
          "id": "rate",
          "label": "Drop rate per pull",
          "kind": "number"
        },
        {
          "id": "pulls",
          "label": "Pulls you'll make",
          "kind": "number"
        },
        {
          "id": "confidence",
          "label": "Target confidence",
          "kind": "number"
        },
        {
          "id": "costPull",
          "label": "Cost per pull",
          "kind": "number"
        },
        {
          "id": "pity",
          "label": "Hard pity at pull #",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "atLeastOne",
          "label": "Chance of at least one"
        },
        {
          "id": "needed",
          "label": "Pulls for your confidence level"
        },
        {
          "id": "expected",
          "label": "Expected pulls per hit"
        },
        {
          "id": "cost",
          "label": "Cost of your planned pulls"
        },
        {
          "id": "pityCost",
          "label": "Worst-case cost to hard pity"
        }
      ]
    },
    {
      "slug": "game-server-hosting-cost",
      "url": "https://www.revenuelab.fyi/toolbox/game-server-hosting-cost",
      "title": "Game Server Hosting Cost Calculator",
      "category": "financial",
      "summary": "Monthly cost per concurrent player and bandwidth spend.",
      "formula": "Instances = peak CCU ÷ players per instance; cost = instances × rate + bandwidth.",
      "inputs": [
        {
          "id": "ccu",
          "label": "Peak concurrent players",
          "kind": "number"
        },
        {
          "id": "perInstance",
          "label": "Players per instance",
          "kind": "number"
        },
        {
          "id": "instanceHr",
          "label": "Instance cost",
          "kind": "number"
        },
        {
          "id": "utilization",
          "label": "Average utilization vs peak",
          "kind": "number"
        },
        {
          "id": "kbps",
          "label": "Bandwidth per player",
          "kind": "number"
        },
        {
          "id": "egress",
          "label": "Egress price",
          "kind": "number"
        },
        {
          "id": "mau",
          "label": "Monthly active players",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Monthly hosting cost"
        },
        {
          "id": "computeCost",
          "label": "Compute cost"
        },
        {
          "id": "bandwidth",
          "label": "Bandwidth cost"
        },
        {
          "id": "perCcu",
          "label": "Cost per peak concurrent player"
        },
        {
          "id": "perMau",
          "label": "Cost per monthly active player"
        }
      ]
    },
    {
      "slug": "content-creator-upload-schedule",
      "url": "https://www.revenuelab.fyi/toolbox/content-creator-upload-schedule",
      "title": "Content Upload Schedule Capacity Calculator",
      "category": "other",
      "summary": "Videos per week your production hours actually support.",
      "formula": "Sustainable uploads = available hours ÷ hours per piece.",
      "inputs": [
        {
          "id": "availHours",
          "label": "Hours available per week",
          "kind": "number"
        },
        {
          "id": "scripting",
          "label": "Scripting hours per video",
          "kind": "number"
        },
        {
          "id": "filming",
          "label": "Filming hours per video",
          "kind": "number"
        },
        {
          "id": "editing",
          "label": "Editing hours per video",
          "kind": "number"
        },
        {
          "id": "admin",
          "label": "Thumbnails, upload, promo",
          "kind": "number"
        },
        {
          "id": "editorRate",
          "label": "Editor rate",
          "kind": "number"
        },
        {
          "id": "rpmValue",
          "label": "Revenue per video",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "uploads",
          "label": "Sustainable uploads per week"
        },
        {
          "id": "monthly",
          "label": "Uploads per month"
        },
        {
          "id": "perVideo",
          "label": "Hours per video"
        },
        {
          "id": "outsourced",
          "label": "Uploads per week with an editor"
        },
        {
          "id": "netGain",
          "label": "Weekly gain from hiring an editor"
        }
      ]
    },
    {
      "slug": "tournament-bracket-size",
      "url": "https://www.revenuelab.fyi/toolbox/tournament-bracket-size",
      "title": "Tournament Bracket & Schedule Calculator",
      "category": "math",
      "summary": "Rounds, byes, total matches, and event duration for any entrant count.",
      "formula": "Rounds = ⌈log₂(entrants)⌉. Single elim matches = entrants − 1; double elim ≈ 2 × entrants − 2.",
      "inputs": [
        {
          "id": "entrants",
          "label": "Entrants",
          "kind": "number"
        },
        {
          "id": "format",
          "label": "Format",
          "kind": "select"
        },
        {
          "id": "matchMin",
          "label": "Minutes per match",
          "kind": "number"
        },
        {
          "id": "stations",
          "label": "Stations available",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "matches",
          "label": "Total matches"
        },
        {
          "id": "hours",
          "label": "Estimated event length (hours)"
        },
        {
          "id": "rounds",
          "label": "Rounds in the bracket"
        },
        {
          "id": "byes",
          "label": "Byes needed"
        },
        {
          "id": "minutes",
          "label": "Total minutes"
        }
      ]
    },
    {
      "slug": "contingency-fee-settlement",
      "url": "https://www.revenuelab.fyi/toolbox/contingency-fee-settlement",
      "title": "Contingency Fee Settlement Calculator",
      "category": "financial",
      "summary": "What you actually keep after attorney fees, costs, and liens.",
      "formula": "Net = gross − (gross × fee%) − case costs − liens, with an option to deduct costs before the fee is calculated.",
      "inputs": [
        {
          "id": "gross",
          "label": "Gross settlement",
          "kind": "number"
        },
        {
          "id": "feePct",
          "label": "Contingency fee",
          "kind": "number"
        },
        {
          "id": "costs",
          "label": "Case costs (filing, experts)",
          "kind": "number"
        },
        {
          "id": "liens",
          "label": "Medical liens / subrogation",
          "kind": "number"
        },
        {
          "id": "order",
          "label": "Fee calculated on",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Your net payout"
        },
        {
          "id": "fee",
          "label": "Attorney fee"
        },
        {
          "id": "costs",
          "label": "Case costs deducted"
        },
        {
          "id": "liens",
          "label": "Liens paid"
        },
        {
          "id": "keepPct",
          "label": "Share of gross you keep"
        }
      ]
    },
    {
      "slug": "child-support-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/child-support-estimate",
      "title": "Child Support Estimate Calculator",
      "category": "financial",
      "summary": "Income-shares style estimate from both parents' income and parenting time.",
      "formula": "Support = combined income × child percentage × payor income share, adjusted for parenting-time share and add-ons.",
      "inputs": [
        {
          "id": "incomeA",
          "label": "Parent A monthly income",
          "kind": "number"
        },
        {
          "id": "incomeB",
          "label": "Parent B monthly income",
          "kind": "number"
        },
        {
          "id": "children",
          "label": "Number of children",
          "kind": "number"
        },
        {
          "id": "overnightsA",
          "label": "Parent A overnights per year",
          "kind": "number"
        },
        {
          "id": "childcare",
          "label": "Monthly childcare + health add-ons",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "payment",
          "label": "Estimated monthly transfer"
        },
        {
          "id": "basic",
          "label": "Basic support obligation"
        },
        {
          "id": "shareA",
          "label": "Parent A income share"
        },
        {
          "id": "timeA",
          "label": "Parent A parenting time"
        }
      ]
    },
    {
      "slug": "alimony-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/alimony-estimate",
      "title": "Alimony / Spousal Support Estimator",
      "category": "financial",
      "summary": "Common formula ranges for support amount and duration.",
      "formula": "Support = (a% × payor income) − (b% × recipient income); duration ≈ marriage years × factor.",
      "inputs": [
        {
          "id": "payor",
          "label": "Payor monthly income",
          "kind": "number"
        },
        {
          "id": "recipient",
          "label": "Recipient monthly income",
          "kind": "number"
        },
        {
          "id": "payorPct",
          "label": "Payor factor",
          "kind": "number"
        },
        {
          "id": "recipPct",
          "label": "Recipient factor",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Length of marriage",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "capped",
          "label": "Estimated monthly support"
        },
        {
          "id": "support",
          "label": "Formula amount before cap"
        },
        {
          "id": "duration",
          "label": "Likely duration"
        },
        {
          "id": "total",
          "label": "Total over the term"
        }
      ]
    },
    {
      "slug": "small-claims-worth-it",
      "url": "https://www.revenuelab.fyi/toolbox/small-claims-worth-it",
      "title": "Small Claims Court Worth-It Calculator",
      "category": "financial",
      "summary": "Expected value of suing after fees, time off work, and collection odds.",
      "formula": "EV = claim × P(win) × P(collect) − filing − service − (hours off × hourly wage).",
      "inputs": [
        {
          "id": "claim",
          "label": "Amount you are claiming",
          "kind": "number"
        },
        {
          "id": "pWin",
          "label": "Chance of winning",
          "kind": "number"
        },
        {
          "id": "pCollect",
          "label": "Chance of collecting",
          "kind": "number"
        },
        {
          "id": "filing",
          "label": "Filing fee",
          "kind": "number"
        },
        {
          "id": "service",
          "label": "Service + misc costs",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Hours of work missed",
          "kind": "number"
        },
        {
          "id": "wage",
          "label": "Your hourly value",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ev",
          "label": "Expected value of filing"
        },
        {
          "id": "expected",
          "label": "Probability-weighted recovery"
        },
        {
          "id": "cost",
          "label": "All-in cost to pursue"
        },
        {
          "id": "breakeven",
          "label": "Claim size needed to break even"
        }
      ]
    },
    {
      "slug": "traffic-ticket-cost",
      "url": "https://www.revenuelab.fyi/toolbox/traffic-ticket-cost",
      "title": "Traffic Ticket True Cost Calculator",
      "category": "financial",
      "summary": "Fine plus the insurance surcharge you'll pay for years afterward.",
      "formula": "True cost = fine + court costs + (annual premium × surcharge% × surcharge years).",
      "inputs": [
        {
          "id": "fine",
          "label": "Fine + court costs",
          "kind": "number"
        },
        {
          "id": "premium",
          "label": "Annual insurance premium",
          "kind": "number"
        },
        {
          "id": "surcharge",
          "label": "Premium increase",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years surcharged",
          "kind": "number"
        },
        {
          "id": "school",
          "label": "Traffic school cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "True cost if you just pay"
        },
        {
          "id": "ins",
          "label": "Insurance surcharge total"
        },
        {
          "id": "schoolPath",
          "label": "Cost with traffic school"
        },
        {
          "id": "savings",
          "label": "Saved by masking the point"
        }
      ]
    },
    {
      "slug": "jury-duty-pay",
      "url": "https://www.revenuelab.fyi/toolbox/jury-duty-pay",
      "title": "Jury Duty Pay Calculator",
      "category": "financial",
      "summary": "Court stipend, mileage, and the wages you gain or lose.",
      "formula": "Net = (stipend × days) + (mileage rate × miles × days) − unpaid wages − parking.",
      "inputs": [
        {
          "id": "days",
          "label": "Days of service",
          "kind": "number"
        },
        {
          "id": "stipend",
          "label": "Daily court stipend",
          "kind": "number"
        },
        {
          "id": "miles",
          "label": "Round-trip miles per day",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Mileage reimbursement",
          "kind": "number"
        },
        {
          "id": "wage",
          "label": "Daily wage lost",
          "kind": "number"
        },
        {
          "id": "employerPaid",
          "label": "Days your employer pays",
          "kind": "number"
        },
        {
          "id": "parking",
          "label": "Parking per day",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Net financial impact"
        },
        {
          "id": "courtPay",
          "label": "Total court compensation"
        },
        {
          "id": "lost",
          "label": "Wages and costs lost"
        },
        {
          "id": "unpaidDays",
          "label": "Unpaid days"
        }
      ]
    },
    {
      "slug": "immigration-fee-total",
      "url": "https://www.revenuelab.fyi/toolbox/immigration-fee-total",
      "title": "Immigration Filing Fee Total Calculator",
      "category": "financial",
      "summary": "Add up filing, biometrics, premium processing, and attorney costs.",
      "formula": "Total = Σ form fees + biometrics × applicants + premium processing + attorney + incidentals.",
      "inputs": [
        {
          "id": "applicants",
          "label": "Applicants on the case",
          "kind": "number"
        },
        {
          "id": "formFees",
          "label": "Government form fees per applicant",
          "kind": "number"
        },
        {
          "id": "biometrics",
          "label": "Biometrics per applicant",
          "kind": "number"
        },
        {
          "id": "premium",
          "label": "Premium processing",
          "kind": "number"
        },
        {
          "id": "attorney",
          "label": "Attorney flat fee",
          "kind": "number"
        },
        {
          "id": "medical",
          "label": "Medical exam per applicant",
          "kind": "number"
        },
        {
          "id": "misc",
          "label": "Translations, photos, shipping",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total case cost"
        },
        {
          "id": "perApplicant",
          "label": "Cost per applicant"
        },
        {
          "id": "gov",
          "label": "Government fees"
        },
        {
          "id": "pro",
          "label": "Professional fees"
        }
      ]
    },
    {
      "slug": "notary-business-income",
      "url": "https://www.revenuelab.fyi/toolbox/notary-business-income",
      "title": "Notary Signing Agent Income Calculator",
      "category": "financial",
      "summary": "Net income per signing after mileage, printing, and self-employment tax.",
      "formula": "Net per signing = fee − (miles × cost/mi) − print cost − tax reserve; annual = net × signings/week × 52.",
      "inputs": [
        {
          "id": "fee",
          "label": "Average fee per signing",
          "kind": "number"
        },
        {
          "id": "perWeek",
          "label": "Signings per week",
          "kind": "number"
        },
        {
          "id": "miles",
          "label": "Round-trip miles per signing",
          "kind": "number"
        },
        {
          "id": "costMile",
          "label": "Vehicle cost per mile",
          "kind": "number"
        },
        {
          "id": "pages",
          "label": "Pages printed per signing",
          "kind": "number"
        },
        {
          "id": "costPage",
          "label": "Cost per page",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Hours per signing (door to door)",
          "kind": "number"
        },
        {
          "id": "taxRate",
          "label": "Tax reserve",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Net per signing after tax"
        },
        {
          "id": "hourly",
          "label": "Effective hourly rate"
        },
        {
          "id": "costs",
          "label": "Direct cost per signing"
        },
        {
          "id": "annual",
          "label": "Annual net income"
        }
      ]
    },
    {
      "slug": "public-records-request-cost",
      "url": "https://www.revenuelab.fyi/toolbox/public-records-request-cost",
      "title": "Public Records Request Cost Calculator",
      "category": "financial",
      "summary": "Estimate search, review, and duplication charges before you file.",
      "formula": "Cost = max(0, search hours − free hours) × rate + max(0, pages − free pages) × per page + review + media.",
      "inputs": [
        {
          "id": "searchHours",
          "label": "Estimated search hours",
          "kind": "number"
        },
        {
          "id": "freeHours",
          "label": "Free search hours",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Staff hourly rate",
          "kind": "number"
        },
        {
          "id": "pages",
          "label": "Pages expected",
          "kind": "number"
        },
        {
          "id": "freePages",
          "label": "Free pages",
          "kind": "number"
        },
        {
          "id": "perPage",
          "label": "Cost per page",
          "kind": "number"
        },
        {
          "id": "review",
          "label": "Review / redaction charges",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated fee"
        },
        {
          "id": "search",
          "label": "Search time charges"
        },
        {
          "id": "dup",
          "label": "Duplication charges"
        },
        {
          "id": "review",
          "label": "Review charges"
        }
      ]
    },
    {
      "slug": "hoa-special-assessment",
      "url": "https://www.revenuelab.fyi/toolbox/hoa-special-assessment",
      "title": "HOA Special Assessment Calculator",
      "category": "financial",
      "summary": "Your share of a capital project, and what financing it costs.",
      "formula": "Share = (project cost − reserves) × your ownership interest; financed payment uses standard amortization.",
      "inputs": [
        {
          "id": "project",
          "label": "Total project cost",
          "kind": "number"
        },
        {
          "id": "reserves",
          "label": "Reserves applied",
          "kind": "number"
        },
        {
          "id": "units",
          "label": "Units in the association",
          "kind": "number"
        },
        {
          "id": "interestPct",
          "label": "Your ownership interest",
          "kind": "number"
        },
        {
          "id": "apr",
          "label": "Association loan APR",
          "kind": "number"
        },
        {
          "id": "termYears",
          "label": "Loan term",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "share",
          "label": "Your assessment"
        },
        {
          "id": "pmt",
          "label": "Monthly payment if financed"
        },
        {
          "id": "totalPaid",
          "label": "Total paid over the term"
        },
        {
          "id": "interest",
          "label": "Interest cost"
        }
      ]
    },
    {
      "slug": "property-tax-appeal-savings",
      "url": "https://www.revenuelab.fyi/toolbox/property-tax-appeal-savings",
      "title": "Property Tax Appeal Savings Calculator",
      "category": "financial",
      "summary": "Multi-year savings if your assessment is reduced, net of appeal costs.",
      "formula": "Annual saving = (assessed − proposed) × assessment ratio × mill rate; net = saving × years − costs.",
      "inputs": [
        {
          "id": "assessed",
          "label": "Current assessed value",
          "kind": "number"
        },
        {
          "id": "proposed",
          "label": "Value you're arguing for",
          "kind": "number"
        },
        {
          "id": "ratio",
          "label": "Assessment ratio",
          "kind": "number"
        },
        {
          "id": "millRate",
          "label": "Tax rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years until revaluation",
          "kind": "number"
        },
        {
          "id": "cost",
          "label": "Appraisal + filing costs",
          "kind": "number"
        },
        {
          "id": "contingency",
          "label": "Consultant share of year-1 savings",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annual",
          "label": "Annual tax savings"
        },
        {
          "id": "net",
          "label": "Net savings after costs"
        },
        {
          "id": "total",
          "label": "Gross savings over the period"
        },
        {
          "id": "fee",
          "label": "Consultant contingency fee"
        }
      ]
    },
    {
      "slug": "estate-probate-fees",
      "url": "https://www.revenuelab.fyi/toolbox/estate-probate-fees",
      "title": "Probate Fee Calculator",
      "category": "financial",
      "summary": "Statutory attorney and executor fees plus court costs on an estate.",
      "formula": "Statutory fee tiers: 4% of first $100k, 3% of next $100k, 2% of next $800k, 1% of next $9M.",
      "inputs": [
        {
          "id": "gross",
          "label": "Gross estate value",
          "kind": "number"
        },
        {
          "id": "debts",
          "label": "Mortgages and debts",
          "kind": "number"
        },
        {
          "id": "court",
          "label": "Court + publication + appraiser",
          "kind": "number"
        },
        {
          "id": "both",
          "label": "Who takes a statutory fee",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated probate cost"
        },
        {
          "id": "statutory",
          "label": "Statutory fees"
        },
        {
          "id": "court",
          "label": "Court and administration costs"
        },
        {
          "id": "pctOfEquity",
          "label": "Share of net equity consumed"
        }
      ]
    },
    {
      "slug": "wedding-budget-split",
      "url": "https://www.revenuelab.fyi/toolbox/wedding-budget-split",
      "title": "Wedding Budget Calculator",
      "category": "financial",
      "summary": "Split a total budget across venue, catering, photo, and the rest.",
      "formula": "Category budget = total × category share; per-guest = (venue + catering + bar) ÷ guests.",
      "inputs": [
        {
          "id": "total",
          "label": "Total budget",
          "kind": "number"
        },
        {
          "id": "guests",
          "label": "Guest count",
          "kind": "number"
        },
        {
          "id": "venuePct",
          "label": "Venue + catering share",
          "kind": "number"
        },
        {
          "id": "photoPct",
          "label": "Photo + video share",
          "kind": "number"
        },
        {
          "id": "attirePct",
          "label": "Attire + beauty share",
          "kind": "number"
        },
        {
          "id": "musicPct",
          "label": "Music + entertainment share",
          "kind": "number"
        },
        {
          "id": "flowersPct",
          "label": "Flowers + decor share",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "venue",
          "label": "Venue + catering"
        },
        {
          "id": "perGuest",
          "label": "Cost per guest (food + venue)"
        },
        {
          "id": "photo",
          "label": "Photo + video"
        },
        {
          "id": "flowers",
          "label": "Flowers + decor"
        },
        {
          "id": "music",
          "label": "Music + entertainment"
        },
        {
          "id": "attire",
          "label": "Attire + beauty"
        },
        {
          "id": "other",
          "label": "Stationery, rings, favors, buffer"
        }
      ]
    },
    {
      "slug": "catering-quantity",
      "url": "https://www.revenuelab.fyi/toolbox/catering-quantity",
      "title": "Catering Quantity Calculator",
      "category": "other",
      "summary": "Food weight, portions, and servings for any headcount.",
      "formula": "Total = guests × portion size × service factor, with children counted at half portions.",
      "inputs": [
        {
          "id": "adults",
          "label": "Adults",
          "kind": "number"
        },
        {
          "id": "kids",
          "label": "Children",
          "kind": "number"
        },
        {
          "id": "service",
          "label": "Service style",
          "kind": "select"
        },
        {
          "id": "protein",
          "label": "Protein per adult",
          "kind": "number"
        },
        {
          "id": "starch",
          "label": "Starch per adult",
          "kind": "number"
        },
        {
          "id": "veg",
          "label": "Vegetables per adult",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Event length",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "protein",
          "label": "Protein needed"
        },
        {
          "id": "starch",
          "label": "Starch (lbs)"
        },
        {
          "id": "veg",
          "label": "Vegetables (lbs)"
        },
        {
          "id": "apps",
          "label": "Appetizer pieces"
        },
        {
          "id": "water",
          "label": "Water servings"
        }
      ]
    },
    {
      "slug": "bar-alcohol-quantity",
      "url": "https://www.revenuelab.fyi/toolbox/bar-alcohol-quantity",
      "title": "Party Alcohol Calculator",
      "category": "other",
      "summary": "Bottles of wine, beer, and liquor to buy for your guest count.",
      "formula": "Drinks = drinking guests × hours × drinks/hour; bottles = drinks × mix% ÷ servings per bottle.",
      "inputs": [
        {
          "id": "guests",
          "label": "Guests who drink",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Hours of service",
          "kind": "number"
        },
        {
          "id": "perHour",
          "label": "Drinks per guest per hour",
          "kind": "number"
        },
        {
          "id": "winePct",
          "label": "Wine share",
          "kind": "number"
        },
        {
          "id": "beerPct",
          "label": "Beer share",
          "kind": "number"
        },
        {
          "id": "spiritPct",
          "label": "Spirits share",
          "kind": "number"
        },
        {
          "id": "winePrice",
          "label": "Price per wine bottle",
          "kind": "number"
        },
        {
          "id": "beerPrice",
          "label": "Price per beer",
          "kind": "number"
        },
        {
          "id": "spiritPrice",
          "label": "Price per liquor bottle (750ml)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "drinks",
          "label": "Total drinks to plan for"
        },
        {
          "id": "wineBottles",
          "label": "Wine bottles (750ml)"
        },
        {
          "id": "beers",
          "label": "Beers"
        },
        {
          "id": "spiritBottles",
          "label": "Liquor bottles (750ml)"
        },
        {
          "id": "ice",
          "label": "Pounds of ice"
        },
        {
          "id": "cost",
          "label": "Estimated bar cost"
        }
      ]
    },
    {
      "slug": "event-ticket-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/event-ticket-breakeven",
      "title": "Event Ticket Break-Even Calculator",
      "category": "financial",
      "summary": "Tickets you must sell to cover venue, talent, and platform fees.",
      "formula": "Break-even = fixed costs ÷ (ticket price × (1 − fee%) − per-attendee variable cost).",
      "inputs": [
        {
          "id": "price",
          "label": "Ticket price",
          "kind": "number"
        },
        {
          "id": "fixed",
          "label": "Fixed costs (venue, talent, AV)",
          "kind": "number"
        },
        {
          "id": "variable",
          "label": "Variable cost per attendee",
          "kind": "number"
        },
        {
          "id": "feePct",
          "label": "Platform + payment fees",
          "kind": "number"
        },
        {
          "id": "expected",
          "label": "Expected attendance",
          "kind": "number"
        },
        {
          "id": "capacity",
          "label": "Venue capacity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "be",
          "label": "Tickets to break even"
        },
        {
          "id": "fillNeeded",
          "label": "Capacity fill required"
        },
        {
          "id": "contribution",
          "label": "Contribution per ticket"
        },
        {
          "id": "profit",
          "label": "Profit at expected attendance"
        },
        {
          "id": "maxProfit",
          "label": "Profit at a sellout"
        }
      ]
    },
    {
      "slug": "seating-chart-tables",
      "url": "https://www.revenuelab.fyi/toolbox/seating-chart-tables",
      "title": "Event Table & Seating Calculator",
      "category": "other",
      "summary": "Tables, linens, and floor space needed for your guest count.",
      "formula": "Tables = ceil(guests ÷ seats per table); floor space = guests × sq ft per guest by layout.",
      "inputs": [
        {
          "id": "guests",
          "label": "Guests",
          "kind": "number"
        },
        {
          "id": "tableType",
          "label": "Table type",
          "kind": "select"
        },
        {
          "id": "layout",
          "label": "Layout",
          "kind": "select"
        },
        {
          "id": "headTable",
          "label": "Head table seats",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "tables",
          "label": "Guest tables needed"
        },
        {
          "id": "space",
          "label": "Floor space required (sq ft)"
        },
        {
          "id": "chairs",
          "label": "Chairs to rent"
        },
        {
          "id": "linens",
          "label": "Linens (with cake, gift, bar tables)"
        },
        {
          "id": "centerpieces",
          "label": "Centerpieces"
        }
      ]
    },
    {
      "slug": "photographer-day-rate",
      "url": "https://www.revenuelab.fyi/toolbox/photographer-day-rate",
      "title": "Photographer Day Rate Calculator",
      "category": "financial",
      "summary": "The rate you must charge to hit a target salary after gear and taxes.",
      "formula": "Day rate = (target salary ÷ (1 − tax rate) + overhead) ÷ billable days.",
      "inputs": [
        {
          "id": "salary",
          "label": "Target take-home salary",
          "kind": "number"
        },
        {
          "id": "overhead",
          "label": "Annual overhead (gear, insurance, software)",
          "kind": "number"
        },
        {
          "id": "shootDays",
          "label": "Billable shoot days per year",
          "kind": "number"
        },
        {
          "id": "editHours",
          "label": "Edit hours per shoot day",
          "kind": "number"
        },
        {
          "id": "taxRate",
          "label": "Effective tax rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rate",
          "label": "Required day rate"
        },
        {
          "id": "revenue",
          "label": "Annual revenue needed"
        },
        {
          "id": "hourly",
          "label": "Effective hourly (incl. editing)"
        },
        {
          "id": "hours",
          "label": "Total working hours per year"
        }
      ]
    },
    {
      "slug": "dj-band-cost-compare",
      "url": "https://www.revenuelab.fyi/toolbox/dj-band-cost-compare",
      "title": "DJ vs Live Band Cost Calculator",
      "category": "financial",
      "summary": "All-in comparison including sound, lighting, meals, and overtime.",
      "formula": "Total = base + sound/lighting + (meals × people) + overtime hours × overtime rate + travel.",
      "inputs": [
        {
          "id": "djBase",
          "label": "DJ base fee",
          "kind": "number"
        },
        {
          "id": "bandBase",
          "label": "Band base fee",
          "kind": "number"
        },
        {
          "id": "bandMembers",
          "label": "Band members + crew",
          "kind": "number"
        },
        {
          "id": "mealCost",
          "label": "Vendor meal cost",
          "kind": "number"
        },
        {
          "id": "soundBand",
          "label": "Extra sound/lighting for band",
          "kind": "number"
        },
        {
          "id": "soundDj",
          "label": "Extra sound/lighting for DJ",
          "kind": "number"
        },
        {
          "id": "overtimeHours",
          "label": "Overtime hours",
          "kind": "number"
        },
        {
          "id": "otDj",
          "label": "DJ overtime rate",
          "kind": "number"
        },
        {
          "id": "otBand",
          "label": "Band overtime rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "diff",
          "label": "Extra cost of the band"
        },
        {
          "id": "dj",
          "label": "DJ all-in"
        },
        {
          "id": "band",
          "label": "Band all-in"
        },
        {
          "id": "ratio",
          "label": "Band cost as a multiple of DJ"
        }
      ]
    },
    {
      "slug": "wedding-favor-cost",
      "url": "https://www.revenuelab.fyi/toolbox/wedding-favor-cost",
      "title": "Wedding Favors & Welcome Bags Calculator",
      "category": "financial",
      "summary": "Per-item and total cost including packaging, shipping, and waste.",
      "formula": "Total = (unit + packaging + printing) × (guests × buffer) + shipping.",
      "inputs": [
        {
          "id": "guests",
          "label": "Guests receiving a favor",
          "kind": "number"
        },
        {
          "id": "perHousehold",
          "label": "One per",
          "kind": "select"
        },
        {
          "id": "unit",
          "label": "Item cost",
          "kind": "number"
        },
        {
          "id": "packaging",
          "label": "Packaging per unit",
          "kind": "number"
        },
        {
          "id": "printing",
          "label": "Custom printing per unit",
          "kind": "number"
        },
        {
          "id": "buffer",
          "label": "Overorder buffer",
          "kind": "number"
        },
        {
          "id": "shipping",
          "label": "Shipping total",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total favor spend"
        },
        {
          "id": "qty",
          "label": "Units to order"
        },
        {
          "id": "per",
          "label": "All-in cost per unit"
        },
        {
          "id": "perGuest",
          "label": "Cost per guest"
        }
      ]
    },
    {
      "slug": "rsvp-attendance-forecast",
      "url": "https://www.revenuelab.fyi/toolbox/rsvp-attendance-forecast",
      "title": "RSVP Attendance Forecast Calculator",
      "category": "other",
      "summary": "Project final headcount from invites, distance, and RSVP rate so far.",
      "formula": "Expected = Σ(invited by group × attendance rate), blended with returned RSVPs to date.",
      "inputs": [
        {
          "id": "local",
          "label": "Local invitees",
          "kind": "number"
        },
        {
          "id": "outOfTown",
          "label": "Out-of-town invitees",
          "kind": "number"
        },
        {
          "id": "international",
          "label": "International invitees",
          "kind": "number"
        },
        {
          "id": "localRate",
          "label": "Local attendance rate",
          "kind": "number"
        },
        {
          "id": "otRate",
          "label": "Out-of-town rate",
          "kind": "number"
        },
        {
          "id": "intlRate",
          "label": "International rate",
          "kind": "number"
        },
        {
          "id": "yesSoFar",
          "label": "Yes RSVPs received",
          "kind": "number"
        },
        {
          "id": "returned",
          "label": "Total RSVPs returned",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "blended",
          "label": "Projected attendance"
        },
        {
          "id": "rate",
          "label": "Projected acceptance rate"
        },
        {
          "id": "model",
          "label": "Model estimate (ignoring RSVPs)"
        },
        {
          "id": "remaining",
          "label": "Invitations still outstanding"
        }
      ]
    },
    {
      "slug": "event-staffing-ratio",
      "url": "https://www.revenuelab.fyi/toolbox/event-staffing-ratio",
      "title": "Event Staffing Calculator",
      "category": "other",
      "summary": "Servers, bartenders, and support staff needed — plus labor cost.",
      "formula": "Staff = ceil(guests ÷ ratio); cost = Σ(staff × hours × rate) with overtime past 8 hours.",
      "inputs": [
        {
          "id": "guests",
          "label": "Guests",
          "kind": "number"
        },
        {
          "id": "service",
          "label": "Service style",
          "kind": "select"
        },
        {
          "id": "hours",
          "label": "Shift length",
          "kind": "number"
        },
        {
          "id": "serverRate",
          "label": "Server hourly rate",
          "kind": "number"
        },
        {
          "id": "barRate",
          "label": "Bartender hourly rate",
          "kind": "number"
        },
        {
          "id": "captains",
          "label": "Captains / leads",
          "kind": "number"
        },
        {
          "id": "captainRate",
          "label": "Captain hourly rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total staff needed"
        },
        {
          "id": "servers",
          "label": "Servers"
        },
        {
          "id": "bartenders",
          "label": "Bartenders"
        },
        {
          "id": "cost",
          "label": "Labor cost for the event"
        },
        {
          "id": "perGuest",
          "label": "Labor cost per guest"
        }
      ]
    },
    {
      "slug": "party-rental-cost",
      "url": "https://www.revenuelab.fyi/toolbox/party-rental-cost",
      "title": "Party Rental Cost Calculator",
      "category": "financial",
      "summary": "Tent, tables, chairs, linens, and delivery totaled for your event.",
      "formula": "Total = Σ(units × unit price) + delivery + setup + damage waiver% of subtotal + tax.",
      "inputs": [
        {
          "id": "guests",
          "label": "Guests",
          "kind": "number"
        },
        {
          "id": "chairPrice",
          "label": "Chair price each",
          "kind": "number"
        },
        {
          "id": "tablePrice",
          "label": "Table price each",
          "kind": "number"
        },
        {
          "id": "linenPrice",
          "label": "Linen price each",
          "kind": "number"
        },
        {
          "id": "placeSetting",
          "label": "Place setting per guest",
          "kind": "number"
        },
        {
          "id": "tent",
          "label": "Tent + flooring",
          "kind": "number"
        },
        {
          "id": "delivery",
          "label": "Delivery + setup",
          "kind": "number"
        },
        {
          "id": "waiver",
          "label": "Damage waiver",
          "kind": "number"
        },
        {
          "id": "tax",
          "label": "Sales tax",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total rental invoice"
        },
        {
          "id": "items",
          "label": "Rental items subtotal"
        },
        {
          "id": "waiver",
          "label": "Damage waiver"
        },
        {
          "id": "tables",
          "label": "Tables included (guest + service)"
        },
        {
          "id": "perGuest",
          "label": "Rental cost per guest"
        }
      ]
    },
    {
      "slug": "honeymoon-fund-goal",
      "url": "https://www.revenuelab.fyi/toolbox/honeymoon-fund-goal",
      "title": "Honeymoon Fund Savings Calculator",
      "category": "financial",
      "summary": "Monthly savings and registry contributions needed to fund the trip.",
      "formula": "Monthly = (goal − saved − expected gifts) ÷ months, adjusted for interest earned on the balance.",
      "inputs": [
        {
          "id": "goal",
          "label": "Total trip cost",
          "kind": "number"
        },
        {
          "id": "saved",
          "label": "Already saved",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Months until the trip",
          "kind": "number"
        },
        {
          "id": "guests",
          "label": "Guests likely to gift cash",
          "kind": "number"
        },
        {
          "id": "avgGift",
          "label": "Average honeymoon contribution",
          "kind": "number"
        },
        {
          "id": "platformFee",
          "label": "Registry platform fee",
          "kind": "number"
        },
        {
          "id": "apy",
          "label": "Savings APY",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthly",
          "label": "Save per month"
        },
        {
          "id": "weekly",
          "label": "Save per week"
        },
        {
          "id": "gifts",
          "label": "Expected registry contributions"
        },
        {
          "id": "gap",
          "label": "Funding gap before interest"
        },
        {
          "id": "growth",
          "label": "Interest earned while saving"
        }
      ]
    },
    {
      "slug": "dimensional-weight",
      "url": "https://www.revenuelab.fyi/toolbox/dimensional-weight",
      "title": "Dimensional Weight Calculator",
      "category": "other",
      "summary": "Billable weight from box dimensions using the carrier's divisor.",
      "formula": "DIM weight = (L × W × H) ÷ divisor; billable = max(actual, DIM), rounded up.",
      "inputs": [
        {
          "id": "length",
          "label": "Length",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Width",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Height",
          "kind": "number"
        },
        {
          "id": "actual",
          "label": "Actual weight",
          "kind": "number"
        },
        {
          "id": "divisor",
          "label": "DIM divisor",
          "kind": "select"
        },
        {
          "id": "ratePerLb",
          "label": "Rate per billable pound",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "billable",
          "label": "Billable weight (lb)"
        },
        {
          "id": "dim",
          "label": "Dimensional weight (lb)"
        },
        {
          "id": "penalty",
          "label": "Pounds added by box size"
        },
        {
          "id": "cubic",
          "label": "Cubic inches"
        },
        {
          "id": "cost",
          "label": "Estimated shipping cost"
        }
      ]
    },
    {
      "slug": "freight-class-density",
      "url": "https://www.revenuelab.fyi/toolbox/freight-class-density",
      "title": "Freight Class & Density Calculator",
      "category": "other",
      "summary": "Density in pcf and the NMFC class band it falls into.",
      "formula": "Density = weight ÷ (L × W × H ÷ 1728); class from the standard density bands.",
      "inputs": [
        {
          "id": "length",
          "label": "Pallet length",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Pallet width",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Pallet height",
          "kind": "number"
        },
        {
          "id": "weight",
          "label": "Total weight",
          "kind": "number"
        },
        {
          "id": "pallets",
          "label": "Number of pallets",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cls",
          "label": "Estimated freight class"
        },
        {
          "id": "density",
          "label": "Density (lb per cubic foot)"
        },
        {
          "id": "cuft",
          "label": "Cubic feet per pallet"
        },
        {
          "id": "totalCuft",
          "label": "Total cubic feet"
        },
        {
          "id": "totalWeight",
          "label": "Total shipment weight (lb)"
        }
      ]
    },
    {
      "slug": "pallet-load-optimizer",
      "url": "https://www.revenuelab.fyi/toolbox/pallet-load-optimizer",
      "title": "Pallet Load Calculator",
      "category": "other",
      "summary": "Cases per layer, layers per pallet, and total units shipped.",
      "formula": "Cases per layer = best of both orientations; layers = min(height limit, weight limit).",
      "inputs": [
        {
          "id": "palletL",
          "label": "Pallet length",
          "kind": "number"
        },
        {
          "id": "palletW",
          "label": "Pallet width",
          "kind": "number"
        },
        {
          "id": "maxHeight",
          "label": "Max stack height (incl. pallet)",
          "kind": "number"
        },
        {
          "id": "deckHeight",
          "label": "Pallet deck height",
          "kind": "number"
        },
        {
          "id": "caseL",
          "label": "Case length",
          "kind": "number"
        },
        {
          "id": "caseW",
          "label": "Case width",
          "kind": "number"
        },
        {
          "id": "caseH",
          "label": "Case height",
          "kind": "number"
        },
        {
          "id": "caseWeight",
          "label": "Case weight",
          "kind": "number"
        },
        {
          "id": "maxWeight",
          "label": "Max pallet weight",
          "kind": "number"
        },
        {
          "id": "unitsPerCase",
          "label": "Units per case",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cases",
          "label": "Cases per pallet"
        },
        {
          "id": "perLayer",
          "label": "Cases per layer"
        },
        {
          "id": "layers",
          "label": "Layers high"
        },
        {
          "id": "units",
          "label": "Units per pallet"
        },
        {
          "id": "weight",
          "label": "Loaded weight (lb)"
        }
      ]
    },
    {
      "slug": "container-load-cbm",
      "url": "https://www.revenuelab.fyi/toolbox/container-load-cbm",
      "title": "Container Load (CBM) Calculator",
      "category": "other",
      "summary": "Cubic meters, cartons per container, and cost per unit landed.",
      "formula": "CBM = (L × W × H in cm) ÷ 1,000,000; cartons = usable container volume ÷ CBM per carton.",
      "inputs": [
        {
          "id": "l",
          "label": "Carton length",
          "kind": "number"
        },
        {
          "id": "w",
          "label": "Carton width",
          "kind": "number"
        },
        {
          "id": "h",
          "label": "Carton height",
          "kind": "number"
        },
        {
          "id": "unitsPerCarton",
          "label": "Units per carton",
          "kind": "number"
        },
        {
          "id": "container",
          "label": "Container",
          "kind": "select"
        },
        {
          "id": "efficiency",
          "label": "Loading efficiency",
          "kind": "number"
        },
        {
          "id": "freight",
          "label": "All-in freight cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cartons",
          "label": "Cartons per container"
        },
        {
          "id": "units",
          "label": "Units per container"
        },
        {
          "id": "cbm",
          "label": "CBM per carton"
        },
        {
          "id": "usable",
          "label": "Usable container volume (CBM)"
        },
        {
          "id": "perUnit",
          "label": "Freight cost per unit"
        }
      ]
    },
    {
      "slug": "landed-cost-import",
      "url": "https://www.revenuelab.fyi/toolbox/landed-cost-import",
      "title": "Landed Cost Calculator",
      "category": "financial",
      "summary": "True per-unit cost including duty, freight, brokerage, and fees.",
      "formula": "Landed = goods + freight + insurance + duty(customs value) + MPF + HMF + brokerage + inland.",
      "inputs": [
        {
          "id": "units",
          "label": "Units in the shipment",
          "kind": "number"
        },
        {
          "id": "unitCost",
          "label": "Factory unit cost",
          "kind": "number"
        },
        {
          "id": "freight",
          "label": "Ocean/air freight",
          "kind": "number"
        },
        {
          "id": "insurance",
          "label": "Cargo insurance",
          "kind": "number"
        },
        {
          "id": "dutyPct",
          "label": "Duty rate",
          "kind": "number"
        },
        {
          "id": "brokerage",
          "label": "Customs brokerage + docs",
          "kind": "number"
        },
        {
          "id": "drayage",
          "label": "Drayage + inland freight",
          "kind": "number"
        },
        {
          "id": "sellPrice",
          "label": "Your selling price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perUnit",
          "label": "Landed cost per unit"
        },
        {
          "id": "total",
          "label": "Total landed cost"
        },
        {
          "id": "duty",
          "label": "Duty owed"
        },
        {
          "id": "fees",
          "label": "MPF + HMF"
        },
        {
          "id": "margin",
          "label": "Gross margin at your price"
        },
        {
          "id": "markup",
          "label": "Markup multiple"
        }
      ]
    },
    {
      "slug": "shipping-zone-rate",
      "url": "https://www.revenuelab.fyi/toolbox/shipping-zone-rate",
      "title": "Shipping Cost per Order Calculator",
      "category": "financial",
      "summary": "Blended shipping cost across zones, plus free-shipping threshold impact.",
      "formula": "Blended = Σ(zone share × zone rate) + packaging + handling; net = revenue − COGS − shipping.",
      "inputs": [
        {
          "id": "nearRate",
          "label": "Zone 1-4 rate",
          "kind": "number"
        },
        {
          "id": "nearShare",
          "label": "Zone 1-4 share of orders",
          "kind": "number"
        },
        {
          "id": "midRate",
          "label": "Zone 5-6 rate",
          "kind": "number"
        },
        {
          "id": "midShare",
          "label": "Zone 5-6 share",
          "kind": "number"
        },
        {
          "id": "farRate",
          "label": "Zone 7-8 rate",
          "kind": "number"
        },
        {
          "id": "packaging",
          "label": "Packaging per order",
          "kind": "number"
        },
        {
          "id": "handling",
          "label": "Pick + pack labor",
          "kind": "number"
        },
        {
          "id": "aov",
          "label": "Average order value",
          "kind": "number"
        },
        {
          "id": "cogsPct",
          "label": "COGS",
          "kind": "number"
        },
        {
          "id": "customerPays",
          "label": "Shipping charged to customer",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "blended",
          "label": "Blended fulfillment cost per order"
        },
        {
          "id": "carrier",
          "label": "Weighted carrier rate"
        },
        {
          "id": "netShip",
          "label": "Net shipping cost after customer charge"
        },
        {
          "id": "contribution",
          "label": "Contribution per order"
        },
        {
          "id": "shipPct",
          "label": "Shipping as share of AOV"
        }
      ]
    },
    {
      "slug": "trucking-cost-per-mile",
      "url": "https://www.revenuelab.fyi/toolbox/trucking-cost-per-mile",
      "title": "Trucking Cost Per Mile Calculator",
      "category": "financial",
      "summary": "Owner-operator fixed and variable cost per mile, and the rate you need.",
      "formula": "CPM = (annual fixed ÷ annual miles) + fuel/mpg + maintenance + tires + driver pay per mile.",
      "inputs": [
        {
          "id": "miles",
          "label": "Annual miles",
          "kind": "number"
        },
        {
          "id": "truckPayment",
          "label": "Truck + trailer payment (monthly)",
          "kind": "number"
        },
        {
          "id": "insurance",
          "label": "Insurance (monthly)",
          "kind": "number"
        },
        {
          "id": "permits",
          "label": "Permits, IFTA, plates (annual)",
          "kind": "number"
        },
        {
          "id": "fuelPrice",
          "label": "Diesel price",
          "kind": "number"
        },
        {
          "id": "mpg",
          "label": "Fuel economy",
          "kind": "number"
        },
        {
          "id": "maintenance",
          "label": "Maintenance + tires",
          "kind": "number"
        },
        {
          "id": "driverPay",
          "label": "Driver pay",
          "kind": "number"
        },
        {
          "id": "deadheadPct",
          "label": "Deadhead miles",
          "kind": "number"
        },
        {
          "id": "targetMargin",
          "label": "Target profit margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rate",
          "label": "Rate per loaded mile to hit margin"
        },
        {
          "id": "cpm",
          "label": "Total cost per mile"
        },
        {
          "id": "cpmLoaded",
          "label": "Cost per loaded mile (with deadhead)"
        },
        {
          "id": "fixedCpm",
          "label": "Fixed cost per mile"
        },
        {
          "id": "fuelCpm",
          "label": "Fuel cost per mile"
        },
        {
          "id": "annualCost",
          "label": "Total annual operating cost"
        }
      ]
    },
    {
      "slug": "fuel-surcharge",
      "url": "https://www.revenuelab.fyi/toolbox/fuel-surcharge",
      "title": "Fuel Surcharge Calculator",
      "category": "financial",
      "summary": "Per-mile and percentage surcharge from the DOE price and your baseline.",
      "formula": "Surcharge/mi = (current price − base price) ÷ mpg; total = surcharge/mi × miles.",
      "inputs": [
        {
          "id": "current",
          "label": "Current diesel price",
          "kind": "number"
        },
        {
          "id": "base",
          "label": "Contract base price",
          "kind": "number"
        },
        {
          "id": "mpg",
          "label": "Fuel economy",
          "kind": "number"
        },
        {
          "id": "miles",
          "label": "Trip miles",
          "kind": "number"
        },
        {
          "id": "linehaul",
          "label": "Linehaul rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perMile",
          "label": "Surcharge per mile"
        },
        {
          "id": "total",
          "label": "Surcharge for the trip"
        },
        {
          "id": "pct",
          "label": "Surcharge as % of linehaul"
        },
        {
          "id": "allIn",
          "label": "All-in revenue"
        },
        {
          "id": "gallons",
          "label": "Gallons burned"
        }
      ]
    },
    {
      "slug": "warehouse-storage-cost",
      "url": "https://www.revenuelab.fyi/toolbox/warehouse-storage-cost",
      "title": "Warehouse Storage Cost Calculator",
      "category": "financial",
      "summary": "Monthly 3PL cost by pallet, plus receiving and pick fees per order.",
      "formula": "Monthly = pallets × pallet rate + receiving + (orders × (pick base + extra picks × per-pick)).",
      "inputs": [
        {
          "id": "pallets",
          "label": "Pallets stored",
          "kind": "number"
        },
        {
          "id": "palletRate",
          "label": "Storage rate per pallet",
          "kind": "number"
        },
        {
          "id": "orders",
          "label": "Orders per month",
          "kind": "number"
        },
        {
          "id": "pickBase",
          "label": "Pick + pack base per order",
          "kind": "number"
        },
        {
          "id": "extraItems",
          "label": "Extra items per order",
          "kind": "number"
        },
        {
          "id": "perPick",
          "label": "Cost per extra pick",
          "kind": "number"
        },
        {
          "id": "receiving",
          "label": "Receiving fees per month",
          "kind": "number"
        },
        {
          "id": "minimum",
          "label": "Monthly minimum",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Monthly 3PL cost"
        },
        {
          "id": "perOrder",
          "label": "Cost per order"
        },
        {
          "id": "storage",
          "label": "Storage component"
        },
        {
          "id": "fulfillment",
          "label": "Fulfillment component"
        },
        {
          "id": "annual",
          "label": "Annual cost"
        }
      ]
    },
    {
      "slug": "delivery-route-cost",
      "url": "https://www.revenuelab.fyi/toolbox/delivery-route-cost",
      "title": "Delivery Route Cost Calculator",
      "category": "financial",
      "summary": "Cost per stop and per route for a local delivery fleet.",
      "formula": "Route cost = (hours × loaded wage) + (miles × vehicle cost/mi); per stop = route cost ÷ stops.",
      "inputs": [
        {
          "id": "stops",
          "label": "Stops per route",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Route hours",
          "kind": "number"
        },
        {
          "id": "miles",
          "label": "Route miles",
          "kind": "number"
        },
        {
          "id": "wage",
          "label": "Driver hourly wage",
          "kind": "number"
        },
        {
          "id": "burden",
          "label": "Payroll burden",
          "kind": "number"
        },
        {
          "id": "fuelPrice",
          "label": "Fuel price",
          "kind": "number"
        },
        {
          "id": "mpg",
          "label": "Van fuel economy",
          "kind": "number"
        },
        {
          "id": "vehicleFixed",
          "label": "Vehicle lease + insurance per day",
          "kind": "number"
        },
        {
          "id": "maintPerMile",
          "label": "Maintenance per mile",
          "kind": "number"
        },
        {
          "id": "revenuePerStop",
          "label": "Revenue per stop",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perStop",
          "label": "Cost per stop"
        },
        {
          "id": "total",
          "label": "Total route cost"
        },
        {
          "id": "profit",
          "label": "Route profit"
        },
        {
          "id": "labor",
          "label": "Labor cost"
        },
        {
          "id": "stopsPerHour",
          "label": "Stops per hour"
        }
      ]
    },
    {
      "slug": "customs-duty-hts",
      "url": "https://www.revenuelab.fyi/toolbox/customs-duty-hts",
      "title": "Customs Duty Calculator",
      "category": "financial",
      "summary": "Duty, VAT/GST, and total tax owed on an international shipment.",
      "formula": "Duty = customs value × duty rate; VAT = (basis) × VAT rate; total = duty + VAT + fees.",
      "inputs": [
        {
          "id": "value",
          "label": "Goods value",
          "kind": "number"
        },
        {
          "id": "freight",
          "label": "Freight + insurance",
          "kind": "number"
        },
        {
          "id": "dutyPct",
          "label": "Duty rate",
          "kind": "number"
        },
        {
          "id": "vatPct",
          "label": "VAT / GST rate",
          "kind": "number"
        },
        {
          "id": "basis",
          "label": "Tax basis",
          "kind": "select"
        },
        {
          "id": "deMinimis",
          "label": "De minimis threshold",
          "kind": "number"
        },
        {
          "id": "brokerFee",
          "label": "Broker / disbursement fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total import charges"
        },
        {
          "id": "duty",
          "label": "Duty"
        },
        {
          "id": "vat",
          "label": "VAT / GST"
        },
        {
          "id": "landed",
          "label": "Total landed cost"
        },
        {
          "id": "effective",
          "label": "Charges as % of goods value"
        }
      ]
    },
    {
      "slug": "inventory-reorder-point",
      "url": "https://www.revenuelab.fyi/toolbox/inventory-reorder-point",
      "title": "Reorder Point Calculator",
      "category": "financial",
      "summary": "When to reorder and how much buffer stock to hold.",
      "formula": "Safety stock = Z × √(LT × σd² + d² × σLT²); ROP = average demand × lead time + safety stock.",
      "inputs": [
        {
          "id": "dailyDemand",
          "label": "Average daily demand",
          "kind": "number"
        },
        {
          "id": "demandSd",
          "label": "Daily demand std deviation",
          "kind": "number"
        },
        {
          "id": "leadTime",
          "label": "Lead time",
          "kind": "number"
        },
        {
          "id": "leadSd",
          "label": "Lead time std deviation",
          "kind": "number"
        },
        {
          "id": "service",
          "label": "Service level",
          "kind": "select"
        },
        {
          "id": "unitCost",
          "label": "Unit cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rop",
          "label": "Reorder point (units)"
        },
        {
          "id": "safety",
          "label": "Safety stock (units)"
        },
        {
          "id": "cycle",
          "label": "Cycle stock during lead time"
        },
        {
          "id": "daysCover",
          "label": "Days of cover in safety stock"
        },
        {
          "id": "capital",
          "label": "Capital tied up in safety stock"
        }
      ]
    },
    {
      "slug": "dog-food-portion",
      "url": "https://www.revenuelab.fyi/toolbox/dog-food-portion",
      "title": "Dog Food Portion Calculator",
      "category": "other",
      "summary": "Daily cups of kibble from your dog's weight, age, and activity.",
      "formula": "RER = 70 × (kg^0.75); daily kcal = RER × factor; cups = kcal ÷ kcal per cup.",
      "inputs": [
        {
          "id": "weight",
          "label": "Dog weight",
          "kind": "number"
        },
        {
          "id": "factor",
          "label": "Life stage / activity",
          "kind": "select"
        },
        {
          "id": "kcalCup",
          "label": "Calories per cup of food",
          "kind": "number"
        },
        {
          "id": "meals",
          "label": "Meals per day",
          "kind": "number"
        },
        {
          "id": "bagCost",
          "label": "Cost per bag",
          "kind": "number"
        },
        {
          "id": "bagLb",
          "label": "Bag weight",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cups",
          "label": "Cups per day"
        },
        {
          "id": "perMeal",
          "label": "Cups per meal"
        },
        {
          "id": "kcal",
          "label": "Daily calories"
        },
        {
          "id": "rer",
          "label": "Resting energy requirement"
        },
        {
          "id": "costDay",
          "label": "Food cost per day"
        },
        {
          "id": "costMonth",
          "label": "Food cost per month"
        }
      ]
    },
    {
      "slug": "cat-food-portion",
      "url": "https://www.revenuelab.fyi/toolbox/cat-food-portion",
      "title": "Cat Food Portion Calculator",
      "category": "other",
      "summary": "Daily calories and can/cup counts for your cat's weight and goal.",
      "formula": "RER = 70 × kg^0.75; daily kcal = RER × factor; wet share split by calories.",
      "inputs": [
        {
          "id": "weight",
          "label": "Cat weight",
          "kind": "number"
        },
        {
          "id": "factor",
          "label": "Goal / status",
          "kind": "select"
        },
        {
          "id": "wetShare",
          "label": "Share of calories from wet food",
          "kind": "number"
        },
        {
          "id": "kcalCan",
          "label": "Calories per can",
          "kind": "number"
        },
        {
          "id": "kcalCup",
          "label": "Calories per cup of dry",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "kcal",
          "label": "Daily calories"
        },
        {
          "id": "cans",
          "label": "Cans of wet food per day"
        },
        {
          "id": "cups",
          "label": "Cups of dry food per day"
        },
        {
          "id": "wetKcal",
          "label": "Calories from wet"
        },
        {
          "id": "dryKcal",
          "label": "Calories from dry"
        }
      ]
    },
    {
      "slug": "pet-age",
      "url": "https://www.revenuelab.fyi/toolbox/pet-age",
      "title": "Pet Age Calculator (Dog & Cat Years)",
      "category": "other",
      "summary": "Convert pet years to human-equivalent age using size-adjusted curves.",
      "formula": "Dogs: 15 human years for year 1, 9 for year 2, then 4–6 per year by size band. Cats: 15, then 9, then 4 per year.",
      "inputs": [
        {
          "id": "species",
          "label": "Species",
          "kind": "select"
        },
        {
          "id": "age",
          "label": "Pet's age",
          "kind": "number"
        },
        {
          "id": "size",
          "label": "Adult size (dogs)",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "human",
          "label": "Human-equivalent age"
        },
        {
          "id": "stage",
          "label": "Life stage"
        },
        {
          "id": "expectancy",
          "label": "Typical life expectancy (years)"
        },
        {
          "id": "remaining",
          "label": "Typical years remaining"
        }
      ]
    },
    {
      "slug": "pet-ownership-cost",
      "url": "https://www.revenuelab.fyi/toolbox/pet-ownership-cost",
      "title": "Pet Ownership Cost Calculator",
      "category": "financial",
      "summary": "Total first-year and lifetime cost of a dog or cat.",
      "formula": "Year one = upfront + annual recurring; lifetime = upfront + (annual × expected years) + emergency reserve.",
      "inputs": [
        {
          "id": "upfront",
          "label": "Adoption / purchase + setup",
          "kind": "number"
        },
        {
          "id": "food",
          "label": "Food per month",
          "kind": "number"
        },
        {
          "id": "vet",
          "label": "Routine vet per year",
          "kind": "number"
        },
        {
          "id": "insurance",
          "label": "Insurance per month",
          "kind": "number"
        },
        {
          "id": "grooming",
          "label": "Grooming per year",
          "kind": "number"
        },
        {
          "id": "boarding",
          "label": "Boarding / sitting per year",
          "kind": "number"
        },
        {
          "id": "misc",
          "label": "Toys, treats, supplies per month",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Expected years together",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "yearOne",
          "label": "First-year cost"
        },
        {
          "id": "annual",
          "label": "Ongoing annual cost"
        },
        {
          "id": "monthly",
          "label": "Average monthly cost"
        },
        {
          "id": "lifetime",
          "label": "Lifetime cost"
        },
        {
          "id": "emergency",
          "label": "Suggested emergency reserve"
        }
      ]
    },
    {
      "slug": "pet-sitting-rate",
      "url": "https://www.revenuelab.fyi/toolbox/pet-sitting-rate",
      "title": "Pet Sitting Rate Calculator",
      "category": "financial",
      "summary": "Price walks, drop-ins, and overnights so you actually clear a wage.",
      "formula": "Rate = ((target hourly × (visit + travel hours)) + mileage cost) ÷ (1 − platform fee).",
      "inputs": [
        {
          "id": "target",
          "label": "Target take-home per hour",
          "kind": "number"
        },
        {
          "id": "visitMin",
          "label": "Visit length",
          "kind": "number"
        },
        {
          "id": "travelMin",
          "label": "Round-trip travel",
          "kind": "number"
        },
        {
          "id": "miles",
          "label": "Round-trip miles",
          "kind": "number"
        },
        {
          "id": "mileRate",
          "label": "Vehicle cost per mile",
          "kind": "number"
        },
        {
          "id": "fee",
          "label": "Platform commission",
          "kind": "number"
        },
        {
          "id": "visitsWeek",
          "label": "Visits per week",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "list",
          "label": "Price to list"
        },
        {
          "id": "net",
          "label": "You keep per visit"
        },
        {
          "id": "effHourly",
          "label": "Effective hourly incl. travel"
        },
        {
          "id": "mileage",
          "label": "Vehicle cost per visit"
        },
        {
          "id": "weekly",
          "label": "Weekly gross bookings"
        },
        {
          "id": "weeklyNet",
          "label": "Weekly take-home"
        }
      ]
    },
    {
      "slug": "dog-boarding-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/dog-boarding-revenue",
      "title": "Dog Boarding Revenue Calculator",
      "category": "financial",
      "summary": "Occupancy, nightly rate, and costs to a monthly profit number.",
      "formula": "Revenue = kennels × occupancy × nights × rate + add-ons; profit = revenue − variable − fixed.",
      "inputs": [
        {
          "id": "kennels",
          "label": "Kennels / runs",
          "kind": "number"
        },
        {
          "id": "occupancy",
          "label": "Average occupancy",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Nightly rate",
          "kind": "number"
        },
        {
          "id": "addon",
          "label": "Add-ons per occupied night",
          "kind": "number"
        },
        {
          "id": "varCost",
          "label": "Variable cost per occupied night",
          "kind": "number"
        },
        {
          "id": "labor",
          "label": "Monthly labor",
          "kind": "number"
        },
        {
          "id": "fixed",
          "label": "Monthly rent, insurance, utilities",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "profit",
          "label": "Monthly profit"
        },
        {
          "id": "revenue",
          "label": "Monthly revenue"
        },
        {
          "id": "margin",
          "label": "Profit margin"
        },
        {
          "id": "occNights",
          "label": "Occupied kennel-nights"
        },
        {
          "id": "breakevenOcc",
          "label": "Break-even occupancy"
        },
        {
          "id": "annual",
          "label": "Annualized profit"
        }
      ]
    },
    {
      "slug": "horse-feed",
      "url": "https://www.revenuelab.fyi/toolbox/horse-feed",
      "title": "Horse Feed Calculator",
      "category": "other",
      "summary": "Daily forage and grain by body weight and workload.",
      "formula": "Daily intake = weight × intake %; hay = intake × forage share; bales = hay ÷ bale weight.",
      "inputs": [
        {
          "id": "weight",
          "label": "Horse weight",
          "kind": "number"
        },
        {
          "id": "intake",
          "label": "Total intake target",
          "kind": "select"
        },
        {
          "id": "forage",
          "label": "Share from forage (hay/pasture)",
          "kind": "number"
        },
        {
          "id": "baleLb",
          "label": "Bale weight",
          "kind": "number"
        },
        {
          "id": "balePrice",
          "label": "Price per bale",
          "kind": "number"
        },
        {
          "id": "grainPrice",
          "label": "Grain price per lb",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "hay",
          "label": "Hay per day (lb)"
        },
        {
          "id": "grain",
          "label": "Concentrate per day (lb)"
        },
        {
          "id": "total",
          "label": "Total dry matter per day (lb)"
        },
        {
          "id": "bales",
          "label": "Bales per day"
        },
        {
          "id": "balesMonth",
          "label": "Bales per month"
        },
        {
          "id": "daily",
          "label": "Feed cost per day"
        },
        {
          "id": "monthly",
          "label": "Feed cost per month"
        }
      ]
    },
    {
      "slug": "aquarium-volume",
      "url": "https://www.revenuelab.fyi/toolbox/aquarium-volume",
      "title": "Aquarium Volume Calculator",
      "category": "other",
      "summary": "Gallons, water weight, heater wattage, and filter turnover.",
      "formula": "Gallons = (L × W × H in inches) ÷ 231, minus displacement; heater ≈ 3–5 W per gallon.",
      "inputs": [
        {
          "id": "length",
          "label": "Length",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Width (front to back)",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Water height",
          "kind": "number"
        },
        {
          "id": "displace",
          "label": "Substrate & decor displacement",
          "kind": "number"
        },
        {
          "id": "rise",
          "label": "Degrees above room temp",
          "kind": "number"
        },
        {
          "id": "turnover",
          "label": "Target filter turnover",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Actual water volume (gal)"
        },
        {
          "id": "raw",
          "label": "Gross volume (gal)"
        },
        {
          "id": "liters",
          "label": "Liters"
        },
        {
          "id": "weight",
          "label": "Filled weight (lb)"
        },
        {
          "id": "heater",
          "label": "Recommended heater (W)"
        },
        {
          "id": "gph",
          "label": "Filter flow needed (GPH)"
        },
        {
          "id": "waterChange",
          "label": "25% water change (gal)"
        }
      ]
    },
    {
      "slug": "chicken-coop-size",
      "url": "https://www.revenuelab.fyi/toolbox/chicken-coop-size",
      "title": "Chicken Coop Size Calculator",
      "category": "other",
      "summary": "Square footage, roost bar, nest boxes, and feed for your flock.",
      "formula": "Coop ≈ 3–4 sq ft/bird, run ≈ 8–10 sq ft/bird, roost ≈ 10 in/bird, 1 nest box per 4 hens.",
      "inputs": [
        {
          "id": "birds",
          "label": "Number of birds",
          "kind": "number"
        },
        {
          "id": "size",
          "label": "Breed size",
          "kind": "select"
        },
        {
          "id": "access",
          "label": "Outdoor access",
          "kind": "select"
        },
        {
          "id": "feedPrice",
          "label": "Feed price per 50 lb bag",
          "kind": "number"
        },
        {
          "id": "eggRate",
          "label": "Eggs per hen per week",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "coop",
          "label": "Coop floor space (sq ft)"
        },
        {
          "id": "run",
          "label": "Run space (sq ft)"
        },
        {
          "id": "roost",
          "label": "Roost bar length (ft)"
        },
        {
          "id": "nests",
          "label": "Nest boxes"
        },
        {
          "id": "feedMonth",
          "label": "Feed per month (lb)"
        },
        {
          "id": "feedCost",
          "label": "Feed cost per month"
        },
        {
          "id": "eggs",
          "label": "Eggs per month"
        }
      ]
    },
    {
      "slug": "pet-medication-dose",
      "url": "https://www.revenuelab.fyi/toolbox/pet-medication-dose",
      "title": "Pet Medication Dosage Calculator",
      "category": "other",
      "summary": "Convert a mg/kg dose into mLs or tablets for your pet's weight.",
      "formula": "Dose mg = weight kg × mg/kg; volume mL = dose mg ÷ concentration mg/mL.",
      "inputs": [
        {
          "id": "weight",
          "label": "Pet weight",
          "kind": "number"
        },
        {
          "id": "mgkg",
          "label": "Prescribed dose",
          "kind": "number"
        },
        {
          "id": "form",
          "label": "Medication form",
          "kind": "select"
        },
        {
          "id": "strength",
          "label": "Concentration or tablet strength",
          "kind": "number"
        },
        {
          "id": "perDay",
          "label": "Doses per day",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Days of treatment",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "units",
          "label": "Amount per dose"
        },
        {
          "id": "doseMg",
          "label": "Milligrams per dose"
        },
        {
          "id": "dailyMg",
          "label": "Total mg per day"
        },
        {
          "id": "totalUnits",
          "label": "Total units for the course"
        },
        {
          "id": "kg",
          "label": "Weight in kg"
        }
      ]
    },
    {
      "slug": "grooming-shop-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/grooming-shop-pricing",
      "title": "Pet Grooming Price Calculator",
      "category": "financial",
      "summary": "Set groom prices from time, coat difficulty, and your hourly goal.",
      "formula": "Price = (table hours × target hourly) + supplies + difficulty surcharges.",
      "inputs": [
        {
          "id": "baseMin",
          "label": "Base table time",
          "kind": "number"
        },
        {
          "id": "coat",
          "label": "Coat type",
          "kind": "select"
        },
        {
          "id": "target",
          "label": "Target hourly",
          "kind": "number"
        },
        {
          "id": "supplies",
          "label": "Supplies per groom",
          "kind": "number"
        },
        {
          "id": "behavior",
          "label": "Behavior handling surcharge",
          "kind": "number"
        },
        {
          "id": "perDay",
          "label": "Grooms per day",
          "kind": "number"
        },
        {
          "id": "daysWeek",
          "label": "Days per week",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Price for this groom"
        },
        {
          "id": "minutes",
          "label": "Estimated table time (min)"
        },
        {
          "id": "perHour",
          "label": "Your effective hourly"
        },
        {
          "id": "weekly",
          "label": "Weekly revenue at this mix"
        },
        {
          "id": "annual",
          "label": "Annual revenue (48 weeks)"
        }
      ]
    },
    {
      "slug": "puppy-growth",
      "url": "https://www.revenuelab.fyi/toolbox/puppy-growth",
      "title": "Puppy Growth Calculator",
      "category": "other",
      "summary": "Predict adult weight from current age and weight.",
      "formula": "Adult weight ≈ current weight ÷ growth fraction completed at the current age for that size band.",
      "inputs": [
        {
          "id": "weight",
          "label": "Current weight",
          "kind": "number"
        },
        {
          "id": "weeks",
          "label": "Current age",
          "kind": "number"
        },
        {
          "id": "band",
          "label": "Expected size band",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "adult",
          "label": "Projected adult weight (lb)"
        },
        {
          "id": "low",
          "label": "Low estimate (lb)"
        },
        {
          "id": "high",
          "label": "High estimate (lb)"
        },
        {
          "id": "frac",
          "label": "Percent of adult weight reached"
        },
        {
          "id": "remaining",
          "label": "Pounds still to gain"
        },
        {
          "id": "maturity",
          "label": "Months to full size"
        }
      ]
    },
    {
      "slug": "photography-day-rate",
      "url": "https://www.revenuelab.fyi/toolbox/photography-day-rate",
      "title": "Photographer Day Rate Calculator",
      "category": "financial",
      "summary": "Back into a day rate that covers gear, overhead, and taxes.",
      "formula": "Day rate = (target salary + overhead + gear replacement + tax) ÷ billable days per year.",
      "inputs": [
        {
          "id": "salary",
          "label": "Target take-home salary",
          "kind": "number"
        },
        {
          "id": "overhead",
          "label": "Annual overhead (software, insurance, studio)",
          "kind": "number"
        },
        {
          "id": "gear",
          "label": "Annual gear replacement fund",
          "kind": "number"
        },
        {
          "id": "tax",
          "label": "Effective tax rate",
          "kind": "number"
        },
        {
          "id": "shootDays",
          "label": "Billable shoot days per year",
          "kind": "number"
        },
        {
          "id": "editHours",
          "label": "Edit hours per shoot day",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rate",
          "label": "Minimum day rate"
        },
        {
          "id": "halfDay",
          "label": "Half-day rate"
        },
        {
          "id": "total",
          "label": "Annual revenue required"
        },
        {
          "id": "perHour",
          "label": "Effective hourly incl. editing"
        },
        {
          "id": "weekly",
          "label": "Average weekly billing"
        }
      ]
    },
    {
      "slug": "video-production-quote",
      "url": "https://www.revenuelab.fyi/toolbox/video-production-quote",
      "title": "Video Production Quote Calculator",
      "category": "financial",
      "summary": "Build a client quote from crew, gear, edit hours, and margin.",
      "formula": "Quote = (crew + gear + location + post + licensing) ÷ (1 − margin).",
      "inputs": [
        {
          "id": "shootDays",
          "label": "Shoot days",
          "kind": "number"
        },
        {
          "id": "crewDay",
          "label": "Crew cost per day",
          "kind": "number"
        },
        {
          "id": "gearDay",
          "label": "Gear rental per day",
          "kind": "number"
        },
        {
          "id": "location",
          "label": "Location, travel, permits",
          "kind": "number"
        },
        {
          "id": "editHours",
          "label": "Post-production hours",
          "kind": "number"
        },
        {
          "id": "editRate",
          "label": "Editor rate per hour",
          "kind": "number"
        },
        {
          "id": "licensing",
          "label": "Music, stock, licensing",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Target margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "quote",
          "label": "Client quote"
        },
        {
          "id": "cost",
          "label": "Total hard cost"
        },
        {
          "id": "production",
          "label": "Production subtotal"
        },
        {
          "id": "post",
          "label": "Post-production subtotal"
        },
        {
          "id": "profit",
          "label": "Your profit"
        },
        {
          "id": "deposit",
          "label": "50% deposit to collect"
        }
      ]
    },
    {
      "slug": "video-file-size",
      "url": "https://www.revenuelab.fyi/toolbox/video-file-size",
      "title": "Video File Size Calculator",
      "category": "other",
      "summary": "File size from bitrate and duration — or the bitrate to hit a size cap.",
      "formula": "Size (MB) = (video kbps + audio kbps) × seconds ÷ 8 ÷ 1024.",
      "inputs": [
        {
          "id": "minutes",
          "label": "Duration",
          "kind": "number"
        },
        {
          "id": "bitrate",
          "label": "Video bitrate",
          "kind": "number"
        },
        {
          "id": "audio",
          "label": "Audio bitrate",
          "kind": "number"
        },
        {
          "id": "target",
          "label": "Target file size cap",
          "kind": "number"
        },
        {
          "id": "cards",
          "label": "Card / drive capacity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "gb",
          "label": "File size (GB)"
        },
        {
          "id": "mb",
          "label": "File size (MB)"
        },
        {
          "id": "perMinute",
          "label": "MB per minute"
        },
        {
          "id": "targetBitrate",
          "label": "Bitrate to hit your size cap (Mbps)"
        },
        {
          "id": "cardMinutes",
          "label": "Minutes that fit on the card"
        }
      ]
    },
    {
      "slug": "photo-storage-cost",
      "url": "https://www.revenuelab.fyi/toolbox/photo-storage-cost",
      "title": "Photo & Video Storage Cost Calculator",
      "category": "financial",
      "summary": "Yearly archive growth and what it costs across drives and cloud.",
      "formula": "Annual TB = shoots × GB per shoot ÷ 1024; cost = TB × (cloud rate) or drives needed × drive price.",
      "inputs": [
        {
          "id": "shoots",
          "label": "Shoots per year",
          "kind": "number"
        },
        {
          "id": "gbShoot",
          "label": "Storage per shoot",
          "kind": "number"
        },
        {
          "id": "copies",
          "label": "Copies kept (3-2-1 rule = 3)",
          "kind": "number"
        },
        {
          "id": "cloudRate",
          "label": "Cloud cost per TB per month",
          "kind": "number"
        },
        {
          "id": "driveTb",
          "label": "Drive capacity",
          "kind": "number"
        },
        {
          "id": "drivePrice",
          "label": "Drive price",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Planning horizon",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalTb",
          "label": "Total storage needed (TB)"
        },
        {
          "id": "tbYear",
          "label": "New data per year (TB)"
        },
        {
          "id": "drives",
          "label": "Drives required"
        },
        {
          "id": "driveCost",
          "label": "Drive hardware cost"
        },
        {
          "id": "cloudYear",
          "label": "Cloud cost in final year"
        },
        {
          "id": "cloudTotal",
          "label": "Cumulative cloud cost"
        }
      ]
    },
    {
      "slug": "depth-of-field",
      "url": "https://www.revenuelab.fyi/toolbox/depth-of-field",
      "title": "Depth of Field Calculator",
      "category": "other",
      "summary": "Near limit, far limit, and total depth for your lens and sensor.",
      "formula": "Hyperfocal H = f²/(N × c) + f; near = H·s/(H + s − f); far = H·s/(H − s + f).",
      "inputs": [
        {
          "id": "focal",
          "label": "Focal length",
          "kind": "number"
        },
        {
          "id": "aperture",
          "label": "Aperture (f-number)",
          "kind": "number"
        },
        {
          "id": "distance",
          "label": "Focus distance",
          "kind": "number"
        },
        {
          "id": "sensor",
          "label": "Sensor format",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total depth of field (ft)"
        },
        {
          "id": "near",
          "label": "Near limit (ft)"
        },
        {
          "id": "far",
          "label": "Far limit (ft)"
        },
        {
          "id": "hyperfocal",
          "label": "Hyperfocal distance (ft)"
        },
        {
          "id": "inFront",
          "label": "Sharp in front of subject (ft)"
        },
        {
          "id": "behind",
          "label": "Sharp behind subject (ft)"
        }
      ]
    },
    {
      "slug": "field-of-view",
      "url": "https://www.revenuelab.fyi/toolbox/field-of-view",
      "title": "Field of View Calculator",
      "category": "other",
      "summary": "Angle of view and framed subject size at any distance.",
      "formula": "AOV = 2 × arctan(sensor dimension ÷ (2 × focal length)); width = 2 × distance × tan(AOV/2).",
      "inputs": [
        {
          "id": "focal",
          "label": "Focal length",
          "kind": "number"
        },
        {
          "id": "sensor",
          "label": "Sensor format",
          "kind": "select"
        },
        {
          "id": "distance",
          "label": "Distance to subject",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "hDeg",
          "label": "Horizontal angle of view (°)"
        },
        {
          "id": "vDeg",
          "label": "Vertical angle of view (°)"
        },
        {
          "id": "dDeg",
          "label": "Diagonal angle of view (°)"
        },
        {
          "id": "frameW",
          "label": "Scene width in frame (ft)"
        },
        {
          "id": "frameH",
          "label": "Scene height in frame (ft)"
        },
        {
          "id": "equiv",
          "label": "Full-frame equivalent focal length (mm)"
        }
      ]
    },
    {
      "slug": "exposure-value",
      "url": "https://www.revenuelab.fyi/toolbox/exposure-value",
      "title": "Exposure Value (EV) Calculator",
      "category": "other",
      "summary": "EV from aperture, shutter, and ISO — plus equivalent settings.",
      "formula": "EV100 = log2(N² ÷ t) − log2(ISO ÷ 100).",
      "inputs": [
        {
          "id": "aperture",
          "label": "Aperture (f-number)",
          "kind": "number"
        },
        {
          "id": "shutter",
          "label": "Shutter speed denominator (1/x sec)",
          "kind": "number"
        },
        {
          "id": "iso",
          "label": "ISO",
          "kind": "number"
        },
        {
          "id": "newAperture",
          "label": "New aperture to match",
          "kind": "number"
        },
        {
          "id": "ndStops",
          "label": "ND filter strength",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ev100",
          "label": "EV at ISO 100"
        },
        {
          "id": "ev",
          "label": "EV at your ISO"
        },
        {
          "id": "newShutter",
          "label": "Shutter for the new aperture"
        },
        {
          "id": "ndShutter",
          "label": "Shutter with the ND filter"
        },
        {
          "id": "lux",
          "label": "Approximate scene illuminance (lux)"
        }
      ]
    },
    {
      "slug": "print-resolution",
      "url": "https://www.revenuelab.fyi/toolbox/print-resolution",
      "title": "Print Size & Resolution Calculator",
      "category": "other",
      "summary": "Largest quality print from your megapixels, and the DPI you'll get.",
      "formula": "Print inches = pixel dimension ÷ DPI; DPI = pixel dimension ÷ print inches.",
      "inputs": [
        {
          "id": "pxW",
          "label": "Image width",
          "kind": "number"
        },
        {
          "id": "pxH",
          "label": "Image height",
          "kind": "number"
        },
        {
          "id": "dpi",
          "label": "Target print quality",
          "kind": "select"
        },
        {
          "id": "printW",
          "label": "Desired print width",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "maxW",
          "label": "Max print width at target DPI (in)"
        },
        {
          "id": "maxH",
          "label": "Max print height (in)"
        },
        {
          "id": "actualDpi",
          "label": "DPI at your desired width"
        },
        {
          "id": "printH",
          "label": "Print height at that width (in)"
        },
        {
          "id": "mp",
          "label": "Megapixels"
        },
        {
          "id": "ratio",
          "label": "Aspect ratio"
        }
      ]
    },
    {
      "slug": "aspect-ratio-frame",
      "url": "https://www.revenuelab.fyi/toolbox/aspect-ratio-frame",
      "title": "Aspect Ratio Calculator",
      "category": "other",
      "summary": "Resize to any ratio and see the crop or letterbox you'll get.",
      "formula": "Height = width ÷ ratio; crop loss = 1 − (fitted area ÷ source area).",
      "inputs": [
        {
          "id": "w",
          "label": "Source width",
          "kind": "number"
        },
        {
          "id": "h",
          "label": "Source height",
          "kind": "number"
        },
        {
          "id": "target",
          "label": "Target ratio",
          "kind": "select"
        },
        {
          "id": "newW",
          "label": "Scale to width",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "newH",
          "label": "Height at your scaled width (px)"
        },
        {
          "id": "cropW",
          "label": "Crop-to-fill width (px)"
        },
        {
          "id": "cropH",
          "label": "Crop-to-fill height (px)"
        },
        {
          "id": "lost",
          "label": "Frame area lost to crop"
        },
        {
          "id": "sourceRatio",
          "label": "Source ratio (decimal)"
        },
        {
          "id": "letterbox",
          "label": "If you letterbox instead"
        }
      ]
    },
    {
      "slug": "podcast-production-cost",
      "url": "https://www.revenuelab.fyi/toolbox/podcast-production-cost",
      "title": "Podcast Production Cost Calculator",
      "category": "financial",
      "summary": "Cost per episode, per download, and the CPM you need to break even.",
      "formula": "Cost per download = episode cost ÷ downloads; break-even CPM = cost ÷ (downloads ÷ 1000).",
      "inputs": [
        {
          "id": "editCost",
          "label": "Editing & mixing per episode",
          "kind": "number"
        },
        {
          "id": "hostTime",
          "label": "Your hours per episode",
          "kind": "number"
        },
        {
          "id": "hourly",
          "label": "Value of your hour",
          "kind": "number"
        },
        {
          "id": "tools",
          "label": "Hosting & tools per month",
          "kind": "number"
        },
        {
          "id": "episodes",
          "label": "Episodes per month",
          "kind": "number"
        },
        {
          "id": "downloads",
          "label": "Downloads per episode (30 days)",
          "kind": "number"
        },
        {
          "id": "adsPerEp",
          "label": "Ad slots per episode",
          "kind": "number"
        },
        {
          "id": "cpm",
          "label": "Sponsor CPM",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perEp",
          "label": "Cost per episode"
        },
        {
          "id": "perDownload",
          "label": "Cost per download"
        },
        {
          "id": "breakevenCpm",
          "label": "Break-even CPM per slot"
        },
        {
          "id": "revenue",
          "label": "Ad revenue per episode"
        },
        {
          "id": "profitEp",
          "label": "Profit per episode"
        },
        {
          "id": "monthly",
          "label": "Monthly profit"
        }
      ]
    },
    {
      "slug": "drone-flight-time",
      "url": "https://www.revenuelab.fyi/toolbox/drone-flight-time",
      "title": "Drone Flight Time Calculator",
      "category": "other",
      "summary": "Battery endurance, batteries needed, and acreage per flight.",
      "formula": "Flight min = (battery mAh ÷ 1000) × usable ÷ average draw (A) × 60, derated for wind and payload.",
      "inputs": [
        {
          "id": "capacity",
          "label": "Battery capacity",
          "kind": "number"
        },
        {
          "id": "draw",
          "label": "Average current draw",
          "kind": "number"
        },
        {
          "id": "reserve",
          "label": "Reserve you won't use",
          "kind": "number"
        },
        {
          "id": "payload",
          "label": "Extra payload",
          "kind": "number"
        },
        {
          "id": "wind",
          "label": "Wind speed",
          "kind": "number"
        },
        {
          "id": "acres",
          "label": "Acres to cover",
          "kind": "number"
        },
        {
          "id": "acresPerMin",
          "label": "Mapping rate",
          "kind": "number"
        },
        {
          "id": "batteries",
          "label": "Batteries on hand",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "minutes",
          "label": "Usable flight time per battery (min)"
        },
        {
          "id": "total",
          "label": "Total airtime with your batteries (min)"
        },
        {
          "id": "acresPerFlight",
          "label": "Acres covered per flight"
        },
        {
          "id": "batteriesNeeded",
          "label": "Batteries needed for the job"
        },
        {
          "id": "jobMinutes",
          "label": "Total flight minutes for the job"
        },
        {
          "id": "derate",
          "label": "Endurance penalty from wind & payload"
        }
      ]
    },
    {
      "slug": "stock-photo-income",
      "url": "https://www.revenuelab.fyi/toolbox/stock-photo-income",
      "title": "Stock Photo Income Calculator",
      "category": "financial",
      "summary": "Portfolio size, download rate, and RPI to a monthly income.",
      "formula": "Monthly income = portfolio size × RPI; images needed = target ÷ RPI.",
      "inputs": [
        {
          "id": "images",
          "label": "Images currently online",
          "kind": "number"
        },
        {
          "id": "rpi",
          "label": "Revenue per image per month",
          "kind": "number"
        },
        {
          "id": "uploads",
          "label": "New images uploaded per month",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Projection horizon",
          "kind": "number"
        },
        {
          "id": "target",
          "label": "Target monthly income",
          "kind": "number"
        },
        {
          "id": "shootCost",
          "label": "Cost to produce 100 images",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "now",
          "label": "Current monthly income"
        },
        {
          "id": "future",
          "label": "Income at end of horizon"
        },
        {
          "id": "annual",
          "label": "Annualized at that point"
        },
        {
          "id": "needed",
          "label": "Images needed for target"
        },
        {
          "id": "monthsToTarget",
          "label": "Months to hit target"
        },
        {
          "id": "cost",
          "label": "Production cost to get there"
        }
      ]
    },
    {
      "slug": "fundraising-goal",
      "url": "https://www.revenuelab.fyi/toolbox/fundraising-goal",
      "title": "Fundraising Goal Calculator",
      "category": "financial",
      "summary": "Turn a campaign goal into the gift pyramid and prospect count it requires.",
      "formula": "Gifts per tier × tier amount = tier total; prospects = gifts needed × prospect ratio (typically 4:1).",
      "inputs": [
        {
          "id": "goal",
          "label": "Campaign goal",
          "kind": "number"
        },
        {
          "id": "leadShare",
          "label": "Lead gift as share of goal",
          "kind": "number"
        },
        {
          "id": "ratio",
          "label": "Prospects per gift closed",
          "kind": "number"
        },
        {
          "id": "closeRate",
          "label": "Expected close rate on asks",
          "kind": "number"
        },
        {
          "id": "avgSmall",
          "label": "Average grassroots gift",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "lead",
          "label": "Lead gift target"
        },
        {
          "id": "topTen",
          "label": "Top ten gifts must total"
        },
        {
          "id": "majorDollars",
          "label": "Major gifts (top 60% of goal)"
        },
        {
          "id": "majorGifts",
          "label": "Major gifts needed"
        },
        {
          "id": "prospects",
          "label": "Qualified prospects to cultivate"
        },
        {
          "id": "asks",
          "label": "Asks required at your close rate"
        },
        {
          "id": "smallGifts",
          "label": "Grassroots gifts needed"
        }
      ]
    },
    {
      "slug": "donor-retention",
      "url": "https://www.revenuelab.fyi/toolbox/donor-retention",
      "title": "Donor Retention Rate Calculator",
      "category": "other",
      "summary": "Retention rate, attrition cost, and the value of a retained donor.",
      "formula": "Retention = repeat donors ÷ prior-year donors; LTV = average gift × gifts per year × (1 ÷ churn).",
      "inputs": [
        {
          "id": "priorDonors",
          "label": "Donors last year",
          "kind": "number"
        },
        {
          "id": "retained",
          "label": "Of those, gave again this year",
          "kind": "number"
        },
        {
          "id": "avgGift",
          "label": "Average gift",
          "kind": "number"
        },
        {
          "id": "giftsYear",
          "label": "Gifts per donor per year",
          "kind": "number"
        },
        {
          "id": "acqCost",
          "label": "Cost to acquire a new donor",
          "kind": "number"
        },
        {
          "id": "improve",
          "label": "Retention improvement to model",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rate",
          "label": "Donor retention rate"
        },
        {
          "id": "ltv",
          "label": "Donor lifetime value"
        },
        {
          "id": "lostRevenue",
          "label": "Annual revenue lost to lapse"
        },
        {
          "id": "replaceCost",
          "label": "Cost to replace lapsed donors"
        },
        {
          "id": "newLtv",
          "label": "LTV at improved retention"
        },
        {
          "id": "gain",
          "label": "Portfolio value created by the improvement"
        }
      ]
    },
    {
      "slug": "fundraising-event-roi",
      "url": "https://www.revenuelab.fyi/toolbox/fundraising-event-roi",
      "title": "Fundraising Event ROI Calculator",
      "category": "financial",
      "summary": "Net revenue, cost per dollar raised, and break-even attendance for a gala.",
      "formula": "Net = (tickets + sponsorships + auction + appeal) − (venue + F&B + production + staff time).",
      "inputs": [
        {
          "id": "attendees",
          "label": "Attendees",
          "kind": "number"
        },
        {
          "id": "ticket",
          "label": "Ticket price",
          "kind": "number"
        },
        {
          "id": "sponsor",
          "label": "Sponsorship revenue",
          "kind": "number"
        },
        {
          "id": "auction",
          "label": "Auction & raffle net",
          "kind": "number"
        },
        {
          "id": "appealPer",
          "label": "Paddle raise per attendee",
          "kind": "number"
        },
        {
          "id": "perPerson",
          "label": "Venue & catering per person",
          "kind": "number"
        },
        {
          "id": "fixed",
          "label": "Production, AV, printing",
          "kind": "number"
        },
        {
          "id": "staffHours",
          "label": "Staff hours invested",
          "kind": "number"
        },
        {
          "id": "staffRate",
          "label": "Loaded staff cost per hour",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "trueNet",
          "label": "Net after staff time"
        },
        {
          "id": "net",
          "label": "Net cash raised"
        },
        {
          "id": "revenue",
          "label": "Gross revenue"
        },
        {
          "id": "costPerDollar",
          "label": "Cost per dollar raised"
        },
        {
          "id": "perAttendee",
          "label": "True net per attendee"
        },
        {
          "id": "breakeven",
          "label": "Break-even attendance"
        }
      ]
    },
    {
      "slug": "nonprofit-overhead-ratio",
      "url": "https://www.revenuelab.fyi/toolbox/nonprofit-overhead-ratio",
      "title": "Nonprofit Overhead Ratio Calculator",
      "category": "financial",
      "summary": "Program, admin, and fundraising ratios the way watchdogs compute them.",
      "formula": "Program ratio = program expense ÷ total expense; fundraising efficiency = contributions ÷ fundraising expense.",
      "inputs": [
        {
          "id": "program",
          "label": "Program service expense",
          "kind": "number"
        },
        {
          "id": "admin",
          "label": "Management & general",
          "kind": "number"
        },
        {
          "id": "fundraising",
          "label": "Fundraising expense",
          "kind": "number"
        },
        {
          "id": "contributions",
          "label": "Contributions raised",
          "kind": "number"
        },
        {
          "id": "revenue",
          "label": "Total revenue",
          "kind": "number"
        },
        {
          "id": "reserves",
          "label": "Unrestricted net assets",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "programRatio",
          "label": "Program expense ratio"
        },
        {
          "id": "adminRatio",
          "label": "Management & general ratio"
        },
        {
          "id": "fundraisingRatio",
          "label": "Fundraising ratio"
        },
        {
          "id": "efficiency",
          "label": "Dollars raised per fundraising dollar"
        },
        {
          "id": "surplus",
          "label": "Operating surplus / (deficit)"
        },
        {
          "id": "monthsReserve",
          "label": "Months of operating reserve"
        }
      ]
    },
    {
      "slug": "grant-budget",
      "url": "https://www.revenuelab.fyi/toolbox/grant-budget",
      "title": "Grant Budget Calculator",
      "category": "financial",
      "summary": "Direct costs, indirect recovery, and the true unfunded gap.",
      "formula": "Indirect = MTDC × rate; gap = (true indirect at your federal rate) − (allowed indirect).",
      "inputs": [
        {
          "id": "personnel",
          "label": "Personnel (salaries)",
          "kind": "number"
        },
        {
          "id": "fringe",
          "label": "Fringe benefit rate",
          "kind": "number"
        },
        {
          "id": "travel",
          "label": "Travel",
          "kind": "number"
        },
        {
          "id": "supplies",
          "label": "Supplies & other direct",
          "kind": "number"
        },
        {
          "id": "subaward",
          "label": "Subawards (first $25k counts in MTDC)",
          "kind": "number"
        },
        {
          "id": "equipment",
          "label": "Equipment (excluded from MTDC)",
          "kind": "number"
        },
        {
          "id": "allowed",
          "label": "Funder's allowed indirect rate",
          "kind": "number"
        },
        {
          "id": "federal",
          "label": "Your negotiated indirect rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "request",
          "label": "Total grant request"
        },
        {
          "id": "direct",
          "label": "Total direct costs"
        },
        {
          "id": "mtdc",
          "label": "Modified total direct cost base"
        },
        {
          "id": "allowed",
          "label": "Indirect recovered from funder"
        },
        {
          "id": "trueInd",
          "label": "Indirect at your negotiated rate"
        },
        {
          "id": "gap",
          "label": "Unrecovered indirect (you subsidize)"
        }
      ]
    },
    {
      "slug": "charitable-deduction",
      "url": "https://www.revenuelab.fyi/toolbox/charitable-deduction",
      "title": "Charitable Donation Tax Deduction Calculator",
      "category": "financial",
      "summary": "What a gift actually costs you after the deduction.",
      "formula": "Tax saved = deductible amount × (federal marginal rate + state rate); net cost = gift − tax saved.",
      "inputs": [
        {
          "id": "gift",
          "label": "Charitable gift",
          "kind": "number"
        },
        {
          "id": "otherItemized",
          "label": "Other itemized deductions",
          "kind": "number"
        },
        {
          "id": "standard",
          "label": "Your standard deduction",
          "kind": "number"
        },
        {
          "id": "bracket",
          "label": "Federal marginal bracket",
          "kind": "select"
        },
        {
          "id": "state",
          "label": "State marginal rate",
          "kind": "number"
        },
        {
          "id": "appreciated",
          "label": "Unrealized gain if donating stock",
          "kind": "number"
        },
        {
          "id": "capGains",
          "label": "Capital gains rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netCost",
          "label": "After-tax cost of the gift"
        },
        {
          "id": "saved",
          "label": "Total tax saved"
        },
        {
          "id": "benefit",
          "label": "Deductible amount that actually counts"
        },
        {
          "id": "cgSaved",
          "label": "Capital gains tax avoided"
        },
        {
          "id": "effective",
          "label": "Effective subsidy rate"
        },
        {
          "id": "itemize",
          "label": "Should you itemize?"
        }
      ]
    },
    {
      "slug": "volunteer-value",
      "url": "https://www.revenuelab.fyi/toolbox/volunteer-value",
      "title": "Volunteer Hour Value Calculator",
      "category": "financial",
      "summary": "Dollar value of volunteer hours, plus program cost and net benefit.",
      "formula": "Value = hours × hourly value; net = value − (coordinator time + training + screening).",
      "inputs": [
        {
          "id": "volunteers",
          "label": "Active volunteers",
          "kind": "number"
        },
        {
          "id": "hoursEach",
          "label": "Hours each per month",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Value per volunteer hour",
          "kind": "number"
        },
        {
          "id": "coordHours",
          "label": "Coordinator hours per month",
          "kind": "number"
        },
        {
          "id": "coordRate",
          "label": "Coordinator cost per hour",
          "kind": "number"
        },
        {
          "id": "trainingEach",
          "label": "Training & screening per volunteer",
          "kind": "number"
        },
        {
          "id": "turnover",
          "label": "Annual volunteer turnover",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "value",
          "label": "Monthly value of volunteer time"
        },
        {
          "id": "annualValue",
          "label": "Annual value"
        },
        {
          "id": "hours",
          "label": "Volunteer hours per month"
        },
        {
          "id": "cost",
          "label": "Monthly program cost"
        },
        {
          "id": "net",
          "label": "Net monthly benefit"
        },
        {
          "id": "roi",
          "label": "Return on volunteer program spend"
        }
      ]
    },
    {
      "slug": "peer-to-peer-fundraising",
      "url": "https://www.revenuelab.fyi/toolbox/peer-to-peer-fundraising",
      "title": "Peer-to-Peer Fundraising Calculator",
      "category": "financial",
      "summary": "Participants, activation rate, and average raised to a campaign total.",
      "formula": "Total = participants × activation × average raised; net = total × (1 − platform − processing).",
      "inputs": [
        {
          "id": "participants",
          "label": "Registered participants",
          "kind": "number"
        },
        {
          "id": "activation",
          "label": "Share who actually fundraise",
          "kind": "number"
        },
        {
          "id": "avgRaised",
          "label": "Average raised per active fundraiser",
          "kind": "number"
        },
        {
          "id": "donorsEach",
          "label": "Donors per active fundraiser",
          "kind": "number"
        },
        {
          "id": "platformFee",
          "label": "Platform fee",
          "kind": "number"
        },
        {
          "id": "processing",
          "label": "Payment processing",
          "kind": "number"
        },
        {
          "id": "campaignCost",
          "label": "Campaign costs (swag, staff, ads)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Net raised"
        },
        {
          "id": "gross",
          "label": "Gross raised"
        },
        {
          "id": "active",
          "label": "Active fundraisers"
        },
        {
          "id": "donors",
          "label": "New donor records acquired"
        },
        {
          "id": "fees",
          "label": "Platform & processing fees"
        },
        {
          "id": "perParticipant",
          "label": "Gross per registrant"
        }
      ]
    },
    {
      "slug": "monthly-giving-program",
      "url": "https://www.revenuelab.fyi/toolbox/monthly-giving-program",
      "title": "Monthly Giving Program Calculator",
      "category": "financial",
      "summary": "Sustainer revenue, churn, and the value of converting one-time donors.",
      "formula": "Monthly revenue = sustainers × average gift; retained value = revenue ÷ monthly churn.",
      "inputs": [
        {
          "id": "sustainers",
          "label": "Current monthly donors",
          "kind": "number"
        },
        {
          "id": "avgGift",
          "label": "Average monthly gift",
          "kind": "number"
        },
        {
          "id": "newPerMonth",
          "label": "New sustainers per month",
          "kind": "number"
        },
        {
          "id": "churn",
          "label": "Monthly churn (cancels + card failures)",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Projection horizon",
          "kind": "number"
        },
        {
          "id": "processing",
          "label": "Processing fees",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthlyNow",
          "label": "Net monthly revenue today"
        },
        {
          "id": "endMonthly",
          "label": "Net monthly revenue at horizon"
        },
        {
          "id": "endCount",
          "label": "Sustainers at horizon"
        },
        {
          "id": "cumulative",
          "label": "Cumulative net revenue"
        },
        {
          "id": "ltv",
          "label": "Lifetime value per sustainer"
        },
        {
          "id": "lifespan",
          "label": "Average months retained"
        }
      ]
    },
    {
      "slug": "matching-gift-impact",
      "url": "https://www.revenuelab.fyi/toolbox/matching-gift-impact",
      "title": "Matching Gift Impact Calculator",
      "category": "financial",
      "summary": "How much a match challenge lifts total giving — and what it truly costs.",
      "formula": "Matched total = baseline × (1 + lift) + match pool; incremental = matched total − baseline − match pool.",
      "inputs": [
        {
          "id": "baseline",
          "label": "Expected raise without a match",
          "kind": "number"
        },
        {
          "id": "matchPool",
          "label": "Match pool committed",
          "kind": "number"
        },
        {
          "id": "responseLift",
          "label": "Lift in response rate",
          "kind": "number"
        },
        {
          "id": "giftLift",
          "label": "Lift in average gift",
          "kind": "number"
        },
        {
          "id": "promoCost",
          "label": "Promotion cost",
          "kind": "number"
        },
        {
          "id": "wouldHaveGiven",
          "label": "Share of match donor's gift that was coming anyway",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total campaign raise with match"
        },
        {
          "id": "lifted",
          "label": "Donor giving with the match live"
        },
        {
          "id": "incremental",
          "label": "Incremental donor dollars from the match"
        },
        {
          "id": "netNew",
          "label": "Genuinely new money after promo cost"
        },
        {
          "id": "matchUsed",
          "label": "Match dollars actually unlocked"
        },
        {
          "id": "costPerIncremental",
          "label": "Promo cost per incremental dollar"
        }
      ]
    },
    {
      "slug": "grant-writer-rate",
      "url": "https://www.revenuelab.fyi/toolbox/grant-writer-rate",
      "title": "Grant Writer Rate Calculator",
      "category": "financial",
      "summary": "Project fee, hourly equivalent, and expected value per proposal.",
      "formula": "Fee = hours × target hourly; expected value = award size × win probability.",
      "inputs": [
        {
          "id": "hours",
          "label": "Hours for the proposal",
          "kind": "number"
        },
        {
          "id": "target",
          "label": "Target hourly rate",
          "kind": "number"
        },
        {
          "id": "research",
          "label": "Prospect research hours",
          "kind": "number"
        },
        {
          "id": "award",
          "label": "Typical award size",
          "kind": "number"
        },
        {
          "id": "winRate",
          "label": "Historical win rate",
          "kind": "number"
        },
        {
          "id": "perYear",
          "label": "Proposals per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "fee",
          "label": "Project fee to quote"
        },
        {
          "id": "totalHours",
          "label": "Total hours invested"
        },
        {
          "id": "ev",
          "label": "Expected award value per proposal"
        },
        {
          "id": "evPerHour",
          "label": "Expected award per hour worked"
        },
        {
          "id": "annualFees",
          "label": "Annual writing fees"
        },
        {
          "id": "annualAwards",
          "label": "Expected annual awards generated"
        }
      ]
    },
    {
      "slug": "endowment-payout",
      "url": "https://www.revenuelab.fyi/toolbox/endowment-payout",
      "title": "Endowment Payout Calculator",
      "category": "financial",
      "summary": "Annual distribution, real growth, and corpus purchasing power over time.",
      "formula": "Payout = corpus × rate; real growth = return − payout − inflation − fees.",
      "inputs": [
        {
          "id": "corpus",
          "label": "Endowment corpus",
          "kind": "number"
        },
        {
          "id": "payout",
          "label": "Spending rate",
          "kind": "number"
        },
        {
          "id": "returns",
          "label": "Expected nominal return",
          "kind": "number"
        },
        {
          "id": "inflation",
          "label": "Inflation",
          "kind": "number"
        },
        {
          "id": "fees",
          "label": "Investment & admin fees",
          "kind": "number"
        },
        {
          "id": "gifts",
          "label": "New gifts to corpus per year",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years to project",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "firstPayout",
          "label": "First-year distribution"
        },
        {
          "id": "endCorpus",
          "label": "Corpus at horizon (nominal)"
        },
        {
          "id": "realCorpus",
          "label": "Corpus in today's dollars"
        },
        {
          "id": "purchasing",
          "label": "Purchasing power vs today"
        },
        {
          "id": "totalPaid",
          "label": "Total distributed over the period"
        },
        {
          "id": "realGrowth",
          "label": "Annual real growth rate"
        }
      ]
    },
    {
      "slug": "boat-fuel-consumption",
      "url": "https://www.revenuelab.fyi/toolbox/boat-fuel-consumption",
      "title": "Boat Fuel Consumption Calculator",
      "category": "other",
      "summary": "Estimate gallons burned and fuel cost for a trip.",
      "formula": "GPH ≈ HP × 0.05 × load%. Trip gallons = GPH × hours.",
      "inputs": [
        {
          "id": "hp",
          "label": "Engine horsepower",
          "kind": "number"
        },
        {
          "id": "load",
          "label": "Average throttle load",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Hours running",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Fuel price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cost",
          "label": "Trip fuel cost"
        },
        {
          "id": "gph",
          "label": "Gallons per hour"
        },
        {
          "id": "gallons",
          "label": "Total gallons"
        }
      ]
    },
    {
      "slug": "boat-loan",
      "url": "https://www.revenuelab.fyi/toolbox/boat-loan",
      "title": "Boat Loan Calculator",
      "category": "financial",
      "summary": "Monthly payment and total interest on a boat loan.",
      "inputs": [
        {
          "id": "price",
          "label": "Boat price",
          "kind": "number"
        },
        {
          "id": "down",
          "label": "Down payment",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Interest rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Term",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pay",
          "label": "Monthly payment"
        },
        {
          "id": "principal",
          "label": "Amount financed"
        },
        {
          "id": "interest",
          "label": "Total interest"
        },
        {
          "id": "total",
          "label": "Total paid"
        }
      ]
    },
    {
      "slug": "boat-ownership-cost",
      "url": "https://www.revenuelab.fyi/toolbox/boat-ownership-cost",
      "title": "Boat Ownership Cost Calculator",
      "category": "financial",
      "summary": "True annual cost of owning a boat.",
      "inputs": [
        {
          "id": "slip",
          "label": "Slip / storage",
          "kind": "number"
        },
        {
          "id": "ins",
          "label": "Insurance",
          "kind": "number"
        },
        {
          "id": "maint",
          "label": "Maintenance & haul-out",
          "kind": "number"
        },
        {
          "id": "fuel",
          "label": "Fuel",
          "kind": "number"
        },
        {
          "id": "loan",
          "label": "Loan payments",
          "kind": "number"
        },
        {
          "id": "outings",
          "label": "Outings per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Annual cost"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "perOuting",
          "label": "Cost per outing"
        }
      ]
    },
    {
      "slug": "anchor-rode-scope",
      "url": "https://www.revenuelab.fyi/toolbox/anchor-rode-scope",
      "title": "Anchor Rode & Scope Calculator",
      "category": "other",
      "summary": "How much anchor line to let out for a given depth.",
      "formula": "Rode = (depth + freeboard + tide) × scope ratio.",
      "inputs": [
        {
          "id": "depth",
          "label": "Water depth",
          "kind": "number"
        },
        {
          "id": "freeboard",
          "label": "Bow height above water",
          "kind": "number"
        },
        {
          "id": "tide",
          "label": "Expected tide rise",
          "kind": "number"
        },
        {
          "id": "scope",
          "label": "Scope ratio (X:1)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rode",
          "label": "Rode to deploy"
        },
        {
          "id": "height",
          "label": "Total vertical height"
        },
        {
          "id": "swing",
          "label": "Approx swing radius (ft)"
        }
      ]
    },
    {
      "slug": "nautical-distance",
      "url": "https://www.revenuelab.fyi/toolbox/nautical-distance",
      "title": "Nautical Distance & ETA Calculator",
      "category": "other",
      "summary": "Passage time from distance and boat speed.",
      "inputs": [
        {
          "id": "nm",
          "label": "Distance",
          "kind": "number"
        },
        {
          "id": "speed",
          "label": "Boat speed",
          "kind": "number"
        },
        {
          "id": "current",
          "label": "Current with (+) / against (−)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "hours",
          "label": "Passage time (hours)"
        },
        {
          "id": "sog",
          "label": "Speed over ground (kts)"
        },
        {
          "id": "statute",
          "label": "Statute miles"
        },
        {
          "id": "km",
          "label": "Kilometers"
        }
      ]
    },
    {
      "slug": "trailer-weight",
      "url": "https://www.revenuelab.fyi/toolbox/trailer-weight",
      "title": "Trailer Tongue Weight Calculator",
      "category": "other",
      "summary": "Check tongue weight percentage and towing safety.",
      "inputs": [
        {
          "id": "trailer",
          "label": "Loaded trailer weight",
          "kind": "number"
        },
        {
          "id": "tongue",
          "label": "Measured tongue weight",
          "kind": "number"
        },
        {
          "id": "capacity",
          "label": "Vehicle tow capacity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pct",
          "label": "Tongue weight %"
        },
        {
          "id": "status",
          "label": "Assessment"
        },
        {
          "id": "target",
          "label": "Ideal tongue weight (lb)"
        },
        {
          "id": "margin",
          "label": "Capacity margin (lb)"
        }
      ]
    },
    {
      "slug": "aircraft-weight-balance",
      "url": "https://www.revenuelab.fyi/toolbox/aircraft-weight-balance",
      "title": "Aircraft Weight & Balance Calculator",
      "category": "other",
      "summary": "Gross weight and center of gravity for a light aircraft.",
      "formula": "CG = Σ(weight × arm) ÷ Σ(weight).",
      "inputs": [
        {
          "id": "empty",
          "label": "Empty weight",
          "kind": "number"
        },
        {
          "id": "emptyArm",
          "label": "Empty CG arm",
          "kind": "number"
        },
        {
          "id": "front",
          "label": "Front seats",
          "kind": "number"
        },
        {
          "id": "frontArm",
          "label": "Front seat arm",
          "kind": "number"
        },
        {
          "id": "rear",
          "label": "Rear seats",
          "kind": "number"
        },
        {
          "id": "rearArm",
          "label": "Rear seat arm",
          "kind": "number"
        },
        {
          "id": "fuel",
          "label": "Fuel",
          "kind": "number"
        },
        {
          "id": "fuelArm",
          "label": "Fuel arm",
          "kind": "number"
        },
        {
          "id": "bag",
          "label": "Baggage",
          "kind": "number"
        },
        {
          "id": "bagArm",
          "label": "Baggage arm",
          "kind": "number"
        },
        {
          "id": "maxGross",
          "label": "Max gross weight",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "gross",
          "label": "Gross weight (lb)"
        },
        {
          "id": "cg",
          "label": "CG arm (in)"
        },
        {
          "id": "status",
          "label": "Gross weight check"
        },
        {
          "id": "moment",
          "label": "Total moment (lb-in)"
        }
      ]
    },
    {
      "slug": "aircraft-fuel-burn",
      "url": "https://www.revenuelab.fyi/toolbox/aircraft-fuel-burn",
      "title": "Aircraft Fuel Burn & Endurance Calculator",
      "category": "other",
      "summary": "Endurance, range, and reserve check for a flight.",
      "inputs": [
        {
          "id": "usable",
          "label": "Usable fuel",
          "kind": "number"
        },
        {
          "id": "burn",
          "label": "Fuel burn",
          "kind": "number"
        },
        {
          "id": "tas",
          "label": "True airspeed",
          "kind": "number"
        },
        {
          "id": "wind",
          "label": "Headwind (−) / tailwind (+)",
          "kind": "number"
        },
        {
          "id": "reserve",
          "label": "Reserve required",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "legRange",
          "label": "Range with reserve (nm)"
        },
        {
          "id": "endurance",
          "label": "Total endurance (hrs)"
        },
        {
          "id": "usableAfter",
          "label": "Hours after reserve"
        },
        {
          "id": "gs",
          "label": "Ground speed (kts)"
        }
      ]
    },
    {
      "slug": "density-altitude",
      "url": "https://www.revenuelab.fyi/toolbox/density-altitude",
      "title": "Density Altitude Calculator",
      "category": "other",
      "summary": "Pressure altitude and density altitude from field conditions.",
      "formula": "DA ≈ PA + 120 × (OAT − ISA temp).",
      "inputs": [
        {
          "id": "elev",
          "label": "Field elevation",
          "kind": "number"
        },
        {
          "id": "altimeter",
          "label": "Altimeter setting",
          "kind": "number"
        },
        {
          "id": "tempC",
          "label": "Temperature",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "da",
          "label": "Density altitude (ft)"
        },
        {
          "id": "pa",
          "label": "Pressure altitude (ft)"
        },
        {
          "id": "isa",
          "label": "ISA temperature (°C)"
        },
        {
          "id": "delta",
          "label": "ISA deviation (°C)"
        }
      ]
    },
    {
      "slug": "crosswind-component",
      "url": "https://www.revenuelab.fyi/toolbox/crosswind-component",
      "title": "Crosswind Component Calculator",
      "category": "other",
      "summary": "Headwind and crosswind components for a runway.",
      "inputs": [
        {
          "id": "runway",
          "label": "Runway heading",
          "kind": "number"
        },
        {
          "id": "windDir",
          "label": "Wind direction",
          "kind": "number"
        },
        {
          "id": "windSpd",
          "label": "Wind speed",
          "kind": "number"
        },
        {
          "id": "limit",
          "label": "Demonstrated crosswind",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "xw",
          "label": "Crosswind (kts)"
        },
        {
          "id": "hw",
          "label": "Headwind (kts, negative = tailwind)"
        },
        {
          "id": "angle",
          "label": "Wind angle (°)"
        },
        {
          "id": "status",
          "label": "Limit check"
        }
      ]
    },
    {
      "slug": "aircraft-rental-cost",
      "url": "https://www.revenuelab.fyi/toolbox/aircraft-rental-cost",
      "title": "Aircraft Rental Cost Calculator",
      "category": "financial",
      "summary": "True hourly cost of renting vs. flying club membership.",
      "inputs": [
        {
          "id": "hours",
          "label": "Hours flown per year",
          "kind": "number"
        },
        {
          "id": "wet",
          "label": "Rental rate (wet)",
          "kind": "number"
        },
        {
          "id": "cfi",
          "label": "Instructor rate",
          "kind": "number"
        },
        {
          "id": "cfiHours",
          "label": "Instructed hours",
          "kind": "number"
        },
        {
          "id": "clubDues",
          "label": "Club dues",
          "kind": "number"
        },
        {
          "id": "clubRate",
          "label": "Club rate (wet)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rental",
          "label": "FBO rental annual cost"
        },
        {
          "id": "club",
          "label": "Flying club annual cost"
        },
        {
          "id": "savings",
          "label": "Club savings vs rental"
        },
        {
          "id": "breakeven",
          "label": "Break-even hours/yr for club"
        }
      ]
    },
    {
      "slug": "pilot-training-cost",
      "url": "https://www.revenuelab.fyi/toolbox/pilot-training-cost",
      "title": "Private Pilot Training Cost Calculator",
      "category": "financial",
      "summary": "Full cost to a private pilot certificate.",
      "inputs": [
        {
          "id": "dual",
          "label": "Dual hours",
          "kind": "number"
        },
        {
          "id": "solo",
          "label": "Solo hours",
          "kind": "number"
        },
        {
          "id": "wet",
          "label": "Aircraft rate (wet)",
          "kind": "number"
        },
        {
          "id": "cfi",
          "label": "Instructor rate",
          "kind": "number"
        },
        {
          "id": "ground",
          "label": "Ground instruction hours",
          "kind": "number"
        },
        {
          "id": "extras",
          "label": "Books, headset, medical, exams",
          "kind": "number"
        },
        {
          "id": "checkride",
          "label": "Checkride fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total training cost"
        },
        {
          "id": "air",
          "label": "Aircraft time"
        },
        {
          "id": "instr",
          "label": "Instructor time"
        },
        {
          "id": "perHour",
          "label": "Effective cost per flight hour"
        }
      ]
    },
    {
      "slug": "drone-pilot-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/drone-pilot-pricing",
      "title": "Drone Pilot Pricing Calculator",
      "category": "financial",
      "summary": "What to charge per drone shoot to hit your income goal.",
      "inputs": [
        {
          "id": "target",
          "label": "Target annual profit",
          "kind": "number"
        },
        {
          "id": "jobs",
          "label": "Jobs per year",
          "kind": "number"
        },
        {
          "id": "gear",
          "label": "Gear depreciation + insurance",
          "kind": "number"
        },
        {
          "id": "travel",
          "label": "Travel & software per job",
          "kind": "number"
        },
        {
          "id": "editHrs",
          "label": "Edit hours per job",
          "kind": "number"
        },
        {
          "id": "editRate",
          "label": "Your hourly value",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Price per job"
        },
        {
          "id": "perJobCost",
          "label": "Cost per job"
        },
        {
          "id": "revenue",
          "label": "Annual revenue needed"
        },
        {
          "id": "margin",
          "label": "Gross margin"
        }
      ]
    },
    {
      "slug": "rv-trip-cost",
      "url": "https://www.revenuelab.fyi/toolbox/rv-trip-cost",
      "title": "RV Trip Cost Calculator",
      "category": "other",
      "summary": "Fuel, campgrounds, and food for an RV road trip.",
      "inputs": [
        {
          "id": "miles",
          "label": "Total miles",
          "kind": "number"
        },
        {
          "id": "mpg",
          "label": "RV fuel economy",
          "kind": "number"
        },
        {
          "id": "fuelPrice",
          "label": "Fuel price",
          "kind": "number"
        },
        {
          "id": "nights",
          "label": "Nights on the road",
          "kind": "number"
        },
        {
          "id": "siteRate",
          "label": "Campground rate",
          "kind": "number"
        },
        {
          "id": "foodDay",
          "label": "Food per day",
          "kind": "number"
        },
        {
          "id": "misc",
          "label": "Propane, dump, activities",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total trip cost"
        },
        {
          "id": "fuel",
          "label": "Fuel"
        },
        {
          "id": "camp",
          "label": "Campgrounds"
        },
        {
          "id": "perDay",
          "label": "Cost per day"
        }
      ]
    },
    {
      "slug": "scuba-air-consumption",
      "url": "https://www.revenuelab.fyi/toolbox/scuba-air-consumption",
      "title": "Scuba Air Consumption (SAC) Calculator",
      "category": "other",
      "summary": "Surface air consumption rate and dive time estimate.",
      "formula": "SAC = (cu ft used ÷ minutes) ÷ average ATA, where ATA = depth/33 + 1.",
      "inputs": [
        {
          "id": "start",
          "label": "Starting pressure",
          "kind": "number"
        },
        {
          "id": "end",
          "label": "Ending pressure",
          "kind": "number"
        },
        {
          "id": "minutes",
          "label": "Dive time",
          "kind": "number"
        },
        {
          "id": "depth",
          "label": "Average depth",
          "kind": "number"
        },
        {
          "id": "tank",
          "label": "Tank capacity",
          "kind": "number"
        },
        {
          "id": "rated",
          "label": "Tank rated pressure",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "sac",
          "label": "SAC rate (cu ft/min)"
        },
        {
          "id": "cuftUsed",
          "label": "Gas used (cu ft)"
        },
        {
          "id": "ata",
          "label": "Average ATA"
        },
        {
          "id": "planTime",
          "label": "Planned bottom time at depth (min)"
        }
      ]
    },
    {
      "slug": "crypto-average-down",
      "url": "https://www.revenuelab.fyi/toolbox/crypto-average-down",
      "title": "Crypto Average Down Calculator",
      "category": "financial",
      "summary": "New average entry price after buying the dip.",
      "inputs": [
        {
          "id": "qty1",
          "label": "Original quantity",
          "kind": "number"
        },
        {
          "id": "price1",
          "label": "Original entry price",
          "kind": "number"
        },
        {
          "id": "qty2",
          "label": "Additional quantity",
          "kind": "number"
        },
        {
          "id": "price2",
          "label": "New buy price",
          "kind": "number"
        },
        {
          "id": "current",
          "label": "Current price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "avg",
          "label": "New average entry"
        },
        {
          "id": "qty",
          "label": "Total position size"
        },
        {
          "id": "pnl",
          "label": "Unrealized P&L"
        },
        {
          "id": "recovery",
          "label": "Move needed to break even"
        }
      ]
    },
    {
      "slug": "crypto-swap-slippage",
      "url": "https://www.revenuelab.fyi/toolbox/crypto-swap-slippage",
      "title": "Crypto Swap Slippage Calculator",
      "category": "financial",
      "summary": "What a DEX swap really costs after slippage and fees.",
      "inputs": [
        {
          "id": "amount",
          "label": "Swap amount",
          "kind": "number"
        },
        {
          "id": "liquidity",
          "label": "Pool liquidity",
          "kind": "number"
        },
        {
          "id": "poolFee",
          "label": "Pool fee",
          "kind": "number"
        },
        {
          "id": "gas",
          "label": "Gas cost",
          "kind": "number"
        },
        {
          "id": "tolerance",
          "label": "Slippage tolerance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "All-in swap cost"
        },
        {
          "id": "impact",
          "label": "Price impact"
        },
        {
          "id": "received",
          "label": "Effective value received"
        },
        {
          "id": "status",
          "label": "Tolerance check"
        }
      ]
    },
    {
      "slug": "crypto-tax-gain",
      "url": "https://www.revenuelab.fyi/toolbox/crypto-tax-gain",
      "title": "Crypto Capital Gains Tax Calculator",
      "category": "financial",
      "summary": "Estimate tax owed on a crypto sale.",
      "inputs": [
        {
          "id": "proceeds",
          "label": "Sale proceeds",
          "kind": "number"
        },
        {
          "id": "basis",
          "label": "Cost basis",
          "kind": "number"
        },
        {
          "id": "holding",
          "label": "Holding period",
          "kind": "select"
        },
        {
          "id": "ordinary",
          "label": "Ordinary income tax rate",
          "kind": "number"
        },
        {
          "id": "ltcg",
          "label": "Long-term rate",
          "kind": "number"
        },
        {
          "id": "state",
          "label": "State rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated tax owed"
        },
        {
          "id": "gain",
          "label": "Capital gain"
        },
        {
          "id": "fed",
          "label": "Federal tax"
        },
        {
          "id": "st",
          "label": "State tax"
        },
        {
          "id": "net",
          "label": "Net after tax"
        }
      ]
    },
    {
      "slug": "crypto-staking-yield",
      "url": "https://www.revenuelab.fyi/toolbox/crypto-staking-yield",
      "title": "Crypto Staking Rewards Calculator",
      "category": "financial",
      "summary": "Compounding staking rewards and annual yield.",
      "inputs": [
        {
          "id": "stake",
          "label": "Amount staked",
          "kind": "number"
        },
        {
          "id": "apr",
          "label": "Advertised APR",
          "kind": "number"
        },
        {
          "id": "commission",
          "label": "Validator commission",
          "kind": "number"
        },
        {
          "id": "compounds",
          "label": "Compounds per year",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years staked",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rewards",
          "label": "Total rewards"
        },
        {
          "id": "apy",
          "label": "Effective APY"
        },
        {
          "id": "yearOne",
          "label": "Year 1 rewards"
        },
        {
          "id": "end",
          "label": "Ending balance"
        }
      ]
    },
    {
      "slug": "impermanent-loss",
      "url": "https://www.revenuelab.fyi/toolbox/impermanent-loss",
      "title": "Impermanent Loss Calculator",
      "category": "financial",
      "summary": "LP loss versus simply holding both tokens.",
      "formula": "IL = 2√r / (1 + r) − 1, where r is the relative price ratio change.",
      "inputs": [
        {
          "id": "priceChangeA",
          "label": "Token A price change",
          "kind": "number"
        },
        {
          "id": "priceChangeB",
          "label": "Token B price change",
          "kind": "number"
        },
        {
          "id": "deposit",
          "label": "Deposit value",
          "kind": "number"
        },
        {
          "id": "feeApr",
          "label": "Pool fee APR",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Days in pool",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ilPct",
          "label": "Impermanent loss"
        },
        {
          "id": "loss",
          "label": "Dollar loss vs holding"
        },
        {
          "id": "fees",
          "label": "Fees earned"
        },
        {
          "id": "verdict",
          "label": "Verdict"
        }
      ]
    },
    {
      "slug": "mining-profitability",
      "url": "https://www.revenuelab.fyi/toolbox/mining-profitability",
      "title": "Crypto Mining Profitability Calculator",
      "category": "financial",
      "summary": "Daily profit and payback period for a mining rig.",
      "inputs": [
        {
          "id": "revPerDay",
          "label": "Gross mining revenue",
          "kind": "number"
        },
        {
          "id": "watts",
          "label": "Rig power draw",
          "kind": "number"
        },
        {
          "id": "kwh",
          "label": "Electricity rate",
          "kind": "number"
        },
        {
          "id": "poolFee",
          "label": "Pool fee",
          "kind": "number"
        },
        {
          "id": "rigCost",
          "label": "Rig cost",
          "kind": "number"
        },
        {
          "id": "uptime",
          "label": "Uptime",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "profit",
          "label": "Daily profit"
        },
        {
          "id": "monthly",
          "label": "Monthly profit"
        },
        {
          "id": "power",
          "label": "Daily electricity cost"
        },
        {
          "id": "payback",
          "label": "Payback (days)"
        }
      ]
    },
    {
      "slug": "gas-fee-cost",
      "url": "https://www.revenuelab.fyi/toolbox/gas-fee-cost",
      "title": "Gas Fee Cost Calculator",
      "category": "other",
      "summary": "Convert gwei and gas limit into a dollar transaction fee.",
      "inputs": [
        {
          "id": "gwei",
          "label": "Gas price",
          "kind": "number"
        },
        {
          "id": "limit",
          "label": "Gas limit (units)",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Native token price",
          "kind": "number"
        },
        {
          "id": "txs",
          "label": "Transactions per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "fee",
          "label": "Fee per transaction"
        },
        {
          "id": "eth",
          "label": "Fee in native token"
        },
        {
          "id": "monthly",
          "label": "Monthly gas spend"
        },
        {
          "id": "yearly",
          "label": "Annual gas spend"
        }
      ]
    },
    {
      "slug": "nft-mint-cost",
      "url": "https://www.revenuelab.fyi/toolbox/nft-mint-cost",
      "title": "NFT Mint Economics Calculator",
      "category": "financial",
      "summary": "Net proceeds from a collection mint after fees and royalties.",
      "inputs": [
        {
          "id": "supply",
          "label": "Collection supply",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Mint price",
          "kind": "number"
        },
        {
          "id": "sellThrough",
          "label": "Sell-through",
          "kind": "number"
        },
        {
          "id": "platform",
          "label": "Platform fee",
          "kind": "number"
        },
        {
          "id": "costs",
          "label": "Art, dev, marketing",
          "kind": "number"
        },
        {
          "id": "split",
          "label": "Your share of net",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "yours",
          "label": "Your take-home"
        },
        {
          "id": "gross",
          "label": "Gross mint revenue"
        },
        {
          "id": "net",
          "label": "Net after fees & costs"
        },
        {
          "id": "minted",
          "label": "NFTs minted"
        }
      ]
    },
    {
      "slug": "nft-royalty-income",
      "url": "https://www.revenuelab.fyi/toolbox/nft-royalty-income",
      "title": "NFT Royalty Income Calculator",
      "category": "financial",
      "summary": "Secondary-market royalty income from a collection.",
      "inputs": [
        {
          "id": "supply",
          "label": "Collection supply",
          "kind": "number"
        },
        {
          "id": "floor",
          "label": "Average sale price",
          "kind": "number"
        },
        {
          "id": "turnover",
          "label": "Annual turnover",
          "kind": "number"
        },
        {
          "id": "royalty",
          "label": "Royalty rate",
          "kind": "number"
        },
        {
          "id": "honored",
          "label": "Marketplaces honoring royalties",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "royalty",
          "label": "Annual royalty income"
        },
        {
          "id": "monthly",
          "label": "Monthly average"
        },
        {
          "id": "volume",
          "label": "Secondary volume"
        },
        {
          "id": "perNft",
          "label": "Royalty per NFT held"
        }
      ]
    },
    {
      "slug": "token-vesting",
      "url": "https://www.revenuelab.fyi/toolbox/token-vesting",
      "title": "Token Vesting Schedule Calculator",
      "category": "financial",
      "summary": "Cliff, unlock pace, and value at each milestone.",
      "inputs": [
        {
          "id": "total",
          "label": "Total tokens granted",
          "kind": "number"
        },
        {
          "id": "cliff",
          "label": "Cliff",
          "kind": "number"
        },
        {
          "id": "vest",
          "label": "Total vesting period",
          "kind": "number"
        },
        {
          "id": "elapsed",
          "label": "Months elapsed",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Token price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "vested",
          "label": "Tokens vested"
        },
        {
          "id": "value",
          "label": "Vested value"
        },
        {
          "id": "locked",
          "label": "Still locked"
        },
        {
          "id": "monthlyValue",
          "label": "Monthly unlock value"
        }
      ]
    },
    {
      "slug": "crypto-position-size",
      "url": "https://www.revenuelab.fyi/toolbox/crypto-position-size",
      "title": "Crypto Position Size Calculator",
      "category": "financial",
      "summary": "Position size from account risk and stop distance.",
      "inputs": [
        {
          "id": "account",
          "label": "Account size",
          "kind": "number"
        },
        {
          "id": "riskPct",
          "label": "Risk per trade",
          "kind": "number"
        },
        {
          "id": "entry",
          "label": "Entry price",
          "kind": "number"
        },
        {
          "id": "stop",
          "label": "Stop-loss price",
          "kind": "number"
        },
        {
          "id": "target",
          "label": "Target price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "units",
          "label": "Position size (units)"
        },
        {
          "id": "notional",
          "label": "Notional value"
        },
        {
          "id": "risk",
          "label": "Dollars at risk"
        },
        {
          "id": "rr",
          "label": "Reward : risk"
        }
      ]
    },
    {
      "slug": "crypto-liquidation-price",
      "url": "https://www.revenuelab.fyi/toolbox/crypto-liquidation-price",
      "title": "Leverage Liquidation Price Calculator",
      "category": "financial",
      "summary": "Where a leveraged position gets liquidated.",
      "inputs": [
        {
          "id": "entry",
          "label": "Entry price",
          "kind": "number"
        },
        {
          "id": "leverage",
          "label": "Leverage",
          "kind": "number"
        },
        {
          "id": "side",
          "label": "Direction",
          "kind": "select"
        },
        {
          "id": "mmr",
          "label": "Maintenance margin",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Margin posted",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "liq",
          "label": "Liquidation price"
        },
        {
          "id": "movePct",
          "label": "Move to liquidation"
        },
        {
          "id": "buffer",
          "label": "Price buffer ($)"
        },
        {
          "id": "notional",
          "label": "Position notional"
        }
      ]
    },
    {
      "slug": "airdrop-farming-roi",
      "url": "https://www.revenuelab.fyi/toolbox/airdrop-farming-roi",
      "title": "Airdrop Farming ROI Calculator",
      "category": "financial",
      "summary": "Is farming an airdrop worth the gas and time?",
      "inputs": [
        {
          "id": "expected",
          "label": "Expected airdrop value",
          "kind": "number"
        },
        {
          "id": "odds",
          "label": "Probability of qualifying",
          "kind": "number"
        },
        {
          "id": "gas",
          "label": "Gas spent",
          "kind": "number"
        },
        {
          "id": "capital",
          "label": "Capital locked",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Months farming",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Hours spent",
          "kind": "number"
        },
        {
          "id": "altYield",
          "label": "Alternative yield",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Net expected value"
        },
        {
          "id": "ev",
          "label": "Probability-weighted airdrop"
        },
        {
          "id": "perHour",
          "label": "Effective $/hour"
        },
        {
          "id": "opportunity",
          "label": "Opportunity cost of capital"
        }
      ]
    },
    {
      "slug": "dao-treasury-runway",
      "url": "https://www.revenuelab.fyi/toolbox/dao-treasury-runway",
      "title": "DAO Treasury Runway Calculator",
      "category": "financial",
      "summary": "Months of runway for a DAO or crypto-native org.",
      "inputs": [
        {
          "id": "stables",
          "label": "Stablecoin reserves",
          "kind": "number"
        },
        {
          "id": "tokens",
          "label": "Native tokens held",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Token price",
          "kind": "number"
        },
        {
          "id": "haircut",
          "label": "Liquidity haircut on token",
          "kind": "number"
        },
        {
          "id": "burn",
          "label": "Monthly burn",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "runway",
          "label": "Runway (months)"
        },
        {
          "id": "stableRunway",
          "label": "Stablecoin-only runway (months)"
        },
        {
          "id": "total",
          "label": "Effective treasury value"
        },
        {
          "id": "tokenValue",
          "label": "Token value after haircut"
        }
      ]
    },
    {
      "slug": "crypto-portfolio-rebalance",
      "url": "https://www.revenuelab.fyi/toolbox/crypto-portfolio-rebalance",
      "title": "Crypto Portfolio Rebalance Calculator",
      "category": "financial",
      "summary": "How much to buy or sell to hit target allocation.",
      "inputs": [
        {
          "id": "aValue",
          "label": "Asset A value",
          "kind": "number"
        },
        {
          "id": "bValue",
          "label": "Asset B value",
          "kind": "number"
        },
        {
          "id": "targetA",
          "label": "Target weight for A",
          "kind": "number"
        },
        {
          "id": "band",
          "label": "Rebalance band",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "action",
          "label": "Action"
        },
        {
          "id": "trade",
          "label": "Trade size for A (+buy / −sell)"
        },
        {
          "id": "currentA",
          "label": "Current weight of A"
        },
        {
          "id": "drift",
          "label": "Drift from target"
        }
      ]
    },
    {
      "slug": "stablecoin-yield",
      "url": "https://www.revenuelab.fyi/toolbox/stablecoin-yield",
      "title": "Stablecoin Yield Calculator",
      "category": "financial",
      "summary": "Compare stablecoin yield to a savings account after risk.",
      "inputs": [
        {
          "id": "amount",
          "label": "Amount deposited",
          "kind": "number"
        },
        {
          "id": "apy",
          "label": "Stablecoin APY",
          "kind": "number"
        },
        {
          "id": "riskHaircut",
          "label": "Risk haircut on yield",
          "kind": "number"
        },
        {
          "id": "hysa",
          "label": "Savings account APY",
          "kind": "number"
        },
        {
          "id": "tax",
          "label": "Marginal tax rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "edge",
          "label": "Extra earned vs savings"
        },
        {
          "id": "crypto",
          "label": "Stablecoin after-tax yield"
        },
        {
          "id": "bank",
          "label": "Savings after-tax yield"
        },
        {
          "id": "adjApy",
          "label": "Risk-adjusted APY"
        }
      ]
    },
    {
      "slug": "bitcoin-halving-model",
      "url": "https://www.revenuelab.fyi/toolbox/bitcoin-halving-model",
      "title": "Bitcoin Halving Supply Model",
      "category": "financial",
      "summary": "Block subsidy, annual issuance, and stock-to-flow.",
      "inputs": [
        {
          "id": "reward",
          "label": "Current block subsidy",
          "kind": "number"
        },
        {
          "id": "blockMin",
          "label": "Average block time",
          "kind": "number"
        },
        {
          "id": "supply",
          "label": "Circulating supply",
          "kind": "number"
        },
        {
          "id": "halvings",
          "label": "Halvings ahead",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "future",
          "label": "Block subsidy after halvings"
        },
        {
          "id": "issuance",
          "label": "New coins per year"
        },
        {
          "id": "inflation",
          "label": "Annual issuance rate"
        },
        {
          "id": "s2f",
          "label": "Stock-to-flow ratio"
        }
      ]
    },
    {
      "slug": "card-grading-roi",
      "url": "https://www.revenuelab.fyi/toolbox/card-grading-roi",
      "title": "Card Grading ROI Calculator",
      "category": "financial",
      "summary": "Is it worth paying to grade that card?",
      "inputs": [
        {
          "id": "raw",
          "label": "Raw card value",
          "kind": "number"
        },
        {
          "id": "gem",
          "label": "Gem-mint (10) comp",
          "kind": "number"
        },
        {
          "id": "nine",
          "label": "Grade 9 comp",
          "kind": "number"
        },
        {
          "id": "gemOdds",
          "label": "Odds of a 10",
          "kind": "number"
        },
        {
          "id": "nineOdds",
          "label": "Odds of a 9",
          "kind": "number"
        },
        {
          "id": "fee",
          "label": "Grading fee + shipping",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "profit",
          "label": "Expected profit"
        },
        {
          "id": "ev",
          "label": "Expected graded value"
        },
        {
          "id": "roi",
          "label": "ROI"
        },
        {
          "id": "verdict",
          "label": "Verdict"
        }
      ]
    },
    {
      "slug": "ebay-fee",
      "url": "https://www.revenuelab.fyi/toolbox/ebay-fee",
      "title": "eBay Fee Calculator",
      "category": "financial",
      "summary": "Net payout after eBay and payment fees.",
      "inputs": [
        {
          "id": "price",
          "label": "Item sale price",
          "kind": "number"
        },
        {
          "id": "shipCharged",
          "label": "Shipping charged",
          "kind": "number"
        },
        {
          "id": "fvf",
          "label": "Final value fee",
          "kind": "number"
        },
        {
          "id": "perOrder",
          "label": "Per-order fee",
          "kind": "number"
        },
        {
          "id": "shipCost",
          "label": "Actual shipping cost",
          "kind": "number"
        },
        {
          "id": "cogs",
          "label": "Cost of goods",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Net profit"
        },
        {
          "id": "fees",
          "label": "Total eBay fees"
        },
        {
          "id": "gross",
          "label": "Gross received"
        },
        {
          "id": "margin",
          "label": "Margin"
        }
      ]
    },
    {
      "slug": "etsy-fee",
      "url": "https://www.revenuelab.fyi/toolbox/etsy-fee",
      "title": "Etsy Fee Calculator",
      "category": "financial",
      "summary": "Take-home after Etsy listing, transaction, and payment fees.",
      "inputs": [
        {
          "id": "price",
          "label": "Item price",
          "kind": "number"
        },
        {
          "id": "shipCharged",
          "label": "Shipping charged",
          "kind": "number"
        },
        {
          "id": "materials",
          "label": "Materials & shipping cost",
          "kind": "number"
        },
        {
          "id": "offsite",
          "label": "Offsite ads fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Net profit"
        },
        {
          "id": "fees",
          "label": "Etsy + payment fees"
        },
        {
          "id": "margin",
          "label": "Margin"
        },
        {
          "id": "breakeven",
          "label": "Break-even price"
        }
      ]
    },
    {
      "slug": "craft-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/craft-pricing",
      "title": "Handmade Craft Pricing Calculator",
      "category": "financial",
      "summary": "Wholesale and retail price for a handmade item.",
      "inputs": [
        {
          "id": "materials",
          "label": "Materials cost",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Hours to make",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Your hourly rate",
          "kind": "number"
        },
        {
          "id": "overhead",
          "label": "Overhead per item",
          "kind": "number"
        },
        {
          "id": "wholesaleX",
          "label": "Wholesale multiplier",
          "kind": "number"
        },
        {
          "id": "retailX",
          "label": "Retail multiplier",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "retail",
          "label": "Retail price"
        },
        {
          "id": "wholesale",
          "label": "Wholesale price"
        },
        {
          "id": "base",
          "label": "True cost per item"
        },
        {
          "id": "profitRetail",
          "label": "Profit at retail"
        }
      ]
    },
    {
      "slug": "reseller-profit",
      "url": "https://www.revenuelab.fyi/toolbox/reseller-profit",
      "title": "Reseller Profit Calculator",
      "category": "financial",
      "summary": "Per-item profit, margin, and sell-through math.",
      "inputs": [
        {
          "id": "cost",
          "label": "Sourcing cost",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Expected sale price",
          "kind": "number"
        },
        {
          "id": "feePct",
          "label": "Platform fee",
          "kind": "number"
        },
        {
          "id": "ship",
          "label": "Shipping + supplies",
          "kind": "number"
        },
        {
          "id": "sellThrough",
          "label": "Sell-through rate",
          "kind": "number"
        },
        {
          "id": "units",
          "label": "Units sourced",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Profit on the lot"
        },
        {
          "id": "perSale",
          "label": "Profit per sale"
        },
        {
          "id": "margin",
          "label": "Margin per sale"
        },
        {
          "id": "dead",
          "label": "Dead stock cost"
        }
      ]
    },
    {
      "slug": "coin-melt-value",
      "url": "https://www.revenuelab.fyi/toolbox/coin-melt-value",
      "title": "Coin Melt Value Calculator",
      "category": "financial",
      "summary": "Intrinsic metal value of silver or gold coins.",
      "inputs": [
        {
          "id": "count",
          "label": "Number of coins",
          "kind": "number"
        },
        {
          "id": "weight",
          "label": "Weight per coin",
          "kind": "number"
        },
        {
          "id": "purity",
          "label": "Purity",
          "kind": "number"
        },
        {
          "id": "spot",
          "label": "Spot price",
          "kind": "number"
        },
        {
          "id": "offer",
          "label": "Dealer offer per coin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total melt value"
        },
        {
          "id": "per",
          "label": "Melt value per coin"
        },
        {
          "id": "spread",
          "label": "Dealer spread ($)"
        },
        {
          "id": "spreadPct",
          "label": "Dealer spread (%)"
        }
      ]
    },
    {
      "slug": "scrap-gold-value",
      "url": "https://www.revenuelab.fyi/toolbox/scrap-gold-value",
      "title": "Scrap Gold Value Calculator",
      "category": "financial",
      "summary": "What your gold jewelry is really worth by karat.",
      "inputs": [
        {
          "id": "grams",
          "label": "Weight",
          "kind": "number"
        },
        {
          "id": "karat",
          "label": "Karat",
          "kind": "select"
        },
        {
          "id": "spot",
          "label": "Gold spot price",
          "kind": "number"
        },
        {
          "id": "payout",
          "label": "Buyer payout",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "offer",
          "label": "Expected payout"
        },
        {
          "id": "melt",
          "label": "Full melt value"
        },
        {
          "id": "perGram",
          "label": "Melt value per gram"
        },
        {
          "id": "purity",
          "label": "Gold purity"
        }
      ]
    },
    {
      "slug": "wine-cellar-value",
      "url": "https://www.revenuelab.fyi/toolbox/wine-cellar-value",
      "title": "Wine Cellar Value Calculator",
      "category": "financial",
      "summary": "Collection value, appreciation, and storage cost.",
      "inputs": [
        {
          "id": "bottles",
          "label": "Bottles",
          "kind": "number"
        },
        {
          "id": "avgCost",
          "label": "Average purchase price",
          "kind": "number"
        },
        {
          "id": "appreciation",
          "label": "Annual appreciation",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years held",
          "kind": "number"
        },
        {
          "id": "storage",
          "label": "Storage cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "value",
          "label": "Cellar value"
        },
        {
          "id": "cost",
          "label": "Original cost"
        },
        {
          "id": "storage",
          "label": "Storage cost"
        },
        {
          "id": "net",
          "label": "Net gain after storage"
        }
      ]
    },
    {
      "slug": "whiskey-cask-return",
      "url": "https://www.revenuelab.fyi/toolbox/whiskey-cask-return",
      "title": "Whiskey Cask Investment Calculator",
      "category": "financial",
      "summary": "Return on a maturing cask after angel's share and fees.",
      "inputs": [
        {
          "id": "purchase",
          "label": "Cask purchase price",
          "kind": "number"
        },
        {
          "id": "litres",
          "label": "Litres of pure alcohol",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years maturing",
          "kind": "number"
        },
        {
          "id": "angels",
          "label": "Angel's share",
          "kind": "number"
        },
        {
          "id": "priceGrowth",
          "label": "Price per litre growth",
          "kind": "number"
        },
        {
          "id": "storage",
          "label": "Storage & insurance",
          "kind": "number"
        },
        {
          "id": "exitFee",
          "label": "Exit fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "profit",
          "label": "Net profit"
        },
        {
          "id": "net",
          "label": "Net proceeds at exit"
        },
        {
          "id": "cagr",
          "label": "Annualized return"
        },
        {
          "id": "litresLeft",
          "label": "Litres remaining"
        }
      ]
    },
    {
      "slug": "vinyl-collection-value",
      "url": "https://www.revenuelab.fyi/toolbox/vinyl-collection-value",
      "title": "Vinyl Collection Value Calculator",
      "category": "financial",
      "summary": "What your record collection is worth to sell.",
      "inputs": [
        {
          "id": "mint",
          "label": "Near-mint records",
          "kind": "number"
        },
        {
          "id": "mintVal",
          "label": "Avg value (near-mint)",
          "kind": "number"
        },
        {
          "id": "vg",
          "label": "VG+ records",
          "kind": "number"
        },
        {
          "id": "vgVal",
          "label": "Avg value (VG+)",
          "kind": "number"
        },
        {
          "id": "rough",
          "label": "Rough records",
          "kind": "number"
        },
        {
          "id": "roughVal",
          "label": "Avg value (rough)",
          "kind": "number"
        },
        {
          "id": "fees",
          "label": "Marketplace fees + shipping loss",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Net resale value"
        },
        {
          "id": "gross",
          "label": "Gross catalog value"
        },
        {
          "id": "count",
          "label": "Records counted"
        },
        {
          "id": "perRecord",
          "label": "Net per record"
        }
      ]
    },
    {
      "slug": "comic-book-value",
      "url": "https://www.revenuelab.fyi/toolbox/comic-book-value",
      "title": "Comic Book Collection Value Calculator",
      "category": "financial",
      "summary": "Estimated value of a comic run or long box.",
      "inputs": [
        {
          "id": "keys",
          "label": "Key issues",
          "kind": "number"
        },
        {
          "id": "keyVal",
          "label": "Avg key value",
          "kind": "number"
        },
        {
          "id": "mid",
          "label": "Mid-tier issues",
          "kind": "number"
        },
        {
          "id": "midVal",
          "label": "Avg mid value",
          "kind": "number"
        },
        {
          "id": "commons",
          "label": "Commons",
          "kind": "number"
        },
        {
          "id": "commonVal",
          "label": "Avg common value",
          "kind": "number"
        },
        {
          "id": "dealer",
          "label": "Dealer offer",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "guide",
          "label": "Guide value"
        },
        {
          "id": "dealerOffer",
          "label": "Likely dealer offer"
        },
        {
          "id": "keyShare",
          "label": "Share of value in keys"
        },
        {
          "id": "count",
          "label": "Total books"
        }
      ]
    },
    {
      "slug": "lego-set-roi",
      "url": "https://www.revenuelab.fyi/toolbox/lego-set-roi",
      "title": "LEGO Set Investment ROI Calculator",
      "category": "financial",
      "summary": "Return on holding a retired LEGO set sealed.",
      "inputs": [
        {
          "id": "cost",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "discount",
          "label": "Discount at purchase",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years held",
          "kind": "number"
        },
        {
          "id": "growth",
          "label": "Annual appreciation",
          "kind": "number"
        },
        {
          "id": "fees",
          "label": "Sale fees + shipping",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "profit",
          "label": "Profit per set"
        },
        {
          "id": "cagr",
          "label": "Annualized return"
        },
        {
          "id": "net",
          "label": "Net sale proceeds"
        },
        {
          "id": "paid",
          "label": "Effective cost"
        }
      ]
    },
    {
      "slug": "sneaker-resale-profit",
      "url": "https://www.revenuelab.fyi/toolbox/sneaker-resale-profit",
      "title": "Sneaker Resale Profit Calculator",
      "category": "financial",
      "summary": "Payout after StockX/GOAT fees and shipping.",
      "inputs": [
        {
          "id": "retail",
          "label": "Retail / cost",
          "kind": "number"
        },
        {
          "id": "ask",
          "label": "Sale price",
          "kind": "number"
        },
        {
          "id": "commission",
          "label": "Marketplace commission",
          "kind": "number"
        },
        {
          "id": "processing",
          "label": "Payment processing",
          "kind": "number"
        },
        {
          "id": "ship",
          "label": "Shipping",
          "kind": "number"
        },
        {
          "id": "pairs",
          "label": "Pairs",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "per",
          "label": "Profit per pair"
        },
        {
          "id": "total",
          "label": "Total profit"
        },
        {
          "id": "fees",
          "label": "Fees per pair"
        },
        {
          "id": "margin",
          "label": "Margin"
        }
      ]
    },
    {
      "slug": "trading-card-pack-ev",
      "url": "https://www.revenuelab.fyi/toolbox/trading-card-pack-ev",
      "title": "Trading Card Pack EV Calculator",
      "category": "math",
      "summary": "Expected value of ripping a pack or box.",
      "inputs": [
        {
          "id": "packCost",
          "label": "Pack cost",
          "kind": "number"
        },
        {
          "id": "cardsPerPack",
          "label": "Cards per pack",
          "kind": "number"
        },
        {
          "id": "hitRate",
          "label": "Chase card hit rate",
          "kind": "number"
        },
        {
          "id": "hitValue",
          "label": "Chase card value",
          "kind": "number"
        },
        {
          "id": "baseValue",
          "label": "Avg value of non-hits",
          "kind": "number"
        },
        {
          "id": "packs",
          "label": "Packs opened",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ev",
          "label": "EV per pack"
        },
        {
          "id": "boxEv",
          "label": "EV for the box"
        },
        {
          "id": "boxCost",
          "label": "Box cost"
        },
        {
          "id": "roi",
          "label": "Expected ROI"
        }
      ]
    },
    {
      "slug": "3d-print-cost",
      "url": "https://www.revenuelab.fyi/toolbox/3d-print-cost",
      "title": "3D Printing Cost Calculator",
      "category": "other",
      "summary": "Filament, electricity, and machine wear per print.",
      "inputs": [
        {
          "id": "grams",
          "label": "Filament used",
          "kind": "number"
        },
        {
          "id": "spoolCost",
          "label": "Spool cost",
          "kind": "number"
        },
        {
          "id": "spoolGrams",
          "label": "Spool weight",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Print time",
          "kind": "number"
        },
        {
          "id": "watts",
          "label": "Printer power draw",
          "kind": "number"
        },
        {
          "id": "kwh",
          "label": "Electricity rate",
          "kind": "number"
        },
        {
          "id": "failRate",
          "label": "Failure rate",
          "kind": "number"
        },
        {
          "id": "markup",
          "label": "Markup",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Suggested price"
        },
        {
          "id": "base",
          "label": "True cost per print"
        },
        {
          "id": "filament",
          "label": "Filament cost"
        },
        {
          "id": "power",
          "label": "Electricity cost"
        }
      ]
    },
    {
      "slug": "laser-cutting-cost",
      "url": "https://www.revenuelab.fyi/toolbox/laser-cutting-cost",
      "title": "Laser Cutting Cost Calculator",
      "category": "other",
      "summary": "Per-piece cost and price for laser-cut work.",
      "inputs": [
        {
          "id": "minutes",
          "label": "Cut time per piece",
          "kind": "number"
        },
        {
          "id": "machineRate",
          "label": "Machine rate",
          "kind": "number"
        },
        {
          "id": "sheetCost",
          "label": "Sheet cost",
          "kind": "number"
        },
        {
          "id": "perSheet",
          "label": "Pieces per sheet",
          "kind": "number"
        },
        {
          "id": "setup",
          "label": "Setup & design time",
          "kind": "number"
        },
        {
          "id": "qty",
          "label": "Quantity",
          "kind": "number"
        },
        {
          "id": "markup",
          "label": "Markup",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Price per piece"
        },
        {
          "id": "cost",
          "label": "Cost per piece"
        },
        {
          "id": "total",
          "label": "Job total"
        },
        {
          "id": "material",
          "label": "Material per piece"
        }
      ]
    },
    {
      "slug": "knitting-yarn-yardage",
      "url": "https://www.revenuelab.fyi/toolbox/knitting-yarn-yardage",
      "title": "Knitting Yarn Yardage Calculator",
      "category": "other",
      "summary": "Skeins needed for a project and total yarn cost.",
      "inputs": [
        {
          "id": "width",
          "label": "Finished width",
          "kind": "number"
        },
        {
          "id": "length",
          "label": "Finished length",
          "kind": "number"
        },
        {
          "id": "stsPerInch",
          "label": "Stitches per inch",
          "kind": "number"
        },
        {
          "id": "rowsPerInch",
          "label": "Rows per inch",
          "kind": "number"
        },
        {
          "id": "inchPerSt",
          "label": "Yarn per stitch",
          "kind": "number"
        },
        {
          "id": "skeinYards",
          "label": "Yards per skein",
          "kind": "number"
        },
        {
          "id": "skeinCost",
          "label": "Cost per skein",
          "kind": "number"
        },
        {
          "id": "buffer",
          "label": "Safety margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "skeins",
          "label": "Skeins to buy"
        },
        {
          "id": "yards",
          "label": "Yardage needed"
        },
        {
          "id": "cost",
          "label": "Yarn cost"
        },
        {
          "id": "stitches",
          "label": "Total stitches"
        }
      ]
    },
    {
      "slug": "quilt-fabric",
      "url": "https://www.revenuelab.fyi/toolbox/quilt-fabric",
      "title": "Quilt Fabric Calculator",
      "category": "other",
      "summary": "Fabric yardage for top, backing, batting, and binding.",
      "inputs": [
        {
          "id": "width",
          "label": "Quilt width",
          "kind": "number"
        },
        {
          "id": "length",
          "label": "Quilt length",
          "kind": "number"
        },
        {
          "id": "block",
          "label": "Finished block size",
          "kind": "number"
        },
        {
          "id": "fabricWidth",
          "label": "Fabric width",
          "kind": "number"
        },
        {
          "id": "bindingWidth",
          "label": "Binding strip width",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "blocks",
          "label": "Blocks needed"
        },
        {
          "id": "backingYards",
          "label": "Backing (yards)"
        },
        {
          "id": "battingYards",
          "label": "Batting (yards)"
        },
        {
          "id": "bindingYards",
          "label": "Binding (yards)"
        }
      ]
    },
    {
      "slug": "candle-making-cost",
      "url": "https://www.revenuelab.fyi/toolbox/candle-making-cost",
      "title": "Candle Making Cost Calculator",
      "category": "financial",
      "summary": "Cost per candle and profitable retail price.",
      "inputs": [
        {
          "id": "waxOz",
          "label": "Wax per candle",
          "kind": "number"
        },
        {
          "id": "waxLb",
          "label": "Wax price",
          "kind": "number"
        },
        {
          "id": "fragrance",
          "label": "Fragrance load",
          "kind": "number"
        },
        {
          "id": "foPrice",
          "label": "Fragrance oil price",
          "kind": "number"
        },
        {
          "id": "vessel",
          "label": "Vessel + wick + label",
          "kind": "number"
        },
        {
          "id": "labor",
          "label": "Labor per candle",
          "kind": "number"
        },
        {
          "id": "markup",
          "label": "Retail multiplier",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "retail",
          "label": "Retail price"
        },
        {
          "id": "cost",
          "label": "Cost per candle"
        },
        {
          "id": "wholesale",
          "label": "Wholesale price"
        },
        {
          "id": "profit",
          "label": "Profit at retail"
        }
      ]
    },
    {
      "slug": "soap-making-cost",
      "url": "https://www.revenuelab.fyi/toolbox/soap-making-cost",
      "title": "Soap Making Cost Calculator",
      "category": "financial",
      "summary": "Cost per bar for a cold-process soap batch.",
      "inputs": [
        {
          "id": "batchOz",
          "label": "Batch oil weight",
          "kind": "number"
        },
        {
          "id": "oilCost",
          "label": "Oil blend cost",
          "kind": "number"
        },
        {
          "id": "lyeCost",
          "label": "Lye cost for batch",
          "kind": "number"
        },
        {
          "id": "fragrance",
          "label": "Fragrance cost for batch",
          "kind": "number"
        },
        {
          "id": "packaging",
          "label": "Packaging per bar",
          "kind": "number"
        },
        {
          "id": "barOz",
          "label": "Bar weight",
          "kind": "number"
        },
        {
          "id": "markup",
          "label": "Retail multiplier",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "retail",
          "label": "Retail price per bar"
        },
        {
          "id": "perBar",
          "label": "Cost per bar"
        },
        {
          "id": "bars",
          "label": "Bars from batch"
        },
        {
          "id": "batch",
          "label": "Batch ingredient cost"
        }
      ]
    },
    {
      "slug": "homebrew-batch-cost",
      "url": "https://www.revenuelab.fyi/toolbox/homebrew-batch-cost",
      "title": "Homebrew Batch Cost Calculator",
      "category": "other",
      "summary": "Cost per pint for a homebrew batch.",
      "inputs": [
        {
          "id": "gallons",
          "label": "Batch size",
          "kind": "number"
        },
        {
          "id": "grain",
          "label": "Grain / extract cost",
          "kind": "number"
        },
        {
          "id": "hops",
          "label": "Hops cost",
          "kind": "number"
        },
        {
          "id": "yeast",
          "label": "Yeast cost",
          "kind": "number"
        },
        {
          "id": "other",
          "label": "Propane, caps, sanitizer",
          "kind": "number"
        },
        {
          "id": "loss",
          "label": "Trub & packaging loss",
          "kind": "number"
        },
        {
          "id": "taproom",
          "label": "Taproom pint price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perPint",
          "label": "Cost per pint"
        },
        {
          "id": "total",
          "label": "Batch cost"
        },
        {
          "id": "pints",
          "label": "Pints yielded"
        },
        {
          "id": "savings",
          "label": "Savings vs taproom"
        }
      ]
    },
    {
      "slug": "abv-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/abv-calculator",
      "title": "ABV Calculator",
      "category": "other",
      "summary": "Alcohol by volume from original and final gravity.",
      "formula": "ABV ≈ (OG − FG) × 131.25.",
      "inputs": [
        {
          "id": "og",
          "label": "Original gravity",
          "kind": "number"
        },
        {
          "id": "fg",
          "label": "Final gravity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "abv",
          "label": "ABV (standard)"
        },
        {
          "id": "alt",
          "label": "ABV (alternate formula)"
        },
        {
          "id": "att",
          "label": "Apparent attenuation"
        },
        {
          "id": "cal",
          "label": "Calories per 12 oz (approx)"
        }
      ]
    },
    {
      "slug": "coffee-roasting-cost",
      "url": "https://www.revenuelab.fyi/toolbox/coffee-roasting-cost",
      "title": "Coffee Roasting Cost Calculator",
      "category": "financial",
      "summary": "Cost per roasted pound and per cup.",
      "inputs": [
        {
          "id": "greenLb",
          "label": "Green coffee price",
          "kind": "number"
        },
        {
          "id": "shrink",
          "label": "Roast shrinkage",
          "kind": "number"
        },
        {
          "id": "energy",
          "label": "Energy per roasted lb",
          "kind": "number"
        },
        {
          "id": "bag",
          "label": "Bag + label",
          "kind": "number"
        },
        {
          "id": "labor",
          "label": "Labor per roasted lb",
          "kind": "number"
        },
        {
          "id": "gramsCup",
          "label": "Grams per cup",
          "kind": "number"
        },
        {
          "id": "retail",
          "label": "Retail bag price (12 oz)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cost",
          "label": "Cost per roasted lb"
        },
        {
          "id": "perCup",
          "label": "Cost per cup"
        },
        {
          "id": "bagCost",
          "label": "Cost per 12 oz bag"
        },
        {
          "id": "margin",
          "label": "Retail margin"
        }
      ]
    },
    {
      "slug": "model-railroad-scale",
      "url": "https://www.revenuelab.fyi/toolbox/model-railroad-scale",
      "title": "Model Scale Conversion Calculator",
      "category": "math",
      "summary": "Convert real dimensions to any modeling scale.",
      "inputs": [
        {
          "id": "real",
          "label": "Prototype dimension",
          "kind": "number"
        },
        {
          "id": "scale",
          "label": "Scale",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "inches",
          "label": "Scale size (in)"
        },
        {
          "id": "mm",
          "label": "Scale size (mm)"
        },
        {
          "id": "feet",
          "label": "Scale size (ft)"
        },
        {
          "id": "ratio",
          "label": "Scale ratio (1:X)"
        }
      ]
    },
    {
      "slug": "guitar-string-tension",
      "url": "https://www.revenuelab.fyi/toolbox/guitar-string-tension",
      "title": "Guitar String Tension Calculator",
      "category": "other",
      "summary": "String tension from gauge, scale length, and pitch.",
      "formula": "T = (UW × (2 × L × F)²) ÷ 386.4",
      "inputs": [
        {
          "id": "gauge",
          "label": "String gauge",
          "kind": "number"
        },
        {
          "id": "scale",
          "label": "Scale length",
          "kind": "number"
        },
        {
          "id": "freq",
          "label": "Target pitch",
          "kind": "number"
        },
        {
          "id": "density",
          "label": "Unit weight",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "tension",
          "label": "Tension (lb)"
        },
        {
          "id": "kg",
          "label": "Tension (kg)"
        },
        {
          "id": "freq",
          "label": "Pitch (Hz)"
        },
        {
          "id": "scale",
          "label": "Scale length (in)"
        }
      ]
    },
    {
      "slug": "band-gig-split",
      "url": "https://www.revenuelab.fyi/toolbox/band-gig-split",
      "title": "Band Gig Payout Split Calculator",
      "category": "financial",
      "summary": "Net per member after expenses and cuts.",
      "inputs": [
        {
          "id": "guarantee",
          "label": "Guarantee",
          "kind": "number"
        },
        {
          "id": "doorPct",
          "label": "Door split to band",
          "kind": "number"
        },
        {
          "id": "tickets",
          "label": "Tickets sold",
          "kind": "number"
        },
        {
          "id": "ticketPrice",
          "label": "Ticket price",
          "kind": "number"
        },
        {
          "id": "expenses",
          "label": "Sound, gas, lodging",
          "kind": "number"
        },
        {
          "id": "managerPct",
          "label": "Manager cut",
          "kind": "number"
        },
        {
          "id": "merch",
          "label": "Merch profit",
          "kind": "number"
        },
        {
          "id": "members",
          "label": "Band members",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perMember",
          "label": "Take-home per member"
        },
        {
          "id": "net",
          "label": "Band net"
        },
        {
          "id": "gross",
          "label": "Gross revenue"
        },
        {
          "id": "door",
          "label": "Door share"
        }
      ]
    },
    {
      "slug": "music-royalty-income",
      "url": "https://www.revenuelab.fyi/toolbox/music-royalty-income",
      "title": "Music Streaming Royalty Calculator",
      "category": "financial",
      "summary": "Streaming income across platforms after splits.",
      "inputs": [
        {
          "id": "streams",
          "label": "Monthly streams",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Average per-stream rate",
          "kind": "number"
        },
        {
          "id": "distFee",
          "label": "Distributor fee",
          "kind": "number"
        },
        {
          "id": "artistShare",
          "label": "Your share of masters",
          "kind": "number"
        },
        {
          "id": "publishing",
          "label": "Publishing royalties",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "yours",
          "label": "Your monthly payout"
        },
        {
          "id": "annual",
          "label": "Annualized"
        },
        {
          "id": "gross",
          "label": "Gross streaming revenue"
        },
        {
          "id": "per1k",
          "label": "Your $ per 1,000 streams"
        }
      ]
    },
    {
      "slug": "board-game-print-run",
      "url": "https://www.revenuelab.fyi/toolbox/board-game-print-run",
      "title": "Board Game Print Run Calculator",
      "category": "financial",
      "summary": "Unit cost, MSRP, and break-even for a game print run.",
      "inputs": [
        {
          "id": "units",
          "label": "Print run size",
          "kind": "number"
        },
        {
          "id": "unitCost",
          "label": "Manufacturing cost/unit",
          "kind": "number"
        },
        {
          "id": "freight",
          "label": "Freight per unit",
          "kind": "number"
        },
        {
          "id": "fulfillment",
          "label": "Fulfillment per unit",
          "kind": "number"
        },
        {
          "id": "art",
          "label": "Art & development",
          "kind": "number"
        },
        {
          "id": "msrp",
          "label": "MSRP",
          "kind": "number"
        },
        {
          "id": "retailPct",
          "label": "Sold at wholesale",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "profit",
          "label": "Profit on the run"
        },
        {
          "id": "breakeven",
          "label": "Break-even units"
        },
        {
          "id": "perUnit",
          "label": "Landed cost per unit"
        },
        {
          "id": "revPerUnit",
          "label": "Blended revenue per unit"
        }
      ]
    },
    {
      "slug": "kickstarter-goal",
      "url": "https://www.revenuelab.fyi/toolbox/kickstarter-goal",
      "title": "Kickstarter Funding Goal Calculator",
      "category": "financial",
      "summary": "The goal you need after fees, taxes, and fulfillment.",
      "inputs": [
        {
          "id": "production",
          "label": "Production cost",
          "kind": "number"
        },
        {
          "id": "shipping",
          "label": "Fulfillment & shipping",
          "kind": "number"
        },
        {
          "id": "platform",
          "label": "Platform fee",
          "kind": "number"
        },
        {
          "id": "processing",
          "label": "Payment processing",
          "kind": "number"
        },
        {
          "id": "failed",
          "label": "Failed pledges",
          "kind": "number"
        },
        {
          "id": "tax",
          "label": "Tax set-aside",
          "kind": "number"
        },
        {
          "id": "buffer",
          "label": "Contingency buffer",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "goal",
          "label": "Funding goal to set"
        },
        {
          "id": "need",
          "label": "Cash actually needed"
        },
        {
          "id": "fees",
          "label": "Fees, tax & losses"
        },
        {
          "id": "leakage",
          "label": "Total leakage rate"
        }
      ]
    },
    {
      "slug": "aquascape-co2",
      "url": "https://www.revenuelab.fyi/toolbox/aquascape-co2",
      "title": "Aquarium CO2 Dosing Calculator",
      "category": "other",
      "summary": "Bubble rate and CO2 level for a planted tank.",
      "formula": "CO2 ppm ≈ 3 × KH × 10^(7 − pH).",
      "inputs": [
        {
          "id": "gallons",
          "label": "Tank volume",
          "kind": "number"
        },
        {
          "id": "kh",
          "label": "Carbonate hardness (KH)",
          "kind": "number"
        },
        {
          "id": "ph",
          "label": "pH with CO2 on",
          "kind": "number"
        },
        {
          "id": "light",
          "label": "Light intensity (1 low – 3 high)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "co2",
          "label": "Dissolved CO2 (ppm)"
        },
        {
          "id": "status",
          "label": "Assessment"
        },
        {
          "id": "bps",
          "label": "Suggested bubbles/second"
        },
        {
          "id": "bph",
          "label": "Bubbles per hour"
        }
      ]
    },
    {
      "slug": "astrophotography-exposure",
      "url": "https://www.revenuelab.fyi/toolbox/astrophotography-exposure",
      "title": "Astrophotography Exposure Calculator",
      "category": "other",
      "summary": "Max shutter time before stars trail (NPF & 500 rule).",
      "inputs": [
        {
          "id": "focal",
          "label": "Focal length",
          "kind": "number"
        },
        {
          "id": "crop",
          "label": "Crop factor",
          "kind": "number"
        },
        {
          "id": "aperture",
          "label": "Aperture (f/)",
          "kind": "number"
        },
        {
          "id": "pixelPitch",
          "label": "Pixel pitch",
          "kind": "number"
        },
        {
          "id": "declination",
          "label": "Declination",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "npf",
          "label": "NPF max exposure (sec)"
        },
        {
          "id": "rule500",
          "label": "500 rule (sec)"
        },
        {
          "id": "eff",
          "label": "Effective focal length (mm)"
        },
        {
          "id": "difference",
          "label": "500 rule over-exposure (sec)"
        }
      ]
    },
    {
      "slug": "freelance-minimum-day-rate",
      "url": "https://www.revenuelab.fyi/toolbox/freelance-minimum-day-rate",
      "title": "Freelance Minimum Day Rate Calculator",
      "category": "financial",
      "summary": "The lowest day rate that still covers your costs and target income.",
      "formula": "Rate = (take-home ÷ (1 − tax) + costs) ÷ (weeks × billable days).",
      "inputs": [
        {
          "id": "target",
          "label": "Target annual take-home",
          "kind": "number"
        },
        {
          "id": "costs",
          "label": "Annual business costs",
          "kind": "number"
        },
        {
          "id": "taxRate",
          "label": "Effective tax rate",
          "kind": "number"
        },
        {
          "id": "weeks",
          "label": "Working weeks per year",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Billable days per week",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rate",
          "label": "Minimum day rate"
        },
        {
          "id": "hourly",
          "label": "Equivalent hourly"
        },
        {
          "id": "gross",
          "label": "Revenue needed"
        },
        {
          "id": "billable",
          "label": "Billable days/yr"
        }
      ]
    },
    {
      "slug": "freelance-utilization-rate",
      "url": "https://www.revenuelab.fyi/toolbox/freelance-utilization-rate",
      "title": "Freelance Utilization Rate Calculator",
      "category": "other",
      "summary": "What share of your week is actually billable.",
      "formula": "Utilization = billed hours ÷ worked hours. Effective rate = revenue ÷ worked hours.",
      "inputs": [
        {
          "id": "worked",
          "label": "Hours worked per week",
          "kind": "number"
        },
        {
          "id": "billed",
          "label": "Hours billed per week",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Hourly rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "util",
          "label": "Utilization"
        },
        {
          "id": "effective",
          "label": "Effective hourly (all hours)"
        },
        {
          "id": "revenue",
          "label": "Weekly revenue"
        }
      ]
    },
    {
      "slug": "freelance-retainer-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/freelance-retainer-pricing",
      "title": "Retainer Pricing Calculator",
      "category": "other",
      "summary": "Price a monthly retainer with a discount that still works.",
      "formula": "Monthly = hours × rate × (1 − discount).",
      "inputs": [
        {
          "id": "hours",
          "label": "Hours included per month",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Standard hourly rate",
          "kind": "number"
        },
        {
          "id": "discount",
          "label": "Retainer discount",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Commitment",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthly",
          "label": "Monthly retainer"
        },
        {
          "id": "effective",
          "label": "Effective hourly"
        },
        {
          "id": "annual",
          "label": "Contract value"
        },
        {
          "id": "given",
          "label": "Discount given up"
        }
      ]
    },
    {
      "slug": "scope-creep-cost",
      "url": "https://www.revenuelab.fyi/toolbox/scope-creep-cost",
      "title": "Scope Creep Cost Calculator",
      "category": "other",
      "summary": "What unbilled extra work costs you on a fixed-price project.",
      "formula": "Effective rate = fee ÷ (planned + extra hours).",
      "inputs": [
        {
          "id": "fee",
          "label": "Quoted project fee",
          "kind": "number"
        },
        {
          "id": "planned",
          "label": "Planned hours",
          "kind": "number"
        },
        {
          "id": "extra",
          "label": "Unbilled extra hours",
          "kind": "number"
        },
        {
          "id": "cost",
          "label": "Your cost per hour",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "effective",
          "label": "Effective hourly"
        },
        {
          "id": "lost",
          "label": "Value of unbilled work"
        },
        {
          "id": "margin",
          "label": "Project margin"
        },
        {
          "id": "marginPct",
          "label": "Margin %"
        }
      ]
    },
    {
      "slug": "project-buffer-estimator",
      "url": "https://www.revenuelab.fyi/toolbox/project-buffer-estimator",
      "title": "Project Buffer Estimator",
      "category": "other",
      "summary": "How much schedule padding a project actually needs.",
      "formula": "Committed = estimate × (1 + overrun) × (1 + risk).",
      "inputs": [
        {
          "id": "estimate",
          "label": "Raw estimate",
          "kind": "number"
        },
        {
          "id": "optimism",
          "label": "Historical overrun",
          "kind": "number"
        },
        {
          "id": "risk",
          "label": "Risk buffer",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Commit to"
        },
        {
          "id": "adjusted",
          "label": "Overrun-adjusted days"
        },
        {
          "id": "buffer",
          "label": "Buffer added"
        }
      ]
    },
    {
      "slug": "late-payment-interest",
      "url": "https://www.revenuelab.fyi/toolbox/late-payment-interest",
      "title": "Late Payment Interest Calculator",
      "category": "financial",
      "summary": "Interest and fees owed on an overdue invoice.",
      "formula": "Interest = amount × annual rate × days ÷ 365.",
      "inputs": [
        {
          "id": "amount",
          "label": "Invoice amount",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Days overdue",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Annual interest rate",
          "kind": "number"
        },
        {
          "id": "fee",
          "label": "Flat late fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total now due"
        },
        {
          "id": "interest",
          "label": "Interest accrued"
        },
        {
          "id": "daily",
          "label": "Interest per day"
        }
      ]
    },
    {
      "slug": "invoice-factoring-cost",
      "url": "https://www.revenuelab.fyi/toolbox/invoice-factoring-cost",
      "title": "Invoice Factoring Cost Calculator",
      "category": "financial",
      "summary": "The true annualized cost of selling an invoice early.",
      "formula": "APR = fee ÷ advance × 365 ÷ days early.",
      "inputs": [
        {
          "id": "invoice",
          "label": "Invoice amount",
          "kind": "number"
        },
        {
          "id": "advance",
          "label": "Advance rate",
          "kind": "number"
        },
        {
          "id": "fee",
          "label": "Factoring fee",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Days early",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "apr",
          "label": "Annualized cost"
        },
        {
          "id": "fee",
          "label": "Fee paid"
        },
        {
          "id": "advanced",
          "label": "Cash advanced"
        },
        {
          "id": "net",
          "label": "Net received"
        }
      ]
    },
    {
      "slug": "cash-conversion-days",
      "url": "https://www.revenuelab.fyi/toolbox/cash-conversion-days",
      "title": "Cash Conversion Cycle Calculator",
      "category": "other",
      "summary": "How many days your cash is tied up in the business.",
      "formula": "CCC = DIO + DSO − DPO.",
      "inputs": [
        {
          "id": "dio",
          "label": "Days inventory outstanding",
          "kind": "number"
        },
        {
          "id": "dso",
          "label": "Days sales outstanding",
          "kind": "number"
        },
        {
          "id": "dpo",
          "label": "Days payables outstanding",
          "kind": "number"
        },
        {
          "id": "revenue",
          "label": "Annual revenue",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ccc",
          "label": "Cash conversion cycle"
        },
        {
          "id": "tied",
          "label": "Working capital tied up"
        },
        {
          "id": "daily",
          "label": "Revenue per day"
        }
      ]
    },
    {
      "slug": "remote-work-savings",
      "url": "https://www.revenuelab.fyi/toolbox/remote-work-savings",
      "title": "Remote Work Savings Calculator",
      "category": "financial",
      "summary": "What working from home saves you per year — in money and hours.",
      "formula": "Savings = (commute + food) × remote days × weeks.",
      "inputs": [
        {
          "id": "days",
          "label": "Remote days per week",
          "kind": "number"
        },
        {
          "id": "commute",
          "label": "Round-trip commute cost",
          "kind": "number"
        },
        {
          "id": "lunch",
          "label": "Lunch/coffee out per day",
          "kind": "number"
        },
        {
          "id": "minutes",
          "label": "Round-trip commute time",
          "kind": "number"
        },
        {
          "id": "weeks",
          "label": "Working weeks",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annual",
          "label": "Annual savings"
        },
        {
          "id": "monthly",
          "label": "Per month"
        },
        {
          "id": "hours",
          "label": "Hours reclaimed / yr"
        },
        {
          "id": "perDay",
          "label": "Saved per remote day"
        }
      ]
    },
    {
      "slug": "home-office-deduction-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/home-office-deduction-estimate",
      "title": "Home Office Deduction Estimator",
      "category": "financial",
      "summary": "Simplified and actual-expense home office deductions, side by side.",
      "formula": "Simplified = min(sqft, 300) × $5. Actual = home expenses × office share.",
      "inputs": [
        {
          "id": "sqft",
          "label": "Office square feet",
          "kind": "number"
        },
        {
          "id": "homeSqft",
          "label": "Total home square feet",
          "kind": "number"
        },
        {
          "id": "expenses",
          "label": "Annual home expenses",
          "kind": "number"
        },
        {
          "id": "bracket",
          "label": "Marginal tax rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "best",
          "label": "Larger deduction"
        },
        {
          "id": "simplified",
          "label": "Simplified method"
        },
        {
          "id": "actual",
          "label": "Actual expense method"
        },
        {
          "id": "saved",
          "label": "Estimated tax saved"
        }
      ]
    },
    {
      "slug": "coworking-vs-home-office",
      "url": "https://www.revenuelab.fyi/toolbox/coworking-vs-home-office",
      "title": "Coworking vs Home Office Calculator",
      "category": "financial",
      "summary": "Compare a coworking membership against working from home.",
      "formula": "Coworking = (membership + commute × visits) × 12. Home = setup ÷ life + utilities × 12.",
      "inputs": [
        {
          "id": "membership",
          "label": "Monthly membership",
          "kind": "number"
        },
        {
          "id": "commuteCost",
          "label": "Commute cost per visit",
          "kind": "number"
        },
        {
          "id": "visits",
          "label": "Visits per month",
          "kind": "number"
        },
        {
          "id": "setup",
          "label": "Home office setup cost",
          "kind": "number"
        },
        {
          "id": "life",
          "label": "Setup lifespan",
          "kind": "number"
        },
        {
          "id": "utilities",
          "label": "Extra home utilities / mo",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "diff",
          "label": "Coworking premium / yr"
        },
        {
          "id": "cowork",
          "label": "Coworking annual cost"
        },
        {
          "id": "home",
          "label": "Home office annual cost"
        },
        {
          "id": "breakeven",
          "label": "Home cost per month"
        }
      ]
    },
    {
      "slug": "contractor-vs-employee-pay",
      "url": "https://www.revenuelab.fyi/toolbox/contractor-vs-employee-pay",
      "title": "Contractor vs Employee Pay Calculator",
      "category": "financial",
      "summary": "The contract rate you need to match a salaried offer.",
      "formula": "Rate = (salary + benefits) × (1 + extra tax) ÷ billable hours.",
      "inputs": [
        {
          "id": "salary",
          "label": "Salary offer",
          "kind": "number"
        },
        {
          "id": "benefits",
          "label": "Benefits value",
          "kind": "number"
        },
        {
          "id": "ptoDays",
          "label": "Paid time off",
          "kind": "number"
        },
        {
          "id": "selfTax",
          "label": "Extra self-employment tax",
          "kind": "number"
        },
        {
          "id": "hoursWeek",
          "label": "Billable hours per week",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rate",
          "label": "Equivalent hourly"
        },
        {
          "id": "day",
          "label": "Equivalent day rate"
        },
        {
          "id": "total",
          "label": "Total comp to replace"
        },
        {
          "id": "hours",
          "label": "Billable hours / yr"
        }
      ]
    },
    {
      "slug": "self-employed-quarterly-set-aside",
      "url": "https://www.revenuelab.fyi/toolbox/self-employed-quarterly-set-aside",
      "title": "Quarterly Estimated Tax Calculator",
      "category": "financial",
      "summary": "What to set aside each quarter on self-employment income.",
      "formula": "SE tax = profit × 92.35% × 15.3%. Income tax applies after half the SE tax deduction.",
      "inputs": [
        {
          "id": "profit",
          "label": "Expected annual net profit",
          "kind": "number"
        },
        {
          "id": "seRate",
          "label": "Self-employment tax rate",
          "kind": "number"
        },
        {
          "id": "incomeRate",
          "label": "Income tax rate",
          "kind": "number"
        },
        {
          "id": "credits",
          "label": "Credits / withholding already paid",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "quarterly",
          "label": "Set aside per quarter"
        },
        {
          "id": "total",
          "label": "Total annual tax"
        },
        {
          "id": "seTax",
          "label": "Self-employment tax"
        },
        {
          "id": "income",
          "label": "Income tax"
        }
      ]
    },
    {
      "slug": "freelance-emergency-fund",
      "url": "https://www.revenuelab.fyi/toolbox/freelance-emergency-fund",
      "title": "Freelance Emergency Fund Calculator",
      "category": "financial",
      "summary": "How big a buffer irregular income really needs.",
      "formula": "Months = 3 + volatility ÷ 20 + longest gap. Target = expenses × months.",
      "inputs": [
        {
          "id": "expenses",
          "label": "Essential monthly expenses",
          "kind": "number"
        },
        {
          "id": "volatility",
          "label": "Income month-to-month swing",
          "kind": "number"
        },
        {
          "id": "gap",
          "label": "Longest dry spell seen",
          "kind": "number"
        },
        {
          "id": "saved",
          "label": "Currently saved",
          "kind": "number"
        },
        {
          "id": "monthlySave",
          "label": "Can save per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "target",
          "label": "Target buffer"
        },
        {
          "id": "months",
          "label": "Months of cover"
        },
        {
          "id": "gap",
          "label": "Still to save"
        },
        {
          "id": "monthsToFund",
          "label": "Months to fully fund"
        }
      ]
    },
    {
      "slug": "irregular-income-budget",
      "url": "https://www.revenuelab.fyi/toolbox/irregular-income-budget",
      "title": "Irregular Income Budget Calculator",
      "category": "financial",
      "summary": "Turn lumpy freelance income into a steady monthly paycheck.",
      "formula": "Draw = lowest month × (1 − tax set-aside) × (1 − safety margin).",
      "inputs": [
        {
          "id": "low",
          "label": "Lowest month last year",
          "kind": "number"
        },
        {
          "id": "avg",
          "label": "Average month",
          "kind": "number"
        },
        {
          "id": "taxSet",
          "label": "Tax set-aside",
          "kind": "number"
        },
        {
          "id": "safety",
          "label": "Safety margin on draw",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "draw",
          "label": "Safe monthly paycheck"
        },
        {
          "id": "surplus",
          "label": "Average monthly surplus"
        },
        {
          "id": "tax",
          "label": "Tax to hold back / mo"
        },
        {
          "id": "annual",
          "label": "Annual salary to self"
        }
      ]
    },
    {
      "slug": "subscription-audit",
      "url": "https://www.revenuelab.fyi/toolbox/subscription-audit",
      "title": "Subscription Audit Calculator",
      "category": "financial",
      "summary": "The real annual cost of your software and streaming stack.",
      "formula": "Annual = count × average price × 12. Waste = annual × unused share.",
      "inputs": [
        {
          "id": "count",
          "label": "Number of subscriptions",
          "kind": "number"
        },
        {
          "id": "avg",
          "label": "Average monthly price",
          "kind": "number"
        },
        {
          "id": "unused",
          "label": "Share rarely used",
          "kind": "number"
        },
        {
          "id": "returnRate",
          "label": "Investment return if saved",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annual",
          "label": "Annual subscription cost"
        },
        {
          "id": "monthly",
          "label": "Monthly total"
        },
        {
          "id": "wasted",
          "label": "Wasted per year"
        },
        {
          "id": "fiveYear",
          "label": "5-yr value if invested"
        }
      ]
    },
    {
      "slug": "annual-vs-monthly-billing",
      "url": "https://www.revenuelab.fyi/toolbox/annual-vs-monthly-billing",
      "title": "Annual vs Monthly Billing Calculator",
      "category": "financial",
      "summary": "Is the annual plan discount worth paying upfront?",
      "formula": "Net = (monthly × 12 − annual) − annual × return × 0.5.",
      "inputs": [
        {
          "id": "monthly",
          "label": "Monthly price",
          "kind": "number"
        },
        {
          "id": "annual",
          "label": "Annual price",
          "kind": "number"
        },
        {
          "id": "opportunity",
          "label": "Return on your cash",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Net benefit of annual"
        },
        {
          "id": "saving",
          "label": "Headline saving"
        },
        {
          "id": "discount",
          "label": "Effective discount"
        },
        {
          "id": "carry",
          "label": "Cost of cash tied up"
        }
      ]
    },
    {
      "slug": "software-stack-cost-per-employee",
      "url": "https://www.revenuelab.fyi/toolbox/software-stack-cost-per-employee",
      "title": "Software Cost Per Employee Calculator",
      "category": "other",
      "summary": "Per-seat software spend and what unused seats cost.",
      "formula": "Per employee = spend ÷ headcount. Idle cost = (seats − headcount) × cost per seat × 12.",
      "inputs": [
        {
          "id": "spend",
          "label": "Monthly software spend",
          "kind": "number"
        },
        {
          "id": "employees",
          "label": "Employees",
          "kind": "number"
        },
        {
          "id": "seats",
          "label": "Seats paid for",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perEmployee",
          "label": "Monthly spend per employee"
        },
        {
          "id": "perSeat",
          "label": "Cost per seat"
        },
        {
          "id": "idle",
          "label": "Idle seats"
        },
        {
          "id": "idleCost",
          "label": "Annual cost of idle seats"
        }
      ]
    },
    {
      "slug": "recurring-meeting-cost",
      "url": "https://www.revenuelab.fyi/toolbox/recurring-meeting-cost",
      "title": "Meeting Cost Calculator",
      "category": "other",
      "summary": "What that recurring meeting costs the company each year.",
      "formula": "Cost = loaded hourly × hours × attendees.",
      "inputs": [
        {
          "id": "people",
          "label": "Attendees",
          "kind": "number"
        },
        {
          "id": "minutes",
          "label": "Meeting length",
          "kind": "number"
        },
        {
          "id": "salary",
          "label": "Average salary",
          "kind": "number"
        },
        {
          "id": "overhead",
          "label": "Employer overhead",
          "kind": "number"
        },
        {
          "id": "perYear",
          "label": "Meetings per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annual",
          "label": "Annual cost"
        },
        {
          "id": "per",
          "label": "Cost per meeting"
        },
        {
          "id": "hourly",
          "label": "Loaded hourly rate"
        },
        {
          "id": "hours",
          "label": "Person-hours per year"
        }
      ]
    },
    {
      "slug": "context-switch-cost",
      "url": "https://www.revenuelab.fyi/toolbox/context-switch-cost",
      "title": "Context Switching Cost Calculator",
      "category": "other",
      "summary": "Hours and dollars lost to interruptions each year.",
      "formula": "Hours = interruptions × recovery minutes × days ÷ 60 × people.",
      "inputs": [
        {
          "id": "interrupts",
          "label": "Interruptions per day",
          "kind": "number"
        },
        {
          "id": "recovery",
          "label": "Recovery time each",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Loaded hourly rate",
          "kind": "number"
        },
        {
          "id": "people",
          "label": "People affected",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Working days per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cost",
          "label": "Annual cost"
        },
        {
          "id": "hours",
          "label": "Team hours lost"
        },
        {
          "id": "hoursPerPerson",
          "label": "Hours lost per person"
        },
        {
          "id": "daysPerPerson",
          "label": "Workdays per person"
        }
      ]
    },
    {
      "slug": "automation-roi-hours",
      "url": "https://www.revenuelab.fyi/toolbox/automation-roi-hours",
      "title": "Automation ROI Calculator",
      "category": "other",
      "summary": "How long until automating a task pays for itself.",
      "formula": "Monthly saving = hours × rate × 4.33 − upkeep. Payback months = build ÷ saving.",
      "inputs": [
        {
          "id": "hoursWeek",
          "label": "Hours saved per week",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Loaded hourly rate",
          "kind": "number"
        },
        {
          "id": "build",
          "label": "Build cost",
          "kind": "number"
        },
        {
          "id": "upkeep",
          "label": "Monthly upkeep",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "payback",
          "label": "Payback"
        },
        {
          "id": "monthlySave",
          "label": "Net monthly saving"
        },
        {
          "id": "year1",
          "label": "Year-1 net"
        },
        {
          "id": "roi",
          "label": "Year-1 ROI"
        }
      ]
    },
    {
      "slug": "staff-replacement-cost",
      "url": "https://www.revenuelab.fyi/toolbox/staff-replacement-cost",
      "title": "Employee Turnover Cost Calculator",
      "category": "other",
      "summary": "The full cost of replacing someone who leaves.",
      "formula": "Cost = recruiting + monthly salary × ramp months × (1 − ramp productivity).",
      "inputs": [
        {
          "id": "salary",
          "label": "Role salary",
          "kind": "number"
        },
        {
          "id": "recruit",
          "label": "Recruiting cost",
          "kind": "number"
        },
        {
          "id": "rampMonths",
          "label": "Ramp to full productivity",
          "kind": "number"
        },
        {
          "id": "rampLoss",
          "label": "Average productivity during ramp",
          "kind": "number"
        },
        {
          "id": "leavers",
          "label": "Departures per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "per",
          "label": "Cost per departure"
        },
        {
          "id": "annual",
          "label": "Annual turnover cost"
        },
        {
          "id": "rampCost",
          "label": "Lost productivity in ramp"
        },
        {
          "id": "pct",
          "label": "Share of salary"
        }
      ]
    },
    {
      "slug": "hiring-payback-period",
      "url": "https://www.revenuelab.fyi/toolbox/hiring-payback-period",
      "title": "Hiring Payback Period Calculator",
      "category": "other",
      "summary": "How many months before a new hire pays for themselves.",
      "formula": "Cumulative = Σ (contribution × ramp factor − loaded cost) − hiring cost.",
      "inputs": [
        {
          "id": "salary",
          "label": "Salary",
          "kind": "number"
        },
        {
          "id": "overhead",
          "label": "Overhead & benefits",
          "kind": "number"
        },
        {
          "id": "hireCost",
          "label": "One-off hiring cost",
          "kind": "number"
        },
        {
          "id": "contribution",
          "label": "Monthly value at full ramp",
          "kind": "number"
        },
        {
          "id": "ramp",
          "label": "Ramp period",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "month",
          "label": "Breaks even in month"
        },
        {
          "id": "monthlyCost",
          "label": "Loaded monthly cost"
        },
        {
          "id": "net",
          "label": "Net monthly at full ramp"
        },
        {
          "id": "year1",
          "label": "Year-1 cumulative"
        }
      ]
    },
    {
      "slug": "client-concentration-risk",
      "url": "https://www.revenuelab.fyi/toolbox/client-concentration-risk",
      "title": "Client Concentration Risk Calculator",
      "category": "other",
      "summary": "How exposed you are if your biggest client leaves.",
      "formula": "Concentration = top client revenue ÷ total revenue.",
      "inputs": [
        {
          "id": "revenue",
          "label": "Annual revenue",
          "kind": "number"
        },
        {
          "id": "top",
          "label": "Largest client revenue",
          "kind": "number"
        },
        {
          "id": "top3",
          "label": "Top 3 clients revenue",
          "kind": "number"
        },
        {
          "id": "costs",
          "label": "Annual fixed costs",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "share",
          "label": "Top client share"
        },
        {
          "id": "share3",
          "label": "Top 3 share"
        },
        {
          "id": "after",
          "label": "Revenue if top client leaves"
        },
        {
          "id": "margin",
          "label": "Profit after that loss"
        }
      ]
    },
    {
      "slug": "proposal-win-rate",
      "url": "https://www.revenuelab.fyi/toolbox/proposal-win-rate",
      "title": "Proposal Win Rate Calculator",
      "category": "other",
      "summary": "Win rate, cost per proposal and revenue per pitch.",
      "formula": "Win rate = won ÷ sent. Cost per win = total pitch hours × rate ÷ wins.",
      "inputs": [
        {
          "id": "sent",
          "label": "Proposals sent",
          "kind": "number"
        },
        {
          "id": "won",
          "label": "Proposals won",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Hours per proposal",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Your hourly rate",
          "kind": "number"
        },
        {
          "id": "value",
          "label": "Average deal value",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "winRate",
          "label": "Win rate"
        },
        {
          "id": "costPerWin",
          "label": "Pitch cost per win"
        },
        {
          "id": "perHour",
          "label": "Revenue per pitch hour"
        },
        {
          "id": "cost",
          "label": "Total pitch cost"
        }
      ]
    },
    {
      "slug": "referral-program-payout",
      "url": "https://www.revenuelab.fyi/toolbox/referral-program-payout",
      "title": "Referral Program Payout Calculator",
      "category": "other",
      "summary": "What a referral bonus costs against the value it brings in.",
      "formula": "CAC = total payouts ÷ converted referrals.",
      "inputs": [
        {
          "id": "payout",
          "label": "Bonus per referral",
          "kind": "number"
        },
        {
          "id": "referrals",
          "label": "Referrals per month",
          "kind": "number"
        },
        {
          "id": "convert",
          "label": "Referral conversion",
          "kind": "number"
        },
        {
          "id": "ltv",
          "label": "Customer lifetime value",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cac",
          "label": "Effective CAC"
        },
        {
          "id": "ratio",
          "label": "LTV : CAC"
        },
        {
          "id": "customers",
          "label": "New customers / mo"
        },
        {
          "id": "cost",
          "label": "Monthly payout cost"
        }
      ]
    },
    {
      "slug": "loyalty-points-value",
      "url": "https://www.revenuelab.fyi/toolbox/loyalty-points-value",
      "title": "Loyalty Points Value Calculator",
      "category": "financial",
      "summary": "What your points or miles are actually worth per point.",
      "formula": "Cents per point = (redemption value − fees) ÷ points × 100.",
      "inputs": [
        {
          "id": "points",
          "label": "Points redeemed",
          "kind": "number"
        },
        {
          "id": "value",
          "label": "Cash value of redemption",
          "kind": "number"
        },
        {
          "id": "fees",
          "label": "Fees or taxes paid",
          "kind": "number"
        },
        {
          "id": "baseline",
          "label": "Baseline cash-back rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cpp",
          "label": "Cents per point"
        },
        {
          "id": "net",
          "label": "Net value received"
        },
        {
          "id": "vsBaseline",
          "label": "Above baseline (¢/pt)"
        },
        {
          "id": "extra",
          "label": "Extra value vs cash back"
        }
      ]
    },
    {
      "slug": "digital-product-net-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/digital-product-net-revenue",
      "title": "Digital Product Pricing Calculator",
      "category": "other",
      "summary": "Price, volume and refunds — what you actually keep.",
      "formula": "Net = (price × (1 − fees) − affiliate cost) × (1 − refund rate).",
      "inputs": [
        {
          "id": "price",
          "label": "List price",
          "kind": "number"
        },
        {
          "id": "fee",
          "label": "Processing + platform fee",
          "kind": "number"
        },
        {
          "id": "affiliate",
          "label": "Affiliate share",
          "kind": "number"
        },
        {
          "id": "affiliateShare",
          "label": "Sales through affiliates",
          "kind": "number"
        },
        {
          "id": "refunds",
          "label": "Refund rate",
          "kind": "number"
        },
        {
          "id": "goal",
          "label": "Monthly revenue goal",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Net per sale"
        },
        {
          "id": "take",
          "label": "You keep"
        },
        {
          "id": "unitsNeeded",
          "label": "Sales needed for goal"
        },
        {
          "id": "lost",
          "label": "Lost per sale"
        }
      ]
    },
    {
      "slug": "waitlist-conversion",
      "url": "https://www.revenuelab.fyi/toolbox/waitlist-conversion",
      "title": "Waitlist Conversion Calculator",
      "category": "other",
      "summary": "How many launch-day customers a waitlist really produces.",
      "formula": "Buyers = list × open × click × purchase rate.",
      "inputs": [
        {
          "id": "list",
          "label": "Waitlist size",
          "kind": "number"
        },
        {
          "id": "open",
          "label": "Open rate",
          "kind": "number"
        },
        {
          "id": "click",
          "label": "Click rate of opens",
          "kind": "number"
        },
        {
          "id": "buy",
          "label": "Purchase rate of clicks",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price",
          "kind": "number"
        },
        {
          "id": "target",
          "label": "Revenue target",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "revenue",
          "label": "Projected launch revenue"
        },
        {
          "id": "buyers",
          "label": "Expected buyers"
        },
        {
          "id": "rate",
          "label": "List-to-sale rate"
        },
        {
          "id": "needed",
          "label": "List size for target"
        }
      ]
    },
    {
      "slug": "webinar-roi",
      "url": "https://www.revenuelab.fyi/toolbox/webinar-roi",
      "title": "Webinar ROI Calculator",
      "category": "other",
      "summary": "Registrations, show rate and pipeline from one webinar.",
      "formula": "Revenue = registrations × show × conversion × close rate × deal value.",
      "inputs": [
        {
          "id": "regs",
          "label": "Registrations",
          "kind": "number"
        },
        {
          "id": "show",
          "label": "Show rate",
          "kind": "number"
        },
        {
          "id": "convert",
          "label": "Attendee-to-opportunity",
          "kind": "number"
        },
        {
          "id": "deal",
          "label": "Average deal value",
          "kind": "number"
        },
        {
          "id": "close",
          "label": "Close rate",
          "kind": "number"
        },
        {
          "id": "cost",
          "label": "Promotion + production cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "revenue",
          "label": "Expected revenue"
        },
        {
          "id": "roi",
          "label": "ROI"
        },
        {
          "id": "opps",
          "label": "Opportunities created"
        },
        {
          "id": "costPerOpp",
          "label": "Cost per opportunity"
        }
      ]
    },
    {
      "slug": "sabbatical-affordability",
      "url": "https://www.revenuelab.fyi/toolbox/sabbatical-affordability",
      "title": "Sabbatical Affordability Calculator",
      "category": "financial",
      "summary": "How long you can take off without going backwards.",
      "formula": "Months = (savings − reserve) ÷ (spending − income during break).",
      "inputs": [
        {
          "id": "savings",
          "label": "Savings available",
          "kind": "number"
        },
        {
          "id": "spend",
          "label": "Monthly spending on break",
          "kind": "number"
        },
        {
          "id": "income",
          "label": "Income during break",
          "kind": "number"
        },
        {
          "id": "salary",
          "label": "Monthly salary given up",
          "kind": "number"
        },
        {
          "id": "reserve",
          "label": "Reserve to keep untouched",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "months",
          "label": "Months you can take"
        },
        {
          "id": "burn",
          "label": "Net monthly burn"
        },
        {
          "id": "usable",
          "label": "Usable savings"
        },
        {
          "id": "trueCost",
          "label": "True cost with lost pay"
        }
      ]
    },
    {
      "slug": "cloud-vm-monthly-cost",
      "url": "https://www.revenuelab.fyi/toolbox/cloud-vm-monthly-cost",
      "title": "Cloud VM Monthly Cost Calculator",
      "category": "financial",
      "summary": "Estimate the true monthly bill for a running virtual machine.",
      "formula": "Monthly compute = hourly rate × 730 × uptime%; storage cost = GB × $/GB-month; total = compute + storage + extras.",
      "inputs": [
        {
          "id": "hourlyRate",
          "label": "Instance hourly rate",
          "kind": "number"
        },
        {
          "id": "uptime",
          "label": "Uptime percentage",
          "kind": "number"
        },
        {
          "id": "storageGb",
          "label": "Attached storage",
          "kind": "number"
        },
        {
          "id": "storageRate",
          "label": "Storage rate",
          "kind": "number"
        },
        {
          "id": "extras",
          "label": "IP, snapshots, other extras",
          "kind": "number"
        },
        {
          "id": "count",
          "label": "Number of instances",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total monthly cost"
        },
        {
          "id": "perInstance",
          "label": "Cost per instance"
        },
        {
          "id": "compute",
          "label": "Compute portion"
        },
        {
          "id": "storage",
          "label": "Storage portion"
        },
        {
          "id": "annual",
          "label": "Annualized cost"
        }
      ]
    },
    {
      "slug": "cloud-egress-cost",
      "url": "https://www.revenuelab.fyi/toolbox/cloud-egress-cost",
      "title": "Cloud Egress Bandwidth Cost Calculator",
      "category": "financial",
      "summary": "Find out what shipping data out of the cloud actually costs you.",
      "formula": "Cost = Σ over tiers of (GB in tier × tier rate), after subtracting the free allowance from total GB.",
      "inputs": [
        {
          "id": "totalGb",
          "label": "Total monthly egress",
          "kind": "number"
        },
        {
          "id": "freeGb",
          "label": "Free tier allowance",
          "kind": "number"
        },
        {
          "id": "tier1Gb",
          "label": "Size of first paid tier",
          "kind": "number"
        },
        {
          "id": "tier1Rate",
          "label": "First tier rate",
          "kind": "number"
        },
        {
          "id": "tier2Rate",
          "label": "Rate above first tier",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total_cost",
          "label": "Monthly egress cost"
        },
        {
          "id": "billable",
          "label": "Billable GB after free tier"
        },
        {
          "id": "effectiveRate",
          "label": "Effective $/GB (blended)"
        },
        {
          "id": "annual",
          "label": "Annualized egress cost"
        }
      ]
    },
    {
      "slug": "s3-storage-tiering-cost",
      "url": "https://www.revenuelab.fyi/toolbox/s3-storage-tiering-cost",
      "title": "S3-Style Storage Tiering Cost Calculator",
      "category": "financial",
      "summary": "Compare hot, infrequent-access, and archive storage costs for the same data.",
      "formula": "Monthly cost = (stored GB × storage $/GB) + (retrieved GB × retrieval $/GB) + (requests × $/1000 requests).",
      "inputs": [
        {
          "id": "storedGb",
          "label": "Total data stored",
          "kind": "number"
        },
        {
          "id": "storageRate",
          "label": "Storage rate for this tier",
          "kind": "number"
        },
        {
          "id": "retrievedGb",
          "label": "Data retrieved per month",
          "kind": "number"
        },
        {
          "id": "retrievalRate",
          "label": "Retrieval rate for this tier",
          "kind": "number"
        },
        {
          "id": "requests",
          "label": "GET requests per month",
          "kind": "number"
        },
        {
          "id": "requestRate",
          "label": "Request cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total monthly cost"
        },
        {
          "id": "storage",
          "label": "Storage cost"
        },
        {
          "id": "retrieval",
          "label": "Retrieval cost"
        },
        {
          "id": "requestCost",
          "label": "Request cost"
        },
        {
          "id": "perGb",
          "label": "Blended cost per stored GB"
        }
      ]
    },
    {
      "slug": "serverless-invocation-cost",
      "url": "https://www.revenuelab.fyi/toolbox/serverless-invocation-cost",
      "title": "Serverless Function Invocation Cost Calculator",
      "category": "financial",
      "summary": "Turn invocation count, duration, and memory into a monthly bill.",
      "formula": "GB-seconds = (memory MB ÷ 1024) × duration(s) × invocations; cost = invocation fee + GB-seconds × rate, minus free tier.",
      "inputs": [
        {
          "id": "invocations",
          "label": "Invocations per month",
          "kind": "number"
        },
        {
          "id": "durationMs",
          "label": "Average duration",
          "kind": "number"
        },
        {
          "id": "memoryMb",
          "label": "Memory allocated",
          "kind": "number"
        },
        {
          "id": "invocationRate",
          "label": "Price per million invocations",
          "kind": "number"
        },
        {
          "id": "gbsRate",
          "label": "Price per GB-second",
          "kind": "number"
        },
        {
          "id": "freeGbs",
          "label": "Free GB-seconds per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Monthly serverless cost"
        },
        {
          "id": "computeCost",
          "label": "Compute (GB-second) cost"
        },
        {
          "id": "invocationCost",
          "label": "Invocation fee cost"
        },
        {
          "id": "gbSeconds",
          "label": "Total GB-seconds used"
        },
        {
          "id": "costPerMillion",
          "label": "Cost per million invocations"
        }
      ]
    },
    {
      "slug": "database-iops-cost",
      "url": "https://www.revenuelab.fyi/toolbox/database-iops-cost",
      "title": "Database IOPS Cost Calculator",
      "category": "financial",
      "summary": "Price provisioned IOPS storage for RDS, EBS, or managed databases.",
      "formula": "Cost = (GB × $/GB) + (max(0, provisioned IOPS − baseline IOPS) × $/IOPS) + (max(0, MB/s − baseline) × $/MBps).",
      "inputs": [
        {
          "id": "capacityGb",
          "label": "Volume capacity",
          "kind": "number"
        },
        {
          "id": "capacityRate",
          "label": "Capacity rate",
          "kind": "number"
        },
        {
          "id": "provisionedIops",
          "label": "Provisioned IOPS",
          "kind": "number"
        },
        {
          "id": "baselineIops",
          "label": "Included baseline IOPS",
          "kind": "number"
        },
        {
          "id": "iopsRate",
          "label": "IOPS rate above baseline",
          "kind": "number"
        },
        {
          "id": "throughputMbps",
          "label": "Provisioned throughput",
          "kind": "number"
        },
        {
          "id": "baselineMbps",
          "label": "Included baseline throughput",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Monthly volume cost"
        },
        {
          "id": "capacityCost",
          "label": "Capacity cost"
        },
        {
          "id": "iopsCost",
          "label": "Extra IOPS cost"
        },
        {
          "id": "throughputCost",
          "label": "Extra throughput cost"
        }
      ]
    },
    {
      "slug": "kubernetes-node-bin-packing",
      "url": "https://www.revenuelab.fyi/toolbox/kubernetes-node-bin-packing",
      "title": "Kubernetes Node Bin-Packing Calculator",
      "category": "financial",
      "summary": "Figure out how many nodes you actually need for a given pod fleet.",
      "formula": "Pods per node = min(floor(node CPU ÷ pod CPU request), floor(node memory ÷ pod memory request)); nodes needed = ceil(total pods ÷ pods per node).",
      "inputs": [
        {
          "id": "nodeCpu",
          "label": "Node allocatable CPU",
          "kind": "number"
        },
        {
          "id": "nodeMemory",
          "label": "Node allocatable memory",
          "kind": "number"
        },
        {
          "id": "podCpu",
          "label": "Pod CPU request",
          "kind": "number"
        },
        {
          "id": "podMemory",
          "label": "Pod memory request",
          "kind": "number"
        },
        {
          "id": "podCount",
          "label": "Total pods to schedule",
          "kind": "number"
        },
        {
          "id": "nodeHourlyRate",
          "label": "Node hourly cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "nodesNeeded",
          "label": "Nodes needed"
        },
        {
          "id": "podsPerNode",
          "label": "Pods per node"
        },
        {
          "id": "monthlyCost",
          "label": "Estimated monthly node cost"
        },
        {
          "id": "bottleneck",
          "label": "Bottleneck resource"
        },
        {
          "id": "wastedCpuPct",
          "label": "Unused CPU per node"
        },
        {
          "id": "wastedMemPct",
          "label": "Unused memory per node"
        }
      ]
    },
    {
      "slug": "reserved-vs-on-demand-savings",
      "url": "https://www.revenuelab.fyi/toolbox/reserved-vs-on-demand-savings",
      "title": "Reserved vs On-Demand Cloud Savings Calculator",
      "category": "financial",
      "summary": "See the break-even point and total savings from committing to reserved capacity.",
      "formula": "On-demand total = hourly × 8760 × term years × utilization%; reserved total = upfront + (reserved hourly × 8760 × term years × utilization%).",
      "inputs": [
        {
          "id": "onDemandRate",
          "label": "On-demand hourly rate",
          "kind": "number"
        },
        {
          "id": "reservedRate",
          "label": "Reserved hourly rate",
          "kind": "number"
        },
        {
          "id": "upfront",
          "label": "Upfront payment",
          "kind": "number"
        },
        {
          "id": "termYears",
          "label": "Commitment term",
          "kind": "number"
        },
        {
          "id": "utilization",
          "label": "Expected utilization",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "savings",
          "label": "Total savings over term"
        },
        {
          "id": "savingsPct",
          "label": "Savings percentage"
        },
        {
          "id": "onDemandTotal",
          "label": "On-demand total cost"
        },
        {
          "id": "reservedTotal",
          "label": "Reserved total cost"
        },
        {
          "id": "breakEvenUtil",
          "label": "Break-even utilization needed"
        }
      ]
    },
    {
      "slug": "cloud-vs-colo-tco",
      "url": "https://www.revenuelab.fyi/toolbox/cloud-vs-colo-tco",
      "title": "Cloud vs Colocation TCO Calculator",
      "category": "financial",
      "summary": "Compare 3-year total cost of ownership between cloud and colocated hardware.",
      "formula": "Cloud TCO = monthly cloud cost × 36. Colo TCO = hardware cost + (monthly colo fees + staff cost allocation) × 36.",
      "inputs": [
        {
          "id": "cloudMonthly",
          "label": "Equivalent cloud monthly cost",
          "kind": "number"
        },
        {
          "id": "hardwareCost",
          "label": "Upfront hardware cost",
          "kind": "number"
        },
        {
          "id": "colomonthly",
          "label": "Colo fees (power, space, network)",
          "kind": "number"
        },
        {
          "id": "staffFte",
          "label": "Fractional FTE for ops",
          "kind": "number"
        },
        {
          "id": "staffCost",
          "label": "Fully loaded FTE cost",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Comparison horizon",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cheaper",
          "label": "Lower TCO option"
        },
        {
          "id": "diff",
          "label": "Savings of cheaper option"
        },
        {
          "id": "cloudTotal",
          "label": "Total cloud cost over horizon"
        },
        {
          "id": "coloTotal",
          "label": "Total colo cost over horizon"
        }
      ]
    },
    {
      "slug": "sla-uptime-downtime",
      "url": "https://www.revenuelab.fyi/toolbox/sla-uptime-downtime",
      "title": "SLA Uptime to Downtime Minutes Calculator",
      "category": "math",
      "summary": "Convert an uptime SLA percentage into allowed downtime minutes.",
      "formula": "Allowed downtime = (1 − uptime%) × total minutes in period. Reverse: uptime% = 1 − (downtime minutes ÷ total minutes).",
      "inputs": [
        {
          "id": "uptimePct",
          "label": "SLA uptime percentage",
          "kind": "number"
        },
        {
          "id": "actualDowntime",
          "label": "Actual downtime this month (optional)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "downMonth",
          "label": "Allowed downtime per month"
        },
        {
          "id": "downYear",
          "label": "Allowed downtime per year"
        },
        {
          "id": "downWeek",
          "label": "Allowed downtime per week"
        },
        {
          "id": "downDay",
          "label": "Allowed downtime per day"
        },
        {
          "id": "actualUptimePct",
          "label": "Actual uptime % (if downtime entered)"
        }
      ]
    },
    {
      "slug": "error-budget-burn-rate",
      "url": "https://www.revenuelab.fyi/toolbox/error-budget-burn-rate",
      "title": "Error Budget Burn Rate Calculator",
      "category": "math",
      "summary": "See how fast an incident is consuming your monthly error budget.",
      "formula": "Error budget = (1 − SLO) × total requests (or time); burn rate = actual error rate ÷ allowed error rate; time to exhaustion = budget remaining ÷ (current burn rate × allowed rate).",
      "inputs": [
        {
          "id": "slo",
          "label": "SLO target",
          "kind": "number"
        },
        {
          "id": "windowDays",
          "label": "SLO window",
          "kind": "number"
        },
        {
          "id": "currentErrorRate",
          "label": "Current observed error rate",
          "kind": "number"
        },
        {
          "id": "budgetConsumedPct",
          "label": "Budget already consumed this window",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "burnRate",
          "label": "Current burn rate (×)"
        },
        {
          "id": "daysToExhaustion",
          "label": "Days until budget exhausted"
        },
        {
          "id": "allowedErrorRate",
          "label": "Allowed error rate"
        },
        {
          "id": "budgetRemainingPct",
          "label": "Budget remaining"
        }
      ]
    },
    {
      "slug": "incident-cost-per-minute",
      "url": "https://www.revenuelab.fyi/toolbox/incident-cost-per-minute",
      "title": "Incident Cost Per Minute Calculator",
      "category": "financial",
      "summary": "Put a real dollar figure on an outage, per minute and in total.",
      "formula": "Cost = (revenue run-rate ÷ minutes in period × affected%) × duration + (responders × hourly rate × duration/60) + SLA credits.",
      "inputs": [
        {
          "id": "monthlyRevenue",
          "label": "Monthly revenue",
          "kind": "number"
        },
        {
          "id": "affectedPct",
          "label": "% of revenue-generating traffic affected",
          "kind": "number"
        },
        {
          "id": "durationMin",
          "label": "Incident duration",
          "kind": "number"
        },
        {
          "id": "responders",
          "label": "Engineers/staff responding",
          "kind": "number"
        },
        {
          "id": "hourlyRate",
          "label": "Loaded hourly rate per responder",
          "kind": "number"
        },
        {
          "id": "slaCredits",
          "label": "SLA credits owed",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total incident cost"
        },
        {
          "id": "perMinute",
          "label": "Cost per minute of downtime"
        },
        {
          "id": "revenueLoss",
          "label": "Revenue loss portion"
        },
        {
          "id": "laborCost",
          "label": "Responder labor cost"
        }
      ]
    },
    {
      "slug": "oncall-load-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/oncall-load-calculator",
      "title": "On-Call Load Calculator",
      "category": "other",
      "summary": "See how sustainable your on-call rotation actually is.",
      "formula": "Pages per person per week = total weekly pages ÷ team size (in single-person rotation) or ÷ concurrent on-call count. Night pages estimated as pages × night-hours share.",
      "inputs": [
        {
          "id": "teamSize",
          "label": "People in rotation",
          "kind": "number"
        },
        {
          "id": "rotationDays",
          "label": "Days per on-call shift",
          "kind": "number"
        },
        {
          "id": "weeklyPages",
          "label": "Total pages per week (whole rotation)",
          "kind": "number"
        },
        {
          "id": "nightSharePct",
          "label": "% of pages during 10pm-7am",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pagesPerShift",
          "label": "Pages per on-call shift"
        },
        {
          "id": "status",
          "label": "Sustainability assessment"
        },
        {
          "id": "shiftsPerPersonPerMonth",
          "label": "On-call shifts per person per month"
        },
        {
          "id": "nightPagesPerPersonPerMonth",
          "label": "Night pages per person per month"
        }
      ]
    },
    {
      "slug": "mttr-impact-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/mttr-impact-calculator",
      "title": "MTTR Impact Calculator",
      "category": "other",
      "summary": "Quantify what cutting your mean time to recovery is actually worth.",
      "formula": "Annual incident cost = incidents/year × MTTR (minutes) × cost per minute; savings = incidents/year × (current MTTR − target MTTR) × cost per minute.",
      "inputs": [
        {
          "id": "incidentsPerYear",
          "label": "Incidents per year",
          "kind": "number"
        },
        {
          "id": "currentMttr",
          "label": "Current MTTR",
          "kind": "number"
        },
        {
          "id": "targetMttr",
          "label": "Target MTTR",
          "kind": "number"
        },
        {
          "id": "costPerMinute",
          "label": "Cost per minute of downtime",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "savings",
          "label": "Annual savings from MTTR reduction"
        },
        {
          "id": "reductionPct",
          "label": "MTTR reduction"
        },
        {
          "id": "currentAnnualCost",
          "label": "Current annual incident cost"
        },
        {
          "id": "targetAnnualCost",
          "label": "Projected annual incident cost"
        }
      ]
    },
    {
      "slug": "backup-storage-retention-cost",
      "url": "https://www.revenuelab.fyi/toolbox/backup-storage-retention-cost",
      "title": "Backup Storage & Retention Cost Calculator",
      "category": "financial",
      "summary": "Project backup storage growth and cost across a retention policy.",
      "formula": "Steady-state storage = full backup size × compression factor × (1 + (retention days − 1) × incremental ratio); cost = storage × $/GB-month.",
      "inputs": [
        {
          "id": "fullSizeGb",
          "label": "Full backup size",
          "kind": "number"
        },
        {
          "id": "retentionDays",
          "label": "Retention period",
          "kind": "number"
        },
        {
          "id": "compressionRatio",
          "label": "Compression/dedup factor",
          "kind": "number"
        },
        {
          "id": "incrementalRatio",
          "label": "Daily change rate (incremental size vs full)",
          "kind": "number"
        },
        {
          "id": "strategy",
          "label": "Backup strategy",
          "kind": "select"
        },
        {
          "id": "storageRate",
          "label": "Storage rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthlyCost",
          "label": "Steady-state monthly cost"
        },
        {
          "id": "steadyStateGb",
          "label": "Steady-state storage held"
        },
        {
          "id": "day1Gb",
          "label": "Day-1 storage (before retention fills)"
        },
        {
          "id": "annualCost",
          "label": "Annualized cost"
        }
      ]
    },
    {
      "slug": "rpo-rto-cost-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/rpo-rto-cost-calculator",
      "title": "RPO/RTO Disaster Recovery Cost Calculator",
      "category": "financial",
      "summary": "See what tightening your recovery objectives actually costs to build.",
      "formula": "DR cost = baseline monthly cost × tier multiplier. Exposure = transaction rate × RPO time window.",
      "inputs": [
        {
          "id": "baselineCost",
          "label": "Baseline backup-only DR cost",
          "kind": "number"
        },
        {
          "id": "tier",
          "label": "Target DR tier",
          "kind": "select"
        },
        {
          "id": "txnPerHour",
          "label": "Transactions per hour",
          "kind": "number"
        },
        {
          "id": "rpoMinutes",
          "label": "Target RPO",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthlyCost",
          "label": "Estimated DR monthly cost"
        },
        {
          "id": "exposure",
          "label": "Transactions at risk per failure (RPO exposure)"
        },
        {
          "id": "annualCost",
          "label": "Annualized DR cost"
        },
        {
          "id": "multiplier",
          "label": "Cost multiplier vs backup-only"
        }
      ]
    },
    {
      "slug": "data-transfer-time-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/data-transfer-time-calculator",
      "title": "Data Transfer Time Calculator",
      "category": "math",
      "summary": "Estimate how long a data transfer will actually take at a given bandwidth.",
      "formula": "Transfer time (s) = (data size in bits) ÷ (bandwidth in bits/sec × efficiency%). Bits = bytes × 8.",
      "inputs": [
        {
          "id": "sizeValue",
          "label": "Data size",
          "kind": "number"
        },
        {
          "id": "sizeUnit",
          "label": "Size unit",
          "kind": "select"
        },
        {
          "id": "bandwidthValue",
          "label": "Link bandwidth",
          "kind": "number"
        },
        {
          "id": "bandwidthUnit",
          "label": "Bandwidth unit",
          "kind": "select"
        },
        {
          "id": "efficiency",
          "label": "Real-world efficiency",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "minutes",
          "label": "Estimated transfer time (minutes)"
        },
        {
          "id": "seconds",
          "label": "In seconds"
        },
        {
          "id": "hours",
          "label": "In hours"
        },
        {
          "id": "theoreticalSeconds",
          "label": "Theoretical time at rated speed (no overhead)"
        }
      ]
    },
    {
      "slug": "file-transfer-duration",
      "url": "https://www.revenuelab.fyi/toolbox/file-transfer-duration",
      "title": "File/Media Transfer Duration Estimator",
      "category": "math",
      "summary": "Estimate upload or download time for a batch of files over your connection.",
      "formula": "Total time = (total data size ÷ effective bandwidth) + (file count × per-file overhead seconds).",
      "inputs": [
        {
          "id": "fileCount",
          "label": "Number of files",
          "kind": "number"
        },
        {
          "id": "avgFileSizeMb",
          "label": "Average file size",
          "kind": "number"
        },
        {
          "id": "bandwidthMbps",
          "label": "Available bandwidth",
          "kind": "number"
        },
        {
          "id": "overheadMs",
          "label": "Overhead per file",
          "kind": "number"
        },
        {
          "id": "parallelism",
          "label": "Concurrent transfers",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalMinutes",
          "label": "Estimated total time (minutes)"
        },
        {
          "id": "totalSeconds",
          "label": "In seconds"
        },
        {
          "id": "totalDataGb",
          "label": "Total data volume (GB)"
        },
        {
          "id": "overheadShare",
          "label": "% of time spent on per-file overhead"
        }
      ]
    },
    {
      "slug": "bandwidth-for-n-users",
      "url": "https://www.revenuelab.fyi/toolbox/bandwidth-for-n-users",
      "title": "Bandwidth Needed for N Concurrent Users",
      "category": "math",
      "summary": "Size your uplink for a target number of simultaneous users.",
      "formula": "Required bandwidth = concurrent users × per-user bandwidth × (1 + headroom%).",
      "inputs": [
        {
          "id": "concurrentUsers",
          "label": "Peak concurrent users",
          "kind": "number"
        },
        {
          "id": "perUserMbps",
          "label": "Bandwidth per user",
          "kind": "number"
        },
        {
          "id": "headroomPct",
          "label": "Headroom / burst margin",
          "kind": "number"
        },
        {
          "id": "existingLinkMbps",
          "label": "Existing link capacity (optional)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "requiredMbps",
          "label": "Required bandwidth"
        },
        {
          "id": "requiredGbps",
          "label": "In Gbps"
        },
        {
          "id": "maxUsersOnExisting",
          "label": "Max users your existing link supports"
        },
        {
          "id": "utilizationOfExisting",
          "label": "Utilization of existing link at target load"
        }
      ]
    },
    {
      "slug": "video-streaming-storage-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/video-streaming-storage-calculator",
      "title": "Video Streaming Bitrate & Storage Calculator",
      "category": "financial",
      "summary": "Convert resolution and bitrate into file size, storage cost, and bandwidth needs.",
      "formula": "File size (GB) = bitrate (Mbps) × duration (s) ÷ 8 ÷ 1000. Delivery bandwidth = concurrent viewers × bitrate.",
      "inputs": [
        {
          "id": "bitrateMbps",
          "label": "Video bitrate",
          "kind": "number"
        },
        {
          "id": "durationHours",
          "label": "Content duration",
          "kind": "number"
        },
        {
          "id": "libraryHours",
          "label": "Total library hours to store",
          "kind": "number"
        },
        {
          "id": "storageRate",
          "label": "Storage rate",
          "kind": "number"
        },
        {
          "id": "concurrentViewers",
          "label": "Peak concurrent viewers",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "libraryGb",
          "label": "Total library storage needed"
        },
        {
          "id": "monthlyCost",
          "label": "Monthly storage cost"
        },
        {
          "id": "fileSizeGb",
          "label": "Size of one asset at this bitrate/duration"
        },
        {
          "id": "deliveryGbps",
          "label": "Peak delivery bandwidth needed"
        }
      ]
    },
    {
      "slug": "llm-api-token-cost",
      "url": "https://www.revenuelab.fyi/toolbox/llm-api-token-cost",
      "title": "LLM API Token Cost Calculator",
      "category": "financial",
      "summary": "Estimate monthly spend on GPT/Claude/Gemini-style token-based API pricing.",
      "formula": "Cost = (input tokens ÷ 1,000,000 × input rate + output tokens ÷ 1,000,000 × output rate) × requests per month.",
      "inputs": [
        {
          "id": "inputTokens",
          "label": "Avg input tokens per request",
          "kind": "number"
        },
        {
          "id": "outputTokens",
          "label": "Avg output tokens per request",
          "kind": "number"
        },
        {
          "id": "inputRate",
          "label": "Input rate",
          "kind": "number"
        },
        {
          "id": "outputRate",
          "label": "Output rate",
          "kind": "number"
        },
        {
          "id": "requestsPerMonth",
          "label": "Requests per month",
          "kind": "number"
        },
        {
          "id": "cacheDiscountPct",
          "label": "Cached input discount",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthlyCost",
          "label": "Total monthly API cost"
        },
        {
          "id": "costPerRequest",
          "label": "Cost per request"
        },
        {
          "id": "inputCostPerReq",
          "label": "Total input token cost"
        },
        {
          "id": "outputCostPerReq",
          "label": "Total output token cost"
        }
      ]
    },
    {
      "slug": "gpu-training-cost",
      "url": "https://www.revenuelab.fyi/toolbox/gpu-training-cost",
      "title": "GPU Training Cost Calculator",
      "category": "financial",
      "summary": "Estimate the cloud GPU bill for a training run before you start it.",
      "formula": "Total cost = GPU count × hourly rate per GPU × training hours × (1 − spot discount%).",
      "inputs": [
        {
          "id": "gpuCount",
          "label": "Number of GPUs",
          "kind": "number"
        },
        {
          "id": "hourlyRate",
          "label": "Hourly rate per GPU",
          "kind": "number"
        },
        {
          "id": "trainingHours",
          "label": "Total training wall-clock hours",
          "kind": "number"
        },
        {
          "id": "spotDiscountPct",
          "label": "Spot/preemptible discount",
          "kind": "number"
        },
        {
          "id": "epochs",
          "label": "Training epochs (optional)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalCost",
          "label": "Total training cost"
        },
        {
          "id": "gpuHours",
          "label": "Total GPU-hours consumed"
        },
        {
          "id": "costPerEpoch",
          "label": "Cost per epoch"
        },
        {
          "id": "effectiveRate",
          "label": "Effective hourly rate per GPU"
        }
      ]
    },
    {
      "slug": "vector-db-storage-cost",
      "url": "https://www.revenuelab.fyi/toolbox/vector-db-storage-cost",
      "title": "Vector Database Storage Cost Calculator",
      "category": "financial",
      "summary": "Estimate storage and index memory cost for embedding-based search.",
      "formula": "Storage bytes = vector count × dimensions × 4 bytes × index overhead multiplier + (vector count × metadata bytes).",
      "inputs": [
        {
          "id": "vectorCount",
          "label": "Number of vectors",
          "kind": "number"
        },
        {
          "id": "dimensions",
          "label": "Embedding dimensions",
          "kind": "number"
        },
        {
          "id": "indexOverhead",
          "label": "Index overhead multiplier",
          "kind": "number"
        },
        {
          "id": "metadataBytes",
          "label": "Metadata per vector",
          "kind": "number"
        },
        {
          "id": "rateGbMonth",
          "label": "Memory/storage rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthlyCost",
          "label": "Estimated monthly cost"
        },
        {
          "id": "totalGb",
          "label": "Total storage/memory needed"
        },
        {
          "id": "rawGb",
          "label": "Raw vector data (no overhead)"
        },
        {
          "id": "annualCost",
          "label": "Annualized cost"
        }
      ]
    },
    {
      "slug": "developer-build-minute-cost",
      "url": "https://www.revenuelab.fyi/toolbox/developer-build-minute-cost",
      "title": "Developer Hourly Cost of a Build Minute Calculator",
      "category": "financial",
      "summary": "Translate build/test wait time into real developer salary cost.",
      "formula": "Daily cost = developers × builds per dev per day × build minutes ÷ 60 × hourly rate × context-switch multiplier.",
      "inputs": [
        {
          "id": "developers",
          "label": "Number of developers",
          "kind": "number"
        },
        {
          "id": "buildsPerDay",
          "label": "Builds per developer per day",
          "kind": "number"
        },
        {
          "id": "buildMinutes",
          "label": "Average build/test time",
          "kind": "number"
        },
        {
          "id": "hourlyRate",
          "label": "Loaded hourly cost per developer",
          "kind": "number"
        },
        {
          "id": "switchMultiplier",
          "label": "Context-switch penalty multiplier",
          "kind": "number"
        },
        {
          "id": "workdaysPerYear",
          "label": "Working days per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualCost",
          "label": "Annual cost of current build time"
        },
        {
          "id": "dailyCost",
          "label": "Daily cost across the team"
        },
        {
          "id": "dailyMinutesPerDev",
          "label": "Minutes waiting per developer per day"
        },
        {
          "id": "perMinuteSaved",
          "label": "Annual value of shaving 1 minute off build time"
        }
      ]
    },
    {
      "slug": "cicd-minutes-cost",
      "url": "https://www.revenuelab.fyi/toolbox/cicd-minutes-cost",
      "title": "CI/CD Minutes Cost Calculator",
      "category": "financial",
      "summary": "Project your monthly CI/CD bill from pipeline runs and runner minutes.",
      "formula": "Billed minutes = runs per month × matrix size × avg job minutes, minus free tier; cost = billed minutes × $/minute.",
      "inputs": [
        {
          "id": "runsPerMonth",
          "label": "Pipeline runs per month",
          "kind": "number"
        },
        {
          "id": "jobMinutes",
          "label": "Average minutes per job",
          "kind": "number"
        },
        {
          "id": "matrixSize",
          "label": "Matrix size (parallel job variants)",
          "kind": "number"
        },
        {
          "id": "minuteRate",
          "label": "Runner rate",
          "kind": "number"
        },
        {
          "id": "freeMinutes",
          "label": "Free minutes per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cost",
          "label": "Monthly CI/CD cost"
        },
        {
          "id": "totalMinutes",
          "label": "Total runner minutes consumed"
        },
        {
          "id": "billable",
          "label": "Billable minutes after free tier"
        },
        {
          "id": "annualCost",
          "label": "Annualized cost"
        }
      ]
    },
    {
      "slug": "technical-debt-interest",
      "url": "https://www.revenuelab.fyi/toolbox/technical-debt-interest",
      "title": "Technical Debt Interest Calculator",
      "category": "financial",
      "summary": "Model tech debt like a loan — see the recurring cost of not fixing it.",
      "formula": "Monthly interest = changes per month × extra hours per change × hourly rate; break-even month = principal ÷ monthly interest.",
      "inputs": [
        {
          "id": "principalHours",
          "label": "Hours to fix properly (principal)",
          "kind": "number"
        },
        {
          "id": "changesPerMonth",
          "label": "Changes touching this code per month",
          "kind": "number"
        },
        {
          "id": "extraHoursPerChange",
          "label": "Extra hours per change due to debt",
          "kind": "number"
        },
        {
          "id": "hourlyRate",
          "label": "Loaded developer hourly rate",
          "kind": "number"
        },
        {
          "id": "compoundPct",
          "label": "Monthly compounding (debt worsening)",
          "kind": "number"
        },
        {
          "id": "horizonMonths",
          "label": "Time horizon to evaluate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cumulative",
          "label": "Total interest paid over horizon"
        },
        {
          "id": "breakEvenMonth",
          "label": "Break-even month (fix pays for itself)"
        },
        {
          "id": "principal",
          "label": "One-time cost to fix now"
        },
        {
          "id": "currentMonthlyInterest",
          "label": "Current monthly interest cost"
        }
      ]
    },
    {
      "slug": "oee-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/oee-calculator",
      "title": "OEE Calculator (Overall Equipment Effectiveness)",
      "category": "other",
      "summary": "Availability × performance × quality — the real health of a machine or line.",
      "formula": "Availability = Run Time ÷ Planned Production Time. Performance = (Ideal Cycle Time × Total Count) ÷ Run Time. Quality = Good Count ÷ Total Count. OEE = Availability × Performance × Quality.",
      "inputs": [
        {
          "id": "plannedMin",
          "label": "Planned production time",
          "kind": "number"
        },
        {
          "id": "downtimeMin",
          "label": "Downtime (changeover, breakdown, etc.)",
          "kind": "number"
        },
        {
          "id": "idealCycleSec",
          "label": "Ideal cycle time per part",
          "kind": "number"
        },
        {
          "id": "totalParts",
          "label": "Total parts produced",
          "kind": "number"
        },
        {
          "id": "goodParts",
          "label": "Good parts (no rework/scrap)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "oee",
          "label": "OEE"
        },
        {
          "id": "availability",
          "label": "Availability"
        },
        {
          "id": "performance",
          "label": "Performance"
        },
        {
          "id": "quality",
          "label": "Quality"
        },
        {
          "id": "runTime",
          "label": "Actual run time"
        }
      ]
    },
    {
      "slug": "takt-time-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/takt-time-calculator",
      "title": "Takt Time Calculator",
      "category": "other",
      "summary": "The pace you must produce at to match customer demand — no faster, no slower.",
      "formula": "Takt Time = Net Available Time ÷ Customer Demand (units required in that period).",
      "inputs": [
        {
          "id": "shiftMin",
          "label": "Shift length",
          "kind": "number"
        },
        {
          "id": "breaksMin",
          "label": "Breaks / planned stops",
          "kind": "number"
        },
        {
          "id": "shifts",
          "label": "Shifts per day",
          "kind": "number"
        },
        {
          "id": "demandUnits",
          "label": "Customer demand per day",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "taktSec",
          "label": "Takt time"
        },
        {
          "id": "taktMin",
          "label": "Takt time (minutes)"
        },
        {
          "id": "netTotal",
          "label": "Net available time (min/day)"
        },
        {
          "id": "unitsPerHour",
          "label": "Required units per hour"
        }
      ]
    },
    {
      "slug": "cycle-time-vs-demand",
      "url": "https://www.revenuelab.fyi/toolbox/cycle-time-vs-demand",
      "title": "Cycle Time vs. Demand Calculator",
      "category": "other",
      "summary": "Find out if your process can keep up with orders, and how many stations you need.",
      "formula": "Stations needed = ROUNDUP(Cycle Time ÷ Takt Time). Utilization = (Cycle Time ÷ Takt Time) ÷ Stations Chosen.",
      "inputs": [
        {
          "id": "cycleSec",
          "label": "Process cycle time",
          "kind": "number"
        },
        {
          "id": "taktSec",
          "label": "Takt time",
          "kind": "number"
        },
        {
          "id": "operatorCost",
          "label": "Cost per station/operator per hour",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "stations",
          "label": "Stations/operators needed"
        },
        {
          "id": "rawStations",
          "label": "Exact ratio (before rounding)"
        },
        {
          "id": "utilization",
          "label": "Resulting utilization"
        },
        {
          "id": "hourlyCost",
          "label": "Combined labor cost per hour"
        }
      ]
    },
    {
      "slug": "machine-hourly-rate",
      "url": "https://www.revenuelab.fyi/toolbox/machine-hourly-rate",
      "title": "Machine Hourly Rate Calculator",
      "category": "financial",
      "summary": "The true cost per hour to run a machine — depreciation, power, tooling, labor, overhead.",
      "formula": "Annual Machine Cost = (Purchase Price − Salvage) ÷ Useful Life + Annual Power + Annual Consumables/Tooling + Allocated Overhead + (Labor Rate × Annual Hours). Hourly Rate = Annual Machine Cost ÷ Annual Usable Hours.",
      "inputs": [
        {
          "id": "price",
          "label": "Machine purchase price",
          "kind": "number"
        },
        {
          "id": "salvage",
          "label": "Salvage value at end of life",
          "kind": "number"
        },
        {
          "id": "lifeYears",
          "label": "Useful life",
          "kind": "number"
        },
        {
          "id": "annualHours",
          "label": "Usable hours per year",
          "kind": "number"
        },
        {
          "id": "powerCost",
          "label": "Power + consumables per year",
          "kind": "number"
        },
        {
          "id": "overhead",
          "label": "Allocated shop overhead per year",
          "kind": "number"
        },
        {
          "id": "laborRate",
          "label": "Operator burdened labor rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rate",
          "label": "Machine hourly rate (fully burdened)"
        },
        {
          "id": "rateNoLabor",
          "label": "Machine-only rate (excl. labor)"
        },
        {
          "id": "annualCost",
          "label": "Total annual cost to own & run"
        },
        {
          "id": "depreciation",
          "label": "Annual depreciation"
        }
      ]
    },
    {
      "slug": "cnc-feeds-and-speeds",
      "url": "https://www.revenuelab.fyi/toolbox/cnc-feeds-and-speeds",
      "title": "CNC Feeds and Speeds Calculator",
      "category": "other",
      "summary": "Spindle RPM and feed rate from cutting speed, chip load, and tool diameter.",
      "formula": "RPM = (SFM × 3.82) ÷ Diameter (in). Feed Rate (ipm) = RPM × Flutes × Chip Load per tooth.",
      "inputs": [
        {
          "id": "sfm",
          "label": "Cutting speed (SFM)",
          "kind": "number"
        },
        {
          "id": "diameter",
          "label": "Tool diameter",
          "kind": "number"
        },
        {
          "id": "flutes",
          "label": "Number of flutes",
          "kind": "number"
        },
        {
          "id": "chipLoad",
          "label": "Chip load per tooth",
          "kind": "number"
        },
        {
          "id": "maxRpm",
          "label": "Machine max spindle RPM",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rpm",
          "label": "Spindle speed"
        },
        {
          "id": "feedRate",
          "label": "Feed rate"
        },
        {
          "id": "rpmRaw",
          "label": "Calculated RPM (uncapped)"
        },
        {
          "id": "capped",
          "label": "Limited by machine max RPM (1=yes)"
        }
      ]
    },
    {
      "slug": "chip-load-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/chip-load-calculator",
      "title": "Chip Load Calculator",
      "category": "other",
      "summary": "Back-calculate chip load per tooth from your actual feed rate and RPM.",
      "formula": "Chip Load per Tooth = Feed Rate (ipm) ÷ (RPM × Number of Flutes).",
      "inputs": [
        {
          "id": "feedRate",
          "label": "Feed rate",
          "kind": "number"
        },
        {
          "id": "rpm",
          "label": "Spindle speed",
          "kind": "number"
        },
        {
          "id": "flutes",
          "label": "Number of flutes",
          "kind": "number"
        },
        {
          "id": "recommended",
          "label": "Manufacturer-recommended chip load",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "chipLoad",
          "label": "Actual chip load per tooth"
        },
        {
          "id": "ratio",
          "label": "% of recommended chip load"
        },
        {
          "id": "deltaPct",
          "label": "Deviation from recommended"
        }
      ]
    },
    {
      "slug": "material-removal-rate",
      "url": "https://www.revenuelab.fyi/toolbox/material-removal-rate",
      "title": "Material Removal Rate (MRR) Calculator",
      "category": "other",
      "summary": "Cubic inches per minute removed — the real measure of roughing efficiency.",
      "formula": "MRR (in³/min) = Feed Rate (ipm) × Depth of Cut (in) × Width of Cut (in).",
      "inputs": [
        {
          "id": "feedRate",
          "label": "Feed rate",
          "kind": "number"
        },
        {
          "id": "depth",
          "label": "Depth of cut",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Width of cut (stepover)",
          "kind": "number"
        },
        {
          "id": "spindleHp",
          "label": "Available spindle power",
          "kind": "number"
        },
        {
          "id": "specificEnergy",
          "label": "Unit power for material",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "mrr",
          "label": "Material removal rate"
        },
        {
          "id": "requiredHp",
          "label": "Spindle power required"
        },
        {
          "id": "hpUtilization",
          "label": "% of available spindle power used"
        },
        {
          "id": "maxMrrAtFullPower",
          "label": "Max MRR at 100% spindle power"
        }
      ]
    },
    {
      "slug": "sheet-metal-bend-allowance",
      "url": "https://www.revenuelab.fyi/toolbox/sheet-metal-bend-allowance",
      "title": "Sheet Metal Bend Allowance Calculator",
      "category": "other",
      "summary": "Flat pattern length from bend angle, radius, thickness, and K-factor.",
      "formula": "Bend Allowance = Angle(rad) × (Radius + K-factor × Thickness). Flat Length = Flange 1 + Flange 2 + Bend Allowance − (2 × (Radius + Thickness)) for flange lengths measured to the bend tangent, or add BA directly to inside-edge flange lengths.",
      "inputs": [
        {
          "id": "angle",
          "label": "Bend angle",
          "kind": "number"
        },
        {
          "id": "radius",
          "label": "Inside bend radius",
          "kind": "number"
        },
        {
          "id": "thickness",
          "label": "Material thickness",
          "kind": "number"
        },
        {
          "id": "kFactor",
          "label": "K-factor",
          "kind": "number"
        },
        {
          "id": "flange1",
          "label": "Flange 1 length (to bend tangent)",
          "kind": "number"
        },
        {
          "id": "flange2",
          "label": "Flange 2 length (to bend tangent)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "bendAllowance",
          "label": "Bend allowance"
        },
        {
          "id": "setback",
          "label": "Bend setback"
        },
        {
          "id": "flatLength",
          "label": "Total flat pattern length"
        }
      ]
    },
    {
      "slug": "nesting-yield-scrap",
      "url": "https://www.revenuelab.fyi/toolbox/nesting-yield-scrap",
      "title": "Nesting Yield & Scrap Calculator",
      "category": "other",
      "summary": "Material utilization percentage and scrap cost from a sheet nest.",
      "formula": "Utilization % = (Parts × Part Area) ÷ Sheet Area. Scrap Cost = Sheet Cost × (1 − Utilization%). Cost per Part (material) = Sheet Cost ÷ Parts per Sheet.",
      "inputs": [
        {
          "id": "sheetLength",
          "label": "Sheet length",
          "kind": "number"
        },
        {
          "id": "sheetWidth",
          "label": "Sheet width",
          "kind": "number"
        },
        {
          "id": "partArea",
          "label": "Net area per part",
          "kind": "number"
        },
        {
          "id": "partsPerSheet",
          "label": "Parts nested per sheet",
          "kind": "number"
        },
        {
          "id": "sheetCost",
          "label": "Cost per sheet",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "utilization",
          "label": "Material utilization"
        },
        {
          "id": "scrapCost",
          "label": "Scrap cost per sheet"
        },
        {
          "id": "costPerPart",
          "label": "Material cost per part"
        },
        {
          "id": "sheetArea",
          "label": "Total sheet area"
        }
      ]
    },
    {
      "slug": "injection-mold-amortization",
      "url": "https://www.revenuelab.fyi/toolbox/injection-mold-amortization",
      "title": "Injection Mold Amortization Calculator",
      "category": "financial",
      "summary": "Spread mold tooling cost per part across expected production volume.",
      "formula": "Amortized Tooling Cost per Part = Tool Cost ÷ Amortization Volume. Piece Price = Material + Process Cost + Amortized Tooling + Margin.",
      "inputs": [
        {
          "id": "toolCost",
          "label": "Total mold/tool cost",
          "kind": "number"
        },
        {
          "id": "amortVolume",
          "label": "Amortization volume (parts)",
          "kind": "number"
        },
        {
          "id": "moldLifeShots",
          "label": "Expected mold life",
          "kind": "number"
        },
        {
          "id": "processCost",
          "label": "Material + process cost per part",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Target margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "piecePrice",
          "label": "Piece price (with margin)"
        },
        {
          "id": "perPartTooling",
          "label": "Amortized tooling cost per part"
        },
        {
          "id": "baseCost",
          "label": "Base cost per part (no margin)"
        },
        {
          "id": "willSurviveVolume",
          "label": "Mold rated to survive full volume (1=yes)"
        }
      ]
    },
    {
      "slug": "tooling-breakeven-quantity",
      "url": "https://www.revenuelab.fyi/toolbox/tooling-breakeven-quantity",
      "title": "Tooling Breakeven Quantity Calculator",
      "category": "financial",
      "summary": "How many units you need to sell before dedicated tooling pays for itself.",
      "formula": "Breakeven Units = Tooling Cost ÷ (Cost per Part Without Tooling − Cost per Part With Tooling).",
      "inputs": [
        {
          "id": "toolingCost",
          "label": "Dedicated tooling investment",
          "kind": "number"
        },
        {
          "id": "costWithout",
          "label": "Cost per part — current process",
          "kind": "number"
        },
        {
          "id": "costWith",
          "label": "Cost per part — with new tooling",
          "kind": "number"
        },
        {
          "id": "annualVolume",
          "label": "Expected annual volume",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakeven",
          "label": "Breakeven quantity"
        },
        {
          "id": "monthsToBreakeven",
          "label": "Months to breakeven at forecast volume"
        },
        {
          "id": "savingsPerPart",
          "label": "Savings per part with tooling"
        },
        {
          "id": "firstYearNet",
          "label": "Net savings in year one (after tooling cost)"
        }
      ]
    },
    {
      "slug": "3d-print-cost-filament",
      "url": "https://www.revenuelab.fyi/toolbox/3d-print-cost-filament",
      "title": "3D Print Cost Calculator (FDM Filament)",
      "category": "financial",
      "summary": "Filament, machine time, power, and labor cost per print.",
      "formula": "Material Cost = (Grams Used ÷ 1000) × Price per kg. Machine Cost = Print Hours × Machine Hourly Rate. Total = (Material + Machine + Labor) × (1 + Failure Rate) × (1 + Markup).",
      "inputs": [
        {
          "id": "grams",
          "label": "Filament used",
          "kind": "number"
        },
        {
          "id": "filamentPricePerKg",
          "label": "Filament price",
          "kind": "number"
        },
        {
          "id": "printHours",
          "label": "Print time",
          "kind": "number"
        },
        {
          "id": "machineRate",
          "label": "Machine hourly rate (depreciation+power)",
          "kind": "number"
        },
        {
          "id": "laborMin",
          "label": "Post-processing labor",
          "kind": "number"
        },
        {
          "id": "laborRate",
          "label": "Labor rate",
          "kind": "number"
        },
        {
          "id": "failureRate",
          "label": "Expected failure/scrap rate",
          "kind": "number"
        },
        {
          "id": "markup",
          "label": "Markup",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Suggested price"
        },
        {
          "id": "costWithFailure",
          "label": "Cost incl. failure rate buffer"
        },
        {
          "id": "rawCost",
          "label": "Raw cost (material+machine+labor)"
        },
        {
          "id": "material",
          "label": "Material cost only"
        }
      ]
    },
    {
      "slug": "3d-print-cost-resin",
      "url": "https://www.revenuelab.fyi/toolbox/3d-print-cost-resin",
      "title": "3D Print Cost Calculator (Resin/SLA)",
      "category": "financial",
      "summary": "Resin volume, wash/cure consumables, and machine cost per part.",
      "formula": "Material Cost = (mL Used ÷ 1000) × Price per L. Total = (Material + Consumables + Machine Time + Labor) × (1 + Markup).",
      "inputs": [
        {
          "id": "mlUsed",
          "label": "Resin used",
          "kind": "number"
        },
        {
          "id": "resinPricePerL",
          "label": "Resin price",
          "kind": "number"
        },
        {
          "id": "consumables",
          "label": "Wash/vat film consumables per print",
          "kind": "number"
        },
        {
          "id": "printHours",
          "label": "Print time",
          "kind": "number"
        },
        {
          "id": "machineRate",
          "label": "Machine hourly rate",
          "kind": "number"
        },
        {
          "id": "laborMin",
          "label": "Wash/cure/support labor",
          "kind": "number"
        },
        {
          "id": "laborRate",
          "label": "Labor rate",
          "kind": "number"
        },
        {
          "id": "markup",
          "label": "Markup",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Suggested price"
        },
        {
          "id": "rawCost",
          "label": "Total raw cost"
        },
        {
          "id": "material",
          "label": "Resin material cost"
        },
        {
          "id": "laborCost",
          "label": "Labor cost"
        }
      ]
    },
    {
      "slug": "3d-print-time-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/3d-print-time-estimate",
      "title": "3D Print Time Estimator",
      "category": "other",
      "summary": "Rough print duration from layer height, height, and print speed.",
      "formula": "Layers = Model Height ÷ Layer Height. Estimated Time = Layers × (Base Layer Time + Perimeter/Infill Time Factor).",
      "inputs": [
        {
          "id": "height",
          "label": "Model height",
          "kind": "number"
        },
        {
          "id": "layerHeight",
          "label": "Layer height",
          "kind": "number"
        },
        {
          "id": "avgLayerTime",
          "label": "Avg time per layer (print+overhead)",
          "kind": "number"
        },
        {
          "id": "firstLayerExtra",
          "label": "First-layer extra time",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "hours",
          "label": "Estimated print time"
        },
        {
          "id": "layers",
          "label": "Total layers"
        },
        {
          "id": "minutes",
          "label": "Estimated time (minutes)"
        }
      ]
    },
    {
      "slug": "laser-cutting-cost-per-minute",
      "url": "https://www.revenuelab.fyi/toolbox/laser-cutting-cost-per-minute",
      "title": "Laser Cutting Cost Calculator",
      "category": "financial",
      "summary": "Machine time, gas, and material cost per part for laser cutting jobs.",
      "formula": "Machine Cost = Cut Time (min) × Machine Rate ($/min). Gas Cost = Cut Time × Gas Flow Cost per Minute. Total = Machine Cost + Gas Cost + Material Cost per Part.",
      "inputs": [
        {
          "id": "cutMin",
          "label": "Estimated cut time",
          "kind": "number"
        },
        {
          "id": "machineRate",
          "label": "Machine rate",
          "kind": "number"
        },
        {
          "id": "gasRate",
          "label": "Assist gas cost",
          "kind": "number"
        },
        {
          "id": "materialCost",
          "label": "Material cost per part",
          "kind": "number"
        },
        {
          "id": "pierces",
          "label": "Number of pierces",
          "kind": "number"
        },
        {
          "id": "pierceSec",
          "label": "Time per pierce",
          "kind": "number"
        },
        {
          "id": "markup",
          "label": "Markup",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Suggested price per part"
        },
        {
          "id": "rawCost",
          "label": "Total cost per part"
        },
        {
          "id": "totalMin",
          "label": "Total machine minutes (cut+pierce)"
        },
        {
          "id": "machineCost",
          "label": "Machine time cost"
        }
      ]
    },
    {
      "slug": "powder-coat-finishing-cost",
      "url": "https://www.revenuelab.fyi/toolbox/powder-coat-finishing-cost",
      "title": "Powder Coat Finishing Cost Calculator",
      "category": "financial",
      "summary": "Powder usage, labor, and oven cost per part or per batch.",
      "formula": "Powder Weight (g) = Surface Area (in²) × Thickness (mil) × Density Factor ÷ Transfer Efficiency. Cost = Powder Cost + Labor + (Oven/Booth Overhead ÷ Batch Size).",
      "inputs": [
        {
          "id": "surfaceArea",
          "label": "Part surface area",
          "kind": "number"
        },
        {
          "id": "thicknessMil",
          "label": "Coating thickness",
          "kind": "number"
        },
        {
          "id": "transferEff",
          "label": "Transfer efficiency",
          "kind": "number"
        },
        {
          "id": "powderPricePerLb",
          "label": "Powder cost",
          "kind": "number"
        },
        {
          "id": "laborMin",
          "label": "Hang/mask/unhang labor",
          "kind": "number"
        },
        {
          "id": "laborRate",
          "label": "Labor rate",
          "kind": "number"
        },
        {
          "id": "batchOverhead",
          "label": "Oven/booth overhead per batch",
          "kind": "number"
        },
        {
          "id": "batchSize",
          "label": "Parts per batch",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Cost per part"
        },
        {
          "id": "powderCost",
          "label": "Powder cost per part"
        },
        {
          "id": "labor",
          "label": "Labor cost per part"
        },
        {
          "id": "overheadPerPart",
          "label": "Oven/booth overhead per part"
        }
      ]
    },
    {
      "slug": "weld-rod-consumption",
      "url": "https://www.revenuelab.fyi/toolbox/weld-rod-consumption",
      "title": "Weld Rod / Wire Consumption Calculator",
      "category": "other",
      "summary": "Estimate filler metal weight and cost needed for a weld job.",
      "formula": "Required Deposited Weight = Weld Length × Weight per Foot (by joint size). Filler Purchased = Deposited Weight ÷ Deposition Efficiency. Cost = Filler Purchased (lb) × Price per lb.",
      "inputs": [
        {
          "id": "weldLengthFt",
          "label": "Total weld length",
          "kind": "number"
        },
        {
          "id": "weightPerFt",
          "label": "Deposited weight per foot (by joint/leg size)",
          "kind": "number"
        },
        {
          "id": "process",
          "label": "Welding process",
          "kind": "select"
        },
        {
          "id": "pricePerLb",
          "label": "Filler metal price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "purchased",
          "label": "Filler metal needed (purchase weight)"
        },
        {
          "id": "cost",
          "label": "Estimated filler metal cost"
        },
        {
          "id": "deposited",
          "label": "Actual deposited weld metal weight"
        },
        {
          "id": "waste",
          "label": "Waste (spatter/stub/slag loss)"
        }
      ]
    },
    {
      "slug": "shop-labor-burden-rate",
      "url": "https://www.revenuelab.fyi/toolbox/shop-labor-burden-rate",
      "title": "Shop Labor Burden Rate Calculator",
      "category": "financial",
      "summary": "True cost per hour of an employee, beyond base wage.",
      "formula": "Fully Burdened Hourly Rate = (Annual Wage + Payroll Taxes + Workers Comp + Benefits + Other) ÷ Annual Paid/Working Hours. Burden % = (Total Burden ÷ Annual Wage) × 100.",
      "inputs": [
        {
          "id": "hourlyWage",
          "label": "Base hourly wage",
          "kind": "number"
        },
        {
          "id": "workHours",
          "label": "Scheduled hours per year",
          "kind": "number"
        },
        {
          "id": "ptoHours",
          "label": "Paid time off (vacation/holiday/sick)",
          "kind": "number"
        },
        {
          "id": "payrollTaxPct",
          "label": "Payroll taxes (FICA/FUTA/SUTA)",
          "kind": "number"
        },
        {
          "id": "workersComp",
          "label": "Workers' comp rate",
          "kind": "number"
        },
        {
          "id": "benefitsAnnual",
          "label": "Health + retirement benefits",
          "kind": "number"
        },
        {
          "id": "otherAnnual",
          "label": "Other (uniforms, training, etc.)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "fullyBurdenedRate",
          "label": "Fully burdened hourly rate"
        },
        {
          "id": "burdenPct",
          "label": "Burden as % of base wage"
        },
        {
          "id": "totalCost",
          "label": "Total annual cost to employ"
        },
        {
          "id": "totalBurden",
          "label": "Total annual burden (above wage)"
        }
      ]
    },
    {
      "slug": "job-shop-quote-markup",
      "url": "https://www.revenuelab.fyi/toolbox/job-shop-quote-markup",
      "title": "Job Shop Quote Markup Calculator",
      "category": "financial",
      "summary": "Build a customer quote from material, labor, machine time, and target margin.",
      "formula": "Fully Loaded Cost = (Material + Labor + Machine Time + Outside Processing) × (1 + Overhead %). Sell Price = Fully Loaded Cost ÷ (1 − Target Margin %). Markup % = (Sell Price − Cost) ÷ Cost.",
      "inputs": [
        {
          "id": "material",
          "label": "Material cost",
          "kind": "number"
        },
        {
          "id": "laborCost",
          "label": "Burdened labor cost",
          "kind": "number"
        },
        {
          "id": "machineCost",
          "label": "Machine time cost",
          "kind": "number"
        },
        {
          "id": "outsideProcessing",
          "label": "Outside processing (plating, heat treat)",
          "kind": "number"
        },
        {
          "id": "overheadPct",
          "label": "Shop overhead",
          "kind": "number"
        },
        {
          "id": "targetMargin",
          "label": "Target gross margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "sellPrice",
          "label": "Quote price"
        },
        {
          "id": "fullyLoaded",
          "label": "Fully loaded cost"
        },
        {
          "id": "markupPct",
          "label": "Equivalent markup %"
        },
        {
          "id": "profit",
          "label": "Gross profit per job"
        }
      ]
    },
    {
      "slug": "moq-negotiation-impact",
      "url": "https://www.revenuelab.fyi/toolbox/moq-negotiation-impact",
      "title": "MOQ Negotiation Impact Calculator",
      "category": "financial",
      "summary": "See how changing order quantity shifts unit price, cash tied up, and total cost.",
      "formula": "Unit Price at Quantity = Variable Cost per Unit + (Setup Cost ÷ Quantity). Excess Inventory = Order Quantity − Near-term Need.",
      "inputs": [
        {
          "id": "variableCost",
          "label": "Variable cost per unit",
          "kind": "number"
        },
        {
          "id": "setupCost",
          "label": "Supplier setup/tooling cost per run",
          "kind": "number"
        },
        {
          "id": "moqQty",
          "label": "Supplier's MOQ",
          "kind": "number"
        },
        {
          "id": "desiredQty",
          "label": "Quantity you actually need soon",
          "kind": "number"
        },
        {
          "id": "holdingCostPct",
          "label": "Annual inventory holding cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "unitPriceAtMoq",
          "label": "Unit price at MOQ"
        },
        {
          "id": "unitPriceAtDesired",
          "label": "Unit price at your desired qty"
        },
        {
          "id": "excessUnits",
          "label": "Excess units beyond near-term need"
        },
        {
          "id": "annualHoldingCost",
          "label": "Annual holding cost on excess inventory"
        },
        {
          "id": "savingsPerUnit",
          "label": "Unit price savings by ordering to MOQ"
        }
      ]
    },
    {
      "slug": "scrap-rework-cost",
      "url": "https://www.revenuelab.fyi/toolbox/scrap-rework-cost",
      "title": "Scrap & Rework Cost Calculator",
      "category": "financial",
      "summary": "The real dollar impact of a scrap rate or rework rate on a production run.",
      "formula": "Effective Units Needed = Order Qty ÷ (1 − Scrap Rate). True Cost per Good Part = (Total Units Made × Part Cost + Reworked Units × Rework Cost) ÷ Good Units Shipped.",
      "inputs": [
        {
          "id": "orderQty",
          "label": "Order quantity (good parts needed)",
          "kind": "number"
        },
        {
          "id": "partCost",
          "label": "Base cost per part",
          "kind": "number"
        },
        {
          "id": "scrapRate",
          "label": "Outright scrap rate",
          "kind": "number"
        },
        {
          "id": "reworkRate",
          "label": "Rework rate (fixable defects)",
          "kind": "number"
        },
        {
          "id": "reworkCost",
          "label": "Cost to rework one part",
          "kind": "number"
        },
        {
          "id": "reworkSuccessRate",
          "label": "Rework success rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "trueCostPerGoodPart",
          "label": "True cost per good part shipped"
        },
        {
          "id": "unitsToMake",
          "label": "Units to start in production"
        },
        {
          "id": "totalCost",
          "label": "Total production cost"
        },
        {
          "id": "scrapCostTotal",
          "label": "Total cost lost to outright scrap"
        }
      ]
    },
    {
      "slug": "capacity-vs-shifts",
      "url": "https://www.revenuelab.fyi/toolbox/capacity-vs-shifts",
      "title": "Capacity vs. Shifts Calculator",
      "category": "other",
      "summary": "How many shifts you need to hit a volume target, and the capacity headroom you'd have.",
      "formula": "Total Capacity = Units per Hour × Net Hours per Shift × Shifts per Day × Days per Period. Utilization = Demand ÷ Total Capacity.",
      "inputs": [
        {
          "id": "unitsPerHour",
          "label": "Units produced per hour (one line)",
          "kind": "number"
        },
        {
          "id": "netHoursShift",
          "label": "Net productive hours per shift",
          "kind": "number"
        },
        {
          "id": "shiftsPerDay",
          "label": "Shifts per day",
          "kind": "number"
        },
        {
          "id": "daysPerMonth",
          "label": "Production days per month",
          "kind": "number"
        },
        {
          "id": "demandMonthly",
          "label": "Required monthly volume",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "utilization",
          "label": "Capacity utilization"
        },
        {
          "id": "capacityMonthly",
          "label": "Total monthly capacity"
        },
        {
          "id": "headroomUnits",
          "label": "Headroom (units)"
        },
        {
          "id": "shiftsNeeded",
          "label": "Minimum shifts needed for this demand"
        }
      ]
    },
    {
      "slug": "preventive-maintenance-vs-downtime",
      "url": "https://www.revenuelab.fyi/toolbox/preventive-maintenance-vs-downtime",
      "title": "Preventive Maintenance vs. Downtime Cost Calculator",
      "category": "financial",
      "summary": "Compare the cost of a PM program against the expected cost of unplanned downtime.",
      "formula": "Expected Annual Breakdown Cost = Failures per Year × (Repair Cost + Downtime Hours × Downtime Cost per Hour). Net PM Benefit = Baseline Breakdown Cost − (PM Program Cost + Reduced Breakdown Cost).",
      "inputs": [
        {
          "id": "failuresNoPM",
          "label": "Unplanned failures per year (no PM)",
          "kind": "number"
        },
        {
          "id": "repairCost",
          "label": "Average repair cost per failure",
          "kind": "number"
        },
        {
          "id": "downtimeHours",
          "label": "Average downtime per failure",
          "kind": "number"
        },
        {
          "id": "downtimeCostHr",
          "label": "Cost of downtime per hour (lost production+repair)",
          "kind": "number"
        },
        {
          "id": "pmProgramCost",
          "label": "Annual PM program cost",
          "kind": "number"
        },
        {
          "id": "failureReduction",
          "label": "Failure reduction from PM program",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netBenefit",
          "label": "Net annual benefit of PM program"
        },
        {
          "id": "baselineAnnualCost",
          "label": "Expected annual cost without PM"
        },
        {
          "id": "totalCostWithPM",
          "label": "Total annual cost with PM program"
        },
        {
          "id": "remainingBreakdownCost",
          "label": "Residual breakdown cost even with PM"
        }
      ]
    },
    {
      "slug": "spare-parts-stocking",
      "url": "https://www.revenuelab.fyi/toolbox/spare-parts-stocking",
      "title": "Spare Parts Stocking Calculator",
      "category": "financial",
      "summary": "Reorder point and safety stock for critical spare parts inventory.",
      "formula": "Reorder Point = (Average Usage per Week × Lead Time in Weeks) + Safety Stock. Safety Stock = Z-score × Usage Std Dev × sqrt(Lead Time).",
      "inputs": [
        {
          "id": "avgUsageWeek",
          "label": "Average usage per week",
          "kind": "number"
        },
        {
          "id": "usageStdDev",
          "label": "Usage variability (std dev per week)",
          "kind": "number"
        },
        {
          "id": "leadTimeWeeks",
          "label": "Supplier lead time",
          "kind": "number"
        },
        {
          "id": "serviceLevel",
          "label": "Desired service level",
          "kind": "select"
        },
        {
          "id": "unitCost",
          "label": "Cost per unit",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "reorderPointUnits",
          "label": "Reorder point (units on hand)"
        },
        {
          "id": "safetyStock",
          "label": "Recommended safety stock"
        },
        {
          "id": "reorderPoint",
          "label": "Exact reorder point"
        },
        {
          "id": "safetyStockValue",
          "label": "Capital tied up in safety stock"
        }
      ]
    },
    {
      "slug": "compressed-air-cost",
      "url": "https://www.revenuelab.fyi/toolbox/compressed-air-cost",
      "title": "Compressed Air Cost Calculator",
      "category": "financial",
      "summary": "Electricity cost of running a compressor, and the cost of leaks.",
      "formula": "Annual Compressor Cost = HP × 0.746 kW/HP × Load Factor × Run Hours × Electricity Rate ÷ Motor Efficiency. Leak Cost = Estimated Leak % × Annual Compressor Cost.",
      "inputs": [
        {
          "id": "hp",
          "label": "Compressor motor size",
          "kind": "number"
        },
        {
          "id": "loadFactor",
          "label": "Average load factor",
          "kind": "number"
        },
        {
          "id": "runHours",
          "label": "Run hours per year",
          "kind": "number"
        },
        {
          "id": "electricityRate",
          "label": "Electricity rate",
          "kind": "number"
        },
        {
          "id": "motorEff",
          "label": "Motor efficiency",
          "kind": "number"
        },
        {
          "id": "leakPct",
          "label": "Estimated system leak rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualCost",
          "label": "Annual electricity cost to run compressor"
        },
        {
          "id": "leakCost",
          "label": "Estimated annual cost of leaks"
        },
        {
          "id": "potentialSavings",
          "label": "Potential savings from leak repair program"
        },
        {
          "id": "kw",
          "label": "Average power draw"
        }
      ]
    },
    {
      "slug": "kanban-card-count",
      "url": "https://www.revenuelab.fyi/toolbox/kanban-card-count",
      "title": "Kanban Card Count Calculator",
      "category": "other",
      "summary": "How many kanban cards or bins you need to run a pull system without stockouts.",
      "formula": "Cards Needed = ROUNDUP((Daily Demand × Lead Time in Days × (1 + Safety Factor)) ÷ Container Quantity).",
      "inputs": [
        {
          "id": "dailyDemand",
          "label": "Average daily demand",
          "kind": "number"
        },
        {
          "id": "leadTimeDays",
          "label": "Full replenishment lead time",
          "kind": "number"
        },
        {
          "id": "safetyFactor",
          "label": "Safety factor (buffer for variability)",
          "kind": "number"
        },
        {
          "id": "containerQty",
          "label": "Units per container/bin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cardsNeeded",
          "label": "Kanban cards / bins needed"
        },
        {
          "id": "totalUnitsInLoop",
          "label": "Total units circulating in the loop"
        },
        {
          "id": "daysOfCoverage",
          "label": "Days of demand coverage"
        },
        {
          "id": "pipelineQty",
          "label": "Exact pipeline quantity (before rounding)"
        }
      ]
    },
    {
      "slug": "daycare-vs-stayhome-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/daycare-vs-stayhome-breakeven",
      "title": "Daycare vs. Stay-at-Home Breakeven Calculator",
      "category": "financial",
      "summary": "Find the take-home pay level where working and staying home cost the same.",
      "formula": "Net work value = salary − taxes − daycare − commute − work costs; breakeven salary = (daycare + commute + work costs + replacement value) ÷ (1 − effective tax rate).",
      "inputs": [
        {
          "id": "salary",
          "label": "Gross monthly salary",
          "kind": "number"
        },
        {
          "id": "taxRate",
          "label": "Effective tax + payroll rate",
          "kind": "number"
        },
        {
          "id": "daycare",
          "label": "Daycare/nanny cost per month",
          "kind": "number"
        },
        {
          "id": "commute",
          "label": "Commuting cost per month",
          "kind": "number"
        },
        {
          "id": "workCosts",
          "label": "Work clothes, meals, misc per month",
          "kind": "number"
        },
        {
          "id": "replacementValue",
          "label": "Value of unpaid work replaced",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "trueGain",
          "label": "True monthly gain from working"
        },
        {
          "id": "netPay",
          "label": "Net take-home pay"
        },
        {
          "id": "costs",
          "label": "Total work-related costs"
        },
        {
          "id": "netGain",
          "label": "Gain before replacement value"
        },
        {
          "id": "breakevenSalary",
          "label": "Gross salary needed to break even"
        }
      ]
    },
    {
      "slug": "nanny-total-cost",
      "url": "https://www.revenuelab.fyi/toolbox/nanny-total-cost",
      "title": "Nanny Total Cost Calculator (with Payroll Taxes)",
      "category": "financial",
      "summary": "True monthly cost of a nanny including employer payroll taxes.",
      "formula": "Weekly wage = (regular hours × rate) + (OT hours × rate × 1.5); employer tax = wage × (7.65% + FUTA/SUTA rate); monthly cost = (weekly wage + employer tax) × 4.33.",
      "inputs": [
        {
          "id": "rate",
          "label": "Hourly rate",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Regular hours per week",
          "kind": "number"
        },
        {
          "id": "otHours",
          "label": "Overtime hours per week",
          "kind": "number"
        },
        {
          "id": "employerTaxRate",
          "label": "Employer payroll tax rate (FICA + FUTA/SUTA)",
          "kind": "number"
        },
        {
          "id": "weeksYear",
          "label": "Weeks worked per year",
          "kind": "number"
        },
        {
          "id": "benefits",
          "label": "Other benefits per month (health stipend, PTO accrual)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthlyCost",
          "label": "Total monthly cost"
        },
        {
          "id": "annualCost",
          "label": "Total annual cost"
        },
        {
          "id": "weeklyWage",
          "label": "Weekly gross wage"
        },
        {
          "id": "weeklyTax",
          "label": "Weekly employer tax"
        },
        {
          "id": "annualTax",
          "label": "Annual employer tax"
        }
      ]
    },
    {
      "slug": "nanny-share-split",
      "url": "https://www.revenuelab.fyi/toolbox/nanny-share-split",
      "title": "Nanny Share Split Calculator",
      "category": "financial",
      "summary": "Fair per-family cost when two households share one nanny.",
      "formula": "Per-family base = total wage × base share ÷ number of families; per-child add-on = remaining pool ÷ total children; family total = base + (add-on × that family's kids), scaled by hours share if hours differ.",
      "inputs": [
        {
          "id": "totalWage",
          "label": "Nanny's total weekly wage",
          "kind": "number"
        },
        {
          "id": "families",
          "label": "Number of families",
          "kind": "number"
        },
        {
          "id": "childrenA",
          "label": "Children — Family A",
          "kind": "number"
        },
        {
          "id": "childrenB",
          "label": "Children — Family B",
          "kind": "number"
        },
        {
          "id": "hoursA",
          "label": "Hours per week — Family A",
          "kind": "number"
        },
        {
          "id": "hoursB",
          "label": "Hours per week — Family B",
          "kind": "number"
        },
        {
          "id": "baseShare",
          "label": "Share of cost that's a flat per-family base",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "familyA",
          "label": "Family A weekly share"
        },
        {
          "id": "familyB",
          "label": "Family B weekly share"
        },
        {
          "id": "perFamilyBase",
          "label": "Flat base per family"
        },
        {
          "id": "addonPerKid",
          "label": "Add-on per child"
        },
        {
          "id": "total",
          "label": "Total weekly wage"
        }
      ]
    },
    {
      "slug": "babysitter-rate",
      "url": "https://www.revenuelab.fyi/toolbox/babysitter-rate",
      "title": "Babysitter Rate Calculator",
      "category": "financial",
      "summary": "Fair hourly rate based on kids, age, and time of day.",
      "formula": "Rate = base + (extra kids × per-kid add-on) + (late-night premium if applicable) + (holiday premium if applicable); total = rate × hours.",
      "inputs": [
        {
          "id": "base",
          "label": "Base hourly rate",
          "kind": "number"
        },
        {
          "id": "kids",
          "label": "Number of kids",
          "kind": "number"
        },
        {
          "id": "perKid",
          "label": "Add-on per extra kid",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Hours needed",
          "kind": "number"
        },
        {
          "id": "lateNight",
          "label": "After 10pm or overnight?",
          "kind": "select"
        },
        {
          "id": "holiday",
          "label": "Holiday or New Year's Eve?",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "rate",
          "label": "Recommended hourly rate"
        },
        {
          "id": "total",
          "label": "Total for the booking"
        },
        {
          "id": "extraKidFee",
          "label": "Extra-kid add-on per hour"
        },
        {
          "id": "hours",
          "label": "Hours booked"
        }
      ]
    },
    {
      "slug": "529-savings-target",
      "url": "https://www.revenuelab.fyi/toolbox/529-savings-target",
      "title": "529 College Savings Target Calculator",
      "category": "financial",
      "summary": "Monthly contribution needed to hit a college savings goal.",
      "formula": "Future cost = today's cost × (1 + college inflation)^years; future value of current balance = balance × (1 + return)^years; monthly contribution solves FV(annuity) = target − grown balance.",
      "inputs": [
        {
          "id": "currentCost",
          "label": "Today's annual cost (4-year total ÷ 4)",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years until college starts",
          "kind": "number"
        },
        {
          "id": "yearsInCollege",
          "label": "Years of college to fund",
          "kind": "number"
        },
        {
          "id": "currentBalance",
          "label": "Current 529 balance",
          "kind": "number"
        },
        {
          "id": "inflation",
          "label": "College cost inflation rate",
          "kind": "number"
        },
        {
          "id": "returnRate",
          "label": "Expected annual investment return",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthlyContribution",
          "label": "Monthly contribution needed"
        },
        {
          "id": "totalTarget",
          "label": "Projected total cost"
        },
        {
          "id": "futureCostPerYear",
          "label": "Projected cost per year"
        },
        {
          "id": "grownBalance",
          "label": "Current balance grown by then"
        },
        {
          "id": "gap",
          "label": "Remaining gap to fund"
        }
      ]
    },
    {
      "slug": "cost-of-raising-a-child",
      "url": "https://www.revenuelab.fyi/toolbox/cost-of-raising-a-child",
      "title": "Cost of Raising a Child to 18 Calculator",
      "category": "financial",
      "summary": "Estimate total spending from birth through age 18.",
      "formula": "Annual cost = sum of monthly category costs × 12; total to 18 = sum of annual costs adjusted for inflation each year, compounded.",
      "inputs": [
        {
          "id": "housing",
          "label": "Housing share attributable to child, per month",
          "kind": "number"
        },
        {
          "id": "food",
          "label": "Food per month",
          "kind": "number"
        },
        {
          "id": "childcare",
          "label": "Childcare/education per month",
          "kind": "number"
        },
        {
          "id": "clothing",
          "label": "Clothing per month",
          "kind": "number"
        },
        {
          "id": "healthcare",
          "label": "Health care per month",
          "kind": "number"
        },
        {
          "id": "misc",
          "label": "Transportation, activities, misc per month",
          "kind": "number"
        },
        {
          "id": "inflation",
          "label": "Annual cost growth rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total cost to age 18"
        },
        {
          "id": "annualBase",
          "label": "First-year cost"
        },
        {
          "id": "monthly",
          "label": "Current monthly cost"
        },
        {
          "id": "perYearAvg",
          "label": "Average annual cost over 18 years"
        },
        {
          "id": "totalNoInflation",
          "label": "Total without inflation adjustment"
        }
      ]
    },
    {
      "slug": "child-tax-credit-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/child-tax-credit-estimate",
      "title": "Child Tax Credit Estimate Calculator",
      "category": "financial",
      "summary": "Estimate your Child Tax Credit based on income and number of kids.",
      "formula": "Credit before phaseout = $2,000 × qualifying children; phaseout = $50 per $1,000 over threshold; final credit = max(0, credit − phaseout).",
      "inputs": [
        {
          "id": "children",
          "label": "Qualifying children under 17",
          "kind": "number"
        },
        {
          "id": "agi",
          "label": "Modified adjusted gross income",
          "kind": "number"
        },
        {
          "id": "filingStatus",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "taxLiability",
          "label": "Tax owed before credits",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "finalCredit",
          "label": "Estimated total credit"
        },
        {
          "id": "baseCredit",
          "label": "Credit before phaseout"
        },
        {
          "id": "phaseout",
          "label": "Phaseout reduction"
        },
        {
          "id": "refundablePortion",
          "label": "Max refundable portion"
        },
        {
          "id": "appliedToTax",
          "label": "Amount applied to tax owed"
        }
      ]
    },
    {
      "slug": "dependent-care-fsa-savings",
      "url": "https://www.revenuelab.fyi/toolbox/dependent-care-fsa-savings",
      "title": "Dependent Care FSA Savings Calculator",
      "category": "financial",
      "summary": "Compare pre-tax FSA savings against the Child and Dependent Care Credit.",
      "formula": "FSA savings = FSA contribution × (marginal tax rate + 7.65% FICA); credit alternative = min(eligible expenses, credit cap) × credit rate.",
      "inputs": [
        {
          "id": "fsaAmount",
          "label": "Dependent Care FSA contribution",
          "kind": "number"
        },
        {
          "id": "marginalRate",
          "label": "Marginal federal + state tax rate",
          "kind": "number"
        },
        {
          "id": "children",
          "label": "Children needing care",
          "kind": "number"
        },
        {
          "id": "creditRate",
          "label": "Dependent care credit rate (income-based)",
          "kind": "number"
        },
        {
          "id": "totalExpenses",
          "label": "Total annual care expenses",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalWithFsa",
          "label": "Total benefit using FSA + remaining credit"
        },
        {
          "id": "totalWithoutFsa",
          "label": "Benefit using only the tax credit"
        },
        {
          "id": "fsaSavings",
          "label": "FSA tax savings alone"
        },
        {
          "id": "creditValue",
          "label": "Credit on remaining expenses"
        }
      ]
    },
    {
      "slug": "birth-hospital-cost-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/birth-hospital-cost-estimate",
      "title": "Birth Hospital Cost Estimate Calculator",
      "category": "financial",
      "summary": "Estimate your out-of-pocket cost for delivery based on insurance.",
      "formula": "Deductible owed = min(remaining deductible, allowed cost); coinsurance owed = (allowed cost − deductible portion) × coinsurance rate; total owed = min(deductible + coinsurance, remaining out-of-pocket max).",
      "inputs": [
        {
          "id": "allowedCost",
          "label": "Insurance-negotiated allowed cost",
          "kind": "number"
        },
        {
          "id": "deductibleRemaining",
          "label": "Remaining deductible before delivery",
          "kind": "number"
        },
        {
          "id": "coinsurance",
          "label": "Coinsurance rate after deductible",
          "kind": "number"
        },
        {
          "id": "oopMaxRemaining",
          "label": "Remaining out-of-pocket max",
          "kind": "number"
        },
        {
          "id": "newbornCost",
          "label": "Estimated separate newborn charges",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalOwed",
          "label": "Estimated total you'll owe"
        },
        {
          "id": "deliveryOwed",
          "label": "Delivery claim owed"
        },
        {
          "id": "deductible",
          "label": "Deductible portion"
        },
        {
          "id": "coinsuranceOwed",
          "label": "Coinsurance portion"
        },
        {
          "id": "newbornOwed",
          "label": "Newborn claim owed"
        }
      ]
    },
    {
      "slug": "parental-leave-income-gap",
      "url": "https://www.revenuelab.fyi/toolbox/parental-leave-income-gap",
      "title": "Parental Leave Income Gap Calculator",
      "category": "financial",
      "summary": "See the income shortfall during unpaid or partially paid leave.",
      "formula": "Gap = normal weekly pay × total leave weeks − (employer-paid weeks × normal pay) − (state-paid weeks × normal pay × replacement rate).",
      "inputs": [
        {
          "id": "weeklyPay",
          "label": "Normal weekly take-home pay",
          "kind": "number"
        },
        {
          "id": "totalWeeks",
          "label": "Total weeks of leave planned",
          "kind": "number"
        },
        {
          "id": "employerPaidWeeks",
          "label": "Weeks fully paid by employer",
          "kind": "number"
        },
        {
          "id": "stateWeeks",
          "label": "Weeks covered by state paid leave",
          "kind": "number"
        },
        {
          "id": "stateReplacement",
          "label": "State program wage replacement rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "gap",
          "label": "Total income gap to cover"
        },
        {
          "id": "normalTotal",
          "label": "Normal pay for the full leave"
        },
        {
          "id": "actualPay",
          "label": "Actual pay received during leave"
        },
        {
          "id": "unpaidWeeks",
          "label": "Fully unpaid weeks"
        },
        {
          "id": "statePay",
          "label": "Pay from state program"
        }
      ]
    },
    {
      "slug": "formula-vs-breastfeeding-cost",
      "url": "https://www.revenuelab.fyi/toolbox/formula-vs-breastfeeding-cost",
      "title": "Formula vs. Breastfeeding Cost Calculator",
      "category": "financial",
      "summary": "Compare first-year feeding costs between formula and pumping.",
      "formula": "Formula annual cost = daily oz × price per oz × 365; pumping annual cost = pump + accessories + bags/month × 12 + extra calories cost.",
      "inputs": [
        {
          "id": "dailyOz",
          "label": "Average daily formula ounces (by month 6+)",
          "kind": "number"
        },
        {
          "id": "pricePerOz",
          "label": "Formula price per ounce mixed",
          "kind": "number"
        },
        {
          "id": "pumpCost",
          "label": "Breast pump + initial accessories",
          "kind": "number"
        },
        {
          "id": "bagsMonth",
          "label": "Storage bags/bottles cost per month",
          "kind": "number"
        },
        {
          "id": "extraCalories",
          "label": "Extra food cost per month (lactation)",
          "kind": "number"
        },
        {
          "id": "lactationConsult",
          "label": "Lactation consultant visits total",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "savings",
          "label": "Amount pumping saves vs. formula (year 1)"
        },
        {
          "id": "formulaAnnual",
          "label": "Formula cost — year 1"
        },
        {
          "id": "pumpingAnnual",
          "label": "Pumping cost — year 1"
        },
        {
          "id": "formulaMonthly",
          "label": "Formula cost per month"
        },
        {
          "id": "pumpingMonthly",
          "label": "Pumping cost per month"
        }
      ]
    },
    {
      "slug": "diaper-cost-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/diaper-cost-calculator",
      "title": "Diaper Cost Calculator",
      "category": "financial",
      "summary": "Estimate total diapering cost from birth to potty training.",
      "formula": "Stage cost = daily diapers × cost per diaper × days in stage; total = sum of stage costs + wipes cost over the full period.",
      "inputs": [
        {
          "id": "newbornMonths",
          "label": "Newborn stage length",
          "kind": "number"
        },
        {
          "id": "newbornDaily",
          "label": "Newborn diapers/day",
          "kind": "number"
        },
        {
          "id": "infantMonths",
          "label": "Infant stage length",
          "kind": "number"
        },
        {
          "id": "infantDaily",
          "label": "Infant diapers/day",
          "kind": "number"
        },
        {
          "id": "toddlerMonths",
          "label": "Toddler stage length (to potty training)",
          "kind": "number"
        },
        {
          "id": "toddlerDaily",
          "label": "Toddler diapers/day",
          "kind": "number"
        },
        {
          "id": "costPerDiaper",
          "label": "Average cost per diaper",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "grandTotal",
          "label": "Total diapering cost (incl. wipes)"
        },
        {
          "id": "diaperTotal",
          "label": "Diapers only"
        },
        {
          "id": "wipesCost",
          "label": "Wipes total"
        },
        {
          "id": "avgMonthly",
          "label": "Average cost per month"
        },
        {
          "id": "totalMonths",
          "label": "Total months diapering"
        }
      ]
    },
    {
      "slug": "kid-allowance-chore-ledger",
      "url": "https://www.revenuelab.fyi/toolbox/kid-allowance-chore-ledger",
      "title": "Kid Allowance & Chore Ledger Calculator",
      "category": "financial",
      "summary": "Turn chores done and skipped into a weekly allowance payout.",
      "formula": "Payout = base allowance − (missed required chores × deduction per chore) + (bonus chores completed × bonus rate), floored at zero.",
      "inputs": [
        {
          "id": "age",
          "label": "Child's age",
          "kind": "number"
        },
        {
          "id": "baseAllowance",
          "label": "Weekly base allowance",
          "kind": "number"
        },
        {
          "id": "requiredChores",
          "label": "Required chores this week",
          "kind": "number"
        },
        {
          "id": "choresMissed",
          "label": "Required chores missed",
          "kind": "number"
        },
        {
          "id": "deductionPerChore",
          "label": "Deduction per missed chore",
          "kind": "number"
        },
        {
          "id": "bonusChores",
          "label": "Extra/bonus chores completed",
          "kind": "number"
        },
        {
          "id": "bonusRate",
          "label": "Pay per bonus chore",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "payout",
          "label": "This week's payout"
        },
        {
          "id": "deduction",
          "label": "Total deductions"
        },
        {
          "id": "bonus",
          "label": "Total bonus earned"
        },
        {
          "id": "annualEstimate",
          "label": "Annualized at this rate"
        }
      ]
    },
    {
      "slug": "summer-camp-budget",
      "url": "https://www.revenuelab.fyi/toolbox/summer-camp-budget",
      "title": "Summer Camp Budget Calculator",
      "category": "financial",
      "summary": "Plan total summer camp cost across weeks, kids, and camp types.",
      "formula": "Total = (weeks × avg weekly cost + registration fees + extended care) × number of kids − sibling/multi-week discount.",
      "inputs": [
        {
          "id": "weeks",
          "label": "Weeks of camp needed",
          "kind": "number"
        },
        {
          "id": "avgWeeklyCost",
          "label": "Average cost per week",
          "kind": "number"
        },
        {
          "id": "registrationFees",
          "label": "One-time registration fees total",
          "kind": "number"
        },
        {
          "id": "extendedCareWeekly",
          "label": "Extended care add-on per week",
          "kind": "number"
        },
        {
          "id": "kids",
          "label": "Number of kids attending",
          "kind": "number"
        },
        {
          "id": "discountPct",
          "label": "Sibling/early-bird discount",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total summer cost"
        },
        {
          "id": "perKid",
          "label": "Cost per kid"
        },
        {
          "id": "discount",
          "label": "Discount applied"
        },
        {
          "id": "weeklyAvgAllKids",
          "label": "Average weekly cost, all kids"
        }
      ]
    },
    {
      "slug": "youth-sports-season-cost",
      "url": "https://www.revenuelab.fyi/toolbox/youth-sports-season-cost",
      "title": "Youth Sports Season Cost Calculator",
      "category": "financial",
      "summary": "Total cost of a season including gear, travel, and fees.",
      "formula": "Total = registration + gear + (travel trips × (mileage cost + hotel nights × rate)) + private coaching; cost per game = total ÷ games in season.",
      "inputs": [
        {
          "id": "registration",
          "label": "League/club registration fee",
          "kind": "number"
        },
        {
          "id": "gear",
          "label": "Gear and uniform cost this season",
          "kind": "number"
        },
        {
          "id": "travelTrips",
          "label": "Away tournaments/games requiring travel",
          "kind": "number"
        },
        {
          "id": "milesPerTrip",
          "label": "Round-trip miles per travel trip",
          "kind": "number"
        },
        {
          "id": "hotelNightsPerTrip",
          "label": "Hotel nights per trip",
          "kind": "number"
        },
        {
          "id": "hotelRate",
          "label": "Hotel cost per night",
          "kind": "number"
        },
        {
          "id": "privateCoaching",
          "label": "Private coaching/camps total",
          "kind": "number"
        },
        {
          "id": "gamesInSeason",
          "label": "Total games in season",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total season cost"
        },
        {
          "id": "travelTotal",
          "label": "Travel cost total"
        },
        {
          "id": "perGame",
          "label": "Cost per game"
        },
        {
          "id": "mileageCostPerTrip",
          "label": "Mileage cost per trip"
        },
        {
          "id": "hotelCostPerTrip",
          "label": "Hotel cost per trip"
        }
      ]
    },
    {
      "slug": "braces-payment-plan",
      "url": "https://www.revenuelab.fyi/toolbox/braces-payment-plan",
      "title": "Braces Payment Plan Calculator",
      "category": "financial",
      "summary": "Monthly payment for braces after insurance and down payment.",
      "formula": "Amount financed = total cost − insurance benefit − down payment; monthly payment = amount financed ÷ treatment months.",
      "inputs": [
        {
          "id": "totalCost",
          "label": "Total treatment cost quoted",
          "kind": "number"
        },
        {
          "id": "insuranceBenefit",
          "label": "Insurance lifetime ortho benefit",
          "kind": "number"
        },
        {
          "id": "downPayment",
          "label": "Down payment",
          "kind": "number"
        },
        {
          "id": "treatmentMonths",
          "label": "Treatment length",
          "kind": "number"
        },
        {
          "id": "interestRate",
          "label": "Financing interest rate (0 if in-house)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthlyPayment",
          "label": "Monthly payment"
        },
        {
          "id": "financed",
          "label": "Amount financed"
        },
        {
          "id": "totalPaid",
          "label": "Total paid over treatment"
        },
        {
          "id": "totalInterest",
          "label": "Total interest (if financed)"
        }
      ]
    },
    {
      "slug": "tutoring-roi",
      "url": "https://www.revenuelab.fyi/toolbox/tutoring-roi",
      "title": "Tutoring ROI Calculator",
      "category": "financial",
      "summary": "Estimate cost per point/grade improvement from tutoring.",
      "formula": "Total cost = sessions × rate per session; cost per improvement point = total cost ÷ target point gain.",
      "inputs": [
        {
          "id": "ratePerSession",
          "label": "Rate per session",
          "kind": "number"
        },
        {
          "id": "sessionsPerWeek",
          "label": "Sessions per week",
          "kind": "number"
        },
        {
          "id": "weeks",
          "label": "Number of weeks",
          "kind": "number"
        },
        {
          "id": "goalType",
          "label": "Improvement goal type",
          "kind": "select"
        },
        {
          "id": "targetGain",
          "label": "Target improvement (points/grade)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalCost",
          "label": "Total tutoring investment"
        },
        {
          "id": "costPerPoint",
          "label": "Cost per point/grade of improvement"
        },
        {
          "id": "sessions",
          "label": "Total sessions"
        },
        {
          "id": "monthlyEquivalent",
          "label": "Monthly cost equivalent"
        }
      ]
    },
    {
      "slug": "college-savings-vs-loans",
      "url": "https://www.revenuelab.fyi/toolbox/college-savings-vs-loans",
      "title": "College Savings vs. Loans Calculator",
      "category": "financial",
      "summary": "Compare the cost of saving in advance versus borrowing later.",
      "formula": "Savings path total cost = sum of monthly contributions (opportunity cost, not gain); loan path total cost = principal + total interest over repayment term.",
      "inputs": [
        {
          "id": "targetAmount",
          "label": "College cost to cover",
          "kind": "number"
        },
        {
          "id": "yearsToSave",
          "label": "Years available to save before needed",
          "kind": "number"
        },
        {
          "id": "savingsReturn",
          "label": "Expected investment return while saving",
          "kind": "number"
        },
        {
          "id": "loanRate",
          "label": "Student loan interest rate",
          "kind": "number"
        },
        {
          "id": "loanTermYears",
          "label": "Loan repayment term",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "difference",
          "label": "Extra cost of borrowing vs. saving"
        },
        {
          "id": "monthlyContribution",
          "label": "Monthly savings needed"
        },
        {
          "id": "loanPayment",
          "label": "Monthly loan payment if borrowed"
        },
        {
          "id": "loanInterest",
          "label": "Total loan interest paid"
        },
        {
          "id": "loanTotalPaid",
          "label": "Total repaid on loan path"
        }
      ]
    },
    {
      "slug": "family-grocery-budget",
      "url": "https://www.revenuelab.fyi/toolbox/family-grocery-budget",
      "title": "Family Grocery Budget Calculator",
      "category": "financial",
      "summary": "Monthly grocery budget by household size, ages, and spending level.",
      "formula": "Household budget = sum of per-person monthly cost at chosen tier, where child costs scale by age band relative to adult cost.",
      "inputs": [
        {
          "id": "adults",
          "label": "Adults in household",
          "kind": "number"
        },
        {
          "id": "youngKids",
          "label": "Kids age 2-5",
          "kind": "number"
        },
        {
          "id": "schoolKids",
          "label": "Kids age 6-11",
          "kind": "number"
        },
        {
          "id": "teens",
          "label": "Teens age 12-18",
          "kind": "number"
        },
        {
          "id": "tier",
          "label": "Spending tier",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Monthly grocery budget"
        },
        {
          "id": "weekly",
          "label": "Weekly equivalent"
        },
        {
          "id": "annual",
          "label": "Annual equivalent"
        },
        {
          "id": "perPersonAvg",
          "label": "Average cost per person"
        }
      ]
    },
    {
      "slug": "car-seat-replacement-timeline",
      "url": "https://www.revenuelab.fyi/toolbox/car-seat-replacement-timeline",
      "title": "Car Seat Replacement Timeline Calculator",
      "category": "other",
      "summary": "When your child outgrows their current seat and total seats needed.",
      "formula": "Months to outgrow = (seat weight limit − current weight) ÷ average monthly weight gain, capped by height limit timeline and seat expiration date.",
      "inputs": [
        {
          "id": "currentWeight",
          "label": "Child's current weight",
          "kind": "number"
        },
        {
          "id": "currentAgeMonths",
          "label": "Child's current age",
          "kind": "number"
        },
        {
          "id": "seatWeightLimit",
          "label": "Current seat's weight limit",
          "kind": "number"
        },
        {
          "id": "monthlyGain",
          "label": "Average weight gain",
          "kind": "number"
        },
        {
          "id": "seatAgeMonths",
          "label": "Seat's age since manufacture",
          "kind": "number"
        },
        {
          "id": "seatExpiresMonths",
          "label": "Seat expiration from manufacture",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthsUntilReplace",
          "label": "Months until replacement needed"
        },
        {
          "id": "replaceAgeMonths",
          "label": "Child's age at replacement"
        },
        {
          "id": "monthsToOutgrowWeight",
          "label": "Months until weight limit hit"
        },
        {
          "id": "seatExpiresIn",
          "label": "Months until seat expires"
        }
      ]
    },
    {
      "slug": "pediatric-copay-budget",
      "url": "https://www.revenuelab.fyi/toolbox/pediatric-copay-budget",
      "title": "Pediatric Copay Budget Calculator",
      "category": "financial",
      "summary": "Estimate annual out-of-pocket cost for well-child and sick visits.",
      "formula": "Annual cost = (well visits × well copay) + (sick visits × sick copay) + (urgent care visits × urgent care copay) + prescription copays.",
      "inputs": [
        {
          "id": "ageGroup",
          "label": "Child's age group",
          "kind": "select"
        },
        {
          "id": "wellCopay",
          "label": "Well-visit copay",
          "kind": "number"
        },
        {
          "id": "sickCopay",
          "label": "Sick-visit copay",
          "kind": "number"
        },
        {
          "id": "sickVisits",
          "label": "Expected sick visits per year",
          "kind": "number"
        },
        {
          "id": "urgentCareCopay",
          "label": "Urgent care copay",
          "kind": "number"
        },
        {
          "id": "urgentVisits",
          "label": "Expected urgent care visits per year",
          "kind": "number"
        },
        {
          "id": "rxCopay",
          "label": "Prescription copays per year total",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated annual pediatric cost"
        },
        {
          "id": "wellCost",
          "label": "Well-visit copays"
        },
        {
          "id": "sickCost",
          "label": "Sick-visit copays"
        },
        {
          "id": "urgentCost",
          "label": "Urgent care copays"
        },
        {
          "id": "monthly",
          "label": "Monthly equivalent"
        }
      ]
    },
    {
      "slug": "family-vacation-budget-per-person",
      "url": "https://www.revenuelab.fyi/toolbox/family-vacation-budget-per-person",
      "title": "Family Vacation Budget Per Person Calculator",
      "category": "financial",
      "summary": "Total trip cost broken down per person and per day.",
      "formula": "Total = transportation + (lodging per night × nights) + (food per person per day × people × days) + activities + buffer; per person = total ÷ people.",
      "inputs": [
        {
          "id": "transportation",
          "label": "Total transportation cost (flights/gas)",
          "kind": "number"
        },
        {
          "id": "lodgingNight",
          "label": "Lodging per night",
          "kind": "number"
        },
        {
          "id": "nights",
          "label": "Number of nights",
          "kind": "number"
        },
        {
          "id": "foodPerPersonDay",
          "label": "Food per person per day",
          "kind": "number"
        },
        {
          "id": "people",
          "label": "Number of people traveling",
          "kind": "number"
        },
        {
          "id": "activities",
          "label": "Total activities/tickets budget",
          "kind": "number"
        },
        {
          "id": "bufferPct",
          "label": "Miscellaneous buffer",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total trip cost"
        },
        {
          "id": "perPerson",
          "label": "Cost per person"
        },
        {
          "id": "perDay",
          "label": "Cost per day (whole family)"
        },
        {
          "id": "lodging",
          "label": "Lodging total"
        },
        {
          "id": "food",
          "label": "Food total"
        }
      ]
    },
    {
      "slug": "wake-window-planner",
      "url": "https://www.revenuelab.fyi/toolbox/wake-window-planner",
      "title": "Baby Sleep Schedule & Wake Window Planner",
      "category": "other",
      "summary": "Suggested nap times and bedtime based on your baby's age.",
      "formula": "Next sleep time = last wake time + age-based wake window; bedtime = last nap end + final wake window, targeting age-appropriate total daily sleep.",
      "inputs": [
        {
          "id": "ageMonths",
          "label": "Baby's age",
          "kind": "number"
        },
        {
          "id": "lastWakeHour",
          "label": "Hour woke up (24h, e.g. 7 = 7am)",
          "kind": "number"
        },
        {
          "id": "lastWakeMinute",
          "label": "Minute woke up",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "nextNapTime",
          "label": "Next nap/sleep time"
        },
        {
          "id": "bedtime",
          "label": "Suggested bedtime"
        },
        {
          "id": "wakeWindowMin",
          "label": "Current wake window (minutes)"
        },
        {
          "id": "napsPerDay",
          "label": "Typical naps per day at this age"
        },
        {
          "id": "totalNightSleep",
          "label": "Target night sleep (hours)"
        }
      ]
    },
    {
      "slug": "growth-percentile-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/growth-percentile-calculator",
      "title": "Child Growth Percentile Calculator",
      "category": "fitness-health",
      "summary": "Estimate your child's weight/height percentile using CDC-style z-scores.",
      "formula": "z-score = (measured value − reference mean for age/sex) ÷ reference standard deviation; percentile = normal CDF(z-score) × 100.",
      "inputs": [
        {
          "id": "sex",
          "label": "Sex",
          "kind": "select"
        },
        {
          "id": "ageMonths",
          "label": "Age",
          "kind": "number"
        },
        {
          "id": "measurement",
          "label": "Weight",
          "kind": "number"
        },
        {
          "id": "referenceMean",
          "label": "Reference average weight for age (lb)",
          "kind": "number"
        },
        {
          "id": "referenceSD",
          "label": "Reference standard deviation (lb)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "percentile",
          "label": "Estimated percentile"
        },
        {
          "id": "zScore",
          "label": "z-score"
        }
      ]
    },
    {
      "slug": "screen-time-budget",
      "url": "https://www.revenuelab.fyi/toolbox/screen-time-budget",
      "title": "Kids Screen Time Budget Calculator",
      "category": "other",
      "summary": "Allocate a weekly screen time budget across school days and weekends.",
      "formula": "Weekday minutes = weekly total × weekday share ÷ 5; weekend minutes = weekly total × weekend share ÷ 2, where weekday+weekend shares sum to 100%.",
      "inputs": [
        {
          "id": "weeklyTotalHours",
          "label": "Target weekly screen time",
          "kind": "number"
        },
        {
          "id": "weekdayShare",
          "label": "Share of budget used on weekdays",
          "kind": "number"
        },
        {
          "id": "homeworkBuffer",
          "label": "Homework/reading time to protect on weekdays",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "weekdayMinutes",
          "label": "Screen minutes per school day"
        },
        {
          "id": "weekendMinutes",
          "label": "Screen minutes per weekend day"
        },
        {
          "id": "weeklyMinutes",
          "label": "Total weekly minutes"
        },
        {
          "id": "bufferNote",
          "label": "Homework/reading time protected (min)"
        }
      ]
    },
    {
      "slug": "amazon-fba-fee-profit",
      "url": "https://www.revenuelab.fyi/toolbox/amazon-fba-fee-profit",
      "title": "Amazon FBA Fee & Profit Calculator",
      "category": "financial",
      "summary": "Referral fee, FBA fulfillment fee, and true per-unit profit.",
      "formula": "Referral fee = price × referral rate; Net profit = price − referral fee − FBA fee − storage/unit − COGS; Margin % = net profit ÷ price.",
      "inputs": [
        {
          "id": "price",
          "label": "Sale price",
          "kind": "number"
        },
        {
          "id": "referralRate",
          "label": "Referral fee rate",
          "kind": "number"
        },
        {
          "id": "fbaFee",
          "label": "FBA fulfillment fee",
          "kind": "number"
        },
        {
          "id": "storagePerUnit",
          "label": "Storage cost per unit",
          "kind": "number"
        },
        {
          "id": "cogs",
          "label": "Cost of goods (incl. inbound freight)",
          "kind": "number"
        },
        {
          "id": "unitsMonth",
          "label": "Units sold per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netProfit",
          "label": "Net profit per unit"
        },
        {
          "id": "margin",
          "label": "Margin"
        },
        {
          "id": "referral",
          "label": "Referral fee per unit"
        },
        {
          "id": "breakevenPrice",
          "label": "Breakeven sale price"
        },
        {
          "id": "monthlyProfit",
          "label": "Projected monthly profit"
        }
      ]
    },
    {
      "slug": "shopify-margin-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/shopify-margin-calculator",
      "title": "Shopify All-In Margin Calculator",
      "category": "financial",
      "summary": "True margin after payment processing, shipping, and packaging on your own store.",
      "formula": "Processing fee = AOV × rate% + flat fee; Contribution margin = AOV − COGS − processing fee − shipping − packaging.",
      "inputs": [
        {
          "id": "aov",
          "label": "Average order value",
          "kind": "number"
        },
        {
          "id": "cogs",
          "label": "Product cost per order",
          "kind": "number"
        },
        {
          "id": "processRate",
          "label": "Payment processing rate",
          "kind": "number"
        },
        {
          "id": "processFlat",
          "label": "Payment processing flat fee",
          "kind": "number"
        },
        {
          "id": "shipping",
          "label": "Shipping cost you absorb",
          "kind": "number"
        },
        {
          "id": "packaging",
          "label": "Packaging cost per order",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cm",
          "label": "Contribution margin per order"
        },
        {
          "id": "marginPct",
          "label": "Contribution margin %"
        },
        {
          "id": "processing",
          "label": "Payment processing fee"
        },
        {
          "id": "maxCac",
          "label": "Max breakeven ad spend per order"
        }
      ]
    },
    {
      "slug": "etsy-fee-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/etsy-fee-calculator",
      "title": "Etsy Fee Calculator",
      "category": "financial",
      "summary": "Listing fee, transaction fee, payment processing, and offsite ads netted out.",
      "formula": "Total fees = $0.20 + 6.5% × (price+shipping) + (3% × (price+shipping) + $0.25) + offsite ads% × (price+shipping); Net = price + shipping − fees − COGS.",
      "inputs": [
        {
          "id": "price",
          "label": "Item price",
          "kind": "number"
        },
        {
          "id": "shipping",
          "label": "Shipping charged to buyer",
          "kind": "number"
        },
        {
          "id": "cogs",
          "label": "Product & materials cost",
          "kind": "number"
        },
        {
          "id": "offsiteAds",
          "label": "Offsite ads fee applies",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Net profit"
        },
        {
          "id": "totalFees",
          "label": "Total Etsy fees"
        },
        {
          "id": "marginPct",
          "label": "Net margin"
        },
        {
          "id": "transactionFee",
          "label": "Transaction fee (6.5%)"
        },
        {
          "id": "paymentFee",
          "label": "Payment processing fee"
        }
      ]
    },
    {
      "slug": "ebay-final-value-fee",
      "url": "https://www.revenuelab.fyi/toolbox/ebay-final-value-fee",
      "title": "eBay Final Value Fee Calculator",
      "category": "financial",
      "summary": "Category fee rate, per-order fixed fee, and shipping cost to real profit.",
      "formula": "Final value fee = (price + buyer shipping) × category rate% + $0.30; Net profit = price + buyer shipping − final value fee − actual shipping cost − COGS.",
      "inputs": [
        {
          "id": "price",
          "label": "Item price",
          "kind": "number"
        },
        {
          "id": "buyerShipping",
          "label": "Shipping charged to buyer",
          "kind": "number"
        },
        {
          "id": "categoryRate",
          "label": "Category final value fee rate",
          "kind": "number"
        },
        {
          "id": "actualShipping",
          "label": "Actual shipping cost paid",
          "kind": "number"
        },
        {
          "id": "cogs",
          "label": "Product cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Net profit"
        },
        {
          "id": "fvf",
          "label": "Final value fee"
        },
        {
          "id": "marginPct",
          "label": "Net margin"
        },
        {
          "id": "shippingLoss",
          "label": "Shipping subsidy (buyer − actual)"
        }
      ]
    },
    {
      "slug": "landed-cost-china",
      "url": "https://www.revenuelab.fyi/toolbox/landed-cost-china",
      "title": "Landed Cost Calculator (China Import)",
      "category": "financial",
      "summary": "Unit cost, freight, duty, and customs fees rolled into true landed cost.",
      "formula": "Duty = FOB unit price × units × duty rate%; Landed cost/unit = FOB price + (freight + duty + fixed fees) ÷ units.",
      "inputs": [
        {
          "id": "fobPrice",
          "label": "FOB unit price",
          "kind": "number"
        },
        {
          "id": "units",
          "label": "Units in shipment",
          "kind": "number"
        },
        {
          "id": "freight",
          "label": "Total freight cost",
          "kind": "number"
        },
        {
          "id": "dutyRate",
          "label": "Duty rate",
          "kind": "number"
        },
        {
          "id": "brokerFees",
          "label": "Customs & brokerage fees (flat)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "landedPerUnit",
          "label": "Landed cost per unit"
        },
        {
          "id": "markupPct",
          "label": "Markup over FOB price"
        },
        {
          "id": "duty",
          "label": "Total duty owed"
        },
        {
          "id": "totalExtra",
          "label": "Total freight + duty + fees"
        },
        {
          "id": "goodsValue",
          "label": "Total declared goods value"
        }
      ]
    },
    {
      "slug": "tariff-duty-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/tariff-duty-calculator",
      "title": "Tariff & Duty Calculator",
      "category": "financial",
      "summary": "Standard duty plus any additional tariff rate on your declared value.",
      "formula": "Total duty = value × (base rate% + additional tariff%); MPF = clamp(value × 0.3464%, $32.71, $634.62); Total owed = duty + MPF.",
      "inputs": [
        {
          "id": "value",
          "label": "Declared customs value",
          "kind": "number"
        },
        {
          "id": "baseRate",
          "label": "Base duty rate",
          "kind": "number"
        },
        {
          "id": "additionalTariff",
          "label": "Additional tariff rate (e.g. Section 301)",
          "kind": "number"
        },
        {
          "id": "mpfApplies",
          "label": "Merchandise Processing Fee applies",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "totalOwed",
          "label": "Total duty + fees owed"
        },
        {
          "id": "duty",
          "label": "Duty owed"
        },
        {
          "id": "mpf",
          "label": "Merchandise Processing Fee"
        },
        {
          "id": "effectiveRate",
          "label": "Effective combined rate"
        }
      ]
    },
    {
      "slug": "contribution-margin-sku",
      "url": "https://www.revenuelab.fyi/toolbox/contribution-margin-sku",
      "title": "Contribution Margin Per SKU Calculator",
      "category": "financial",
      "summary": "See which products actually make money after every variable cost.",
      "formula": "Contribution margin/unit = price − COGS − fees − shipping − (returns rate × price); Total monthly contribution = margin/unit × units sold.",
      "inputs": [
        {
          "id": "price",
          "label": "Sale price",
          "kind": "number"
        },
        {
          "id": "cogs",
          "label": "Cost of goods",
          "kind": "number"
        },
        {
          "id": "fees",
          "label": "Payment/marketplace fees per unit",
          "kind": "number"
        },
        {
          "id": "shipping",
          "label": "Average shipping cost",
          "kind": "number"
        },
        {
          "id": "returnsRate",
          "label": "Returns rate",
          "kind": "number"
        },
        {
          "id": "unitsMonth",
          "label": "Units sold per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cmUnit",
          "label": "Contribution margin per unit"
        },
        {
          "id": "marginPct",
          "label": "Contribution margin %"
        },
        {
          "id": "totalMonthly",
          "label": "Total monthly contribution"
        },
        {
          "id": "returnsCost",
          "label": "Allocated returns cost per unit"
        }
      ]
    },
    {
      "slug": "break-even-roas",
      "url": "https://www.revenuelab.fyi/toolbox/break-even-roas",
      "title": "Break-Even ROAS Calculator",
      "category": "financial",
      "summary": "The minimum return on ad spend before you lose money on every sale.",
      "formula": "Contribution margin % = (AOV − variable cost) ÷ AOV; Break-even ROAS = 1 ÷ margin%; Target ROAS = break-even ROAS ÷ (1 − desired profit%).",
      "inputs": [
        {
          "id": "aov",
          "label": "Average order value",
          "kind": "number"
        },
        {
          "id": "variableCost",
          "label": "Total variable cost per order",
          "kind": "number"
        },
        {
          "id": "desiredProfit",
          "label": "Desired profit margin on top",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenRoas",
          "label": "Break-even ROAS"
        },
        {
          "id": "targetRoas",
          "label": "Target ROAS with profit buffer"
        },
        {
          "id": "maxCac",
          "label": "Max breakeven ad cost per order"
        },
        {
          "id": "marginPct",
          "label": "Contribution margin %"
        }
      ]
    },
    {
      "slug": "blended-cac-mer",
      "url": "https://www.revenuelab.fyi/toolbox/blended-cac-mer",
      "title": "Blended CAC vs MER Calculator",
      "category": "financial",
      "summary": "Total marketing spend against total revenue and new customers, not per-channel math.",
      "formula": "Blended CAC = total spend ÷ new customers; MER = total revenue ÷ total spend.",
      "inputs": [
        {
          "id": "spend",
          "label": "Total marketing spend (period)",
          "kind": "number"
        },
        {
          "id": "revenue",
          "label": "Total revenue (same period)",
          "kind": "number"
        },
        {
          "id": "newCustomers",
          "label": "New customers acquired",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "blendedCac",
          "label": "Blended CAC"
        },
        {
          "id": "mer",
          "label": "MER (revenue ÷ spend)"
        },
        {
          "id": "spendPctOfRevenue",
          "label": "Marketing spend as % of revenue"
        }
      ]
    },
    {
      "slug": "repeat-purchase-ltv",
      "url": "https://www.revenuelab.fyi/toolbox/repeat-purchase-ltv",
      "title": "Repeat Purchase LTV Calculator",
      "category": "financial",
      "summary": "Simple LTV from AOV, purchase frequency, margin, and customer lifespan.",
      "formula": "Annual value = AOV × orders/year × margin%; LTV = annual value × years active; Max CAC = LTV ÷ target LTV:CAC ratio.",
      "inputs": [
        {
          "id": "aov",
          "label": "Average order value",
          "kind": "number"
        },
        {
          "id": "ordersYear",
          "label": "Orders per customer per year",
          "kind": "number"
        },
        {
          "id": "marginPct",
          "label": "Contribution margin",
          "kind": "number"
        },
        {
          "id": "yearsActive",
          "label": "Expected years active",
          "kind": "number"
        },
        {
          "id": "targetRatio",
          "label": "Target LTV : CAC ratio",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ltv",
          "label": "Lifetime value (contribution)"
        },
        {
          "id": "annualValue",
          "label": "Annual value per customer"
        },
        {
          "id": "maxCac",
          "label": "Suggested max CAC"
        }
      ]
    },
    {
      "slug": "cart-abandonment-recovery",
      "url": "https://www.revenuelab.fyi/toolbox/cart-abandonment-recovery",
      "title": "Cart Abandonment Recovery Value Calculator",
      "category": "financial",
      "summary": "How much revenue is sitting in abandoned carts and what recovery is worth.",
      "formula": "Carts created = sessions × add-to-cart%; Carts abandoned = carts created × (1 − checkout completion%); Abandoned value = abandoned carts × AOV; Recovered revenue = abandoned value × recovery rate%.",
      "inputs": [
        {
          "id": "sessions",
          "label": "Monthly site sessions",
          "kind": "number"
        },
        {
          "id": "addToCartRate",
          "label": "Add-to-cart rate",
          "kind": "number"
        },
        {
          "id": "aov",
          "label": "Average cart value",
          "kind": "number"
        },
        {
          "id": "checkoutRate",
          "label": "Checkout completion rate (of carts)",
          "kind": "number"
        },
        {
          "id": "recoveryRate",
          "label": "Assumed recovery rate on abandoned carts",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "recovered",
          "label": "Recoverable revenue per month"
        },
        {
          "id": "abandonedValue",
          "label": "Total abandoned cart value/month"
        },
        {
          "id": "abandonedCarts",
          "label": "Abandoned carts per month"
        },
        {
          "id": "cartsCreated",
          "label": "Carts created per month"
        }
      ]
    },
    {
      "slug": "free-shipping-threshold",
      "url": "https://www.revenuelab.fyi/toolbox/free-shipping-threshold",
      "title": "Free Shipping Threshold Calculator",
      "category": "financial",
      "summary": "Find the order minimum that lifts AOV without eating your margin.",
      "formula": "Shipping cost given away = orders qualifying × current shipping cost; AOV lift value = orders that upsize × margin on added items; Net impact = lift value − shipping cost given away.",
      "inputs": [
        {
          "id": "currentAov",
          "label": "Current average order value",
          "kind": "number"
        },
        {
          "id": "shippingCost",
          "label": "Average shipping cost per order",
          "kind": "number"
        },
        {
          "id": "threshold",
          "label": "Proposed free shipping threshold",
          "kind": "number"
        },
        {
          "id": "pctUpsize",
          "label": "% of near-threshold customers who add items",
          "kind": "number"
        },
        {
          "id": "addedItemMargin",
          "label": "Margin on items added to qualify",
          "kind": "number"
        },
        {
          "id": "ordersMonth",
          "label": "Orders per month near this range",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netImpact",
          "label": "Net monthly margin impact"
        },
        {
          "id": "liftValue",
          "label": "Margin lift from upsizing"
        },
        {
          "id": "shippingGiveaway",
          "label": "Shipping cost given away"
        },
        {
          "id": "newAov",
          "label": "Estimated new blended AOV"
        }
      ]
    },
    {
      "slug": "subscription-box-unit-economics",
      "url": "https://www.revenuelab.fyi/toolbox/subscription-box-unit-economics",
      "title": "Subscription Box Unit Economics Calculator",
      "category": "financial",
      "summary": "CAC payback period and LTV for recurring box subscriptions.",
      "formula": "Expected lifetime (months) = 1 ÷ monthly churn%; CM/box = price − cost per box; LTV = CM/box × lifetime; Payback months = CAC ÷ CM/box.",
      "inputs": [
        {
          "id": "price",
          "label": "Monthly subscription price",
          "kind": "number"
        },
        {
          "id": "costPerBox",
          "label": "Cost per box (product+pack+ship)",
          "kind": "number"
        },
        {
          "id": "cac",
          "label": "Customer acquisition cost",
          "kind": "number"
        },
        {
          "id": "churnRate",
          "label": "Monthly churn rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paybackMonths",
          "label": "CAC payback period"
        },
        {
          "id": "ltv",
          "label": "Lifetime value"
        },
        {
          "id": "lifetimeMonths",
          "label": "Expected customer lifetime"
        },
        {
          "id": "cmBox",
          "label": "Contribution margin per box"
        },
        {
          "id": "ltvCacRatio",
          "label": "LTV : CAC ratio"
        }
      ]
    },
    {
      "slug": "returns-rate-cost",
      "url": "https://www.revenuelab.fyi/toolbox/returns-rate-cost",
      "title": "Returns Rate Cost Calculator",
      "category": "financial",
      "summary": "The true dollar cost of returns including shipping both ways and restocking.",
      "formula": "Returns = units × return rate%; Cost per return = return shipping + restocking cost + (unresellable% × item value); Total cost = returns × cost per return.",
      "inputs": [
        {
          "id": "units",
          "label": "Units sold per month",
          "kind": "number"
        },
        {
          "id": "returnRate",
          "label": "Return rate",
          "kind": "number"
        },
        {
          "id": "aov",
          "label": "Average order value",
          "kind": "number"
        },
        {
          "id": "returnShipping",
          "label": "Return shipping cost",
          "kind": "number"
        },
        {
          "id": "restockCost",
          "label": "Restocking labor/processing cost",
          "kind": "number"
        },
        {
          "id": "unresellablePct",
          "label": "% of returns unresellable at full value",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalCost",
          "label": "Total monthly returns cost"
        },
        {
          "id": "costPerReturn",
          "label": "Cost per return"
        },
        {
          "id": "returns",
          "label": "Returns per month"
        },
        {
          "id": "costPctRevenue",
          "label": "Returns cost as % of revenue"
        }
      ]
    },
    {
      "slug": "ecommerce-reorder-point",
      "url": "https://www.revenuelab.fyi/toolbox/ecommerce-reorder-point",
      "title": "Inventory Reorder Point Calculator",
      "category": "financial",
      "summary": "The inventory level that triggers a new purchase order before you stock out.",
      "formula": "Reorder point = (average daily sales × lead time days) + safety stock.",
      "inputs": [
        {
          "id": "avgDailySales",
          "label": "Average daily sales",
          "kind": "number"
        },
        {
          "id": "leadTime",
          "label": "Supplier lead time",
          "kind": "number"
        },
        {
          "id": "safetyStock",
          "label": "Safety stock",
          "kind": "number"
        },
        {
          "id": "orderQty",
          "label": "Typical reorder quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "reorderPoint",
          "label": "Reorder point"
        },
        {
          "id": "leadTimeDemand",
          "label": "Expected demand during lead time"
        },
        {
          "id": "daysCoverage",
          "label": "Days of coverage per reorder"
        }
      ]
    },
    {
      "slug": "safety-stock-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/safety-stock-calculator",
      "title": "Safety Stock Calculator",
      "category": "financial",
      "summary": "Buffer inventory sized to your actual demand and lead-time variability.",
      "formula": "Safety stock = Z × demand std dev × √(lead time days), where Z is the service-level factor (1.65 for 95%, 2.33 for 99%).",
      "inputs": [
        {
          "id": "demandStdDev",
          "label": "Daily sales standard deviation",
          "kind": "number"
        },
        {
          "id": "leadTime",
          "label": "Average lead time",
          "kind": "number"
        },
        {
          "id": "serviceLevel",
          "label": "Desired service level",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "safetyStock",
          "label": "Safety stock (units)"
        },
        {
          "id": "safetyStock99",
          "label": "Safety stock at 99% service level"
        },
        {
          "id": "z",
          "label": "Z-score used"
        }
      ]
    },
    {
      "slug": "eoq-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/eoq-calculator",
      "title": "Economic Order Quantity (EOQ) Calculator",
      "category": "financial",
      "summary": "The order size that minimizes total ordering and holding cost.",
      "formula": "EOQ = √(2 × annual demand × order cost ÷ holding cost per unit); Orders per year = annual demand ÷ EOQ; Total cost = (annual demand ÷ EOQ) × order cost + (EOQ ÷ 2) × holding cost.",
      "inputs": [
        {
          "id": "annualDemand",
          "label": "Annual demand",
          "kind": "number"
        },
        {
          "id": "orderCost",
          "label": "Fixed cost per order",
          "kind": "number"
        },
        {
          "id": "holdingCost",
          "label": "Annual holding cost per unit",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "eoq",
          "label": "Economic order quantity"
        },
        {
          "id": "ordersPerYear",
          "label": "Orders per year"
        },
        {
          "id": "totalCost",
          "label": "Total annual ordering + holding cost"
        },
        {
          "id": "daysBetweenOrders",
          "label": "Days between orders"
        }
      ]
    },
    {
      "slug": "sell-through-rate",
      "url": "https://www.revenuelab.fyi/toolbox/sell-through-rate",
      "title": "Sell-Through Rate Calculator",
      "category": "financial",
      "summary": "What percentage of received inventory has actually sold in a period.",
      "formula": "Sell-through rate = units sold ÷ units available (beginning inventory + received) × 100.",
      "inputs": [
        {
          "id": "unitsSold",
          "label": "Units sold in period",
          "kind": "number"
        },
        {
          "id": "unitsAvailable",
          "label": "Units available (beginning + received)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rate",
          "label": "Sell-through rate"
        },
        {
          "id": "remaining",
          "label": "Units remaining"
        },
        {
          "id": "read",
          "label": "Read"
        }
      ]
    },
    {
      "slug": "gmroi-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/gmroi-calculator",
      "title": "GMROI Calculator",
      "category": "financial",
      "summary": "How many gross margin dollars you generate per dollar tied up in inventory.",
      "formula": "Gross margin $ = revenue × margin%; GMROI = gross margin $ ÷ average inventory cost.",
      "inputs": [
        {
          "id": "revenue",
          "label": "Annual sales revenue",
          "kind": "number"
        },
        {
          "id": "marginPct",
          "label": "Gross margin",
          "kind": "number"
        },
        {
          "id": "avgInventoryCost",
          "label": "Average inventory value (at cost)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "gmroi",
          "label": "GMROI"
        },
        {
          "id": "grossMarginDollars",
          "label": "Annual gross margin $"
        },
        {
          "id": "read",
          "label": "Read"
        }
      ]
    },
    {
      "slug": "markdown-margin-impact",
      "url": "https://www.revenuelab.fyi/toolbox/markdown-margin-impact",
      "title": "Markdown & Discount Margin Impact Calculator",
      "category": "financial",
      "summary": "How much extra volume a discount needs to generate to break even on margin dollars.",
      "formula": "Margin/unit after = (price × (1−discount%)) − COGS; Breakeven volume increase% = (margin/unit before ÷ margin/unit after) − 1.",
      "inputs": [
        {
          "id": "price",
          "label": "Regular price",
          "kind": "number"
        },
        {
          "id": "cogs",
          "label": "Cost of goods",
          "kind": "number"
        },
        {
          "id": "unitsFullPrice",
          "label": "Units currently sold (full price)",
          "kind": "number"
        },
        {
          "id": "discountPct",
          "label": "Proposed discount",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenVolumeIncreasePct",
          "label": "Volume increase needed to break even"
        },
        {
          "id": "marginAfter",
          "label": "Margin $ per unit after discount"
        },
        {
          "id": "marginBefore",
          "label": "Margin $ per unit before discount"
        },
        {
          "id": "unitsNeeded",
          "label": "Units needed at discounted price"
        }
      ]
    },
    {
      "slug": "packaging-cost-per-order",
      "url": "https://www.revenuelab.fyi/toolbox/packaging-cost-per-order",
      "title": "Packaging Cost Per Order Calculator",
      "category": "financial",
      "summary": "Box, void fill, tape, labels, and inserts rolled into one per-order number.",
      "formula": "Cost per order = box/mailer + void fill + tape/label + inserts; Monthly total = cost per order × monthly orders.",
      "inputs": [
        {
          "id": "box",
          "label": "Box / mailer cost",
          "kind": "number"
        },
        {
          "id": "voidFill",
          "label": "Void fill / protective material",
          "kind": "number"
        },
        {
          "id": "tapeLabel",
          "label": "Tape & label cost",
          "kind": "number"
        },
        {
          "id": "inserts",
          "label": "Inserts (cards, flyers, etc.)",
          "kind": "number"
        },
        {
          "id": "ordersMonth",
          "label": "Orders per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perOrder",
          "label": "Packaging cost per order"
        },
        {
          "id": "monthlyTotal",
          "label": "Total monthly packaging spend"
        }
      ]
    },
    {
      "slug": "3pl-pick-pack-quote",
      "url": "https://www.revenuelab.fyi/toolbox/3pl-pick-pack-quote",
      "title": "3PL Pick-and-Pack Quote Calculator",
      "category": "financial",
      "summary": "Estimate a fulfillment provider's per-order cost including storage.",
      "formula": "Cost per order = pick fee + (additional item fee × (avg items − 1)) + packaging markup + storage allocation + shipping passthrough.",
      "inputs": [
        {
          "id": "pickFee",
          "label": "Base pick fee (first item)",
          "kind": "number"
        },
        {
          "id": "additionalItemFee",
          "label": "Additional item fee",
          "kind": "number"
        },
        {
          "id": "avgItems",
          "label": "Average items per order",
          "kind": "number"
        },
        {
          "id": "packagingMarkup",
          "label": "Packaging material markup",
          "kind": "number"
        },
        {
          "id": "storageAllocation",
          "label": "Storage cost allocated per order",
          "kind": "number"
        },
        {
          "id": "shippingPassthrough",
          "label": "Shipping cost passthrough",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total 3PL cost per order"
        },
        {
          "id": "pickTotal",
          "label": "Pick & item fees"
        },
        {
          "id": "fulfillmentOnly",
          "label": "Fulfillment cost (excl. shipping)"
        }
      ]
    },
    {
      "slug": "marketplace-vs-dtc",
      "url": "https://www.revenuelab.fyi/toolbox/marketplace-vs-dtc",
      "title": "Marketplace vs DTC Profit Comparison Calculator",
      "category": "financial",
      "summary": "Compare net profit per order selling on a marketplace versus your own site.",
      "formula": "Marketplace net = price − COGS − shipping − (price × marketplace fee%); DTC net = price − COGS − shipping − (price × processing%) − CAC per order.",
      "inputs": [
        {
          "id": "price",
          "label": "Sale price",
          "kind": "number"
        },
        {
          "id": "cogs",
          "label": "Cost of goods",
          "kind": "number"
        },
        {
          "id": "shipping",
          "label": "Shipping cost",
          "kind": "number"
        },
        {
          "id": "marketplaceFeePct",
          "label": "Marketplace fee rate",
          "kind": "number"
        },
        {
          "id": "dtcProcessingPct",
          "label": "DTC payment processing rate",
          "kind": "number"
        },
        {
          "id": "dtcCac",
          "label": "DTC acquisition cost per order",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "winner",
          "label": "Higher-profit channel"
        },
        {
          "id": "marketplaceNet",
          "label": "Marketplace net profit/order"
        },
        {
          "id": "dtcNet",
          "label": "DTC net profit/order"
        },
        {
          "id": "cacBreakeven",
          "label": "DTC CAC breakeven point"
        }
      ]
    },
    {
      "slug": "wholesale-msrp-keystone",
      "url": "https://www.revenuelab.fyi/toolbox/wholesale-msrp-keystone",
      "title": "Wholesale vs MSRP Keystone Pricing Calculator",
      "category": "financial",
      "summary": "Set MSRP, wholesale price, and your margin at each tier of the channel.",
      "formula": "Wholesale price = unit cost ÷ (1 − wholesale margin%); MSRP = wholesale price × retail markup multiplier.",
      "inputs": [
        {
          "id": "unitCost",
          "label": "Unit cost",
          "kind": "number"
        },
        {
          "id": "wholesaleMargin",
          "label": "Desired wholesale margin",
          "kind": "number"
        },
        {
          "id": "retailMultiplier",
          "label": "Retail markup multiplier",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "msrp",
          "label": "MSRP"
        },
        {
          "id": "wholesalePrice",
          "label": "Wholesale price"
        },
        {
          "id": "marginWholesale",
          "label": "Your margin $ at wholesale"
        },
        {
          "id": "marginDirect",
          "label": "Your margin $ if sold direct at MSRP"
        },
        {
          "id": "marginDirectPct",
          "label": "Direct margin %"
        }
      ]
    },
    {
      "slug": "print-on-demand-profit",
      "url": "https://www.revenuelab.fyi/toolbox/print-on-demand-profit",
      "title": "Print-On-Demand Profit Calculator",
      "category": "financial",
      "summary": "Base cost, platform fee, and shipping netted out for POD products.",
      "formula": "Net profit = price − POD base cost − POD shipping − (price × platform fee%).",
      "inputs": [
        {
          "id": "price",
          "label": "Sale price",
          "kind": "number"
        },
        {
          "id": "podBaseCost",
          "label": "POD base production cost",
          "kind": "number"
        },
        {
          "id": "podShipping",
          "label": "POD shipping charge",
          "kind": "number"
        },
        {
          "id": "platformFeePct",
          "label": "Platform fee rate (transaction+processing)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netProfit",
          "label": "Net profit per item"
        },
        {
          "id": "marginPct",
          "label": "Net margin"
        },
        {
          "id": "platformFee",
          "label": "Platform fee"
        },
        {
          "id": "breakevenPrice",
          "label": "Breakeven price (before platform fee)"
        }
      ]
    },
    {
      "slug": "streaming-royalty-payout",
      "url": "https://www.revenuelab.fyi/toolbox/streaming-royalty-payout",
      "title": "Spotify & Apple Music Royalty Calculator",
      "category": "financial",
      "summary": "Estimate what streams actually pay after your distributor's cut.",
      "formula": "Gross = streams × per-stream rate; net = gross × (1 − distributor fee); your share = net × your split %.",
      "inputs": [
        {
          "id": "streams",
          "label": "Total streams",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Platform average rate",
          "kind": "select"
        },
        {
          "id": "distroFee",
          "label": "Distributor fee",
          "kind": "number"
        },
        {
          "id": "yourSplit",
          "label": "Your split of net",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "yourShare",
          "label": "Your payout"
        },
        {
          "id": "gross",
          "label": "Gross royalty pool"
        },
        {
          "id": "net",
          "label": "After distributor fee"
        },
        {
          "id": "feeTaken",
          "label": "Distributor fee taken"
        },
        {
          "id": "perStream",
          "label": "Effective per-stream to you"
        }
      ]
    },
    {
      "slug": "distribution-cut-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/distribution-cut-calculator",
      "title": "Music Distribution Cut Calculator",
      "category": "financial",
      "summary": "Compare flat-fee vs percentage distributors on your actual revenue.",
      "formula": "Flat-fee net = revenue − annual subscription; percentage net = revenue × (1 − cut %).",
      "inputs": [
        {
          "id": "revenue",
          "label": "Projected annual streaming revenue",
          "kind": "number"
        },
        {
          "id": "flatFee",
          "label": "Flat distributor annual fee",
          "kind": "number"
        },
        {
          "id": "pctCut",
          "label": "Percentage distributor cut",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "better",
          "label": "Cheaper model for you"
        },
        {
          "id": "flatNet",
          "label": "Net with flat-fee distributor"
        },
        {
          "id": "pctNet",
          "label": "Net with percentage distributor"
        },
        {
          "id": "difference",
          "label": "Difference in your pocket"
        },
        {
          "id": "breakeven",
          "label": "Revenue where they're equal"
        }
      ]
    },
    {
      "slug": "split-sheet-royalty",
      "url": "https://www.revenuelab.fyi/toolbox/split-sheet-royalty",
      "title": "Split Sheet Royalty Calculator",
      "category": "financial",
      "summary": "Divide songwriting and production credit into exact percentages.",
      "formula": "Each contributor's final % = (their weight ÷ sum of all weights) × 100, normalized to total 100%.",
      "inputs": [
        {
          "id": "writer1",
          "label": "Contributor 1 weight",
          "kind": "number"
        },
        {
          "id": "writer2",
          "label": "Contributor 2 weight",
          "kind": "number"
        },
        {
          "id": "writer3",
          "label": "Contributor 3 weight",
          "kind": "number"
        },
        {
          "id": "writer4",
          "label": "Contributor 4 weight",
          "kind": "number"
        },
        {
          "id": "revenue",
          "label": "Total royalty revenue to split",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pct1",
          "label": "Contributor 1 share"
        },
        {
          "id": "pct2",
          "label": "Contributor 2 share"
        },
        {
          "id": "pct3",
          "label": "Contributor 3 share"
        },
        {
          "id": "pct4",
          "label": "Contributor 4 share"
        },
        {
          "id": "pay1",
          "label": "Contributor 1 payout at entered revenue"
        }
      ]
    },
    {
      "slug": "mechanical-royalty-split",
      "url": "https://www.revenuelab.fyi/toolbox/mechanical-royalty-split",
      "title": "Mechanical Royalty Calculator",
      "category": "financial",
      "summary": "Estimate mechanical royalties owed per unit sold or streamed.",
      "formula": "Physical/download: royalty = max(statutory flat rate, per-minute rate × song length); total = royalty × units.",
      "inputs": [
        {
          "id": "units",
          "label": "Units sold (CD, vinyl, download)",
          "kind": "number"
        },
        {
          "id": "minutes",
          "label": "Song length",
          "kind": "number"
        },
        {
          "id": "flatRate",
          "label": "Statutory flat rate per copy",
          "kind": "number"
        },
        {
          "id": "perMinRate",
          "label": "Per-minute rate",
          "kind": "number"
        },
        {
          "id": "yourWriterShare",
          "label": "Your writer/publisher share",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "yourShare",
          "label": "Your mechanical royalty share"
        },
        {
          "id": "totalRoyalty",
          "label": "Total mechanical royalties owed"
        },
        {
          "id": "perUnit",
          "label": "Royalty per unit"
        },
        {
          "id": "royaltyCents",
          "label": "Rate applied (cents/copy)"
        }
      ]
    },
    {
      "slug": "sync-licensing-fee",
      "url": "https://www.revenuelab.fyi/toolbox/sync-licensing-fee",
      "title": "Sync Licensing Fee Estimator",
      "category": "financial",
      "summary": "Ballpark sync fees for film, TV, ads, and games by usage type.",
      "formula": "Base fee × duration multiplier × territory multiplier × exclusivity multiplier, split 50/50 master/publishing.",
      "inputs": [
        {
          "id": "placement",
          "label": "Placement type",
          "kind": "select"
        },
        {
          "id": "duration",
          "label": "Duration used",
          "kind": "number"
        },
        {
          "id": "territory",
          "label": "Territory",
          "kind": "select"
        },
        {
          "id": "exclusive",
          "label": "Exclusivity",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated sync fee"
        },
        {
          "id": "masterShare",
          "label": "Master (recording) side"
        },
        {
          "id": "pubShare",
          "label": "Publishing (song) side"
        },
        {
          "id": "low",
          "label": "Low end of realistic range"
        },
        {
          "id": "high",
          "label": "High end of realistic range"
        }
      ]
    },
    {
      "slug": "gig-pay-split",
      "url": "https://www.revenuelab.fyi/toolbox/gig-pay-split",
      "title": "Band Gig Pay Split Calculator",
      "category": "financial",
      "summary": "Divide a gig fee fairly across band members, gear, and expenses.",
      "formula": "Net = gross − expenses; hired players paid flat first; remaining net split equally among core members.",
      "inputs": [
        {
          "id": "gross",
          "label": "Gig fee (gross)",
          "kind": "number"
        },
        {
          "id": "expenses",
          "label": "Shared expenses (gas, tolls, rentals)",
          "kind": "number"
        },
        {
          "id": "coreMembers",
          "label": "Core/equity members",
          "kind": "number"
        },
        {
          "id": "hiredPlayers",
          "label": "Hired sidemen (flat rate)",
          "kind": "number"
        },
        {
          "id": "hiredRate",
          "label": "Flat rate per hired player",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perMember",
          "label": "Each core member gets"
        },
        {
          "id": "netAfterExpenses",
          "label": "Net after shared expenses"
        },
        {
          "id": "hiredTotal",
          "label": "Total paid to hired players"
        },
        {
          "id": "remaining",
          "label": "Remaining pool for core members"
        }
      ]
    },
    {
      "slug": "touring-per-diem",
      "url": "https://www.revenuelab.fyi/toolbox/touring-per-diem",
      "title": "Touring Per-Diem & Van Cost Calculator",
      "category": "financial",
      "summary": "Budget daily per-diems and van fuel/mileage for a tour run.",
      "formula": "Fuel cost = (miles ÷ MPG) × gas price; per-diem total = people × days × daily rate; total cost = fuel + per-diem + lodging.",
      "inputs": [
        {
          "id": "miles",
          "label": "Total tour route miles",
          "kind": "number"
        },
        {
          "id": "mpg",
          "label": "Van fuel economy",
          "kind": "number"
        },
        {
          "id": "gasPrice",
          "label": "Gas price per gallon",
          "kind": "number"
        },
        {
          "id": "people",
          "label": "People on tour",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Tour length",
          "kind": "number"
        },
        {
          "id": "dailyRate",
          "label": "Per-diem per person per day",
          "kind": "number"
        },
        {
          "id": "lodging",
          "label": "Total lodging cost for the run",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total tour cost"
        },
        {
          "id": "fuel",
          "label": "Fuel cost"
        },
        {
          "id": "perDiemTotal",
          "label": "Total per-diem"
        },
        {
          "id": "lodging",
          "label": "Lodging cost"
        },
        {
          "id": "perDay",
          "label": "Average cost per day"
        }
      ]
    },
    {
      "slug": "merch-table-profit",
      "url": "https://www.revenuelab.fyi/toolbox/merch-table-profit",
      "title": "Merch Table Profit Calculator",
      "category": "financial",
      "summary": "See real margin per shirt, vinyl, and CD after cost and venue cut.",
      "formula": "Profit per unit = (price − venue cut % × price) − unit cost; total = Σ(units × profit per unit).",
      "inputs": [
        {
          "id": "shirtPrice",
          "label": "Shirt sale price",
          "kind": "number"
        },
        {
          "id": "shirtCost",
          "label": "Shirt unit cost",
          "kind": "number"
        },
        {
          "id": "shirtUnits",
          "label": "Shirts sold per show",
          "kind": "number"
        },
        {
          "id": "vinylPrice",
          "label": "Vinyl sale price",
          "kind": "number"
        },
        {
          "id": "vinylCost",
          "label": "Vinyl unit cost",
          "kind": "number"
        },
        {
          "id": "vinylUnits",
          "label": "Vinyl sold per show",
          "kind": "number"
        },
        {
          "id": "venueCut",
          "label": "Venue merch cut",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total merch profit per show"
        },
        {
          "id": "shirtProfit",
          "label": "Profit per shirt"
        },
        {
          "id": "vinylProfit",
          "label": "Profit per vinyl"
        },
        {
          "id": "shirtTotal",
          "label": "Total shirt profit"
        },
        {
          "id": "vinylTotal",
          "label": "Total vinyl profit"
        }
      ]
    },
    {
      "slug": "studio-session-cost",
      "url": "https://www.revenuelab.fyi/toolbox/studio-session-cost",
      "title": "Studio Session Cost Calculator",
      "category": "financial",
      "summary": "Budget total studio cost from hourly rate, hours, and engineer fee.",
      "formula": "Total = (room rate + engineer rate) × hours × (1 + overtime buffer %) + musician fees + consumables; per song = total ÷ songs.",
      "inputs": [
        {
          "id": "roomRate",
          "label": "Studio room rate",
          "kind": "number"
        },
        {
          "id": "engineerRate",
          "label": "Engineer rate (if separate)",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Estimated hours booked",
          "kind": "number"
        },
        {
          "id": "overtimeBuffer",
          "label": "Overtime buffer",
          "kind": "number"
        },
        {
          "id": "musicians",
          "label": "Session musician fees (total)",
          "kind": "number"
        },
        {
          "id": "songs",
          "label": "Songs recorded in session",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total projected studio cost"
        },
        {
          "id": "perSong",
          "label": "Cost per finished song"
        },
        {
          "id": "base",
          "label": "Room + engineer time cost"
        },
        {
          "id": "bufferedHours",
          "label": "Hours with overtime buffer"
        }
      ]
    },
    {
      "slug": "mixing-mastering-quote",
      "url": "https://www.revenuelab.fyi/toolbox/mixing-mastering-quote",
      "title": "Mixing & Mastering Quote Calculator",
      "category": "financial",
      "summary": "Estimate a full project's mix/master cost from per-song rates.",
      "formula": "Total = songs × (mix rate + master rate) × (1 − bundle discount %) + revision buffer.",
      "inputs": [
        {
          "id": "songs",
          "label": "Number of songs",
          "kind": "number"
        },
        {
          "id": "mixRate",
          "label": "Mix rate per song",
          "kind": "number"
        },
        {
          "id": "masterRate",
          "label": "Master rate per song",
          "kind": "number"
        },
        {
          "id": "bundleDiscount",
          "label": "Bundle discount (mix+master same engineer)",
          "kind": "number"
        },
        {
          "id": "revisionBuffer",
          "label": "Extra revision buffer",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total project cost"
        },
        {
          "id": "perSong",
          "label": "Effective cost per song"
        },
        {
          "id": "base",
          "label": "Base cost before buffer"
        },
        {
          "id": "buffer",
          "label": "Revision buffer amount"
        }
      ]
    },
    {
      "slug": "beat-lease-vs-exclusive",
      "url": "https://www.revenuelab.fyi/toolbox/beat-lease-vs-exclusive",
      "title": "Beat Lease vs Exclusive Calculator",
      "category": "financial",
      "summary": "Compare total revenue from leasing a beat many times vs one exclusive sale.",
      "formula": "Lease revenue = lease price × expected number of leases; compare directly to exclusive price.",
      "inputs": [
        {
          "id": "leasePrice",
          "label": "Non-exclusive lease price",
          "kind": "number"
        },
        {
          "id": "expectedLeases",
          "label": "Expected leases over beat's life",
          "kind": "number"
        },
        {
          "id": "exclusivePrice",
          "label": "Exclusive sale price offered",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "better",
          "label": "Better financial option"
        },
        {
          "id": "leaseRevenue",
          "label": "Projected total lease revenue"
        },
        {
          "id": "exclusivePrice",
          "label": "Exclusive offer"
        },
        {
          "id": "difference",
          "label": "Lease revenue minus exclusive price"
        },
        {
          "id": "breakevenLeases",
          "label": "Leases needed to match exclusive offer"
        }
      ]
    },
    {
      "slug": "podcast-cpm-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/podcast-cpm-revenue",
      "title": "Podcast CPM Ad Revenue Calculator",
      "category": "financial",
      "summary": "Estimate ad revenue per episode from downloads and CPM rate.",
      "formula": "Revenue per slot = (downloads ÷ 1000) × CPM; total = Σ(slot revenue) × episodes per month.",
      "inputs": [
        {
          "id": "downloads",
          "label": "Average downloads per episode",
          "kind": "number"
        },
        {
          "id": "preRollCpm",
          "label": "Pre-roll CPM",
          "kind": "number"
        },
        {
          "id": "midRollCpm",
          "label": "Mid-roll CPM",
          "kind": "number"
        },
        {
          "id": "midRollSlots",
          "label": "Mid-roll slots per episode",
          "kind": "number"
        },
        {
          "id": "episodesMonth",
          "label": "Episodes per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perEpisode",
          "label": "Revenue per episode"
        },
        {
          "id": "preRoll",
          "label": "Pre-roll revenue"
        },
        {
          "id": "midRoll",
          "label": "Mid-roll revenue"
        },
        {
          "id": "perMonth",
          "label": "Revenue per month"
        },
        {
          "id": "perYear",
          "label": "Projected annual revenue"
        }
      ]
    },
    {
      "slug": "podcast-episode-production-cost",
      "url": "https://www.revenuelab.fyi/toolbox/podcast-episode-production-cost",
      "title": "Podcast Production Cost Per Episode Calculator",
      "category": "financial",
      "summary": "Total real cost per episode including editing, hosting, and gear amortization.",
      "formula": "Per episode = (edit hours × hourly rate) + (monthly hosting ÷ episodes/month) + (gear cost ÷ expected episode lifespan).",
      "inputs": [
        {
          "id": "editHours",
          "label": "Editing/production hours per episode",
          "kind": "number"
        },
        {
          "id": "hourlyRate",
          "label": "Your (or editor's) hourly rate",
          "kind": "number"
        },
        {
          "id": "hosting",
          "label": "Monthly hosting cost",
          "kind": "number"
        },
        {
          "id": "episodesMonth",
          "label": "Episodes per month",
          "kind": "number"
        },
        {
          "id": "gearCost",
          "label": "Total gear investment",
          "kind": "number"
        },
        {
          "id": "gearLifespan",
          "label": "Expected episodes over gear's life",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Cost per episode"
        },
        {
          "id": "labor",
          "label": "Editing/production labor cost"
        },
        {
          "id": "hostingPer",
          "label": "Hosting cost per episode"
        },
        {
          "id": "gearPer",
          "label": "Amortized gear cost per episode"
        },
        {
          "id": "perMonth",
          "label": "Total monthly production cost"
        }
      ]
    },
    {
      "slug": "youtube-music-rpm",
      "url": "https://www.revenuelab.fyi/toolbox/youtube-music-rpm",
      "title": "YouTube Music Channel RPM Calculator",
      "category": "financial",
      "summary": "Estimate monthly ad revenue from views and RPM for a music channel.",
      "formula": "Revenue = (views ÷ 1000) × RPM; implied CPM ≈ RPM ÷ 0.55 (creator keeps ~55% of ad revenue on standard monetization).",
      "inputs": [
        {
          "id": "views",
          "label": "Monthly views",
          "kind": "number"
        },
        {
          "id": "rpm",
          "label": "RPM (revenue per 1,000 views)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "revenue",
          "label": "Monthly ad revenue"
        },
        {
          "id": "impliedCpm",
          "label": "Implied advertiser CPM"
        },
        {
          "id": "perView",
          "label": "Revenue per view"
        },
        {
          "id": "annual",
          "label": "Projected annual ad revenue"
        }
      ]
    },
    {
      "slug": "vinyl-pressing-economics",
      "url": "https://www.revenuelab.fyi/toolbox/vinyl-pressing-economics",
      "title": "Vinyl Pressing Unit Economics Calculator",
      "category": "financial",
      "summary": "Break down per-record cost, breakeven units, and profit per run.",
      "formula": "Per-unit cost = total pressing cost ÷ units; breakeven = fixed costs ÷ (sale price − variable cost per unit − royalty per unit).",
      "inputs": [
        {
          "id": "totalCost",
          "label": "Total pressing plant quote",
          "kind": "number"
        },
        {
          "id": "units",
          "label": "Units in the run",
          "kind": "number"
        },
        {
          "id": "salePrice",
          "label": "Sale price per record",
          "kind": "number"
        },
        {
          "id": "royaltyPerUnit",
          "label": "Mechanical royalty owed per unit",
          "kind": "number"
        },
        {
          "id": "shippingPerUnit",
          "label": "Packaging/shipping cost per unit",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "marginPerUnit",
          "label": "Profit per record sold"
        },
        {
          "id": "perUnitCost",
          "label": "Pressing cost per unit"
        },
        {
          "id": "breakevenUnits",
          "label": "Units to sell to break even"
        },
        {
          "id": "profitIfSellOut",
          "label": "Total profit if run sells out"
        }
      ]
    },
    {
      "slug": "venue-ticket-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/venue-ticket-breakeven",
      "title": "Venue Ticket Pricing Breakeven Calculator",
      "category": "financial",
      "summary": "Find the ticket price and attendance a show needs to break even.",
      "formula": "Breakeven tickets = fixed costs ÷ (price × (1 − fee %) − variable cost per ticket).",
      "inputs": [
        {
          "id": "fixedCosts",
          "label": "Fixed costs (venue, sound, promo)",
          "kind": "number"
        },
        {
          "id": "ticketPrice",
          "label": "Ticket price",
          "kind": "number"
        },
        {
          "id": "platformFee",
          "label": "Ticketing platform fee",
          "kind": "number"
        },
        {
          "id": "variableCost",
          "label": "Variable cost per ticket (guarantee, security)",
          "kind": "number"
        },
        {
          "id": "expectedAttendance",
          "label": "Expected attendance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenTickets",
          "label": "Tickets needed to break even"
        },
        {
          "id": "priceForBreakeven",
          "label": "Price needed at expected attendance"
        },
        {
          "id": "netPerTicket",
          "label": "Net revenue per ticket"
        },
        {
          "id": "profitAtExpected",
          "label": "Profit/loss at expected attendance"
        }
      ]
    },
    {
      "slug": "pa-power-sizing",
      "url": "https://www.revenuelab.fyi/toolbox/pa-power-sizing",
      "title": "PA Power/Wattage Sizing Calculator",
      "category": "other",
      "summary": "Estimate total wattage needed for room size and headroom.",
      "formula": "Base watts = attendees × watts-per-person factor; total with headroom = base watts × headroom multiplier.",
      "inputs": [
        {
          "id": "attendees",
          "label": "Expected attendees",
          "kind": "number"
        },
        {
          "id": "genre",
          "label": "Show type",
          "kind": "select"
        },
        {
          "id": "headroom",
          "label": "Headroom multiplier for peaks",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total peak system wattage needed"
        },
        {
          "id": "suggestedContinuous",
          "label": "Continuous (RMS) power target"
        },
        {
          "id": "perPerson",
          "label": "Watts per person used"
        }
      ]
    },
    {
      "slug": "speaker-spl-distance",
      "url": "https://www.revenuelab.fyi/toolbox/speaker-spl-distance",
      "title": "Speaker SPL Distance Calculator",
      "category": "other",
      "summary": "Estimate sound pressure level at any distance from a speaker.",
      "formula": "SPL at distance = SPL at reference − 20 × log10(distance ÷ reference distance).",
      "inputs": [
        {
          "id": "refSpl",
          "label": "Rated SPL at reference distance",
          "kind": "number"
        },
        {
          "id": "refDistance",
          "label": "Reference distance",
          "kind": "number"
        },
        {
          "id": "targetDistance",
          "label": "Distance to listener",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "spl",
          "label": "Estimated SPL at listener"
        },
        {
          "id": "dbLoss",
          "label": "Total dB lost over distance"
        },
        {
          "id": "doublingLoss",
          "label": "dB lost per distance doubling (free field)"
        }
      ]
    },
    {
      "slug": "db-attenuation",
      "url": "https://www.revenuelab.fyi/toolbox/db-attenuation",
      "title": "dB Attenuation Calculator",
      "category": "other",
      "summary": "Convert dB change into a power or voltage ratio, or reverse it.",
      "formula": "Power ratio = 10^(dB/10); voltage/amplitude ratio = 10^(dB/20).",
      "inputs": [
        {
          "id": "db",
          "label": "dB change",
          "kind": "number"
        },
        {
          "id": "quantityType",
          "label": "Quantity type",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "ratio",
          "label": "Resulting ratio (multiplier)"
        },
        {
          "id": "percentChange",
          "label": "Percent change"
        },
        {
          "id": "inverseDb",
          "label": "dB change to reverse this"
        }
      ]
    },
    {
      "slug": "bpm-delay-reverb-time",
      "url": "https://www.revenuelab.fyi/toolbox/bpm-delay-reverb-time",
      "title": "BPM to Delay/Reverb Time Calculator",
      "category": "other",
      "summary": "Convert song tempo into millisecond delay and reverb times for any note value.",
      "formula": "Quarter note ms = 60000 ÷ BPM; other subdivisions = quarter note ms × subdivision fraction × (1.5 for dotted, 2/3 for triplet).",
      "inputs": [
        {
          "id": "bpm",
          "label": "Tempo",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "quarter",
          "label": "Quarter note (ms)"
        },
        {
          "id": "dottedEighth",
          "label": "Dotted eighth (ms)"
        },
        {
          "id": "eighth",
          "label": "Eighth note (ms)"
        },
        {
          "id": "eighthTriplet",
          "label": "Eighth triplet (ms)"
        },
        {
          "id": "half",
          "label": "Half note (ms)"
        },
        {
          "id": "whole",
          "label": "Whole note (ms)"
        }
      ]
    },
    {
      "slug": "tempo-bar-duration",
      "url": "https://www.revenuelab.fyi/toolbox/tempo-bar-duration",
      "title": "Tempo to Bar Duration Calculator",
      "category": "other",
      "summary": "Convert BPM and time signature into the length of a bar in seconds.",
      "formula": "Beat duration = 60 ÷ BPM; bar duration = beat duration × beats per bar; bars in duration = target seconds ÷ bar duration.",
      "inputs": [
        {
          "id": "bpm",
          "label": "Tempo",
          "kind": "number"
        },
        {
          "id": "beatsPerBar",
          "label": "Beats per bar (time signature numerator)",
          "kind": "number"
        },
        {
          "id": "targetSeconds",
          "label": "Target section length",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "barDuration",
          "label": "Bar duration"
        },
        {
          "id": "beatDuration",
          "label": "Single beat duration"
        },
        {
          "id": "barsInTarget",
          "label": "Exact bars fitting target length"
        },
        {
          "id": "nearestBars",
          "label": "Nearest whole number of bars"
        }
      ]
    },
    {
      "slug": "sample-rate-file-size",
      "url": "https://www.revenuelab.fyi/toolbox/sample-rate-file-size",
      "title": "Sample Rate & Bit Depth File Size Calculator",
      "category": "other",
      "summary": "Calculate uncompressed WAV/AIFF file size from sample rate, bit depth, and channels.",
      "formula": "File size (bytes) = sample rate × bit depth ÷ 8 × channels × duration in seconds.",
      "inputs": [
        {
          "id": "sampleRate",
          "label": "Sample rate",
          "kind": "select"
        },
        {
          "id": "bitDepth",
          "label": "Bit depth",
          "kind": "select"
        },
        {
          "id": "channels",
          "label": "Channels (1=mono, 2=stereo, etc.)",
          "kind": "number"
        },
        {
          "id": "minutes",
          "label": "Duration",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "mb",
          "label": "File size (MB)"
        },
        {
          "id": "gb",
          "label": "File size (GB)"
        },
        {
          "id": "mbPerMin",
          "label": "MB per minute at this setting"
        },
        {
          "id": "bytes",
          "label": "Exact size in bytes"
        }
      ]
    },
    {
      "slug": "tape-session-runtime",
      "url": "https://www.revenuelab.fyi/toolbox/tape-session-runtime",
      "title": "Recording Session Runtime Calculator",
      "category": "other",
      "summary": "How much recording time fits on a drive or in a session budget.",
      "formula": "Minutes available = (storage bytes ÷ (sample rate × bit depth/8 × tracks)) ÷ 60.",
      "inputs": [
        {
          "id": "storageGb",
          "label": "Available storage",
          "kind": "number"
        },
        {
          "id": "tracks",
          "label": "Simultaneous tracks recording",
          "kind": "number"
        },
        {
          "id": "sampleRate",
          "label": "Sample rate",
          "kind": "number"
        },
        {
          "id": "bitDepth",
          "label": "Bit depth",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "minutes",
          "label": "Recordable minutes"
        },
        {
          "id": "hours",
          "label": "Recordable hours"
        },
        {
          "id": "songsAt4Min",
          "label": "Approx. 4-minute songs (all tracks)"
        },
        {
          "id": "bytesPerSecond",
          "label": "Data rate (bytes/sec)"
        }
      ]
    },
    {
      "slug": "guitar-string-gauge-tension",
      "url": "https://www.revenuelab.fyi/toolbox/guitar-string-gauge-tension",
      "title": "Guitar String Tension Calculator",
      "category": "other",
      "summary": "Calculate string tension in pounds from gauge, scale length, and pitch.",
      "formula": "Tension (lb) = (UW × (2 × L × F)^2) ÷ 386.4, where UW is unit weight (lb/in), L is scale length (in), F is frequency (Hz).",
      "inputs": [
        {
          "id": "gauge",
          "label": "String gauge",
          "kind": "number"
        },
        {
          "id": "unitWeight",
          "label": "Unit weight override (lb/in, 0 = auto plain steel estimate)",
          "kind": "number"
        },
        {
          "id": "scaleLength",
          "label": "Scale length",
          "kind": "number"
        },
        {
          "id": "frequency",
          "label": "Target pitch frequency",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "tension",
          "label": "String tension"
        },
        {
          "id": "unitWeightUsed",
          "label": "Unit weight used (lb/in)"
        }
      ]
    },
    {
      "slug": "room-mode-frequency",
      "url": "https://www.revenuelab.fyi/toolbox/room-mode-frequency",
      "title": "Room Mode Frequency Calculator",
      "category": "other",
      "summary": "Find the axial room mode frequencies causing bass buildup or nulls.",
      "formula": "Mode frequency = (speed of sound ÷ 2) × (n ÷ dimension), for n = 1, 2, 3 and speed of sound ≈ 1130 ft/sec.",
      "inputs": [
        {
          "id": "length",
          "label": "Room length",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Room width",
          "kind": "number"
        },
        {
          "id": "height",
          "label": "Room height",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "length1",
          "label": "Length mode 1 (fundamental)"
        },
        {
          "id": "width1",
          "label": "Width mode 1"
        },
        {
          "id": "height1",
          "label": "Height mode 1"
        },
        {
          "id": "length2",
          "label": "Length mode 2"
        },
        {
          "id": "width2",
          "label": "Width mode 2"
        },
        {
          "id": "height2",
          "label": "Height mode 2"
        }
      ]
    },
    {
      "slug": "net-revenue-retention",
      "url": "https://www.revenuelab.fyi/toolbox/net-revenue-retention",
      "title": "Net Revenue Retention (NRR) Calculator",
      "category": "financial",
      "summary": "See how much revenue your existing customers generate a year later, expansion included.",
      "formula": "NRR = (Starting ARR + Expansion − Contraction − Churn) ÷ Starting ARR × 100",
      "inputs": [
        {
          "id": "startArr",
          "label": "Starting ARR (existing customers)",
          "kind": "number"
        },
        {
          "id": "expansion",
          "label": "Expansion revenue added",
          "kind": "number"
        },
        {
          "id": "contraction",
          "label": "Contraction (downgrades)",
          "kind": "number"
        },
        {
          "id": "churned",
          "label": "Churned revenue (lost logos)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "nrr",
          "label": "Net Revenue Retention"
        },
        {
          "id": "grr",
          "label": "Gross Revenue Retention"
        },
        {
          "id": "endArr",
          "label": "Ending ARR from cohort"
        },
        {
          "id": "expansionRate",
          "label": "Expansion as % of starting ARR"
        },
        {
          "id": "netExpansion",
          "label": "Net dollar impact"
        }
      ]
    },
    {
      "slug": "gross-revenue-retention",
      "url": "https://www.revenuelab.fyi/toolbox/gross-revenue-retention",
      "title": "Gross Revenue Retention (GRR) Calculator",
      "category": "financial",
      "summary": "Measure how much revenue you'd keep with zero upsell, ever.",
      "formula": "GRR = (Starting ARR − Contraction − Churn) ÷ Starting ARR × 100 (capped at 100%)",
      "inputs": [
        {
          "id": "startArr",
          "label": "Starting ARR",
          "kind": "number"
        },
        {
          "id": "contraction",
          "label": "Contraction (downgrades)",
          "kind": "number"
        },
        {
          "id": "churned",
          "label": "Churned revenue",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "grr",
          "label": "Gross Revenue Retention"
        },
        {
          "id": "revenueAtRisk",
          "label": "Revenue lost to contraction + churn"
        },
        {
          "id": "retainedArr",
          "label": "ARR retained without expansion"
        },
        {
          "id": "annualDollarLoss",
          "label": "Annualized dollar loss"
        }
      ]
    },
    {
      "slug": "logo-vs-revenue-churn",
      "url": "https://www.revenuelab.fyi/toolbox/logo-vs-revenue-churn",
      "title": "Logo Churn vs Revenue Churn Calculator",
      "category": "financial",
      "summary": "Compare the percentage of customers you lose against the percentage of revenue you lose.",
      "formula": "Logo churn = lost customers ÷ starting customers × 100; Revenue churn = lost revenue ÷ starting revenue × 100",
      "inputs": [
        {
          "id": "startCustomers",
          "label": "Starting customer count",
          "kind": "number"
        },
        {
          "id": "lostCustomers",
          "label": "Customers lost (period)",
          "kind": "number"
        },
        {
          "id": "startRevenue",
          "label": "Starting ARR",
          "kind": "number"
        },
        {
          "id": "lostRevenue",
          "label": "ARR lost from churned customers",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "logoChurn",
          "label": "Logo churn rate"
        },
        {
          "id": "revenueChurn",
          "label": "Revenue churn rate"
        },
        {
          "id": "avgLostAccountArr",
          "label": "Avg ARR of churned accounts"
        },
        {
          "id": "avgBaseArr",
          "label": "Avg ARR across whole base"
        },
        {
          "id": "divergence",
          "label": "Logo churn minus revenue churn (pts)"
        }
      ]
    },
    {
      "slug": "saas-quick-ratio",
      "url": "https://www.revenuelab.fyi/toolbox/saas-quick-ratio",
      "title": "SaaS Quick Ratio Calculator",
      "category": "financial",
      "summary": "See how much growth you generate for every dollar of churn and contraction.",
      "formula": "Quick Ratio = (New ARR + Expansion ARR) ÷ (Churned ARR + Contraction ARR)",
      "inputs": [
        {
          "id": "newArr",
          "label": "New ARR from new customers",
          "kind": "number"
        },
        {
          "id": "expansionArr",
          "label": "Expansion ARR",
          "kind": "number"
        },
        {
          "id": "churnedArr",
          "label": "Churned ARR",
          "kind": "number"
        },
        {
          "id": "contractionArr",
          "label": "Contraction ARR",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "quickRatio",
          "label": "SaaS Quick Ratio"
        },
        {
          "id": "netNewArr",
          "label": "Net new ARR (period)"
        },
        {
          "id": "gained",
          "label": "Total ARR gained"
        },
        {
          "id": "expansionShare",
          "label": "Expansion share of gained ARR"
        }
      ]
    },
    {
      "slug": "sales-magic-number",
      "url": "https://www.revenuelab.fyi/toolbox/sales-magic-number",
      "title": "Sales Magic Number Calculator",
      "category": "financial",
      "summary": "Measure how much new ARR your sales and marketing spend produces.",
      "formula": "Magic Number = (Current Quarter ARR − Prior Quarter ARR) × 4 ÷ Prior Quarter S&M Spend",
      "inputs": [
        {
          "id": "currentArr",
          "label": "Current quarter ARR",
          "kind": "number"
        },
        {
          "id": "priorArr",
          "label": "Prior quarter ARR",
          "kind": "number"
        },
        {
          "id": "priorSm",
          "label": "Prior quarter S&M spend",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "magicNumber",
          "label": "Sales Magic Number"
        },
        {
          "id": "deltaArr",
          "label": "Quarter-over-quarter ARR change"
        },
        {
          "id": "annualizedNewArr",
          "label": "Annualized new ARR run rate"
        },
        {
          "id": "paybackMonths",
          "label": "Implied S&M payback (months)"
        }
      ]
    },
    {
      "slug": "burn-multiple",
      "url": "https://www.revenuelab.fyi/toolbox/burn-multiple",
      "title": "Burn Multiple Calculator",
      "category": "financial",
      "summary": "See how many dollars you burn to generate one dollar of net new ARR.",
      "formula": "Burn Multiple = Net Cash Burned ÷ Net New ARR (same period)",
      "inputs": [
        {
          "id": "netBurn",
          "label": "Net cash burned (period)",
          "kind": "number"
        },
        {
          "id": "netNewArr",
          "label": "Net new ARR added (same period)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "multiple",
          "label": "Burn Multiple"
        },
        {
          "id": "rating",
          "label": "Efficiency rating"
        },
        {
          "id": "dollarsPerArrDollar",
          "label": "$ burned per $1 net new ARR"
        }
      ]
    },
    {
      "slug": "cac-payback-period",
      "url": "https://www.revenuelab.fyi/toolbox/cac-payback-period",
      "title": "CAC Payback Period Calculator",
      "category": "financial",
      "summary": "Find out how many months it takes to recoup what you spent acquiring a customer.",
      "formula": "CAC Payback (months) = CAC ÷ (Monthly Revenue per Customer × Gross Margin %)",
      "inputs": [
        {
          "id": "cac",
          "label": "Fully loaded CAC per customer",
          "kind": "number"
        },
        {
          "id": "acv",
          "label": "Annual contract value (ACV)",
          "kind": "number"
        },
        {
          "id": "grossMargin",
          "label": "Gross margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paybackMonths",
          "label": "CAC payback period"
        },
        {
          "id": "monthlyGrossProfit",
          "label": "Monthly gross profit per customer"
        },
        {
          "id": "annualGrossProfit",
          "label": "Annual gross profit per customer"
        },
        {
          "id": "cac",
          "label": "CAC used in calc"
        }
      ]
    },
    {
      "slug": "ltv-to-cac-ratio",
      "url": "https://www.revenuelab.fyi/toolbox/ltv-to-cac-ratio",
      "title": "LTV:CAC Ratio Calculator",
      "category": "financial",
      "summary": "Compare the lifetime value of a customer against what it costs to acquire them.",
      "formula": "LTV = (ACV × Gross Margin %) ÷ Annual Churn Rate; Ratio = LTV ÷ CAC",
      "inputs": [
        {
          "id": "acv",
          "label": "Annual contract value (ACV)",
          "kind": "number"
        },
        {
          "id": "grossMargin",
          "label": "Gross margin",
          "kind": "number"
        },
        {
          "id": "annualChurn",
          "label": "Annual revenue churn rate",
          "kind": "number"
        },
        {
          "id": "cac",
          "label": "CAC per customer",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ratio",
          "label": "LTV:CAC ratio"
        },
        {
          "id": "ltv",
          "label": "Customer lifetime value"
        },
        {
          "id": "avgLifetimeYears",
          "label": "Implied average customer lifetime (years)"
        },
        {
          "id": "cac",
          "label": "CAC used"
        }
      ]
    },
    {
      "slug": "arr-bridge",
      "url": "https://www.revenuelab.fyi/toolbox/arr-bridge",
      "title": "ARR Bridge Calculator",
      "category": "financial",
      "summary": "Break your ARR change down into new, expansion, contraction, and churn.",
      "formula": "Ending ARR = Starting ARR + New − Churn − Contraction + Expansion",
      "inputs": [
        {
          "id": "startArr",
          "label": "Starting ARR",
          "kind": "number"
        },
        {
          "id": "newArr",
          "label": "New business ARR",
          "kind": "number"
        },
        {
          "id": "expansionArr",
          "label": "Expansion ARR",
          "kind": "number"
        },
        {
          "id": "contractionArr",
          "label": "Contraction ARR",
          "kind": "number"
        },
        {
          "id": "churnedArr",
          "label": "Churned ARR",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "endArr",
          "label": "Ending ARR"
        },
        {
          "id": "netNewArr",
          "label": "Net new ARR"
        },
        {
          "id": "growthRate",
          "label": "Period growth rate"
        },
        {
          "id": "grossAdds",
          "label": "Gross ARR added"
        },
        {
          "id": "grossLosses",
          "label": "Gross ARR lost"
        }
      ]
    },
    {
      "slug": "expansion-revenue-rate",
      "url": "https://www.revenuelab.fyi/toolbox/expansion-revenue-rate",
      "title": "Expansion Revenue Rate Calculator",
      "category": "financial",
      "summary": "Measure how much of your growth comes from existing customers spending more.",
      "formula": "Expansion Rate = Expansion ARR ÷ Starting ARR × 100 (or ÷ Total Net New ARR for share-of-growth view)",
      "inputs": [
        {
          "id": "startArr",
          "label": "Starting ARR",
          "kind": "number"
        },
        {
          "id": "expansionArr",
          "label": "Expansion ARR (period)",
          "kind": "number"
        },
        {
          "id": "newArr",
          "label": "New business ARR (period)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "expansionRateOfBase",
          "label": "Expansion rate of starting ARR"
        },
        {
          "id": "expansionShareOfGrowth",
          "label": "Expansion share of total new ARR"
        },
        {
          "id": "totalNetNew",
          "label": "Total net new ARR"
        },
        {
          "id": "annualizedExpansionMultiplier",
          "label": "Base growth multiplier from expansion alone"
        }
      ]
    },
    {
      "slug": "plg-free-to-paid-conversion",
      "url": "https://www.revenuelab.fyi/toolbox/plg-free-to-paid-conversion",
      "title": "PLG Free-to-Paid Conversion Calculator",
      "category": "financial",
      "summary": "Model how many free/freemium users you need to hit a paid revenue target.",
      "formula": "Paid Customers = Free Signups × Conversion Rate; MRR = Paid Customers × Avg Revenue per Paid User",
      "inputs": [
        {
          "id": "freeSignups",
          "label": "Monthly free signups",
          "kind": "number"
        },
        {
          "id": "conversionRate",
          "label": "Free-to-paid conversion rate",
          "kind": "number"
        },
        {
          "id": "arpu",
          "label": "Average revenue per paid user",
          "kind": "number"
        },
        {
          "id": "monthlyChurn",
          "label": "Monthly paid churn rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "steadyStateMrr",
          "label": "Steady-state MRR at this funnel"
        },
        {
          "id": "newPaidPerMonth",
          "label": "New paid customers per month"
        },
        {
          "id": "steadyStatePaidUsers",
          "label": "Steady-state paid customer count"
        },
        {
          "id": "newMrrPerMonth",
          "label": "New MRR added per month"
        }
      ]
    },
    {
      "slug": "trial-length-conversion-impact",
      "url": "https://www.revenuelab.fyi/toolbox/trial-length-conversion-impact",
      "title": "Trial Length Conversion Impact Calculator",
      "category": "financial",
      "summary": "See how changing your trial length affects conversion rate and revenue timing.",
      "formula": "Adjusted Conversion = Base Conversion × (1 + Elasticity × Trial Length Change in Weeks); Revenue Delay = Trial Length Change",
      "inputs": [
        {
          "id": "signups",
          "label": "Monthly trial signups",
          "kind": "number"
        },
        {
          "id": "baseConversion",
          "label": "Current conversion rate at current trial length",
          "kind": "number"
        },
        {
          "id": "currentTrialDays",
          "label": "Current trial length",
          "kind": "number"
        },
        {
          "id": "newTrialDays",
          "label": "New trial length to test",
          "kind": "number"
        },
        {
          "id": "elasticity",
          "label": "Conversion elasticity per week of trial change",
          "kind": "number"
        },
        {
          "id": "acv",
          "label": "Annual value per converted customer",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "adjustedConv",
          "label": "Projected conversion rate at new trial length"
        },
        {
          "id": "newCustomers",
          "label": "Projected converted customers/month"
        },
        {
          "id": "revenueDelta",
          "label": "Monthly ARR impact vs current trial"
        },
        {
          "id": "revenueDelayDays",
          "label": "Additional days until revenue books"
        }
      ]
    },
    {
      "slug": "seat-expansion-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/seat-expansion-revenue",
      "title": "Seat Expansion Revenue Calculator",
      "category": "financial",
      "summary": "Project how much additional ARR comes from customers adding seats over time.",
      "formula": "Expansion ARR = Current Seats × Seat Growth Rate × Price per Seat × 12",
      "inputs": [
        {
          "id": "currentSeats",
          "label": "Total current seats across customers",
          "kind": "number"
        },
        {
          "id": "seatGrowthRate",
          "label": "Annual seat growth rate",
          "kind": "number"
        },
        {
          "id": "pricePerSeat",
          "label": "Price per seat",
          "kind": "number"
        },
        {
          "id": "adoptionRate",
          "label": "New hires who get licensed",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "expansionArr",
          "label": "Projected annual expansion ARR"
        },
        {
          "id": "expansionMrr",
          "label": "Projected new monthly recurring revenue"
        },
        {
          "id": "newSeats",
          "label": "Net new licensed seats"
        },
        {
          "id": "projectedTotalSeats",
          "label": "Projected total seats"
        }
      ]
    },
    {
      "slug": "usage-based-revenue-forecast",
      "url": "https://www.revenuelab.fyi/toolbox/usage-based-revenue-forecast",
      "title": "Usage-Based Revenue Forecast Calculator",
      "category": "financial",
      "summary": "Forecast consumption revenue from usage volume, growth rate, and unit pricing.",
      "formula": "Forecast Revenue = Current Usage Volume × (1 + Growth Rate) × Price per Unit × Retention Adjustment",
      "inputs": [
        {
          "id": "currentUsage",
          "label": "Current monthly usage volume (units)",
          "kind": "number"
        },
        {
          "id": "pricePerUnit",
          "label": "Price per 1,000 units",
          "kind": "number"
        },
        {
          "id": "monthlyGrowthRate",
          "label": "Monthly usage growth rate",
          "kind": "number"
        },
        {
          "id": "accountChurn",
          "label": "Monthly account churn rate (fully stopped usage)",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Forecast horizon",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalRevenue",
          "label": "Cumulative forecast revenue"
        },
        {
          "id": "currentMrr",
          "label": "Current monthly revenue"
        },
        {
          "id": "endingMrr",
          "label": "Projected ending monthly revenue"
        },
        {
          "id": "endingVolume",
          "label": "Projected ending usage volume"
        }
      ]
    },
    {
      "slug": "annual-vs-monthly-discount",
      "url": "https://www.revenuelab.fyi/toolbox/annual-vs-monthly-discount",
      "title": "Annual vs Monthly Discount Tradeoff Calculator",
      "category": "financial",
      "summary": "Find the break-even discount where annual prepay beats monthly billing on cash and churn.",
      "formula": "Expected Monthly-Path Revenue = Monthly Price × Sum of Retention Probabilities over 12 months; compare to Annual Price × (1 − Discount)",
      "inputs": [
        {
          "id": "monthlyPrice",
          "label": "Monthly plan price",
          "kind": "number"
        },
        {
          "id": "monthlyChurn",
          "label": "Monthly churn rate (monthly plan)",
          "kind": "number"
        },
        {
          "id": "annualDiscount",
          "label": "Annual plan discount",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualPriceDiscounted",
          "label": "Discounted annual plan revenue"
        },
        {
          "id": "expectedMonthlyRevenue",
          "label": "Expected 12-month revenue on monthly plan (churn-adjusted)"
        },
        {
          "id": "advantage",
          "label": "Annual plan advantage vs monthly path"
        },
        {
          "id": "breakEvenDiscount",
          "label": "Max discount that still breaks even"
        }
      ]
    },
    {
      "slug": "saas-cash-runway-growth",
      "url": "https://www.revenuelab.fyi/toolbox/saas-cash-runway-growth",
      "title": "Cash Runway with Growth Calculator",
      "category": "financial",
      "summary": "Project runway accounting for growing revenue offsetting burn over time.",
      "formula": "Each month: Net Burn = Fixed Costs − Revenue; Revenue grows monthly; Runway = months until Cash reaches zero",
      "inputs": [
        {
          "id": "cash",
          "label": "Cash on hand",
          "kind": "number"
        },
        {
          "id": "monthlyRevenue",
          "label": "Current monthly revenue",
          "kind": "number"
        },
        {
          "id": "monthlyCosts",
          "label": "Current total monthly costs",
          "kind": "number"
        },
        {
          "id": "revenueGrowthRate",
          "label": "Monthly revenue growth rate",
          "kind": "number"
        },
        {
          "id": "costGrowthRate",
          "label": "Monthly cost growth rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "growthAdjustedRunway",
          "label": "Growth-adjusted runway (months)"
        },
        {
          "id": "staticRunway",
          "label": "Static (flat-burn) runway (months)"
        },
        {
          "id": "cashflowPositiveMonth",
          "label": "Month you reach cash-flow positive"
        },
        {
          "id": "runwayDelta",
          "label": "Extra runway from growth vs static estimate"
        }
      ]
    },
    {
      "slug": "rule-of-40",
      "url": "https://www.revenuelab.fyi/toolbox/rule-of-40",
      "title": "Rule of 40 Calculator",
      "category": "financial",
      "summary": "Check whether your growth rate plus profit margin clears the 40% bar.",
      "formula": "Rule of 40 Score = Revenue Growth Rate % + Profit Margin % (EBITDA or FCF margin)",
      "inputs": [
        {
          "id": "growthRate",
          "label": "Annual revenue growth rate",
          "kind": "number"
        },
        {
          "id": "profitMargin",
          "label": "EBITDA or FCF margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "score",
          "label": "Rule of 40 Score"
        },
        {
          "id": "rating",
          "label": "Assessment"
        },
        {
          "id": "growth",
          "label": "Growth rate component"
        },
        {
          "id": "margin",
          "label": "Profit margin component"
        }
      ]
    },
    {
      "slug": "quota-coverage-ratio",
      "url": "https://www.revenuelab.fyi/toolbox/quota-coverage-ratio",
      "title": "Sales Quota Coverage Ratio Calculator",
      "category": "financial",
      "summary": "Check whether you have enough pipeline to hit your sales target.",
      "formula": "Coverage Ratio = Total Qualified Pipeline Value ÷ Sales Quota",
      "inputs": [
        {
          "id": "pipeline",
          "label": "Total qualified pipeline value",
          "kind": "number"
        },
        {
          "id": "quota",
          "label": "Sales quota (period)",
          "kind": "number"
        },
        {
          "id": "winRate",
          "label": "Average win rate on qualified opps",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "coverageRatio",
          "label": "Pipeline coverage ratio"
        },
        {
          "id": "impliedAttainment",
          "label": "Implied quota attainment at current win rate"
        },
        {
          "id": "expectedBookings",
          "label": "Expected bookings from current pipeline"
        },
        {
          "id": "requiredCoverage",
          "label": "Minimum coverage needed at this win rate"
        }
      ]
    },
    {
      "slug": "sdr-pipeline-generation",
      "url": "https://www.revenuelab.fyi/toolbox/sdr-pipeline-generation",
      "title": "SDR Pipeline Generation Calculator",
      "category": "financial",
      "summary": "Work backward from a pipeline target to the outbound activity your SDR team needs.",
      "formula": "Dials needed = (Pipeline Target ÷ Avg Opp Value) ÷ Show Rate ÷ Meeting-to-Opp Rate ÷ Connect-to-Meeting Rate ÷ Dial-to-Connect Rate",
      "inputs": [
        {
          "id": "pipelineTarget",
          "label": "Pipeline target this quarter",
          "kind": "number"
        },
        {
          "id": "avgOppValue",
          "label": "Average qualified opportunity value",
          "kind": "number"
        },
        {
          "id": "dialToConnect",
          "label": "Dial-to-connect rate",
          "kind": "number"
        },
        {
          "id": "connectToMeeting",
          "label": "Connect-to-meeting-booked rate",
          "kind": "number"
        },
        {
          "id": "showRate",
          "label": "Meeting show rate",
          "kind": "number"
        },
        {
          "id": "meetingToOpp",
          "label": "Meeting-to-qualified-opp rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "dialsNeeded",
          "label": "Total dials needed"
        },
        {
          "id": "connectsNeeded",
          "label": "Connects needed"
        },
        {
          "id": "meetingsBookedNeeded",
          "label": "Meetings to book"
        },
        {
          "id": "oppsNeeded",
          "label": "Qualified opportunities needed"
        }
      ]
    },
    {
      "slug": "demo-to-close-funnel",
      "url": "https://www.revenuelab.fyi/toolbox/demo-to-close-funnel",
      "title": "Demo-to-Close Funnel Calculator",
      "category": "financial",
      "summary": "See how many demos you need to hit a bookings target given your close rates.",
      "formula": "Bookings = Demos Booked × Show Rate × Proposal Rate × Close Rate × Avg Deal Size",
      "inputs": [
        {
          "id": "demosBooked",
          "label": "Demos booked (period)",
          "kind": "number"
        },
        {
          "id": "showRate",
          "label": "Demo show rate",
          "kind": "number"
        },
        {
          "id": "proposalRate",
          "label": "Demo-to-proposal rate",
          "kind": "number"
        },
        {
          "id": "closeRate",
          "label": "Proposal-to-close rate",
          "kind": "number"
        },
        {
          "id": "avgDealSize",
          "label": "Average deal size (ACV)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "bookings",
          "label": "Projected bookings"
        },
        {
          "id": "dealsWon",
          "label": "Deals won"
        },
        {
          "id": "proposalsSent",
          "label": "Proposals sent"
        },
        {
          "id": "overallConversion",
          "label": "Overall demo-to-close rate"
        }
      ]
    },
    {
      "slug": "time-to-value-cost",
      "url": "https://www.revenuelab.fyi/toolbox/time-to-value-cost",
      "title": "Onboarding Time-to-Value Cost Calculator",
      "category": "financial",
      "summary": "See what slow onboarding actually costs you in churn risk and CS capacity.",
      "formula": "CS Cost per Account = Onboarding Hours × Fully Loaded Hourly Cost; Churn Risk Cost = ARR × Elevated Churn Probability from Slow TTV",
      "inputs": [
        {
          "id": "onboardingDays",
          "label": "Average time-to-value",
          "kind": "number"
        },
        {
          "id": "targetDays",
          "label": "Target/benchmark time-to-value",
          "kind": "number"
        },
        {
          "id": "csHoursPerAccount",
          "label": "CS hours spent per account during onboarding",
          "kind": "number"
        },
        {
          "id": "csHourlyCost",
          "label": "Fully loaded CS hourly cost",
          "kind": "number"
        },
        {
          "id": "customersPerYear",
          "label": "New customers onboarded per year",
          "kind": "number"
        },
        {
          "id": "avgArr",
          "label": "Average ARR per customer",
          "kind": "number"
        },
        {
          "id": "churnRiskPerExtraWeek",
          "label": "Extra churn risk per week over target",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "arrAtRisk",
          "label": "Annual ARR at risk from slow onboarding"
        },
        {
          "id": "extraChurnRisk",
          "label": "Extra churn probability from slow TTV"
        },
        {
          "id": "csCostPerAccount",
          "label": "CS cost per account onboarded"
        },
        {
          "id": "totalCsCost",
          "label": "Total annual CS onboarding cost"
        }
      ]
    },
    {
      "slug": "support-cost-per-account",
      "url": "https://www.revenuelab.fyi/toolbox/support-cost-per-account",
      "title": "Support Cost Per Account Calculator",
      "category": "financial",
      "summary": "Find out what it actually costs to support each customer, and whether it fits your margin.",
      "formula": "Support Cost per Account = Total Support Cost ÷ Active Accounts; Cost per Ticket = Total Cost ÷ Ticket Volume",
      "inputs": [
        {
          "id": "supportHeadcount",
          "label": "Support team headcount",
          "kind": "number"
        },
        {
          "id": "avgFullyLoadedSalary",
          "label": "Avg fully loaded salary per agent",
          "kind": "number"
        },
        {
          "id": "toolingCost",
          "label": "Support tooling cost per year",
          "kind": "number"
        },
        {
          "id": "activeAccounts",
          "label": "Active accounts",
          "kind": "number"
        },
        {
          "id": "ticketsPerMonth",
          "label": "Support tickets per month",
          "kind": "number"
        },
        {
          "id": "avgArr",
          "label": "Average ARR per account",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerAccount",
          "label": "Support cost per account/year"
        },
        {
          "id": "supportCostAsShareOfArr",
          "label": "Support cost as % of avg ARR"
        },
        {
          "id": "costPerTicket",
          "label": "Cost per support ticket"
        },
        {
          "id": "totalCost",
          "label": "Total annual support cost"
        }
      ]
    },
    {
      "slug": "saas-gross-margin",
      "url": "https://www.revenuelab.fyi/toolbox/saas-gross-margin",
      "title": "SaaS Gross Margin Calculator",
      "category": "financial",
      "summary": "Calculate true gross margin including hosting, support, and infrastructure costs.",
      "formula": "Gross Margin % = (Revenue − COGS) ÷ Revenue × 100, where COGS = Hosting + Support + Implementation + Third-Party Licensing",
      "inputs": [
        {
          "id": "revenue",
          "label": "Monthly revenue",
          "kind": "number"
        },
        {
          "id": "hostingCost",
          "label": "Monthly hosting/infrastructure cost",
          "kind": "number"
        },
        {
          "id": "supportCost",
          "label": "Monthly customer support cost",
          "kind": "number"
        },
        {
          "id": "implementationCost",
          "label": "Monthly implementation/onboarding cost",
          "kind": "number"
        },
        {
          "id": "thirdPartyLicensing",
          "label": "Monthly third-party licensing/API costs",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "grossMargin",
          "label": "Gross margin"
        },
        {
          "id": "grossProfit",
          "label": "Monthly gross profit"
        },
        {
          "id": "annualGrossProfit",
          "label": "Annualized gross profit"
        },
        {
          "id": "cogsAsShareOfRevenue",
          "label": "Total COGS as % of revenue"
        }
      ]
    },
    {
      "slug": "price-increase-churn-tradeoff",
      "url": "https://www.revenuelab.fyi/toolbox/price-increase-churn-tradeoff",
      "title": "Price Increase Churn Tradeoff Calculator",
      "category": "financial",
      "summary": "Model whether a price increase nets more revenue after accounting for extra churn.",
      "formula": "Net Revenue Impact = (Base ARR × Price Increase %) − (Base ARR × Incremental Churn % from Increase)",
      "inputs": [
        {
          "id": "baseArr",
          "label": "Base ARR affected by price increase",
          "kind": "number"
        },
        {
          "id": "priceIncrease",
          "label": "Price increase",
          "kind": "number"
        },
        {
          "id": "baselineChurn",
          "label": "Baseline annual churn rate",
          "kind": "number"
        },
        {
          "id": "incrementalChurn",
          "label": "Additional churn caused by the increase",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netImpact",
          "label": "Net annual revenue impact"
        },
        {
          "id": "revenueFromIncrease",
          "label": "Revenue gained from retained customers"
        },
        {
          "id": "revenueLostFromExtraChurn",
          "label": "Revenue lost from extra churn"
        },
        {
          "id": "breakEvenIncrementalChurn",
          "label": "Max incremental churn before it backfires"
        }
      ]
    },
    {
      "slug": "discount-approval-impact",
      "url": "https://www.revenuelab.fyi/toolbox/discount-approval-impact",
      "title": "Discount Approval Impact Calculator",
      "category": "financial",
      "summary": "See how much margin and ARR a sales discount actually costs across a full sales team.",
      "formula": "Annual Discount Cost = Total Deals × Discount Approval Rate × Avg Discount % × Avg Deal Size (list)",
      "inputs": [
        {
          "id": "dealsPerYear",
          "label": "Total deals closed per year",
          "kind": "number"
        },
        {
          "id": "discountApprovalRate",
          "label": "Share of deals with a discount approved",
          "kind": "number"
        },
        {
          "id": "avgDiscount",
          "label": "Average discount depth on discounted deals",
          "kind": "number"
        },
        {
          "id": "avgListDealSize",
          "label": "Average deal size at list price",
          "kind": "number"
        },
        {
          "id": "grossMargin",
          "label": "Gross margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualArrLost",
          "label": "Annual ARR given up to discounting"
        },
        {
          "id": "grossProfitLost",
          "label": "Annual gross profit given up"
        },
        {
          "id": "discountedDeals",
          "label": "Discounted deals per year"
        },
        {
          "id": "discountAsShareOfArr",
          "label": "Discount cost as % of total list ARR"
        }
      ]
    },
    {
      "slug": "solar-array-sizing",
      "url": "https://www.revenuelab.fyi/toolbox/solar-array-sizing",
      "title": "Solar Array Sizing Calculator",
      "category": "other",
      "summary": "How many panels and kW you need to cover your usage.",
      "formula": "DC size (kW) = annual kWh ÷ (sun hours/day × 365 × (1 − system loss)); panel count = DC size × 1000 ÷ panel watts.",
      "inputs": [
        {
          "id": "annualKwh",
          "label": "Annual electricity usage",
          "kind": "number"
        },
        {
          "id": "sunHours",
          "label": "Peak sun hours per day",
          "kind": "number"
        },
        {
          "id": "systemLoss",
          "label": "System loss factor",
          "kind": "number"
        },
        {
          "id": "panelWatts",
          "label": "Panel wattage",
          "kind": "number"
        },
        {
          "id": "offsetTarget",
          "label": "Target usage offset",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "dcKw",
          "label": "Recommended array size"
        },
        {
          "id": "panels",
          "label": "Panel count"
        },
        {
          "id": "roofArea",
          "label": "Roof area needed"
        },
        {
          "id": "annualProd",
          "label": "Estimated annual production"
        }
      ]
    },
    {
      "slug": "solar-payback-itc",
      "url": "https://www.revenuelab.fyi/toolbox/solar-payback-itc",
      "title": "Solar Payback Calculator (with ITC)",
      "category": "financial",
      "summary": "Years to break even after the 30% federal solar tax credit.",
      "formula": "Net cost = gross cost − (gross cost × ITC%) − rebates; payback years = net cost ÷ annual savings.",
      "inputs": [
        {
          "id": "grossCost",
          "label": "Gross system cost",
          "kind": "number"
        },
        {
          "id": "itcPct",
          "label": "Federal tax credit",
          "kind": "number"
        },
        {
          "id": "rebate",
          "label": "State/utility rebate",
          "kind": "number"
        },
        {
          "id": "annualSavings",
          "label": "Annual electric bill savings",
          "kind": "number"
        },
        {
          "id": "degradation",
          "label": "Annual panel degradation",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Analysis horizon",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paybackYear",
          "label": "Payback period"
        },
        {
          "id": "netCost",
          "label": "Net cost after incentives"
        },
        {
          "id": "lifetimeSavings",
          "label": "Total bill savings over horizon"
        },
        {
          "id": "netLifetime",
          "label": "Net profit over horizon"
        },
        {
          "id": "roi",
          "label": "Return on investment"
        }
      ]
    },
    {
      "slug": "net-metering-vs-buyback",
      "url": "https://www.revenuelab.fyi/toolbox/net-metering-vs-buyback",
      "title": "Net Metering vs. Buyback Rate Calculator",
      "category": "financial",
      "summary": "See how much your export compensation rate actually matters.",
      "formula": "Bill credit = (self-consumed kWh × retail rate) + (exported kWh × export rate).",
      "inputs": [
        {
          "id": "annualProd",
          "label": "Annual solar production",
          "kind": "number"
        },
        {
          "id": "selfConsumePct",
          "label": "Share self-consumed (not exported)",
          "kind": "number"
        },
        {
          "id": "retailRate",
          "label": "Retail electricity rate",
          "kind": "number"
        },
        {
          "id": "exportRate",
          "label": "Export/buyback rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "buybackCredit",
          "label": "Annual credit at your export rate"
        },
        {
          "id": "fullNetMeteringCredit",
          "label": "Credit under full retail net metering"
        },
        {
          "id": "lostValue",
          "label": "Annual value lost to low export rate"
        },
        {
          "id": "effectiveRate",
          "label": "Blended effective rate per kWh"
        }
      ]
    },
    {
      "slug": "battery-backup-runtime",
      "url": "https://www.revenuelab.fyi/toolbox/battery-backup-runtime",
      "title": "Battery Backup Runtime Calculator",
      "category": "other",
      "summary": "How long a battery keeps your chosen loads running during an outage.",
      "formula": "Runtime (hrs) = (usable kWh × 1000 × round-trip efficiency) ÷ total load watts.",
      "inputs": [
        {
          "id": "usableKwh",
          "label": "Usable battery capacity",
          "kind": "number"
        },
        {
          "id": "efficiency",
          "label": "Round-trip efficiency",
          "kind": "number"
        },
        {
          "id": "continuousLoad",
          "label": "Total continuous load",
          "kind": "number"
        },
        {
          "id": "surgeLoad",
          "label": "Peak surge load (startup)",
          "kind": "number"
        },
        {
          "id": "batteryPowerRating",
          "label": "Battery continuous power rating",
          "kind": "number"
        },
        {
          "id": "cyclesPerDay",
          "label": "Hours of backup needed per day",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "runtimeHrs",
          "label": "Total runtime at this load"
        },
        {
          "id": "daysBackup",
          "label": "Days of backup (at chosen daily hours)"
        },
        {
          "id": "dailyEnergyNeeded",
          "label": "Energy needed per day of backup"
        },
        {
          "id": "canStart",
          "label": "Can battery start your surge load? (1=yes)"
        }
      ]
    },
    {
      "slug": "generator-sizing-fuel",
      "url": "https://www.revenuelab.fyi/toolbox/generator-sizing-fuel",
      "title": "Generator Sizing & Fuel Cost Calculator",
      "category": "other",
      "summary": "Right-size a generator and estimate fuel cost per outage.",
      "formula": "Fuel gal/hr ≈ (load% × rated fuel curve); total fuel = fuel/hr × outage hours; cost = total fuel × price/gal.",
      "inputs": [
        {
          "id": "runningWatts",
          "label": "Total running load",
          "kind": "number"
        },
        {
          "id": "surgeWatts",
          "label": "Largest single startup surge",
          "kind": "number"
        },
        {
          "id": "genRunningRating",
          "label": "Generator running watt rating",
          "kind": "number"
        },
        {
          "id": "genSurgeRating",
          "label": "Generator surge watt rating",
          "kind": "number"
        },
        {
          "id": "fuelType",
          "label": "Fuel type",
          "kind": "select"
        },
        {
          "id": "fuelPrice",
          "label": "Fuel price",
          "kind": "number"
        },
        {
          "id": "outageHours",
          "label": "Expected outage length",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalCost",
          "label": "Total fuel cost for outage"
        },
        {
          "id": "galPerHr",
          "label": "Fuel burn rate"
        },
        {
          "id": "totalFuel",
          "label": "Total fuel needed"
        },
        {
          "id": "runningOk",
          "label": "Running load fits? (1=yes)"
        },
        {
          "id": "surgeOk",
          "label": "Surge load fits? (1=yes)"
        }
      ]
    },
    {
      "slug": "ev-charging-cost-per-mile",
      "url": "https://www.revenuelab.fyi/toolbox/ev-charging-cost-per-mile",
      "title": "EV Charging Cost Per Mile Calculator",
      "category": "financial",
      "summary": "What you're really paying per mile to charge your EV.",
      "formula": "Cost/mile = electricity rate ÷ (efficiency in mi/kWh × (1 − charging loss)).",
      "inputs": [
        {
          "id": "efficiency",
          "label": "Vehicle efficiency",
          "kind": "number"
        },
        {
          "id": "homeRate",
          "label": "Home electricity rate",
          "kind": "number"
        },
        {
          "id": "dcfcRate",
          "label": "Public DC fast charge rate",
          "kind": "number"
        },
        {
          "id": "chargingLoss",
          "label": "Charging loss (home L2)",
          "kind": "number"
        },
        {
          "id": "monthlyMiles",
          "label": "Miles driven per month",
          "kind": "number"
        },
        {
          "id": "dcfcShare",
          "label": "Share of miles from DC fast charging",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "blendedCostMile",
          "label": "Blended cost per mile"
        },
        {
          "id": "homeCostMile",
          "label": "Home charging cost per mile"
        },
        {
          "id": "dcfcCostMile",
          "label": "DC fast charging cost per mile"
        },
        {
          "id": "monthlyCost",
          "label": "Estimated monthly charging cost"
        }
      ]
    },
    {
      "slug": "ev-vs-gas-total-cost",
      "url": "https://www.revenuelab.fyi/toolbox/ev-vs-gas-total-cost",
      "title": "EV vs Gas Total Cost of Ownership Calculator",
      "category": "financial",
      "summary": "Fuel, maintenance, and price difference over years of ownership.",
      "formula": "Net price diff = (EV price − incentive) − gas price; annual savings = fuel savings + maintenance savings; breakeven = net price diff ÷ annual savings.",
      "inputs": [
        {
          "id": "evPrice",
          "label": "EV purchase price",
          "kind": "number"
        },
        {
          "id": "gasPrice",
          "label": "Comparable gas car price",
          "kind": "number"
        },
        {
          "id": "incentive",
          "label": "EV tax credit/incentive",
          "kind": "number"
        },
        {
          "id": "annualMiles",
          "label": "Annual miles driven",
          "kind": "number"
        },
        {
          "id": "evCostMile",
          "label": "EV cost per mile (fuel)",
          "kind": "number"
        },
        {
          "id": "gasCostMile",
          "label": "Gas cost per mile (fuel)",
          "kind": "number"
        },
        {
          "id": "maintDiff",
          "label": "Annual maintenance savings (EV vs gas)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenYears",
          "label": "Years to break even"
        },
        {
          "id": "netPriceDiff",
          "label": "Net upfront price difference"
        },
        {
          "id": "annualSavings",
          "label": "Annual running-cost savings"
        },
        {
          "id": "savings5yr",
          "label": "Net savings after 5 years"
        },
        {
          "id": "savings10yr",
          "label": "Net savings after 10 years"
        }
      ]
    },
    {
      "slug": "home-charger-payback",
      "url": "https://www.revenuelab.fyi/toolbox/home-charger-payback",
      "title": "Home EV Charger Install Payback Calculator",
      "category": "financial",
      "summary": "When a Level 2 charger install pays for itself vs public charging.",
      "formula": "Net install cost = charger + install − rebate; annual savings = annual kWh × (public rate − home rate); payback = net cost ÷ annual savings.",
      "inputs": [
        {
          "id": "chargerCost",
          "label": "Charger unit cost",
          "kind": "number"
        },
        {
          "id": "installCost",
          "label": "Electrician install cost",
          "kind": "number"
        },
        {
          "id": "rebate",
          "label": "Utility/state rebate",
          "kind": "number"
        },
        {
          "id": "annualKwh",
          "label": "Annual charging energy needed",
          "kind": "number"
        },
        {
          "id": "homeRate",
          "label": "Home electricity rate",
          "kind": "number"
        },
        {
          "id": "publicRate",
          "label": "Public charging rate you'd otherwise pay",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paybackYears",
          "label": "Payback period"
        },
        {
          "id": "netCost",
          "label": "Net install cost"
        },
        {
          "id": "annualSavings",
          "label": "Annual savings vs public charging"
        },
        {
          "id": "savings5yr",
          "label": "Net savings after 5 years"
        }
      ]
    },
    {
      "slug": "heat-pump-vs-furnace",
      "url": "https://www.revenuelab.fyi/toolbox/heat-pump-vs-furnace",
      "title": "Heat Pump vs Furnace Operating Cost Calculator",
      "category": "financial",
      "summary": "Annual heating cost comparison by fuel type and efficiency.",
      "formula": "Furnace annual cost = heating load (therms) ÷ AFUE × gas price; heat pump annual cost = heating load (kWh equiv) ÷ COP × electricity price.",
      "inputs": [
        {
          "id": "heatingLoad",
          "label": "Annual heating load",
          "kind": "number"
        },
        {
          "id": "afue",
          "label": "Furnace AFUE efficiency",
          "kind": "number"
        },
        {
          "id": "gasPrice",
          "label": "Natural gas price",
          "kind": "number"
        },
        {
          "id": "cop",
          "label": "Heat pump seasonal COP",
          "kind": "number"
        },
        {
          "id": "elecPrice",
          "label": "Electricity price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "heatPumpCost",
          "label": "Heat pump annual cost"
        },
        {
          "id": "furnaceCost",
          "label": "Gas furnace annual cost"
        },
        {
          "id": "annualSavings",
          "label": "Annual savings choosing the cheaper system"
        },
        {
          "id": "cheaperOption",
          "label": "Cheaper to operate"
        }
      ]
    },
    {
      "slug": "water-heater-comparison",
      "url": "https://www.revenuelab.fyi/toolbox/water-heater-comparison",
      "title": "Water Heater Type Cost Comparison Calculator",
      "category": "financial",
      "summary": "Annual operating cost and payback across three water heater types.",
      "formula": "Annual cost = annual hot water energy demand ÷ UEF × fuel price; payback = incremental cost ÷ annual savings vs baseline tank.",
      "inputs": [
        {
          "id": "dailyGallons",
          "label": "Household hot water use",
          "kind": "number"
        },
        {
          "id": "tankUef",
          "label": "Standard tank UEF",
          "kind": "number"
        },
        {
          "id": "tanklessUef",
          "label": "Tankless UEF",
          "kind": "number"
        },
        {
          "id": "hpwhUef",
          "label": "Heat pump water heater UEF",
          "kind": "number"
        },
        {
          "id": "elecPrice",
          "label": "Electricity price",
          "kind": "number"
        },
        {
          "id": "gasPrice",
          "label": "Gas price (for tankless)",
          "kind": "number"
        },
        {
          "id": "hpwhExtraCost",
          "label": "Heat pump WH extra cost vs standard tank",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "hpwhCost",
          "label": "Heat pump water heater annual cost"
        },
        {
          "id": "tankCost",
          "label": "Standard electric tank annual cost"
        },
        {
          "id": "tanklessCost",
          "label": "Gas tankless annual cost"
        },
        {
          "id": "hpwhSavings",
          "label": "Annual savings, heat pump vs standard tank"
        },
        {
          "id": "hpwhPayback",
          "label": "Payback for heat pump premium"
        }
      ]
    },
    {
      "slug": "insulation-payback",
      "url": "https://www.revenuelab.fyi/toolbox/insulation-payback",
      "title": "Insulation R-Value Upgrade Payback Calculator",
      "category": "financial",
      "summary": "Years to recoup the cost of adding attic or wall insulation.",
      "formula": "Heat loss reduction% = 1 − (R_old ÷ R_new); annual savings = attic's share of energy bill × reduction%; payback = job cost ÷ annual savings.",
      "inputs": [
        {
          "id": "currentR",
          "label": "Current attic R-value",
          "kind": "number"
        },
        {
          "id": "targetR",
          "label": "Target attic R-value",
          "kind": "number"
        },
        {
          "id": "annualEnergyBill",
          "label": "Annual heating + cooling cost",
          "kind": "number"
        },
        {
          "id": "atticSharePct",
          "label": "Attic's share of heating/cooling loss",
          "kind": "number"
        },
        {
          "id": "jobCost",
          "label": "Insulation job cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paybackYears",
          "label": "Payback period"
        },
        {
          "id": "annualSavings",
          "label": "Annual energy savings"
        },
        {
          "id": "reductionPct",
          "label": "Reduction in attic heat loss"
        },
        {
          "id": "savings10yr",
          "label": "Net savings after 10 years"
        }
      ]
    },
    {
      "slug": "window-upgrade-payback",
      "url": "https://www.revenuelab.fyi/toolbox/window-upgrade-payback",
      "title": "Window Upgrade Payback Calculator",
      "category": "financial",
      "summary": "Years to recoup the cost of upgrading to energy-efficient windows.",
      "formula": "Heat loss reduction = 1 − (U_new ÷ U_old); annual savings = windows' share of energy bill × reduction; payback = total window cost ÷ annual savings.",
      "inputs": [
        {
          "id": "uOld",
          "label": "Current window U-factor",
          "kind": "number"
        },
        {
          "id": "uNew",
          "label": "New window U-factor",
          "kind": "number"
        },
        {
          "id": "annualEnergyBill",
          "label": "Annual heating + cooling cost",
          "kind": "number"
        },
        {
          "id": "windowSharePct",
          "label": "Windows' share of heating/cooling loss",
          "kind": "number"
        },
        {
          "id": "numWindows",
          "label": "Number of windows",
          "kind": "number"
        },
        {
          "id": "costPerWindow",
          "label": "Cost per window installed",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paybackYears",
          "label": "Energy-only payback period"
        },
        {
          "id": "totalCost",
          "label": "Total project cost"
        },
        {
          "id": "annualSavings",
          "label": "Annual energy savings"
        },
        {
          "id": "reductionPct",
          "label": "Reduction in window heat loss"
        }
      ]
    },
    {
      "slug": "wood-pellet-stove-cost",
      "url": "https://www.revenuelab.fyi/toolbox/wood-pellet-stove-cost",
      "title": "Wood & Pellet Stove Operating Cost Calculator",
      "category": "financial",
      "summary": "Cost per season to heat with cordwood or wood pellets.",
      "formula": "Fuel needed = heating load (Btu) ÷ (fuel heat content × stove efficiency); cost = fuel needed × price per unit.",
      "inputs": [
        {
          "id": "heatingLoad",
          "label": "Seasonal heating load",
          "kind": "number"
        },
        {
          "id": "fuelType",
          "label": "Fuel type",
          "kind": "select"
        },
        {
          "id": "efficiency",
          "label": "Stove efficiency",
          "kind": "number"
        },
        {
          "id": "cordPrice",
          "label": "Price per cord",
          "kind": "number"
        },
        {
          "id": "pelletPrice",
          "label": "Price per ton of pellets",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalCost",
          "label": "Seasonal fuel cost"
        },
        {
          "id": "unitsNeeded",
          "label": "Fuel needed (cords or tons)"
        },
        {
          "id": "costPerMMBtu",
          "label": "Cost per delivered MMBtu"
        },
        {
          "id": "unitLabel",
          "label": "Unit"
        }
      ]
    },
    {
      "slug": "mini-split-sizing",
      "url": "https://www.revenuelab.fyi/toolbox/mini-split-sizing",
      "title": "Mini Split Heat Pump Sizing Calculator",
      "category": "other",
      "summary": "BTU capacity needed for a room or zone based on size and use.",
      "formula": "Base Btu = sq ft × 20 (avg climate); adjust for ceiling height, insulation, sun exposure, and occupants × 400 Btu each.",
      "inputs": [
        {
          "id": "sqft",
          "label": "Room/zone area",
          "kind": "number"
        },
        {
          "id": "ceilingHeight",
          "label": "Ceiling height",
          "kind": "number"
        },
        {
          "id": "insulationQuality",
          "label": "Insulation quality",
          "kind": "select"
        },
        {
          "id": "sunExposure",
          "label": "Sun exposure",
          "kind": "select"
        },
        {
          "id": "occupants",
          "label": "Typical occupants",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "recommendedSize",
          "label": "Recommended unit size"
        },
        {
          "id": "btu",
          "label": "Calculated load"
        },
        {
          "id": "oversized",
          "label": "Smallest unit still oversized? (1=yes)"
        }
      ]
    },
    {
      "slug": "whole-home-load-calc",
      "url": "https://www.revenuelab.fyi/toolbox/whole-home-load-calc",
      "title": "Whole Home Electrical Load Calculator",
      "category": "other",
      "summary": "Simplified NEC-style load calc to check your panel capacity.",
      "formula": "General load = 3VA×sqft + small appliance/laundry circuits; demand factor: 100% of first 10kVA + 40% above; add largest motor at 125%; amps = total VA ÷ 240V.",
      "inputs": [
        {
          "id": "sqft",
          "label": "House square footage",
          "kind": "number"
        },
        {
          "id": "smallApplianceCircuits",
          "label": "Small appliance/laundry circuits (usually 3)",
          "kind": "number"
        },
        {
          "id": "fixedAppliances",
          "label": "Fixed appliance load (range, dryer, water heater, etc.)",
          "kind": "number"
        },
        {
          "id": "hvacVA",
          "label": "HVAC/heat load",
          "kind": "number"
        },
        {
          "id": "largestMotorVA",
          "label": "Largest single motor (e.g., AC compressor)",
          "kind": "number"
        },
        {
          "id": "panelAmps",
          "label": "Existing panel size",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "amps",
          "label": "Calculated load (amps)"
        },
        {
          "id": "headroomAmps",
          "label": "Headroom vs your panel"
        },
        {
          "id": "percentUsed",
          "label": "Percent of panel capacity used"
        },
        {
          "id": "totalVA",
          "label": "Total calculated load (VA)"
        }
      ]
    },
    {
      "slug": "time-of-use-shifting",
      "url": "https://www.revenuelab.fyi/toolbox/time-of-use-shifting",
      "title": "Time-of-Use Rate Shifting Savings Calculator",
      "category": "financial",
      "summary": "How much you save moving usage off peak hours.",
      "formula": "Savings = shiftable kWh × (peak rate − off-peak rate) × days per period.",
      "inputs": [
        {
          "id": "shiftableKwh",
          "label": "Shiftable usage per day",
          "kind": "number"
        },
        {
          "id": "peakRate",
          "label": "Peak rate",
          "kind": "number"
        },
        {
          "id": "offPeakRate",
          "label": "Off-peak rate",
          "kind": "number"
        },
        {
          "id": "daysPerMonth",
          "label": "Days per month you shift",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthlySavings",
          "label": "Monthly savings from shifting"
        },
        {
          "id": "dailySavings",
          "label": "Daily savings"
        },
        {
          "id": "annualSavings",
          "label": "Annual savings"
        }
      ]
    },
    {
      "slug": "phantom-load-audit",
      "url": "https://www.revenuelab.fyi/toolbox/phantom-load-audit",
      "title": "Phantom Load / Standby Power Audit Calculator",
      "category": "financial",
      "summary": "What always-on devices are quietly costing you per year.",
      "formula": "Annual kWh = (total standby watts ÷ 1000) × 24 × 365; annual cost = annual kWh × electricity rate.",
      "inputs": [
        {
          "id": "deviceCount",
          "label": "Number of always-plugged-in devices",
          "kind": "number"
        },
        {
          "id": "avgWatts",
          "label": "Average standby draw per device",
          "kind": "number"
        },
        {
          "id": "elecRate",
          "label": "Electricity rate",
          "kind": "number"
        },
        {
          "id": "reducibleSharePct",
          "label": "Share you could realistically eliminate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualCost",
          "label": "Estimated annual phantom load cost"
        },
        {
          "id": "potentialSavings",
          "label": "Realistic savings from cutting the worst offenders"
        },
        {
          "id": "annualKwh",
          "label": "Annual phantom load energy"
        },
        {
          "id": "totalWatts",
          "label": "Total continuous standby draw"
        }
      ]
    },
    {
      "slug": "pool-pump-energy-cost",
      "url": "https://www.revenuelab.fyi/toolbox/pool-pump-energy-cost",
      "title": "Pool Pump Energy Cost Calculator",
      "category": "financial",
      "summary": "Annual electricity cost for single-speed vs variable-speed pool pumps.",
      "formula": "kW draw ≈ HP × 0.746 ÷ motor efficiency; annual cost = kW × daily hours × 365 × rate.",
      "inputs": [
        {
          "id": "pumpHp",
          "label": "Pump motor size",
          "kind": "number"
        },
        {
          "id": "motorEfficiency",
          "label": "Motor efficiency",
          "kind": "number"
        },
        {
          "id": "dailyHours",
          "label": "Daily runtime",
          "kind": "number"
        },
        {
          "id": "elecRate",
          "label": "Electricity rate",
          "kind": "number"
        },
        {
          "id": "pumpType",
          "label": "Pump type",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "annualCost",
          "label": "Annual pump electricity cost"
        },
        {
          "id": "annualKwh",
          "label": "Annual energy use"
        },
        {
          "id": "savingsVsSingle",
          "label": "Savings vs equivalent single-speed pump"
        }
      ]
    },
    {
      "slug": "well-pump-energy",
      "url": "https://www.revenuelab.fyi/toolbox/well-pump-energy",
      "title": "Well Pump Energy Cost Calculator",
      "category": "financial",
      "summary": "Annual cost to run your well pump based on usage and horsepower.",
      "formula": "Daily runtime (hrs) = daily gallons used ÷ (pump GPM × 60); kW draw = HP × 0.746 ÷ efficiency; annual cost = kW × daily hours × 365 × rate.",
      "inputs": [
        {
          "id": "pumpHp",
          "label": "Well pump size",
          "kind": "number"
        },
        {
          "id": "pumpGpm",
          "label": "Pump flow rate",
          "kind": "number"
        },
        {
          "id": "dailyGallons",
          "label": "Household daily water use",
          "kind": "number"
        },
        {
          "id": "efficiency",
          "label": "Motor efficiency",
          "kind": "number"
        },
        {
          "id": "elecRate",
          "label": "Electricity rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualCost",
          "label": "Annual well pump electricity cost"
        },
        {
          "id": "dailyHours",
          "label": "Estimated daily runtime"
        },
        {
          "id": "annualKwh",
          "label": "Annual energy use"
        },
        {
          "id": "surgeWatts",
          "label": "Estimated motor startup surge"
        }
      ]
    },
    {
      "slug": "generator-transfer-switch",
      "url": "https://www.revenuelab.fyi/toolbox/generator-transfer-switch",
      "title": "Generator Transfer Switch Cost & Circuit Planner",
      "category": "financial",
      "summary": "Circuit count and switch amperage needed for safe generator hookup.",
      "formula": "Required switch amps = total selected circuit amps × diversity factor (0.7); installed cost = base + (circuits × per-circuit cost).",
      "inputs": [
        {
          "id": "circuitsToBackup",
          "label": "Circuits to back up",
          "kind": "number"
        },
        {
          "id": "avgCircuitAmps",
          "label": "Average circuit amperage",
          "kind": "number"
        },
        {
          "id": "switchType",
          "label": "Transfer switch type",
          "kind": "select"
        },
        {
          "id": "generatorAmps",
          "label": "Generator max output",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "diversifiedAmps",
          "label": "Required switch capacity (amps)"
        },
        {
          "id": "installedCost",
          "label": "Estimated installed cost"
        },
        {
          "id": "fitsGenerator",
          "label": "Fits your generator's output? (1=yes)"
        },
        {
          "id": "rawAmps",
          "label": "Raw sum of circuit ratings"
        }
      ]
    },
    {
      "slug": "off-grid-system-sizing",
      "url": "https://www.revenuelab.fyi/toolbox/off-grid-system-sizing",
      "title": "Off-Grid Solar System Sizing Calculator",
      "category": "other",
      "summary": "Panel, battery, and inverter sizing for a system with no grid backup.",
      "formula": "Array size = daily kWh ÷ (worst-month sun hours × system efficiency); battery kWh = daily kWh × autonomy days ÷ max depth of discharge.",
      "inputs": [
        {
          "id": "dailyKwh",
          "label": "Average daily energy use",
          "kind": "number"
        },
        {
          "id": "worstMonthSunHours",
          "label": "Worst-month sun hours",
          "kind": "number"
        },
        {
          "id": "systemEfficiency",
          "label": "System efficiency",
          "kind": "number"
        },
        {
          "id": "autonomyDays",
          "label": "Days of battery autonomy needed",
          "kind": "number"
        },
        {
          "id": "maxDod",
          "label": "Max depth of discharge",
          "kind": "number"
        },
        {
          "id": "peakLoadKw",
          "label": "Peak simultaneous load",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "arrayKw",
          "label": "Recommended array size"
        },
        {
          "id": "batteryKwh",
          "label": "Recommended battery capacity"
        },
        {
          "id": "inverterKw",
          "label": "Recommended inverter size"
        }
      ]
    },
    {
      "slug": "inverter-sizing",
      "url": "https://www.revenuelab.fyi/toolbox/inverter-sizing",
      "title": "Inverter Sizing Calculator",
      "category": "other",
      "summary": "Continuous and surge capacity needed for your loads or array.",
      "formula": "DC:AC ratio = array DC watts ÷ inverter AC rating; surge check = motor surge watts ≤ inverter surge rating.",
      "inputs": [
        {
          "id": "continuousLoadW",
          "label": "Total continuous load",
          "kind": "number"
        },
        {
          "id": "largestMotorSurgeW",
          "label": "Largest motor surge watts",
          "kind": "number"
        },
        {
          "id": "inverterContinuousW",
          "label": "Candidate inverter continuous rating",
          "kind": "number"
        },
        {
          "id": "inverterSurgeW",
          "label": "Candidate inverter surge rating",
          "kind": "number"
        },
        {
          "id": "arrayDcW",
          "label": "Solar array size (if paired)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "dcAcRatio",
          "label": "DC:AC ratio"
        },
        {
          "id": "continuousOk",
          "label": "Continuous load fits? (1=yes)"
        },
        {
          "id": "surgeOk",
          "label": "Surge load fits? (1=yes)"
        },
        {
          "id": "headroomW",
          "label": "Continuous power headroom"
        },
        {
          "id": "ratioHealthy",
          "label": "DC:AC ratio in normal range? (1=yes)"
        }
      ]
    },
    {
      "slug": "panel-degradation-25yr",
      "url": "https://www.revenuelab.fyi/toolbox/panel-degradation-25yr",
      "title": "Solar Panel Degradation Over 25 Years Calculator",
      "category": "other",
      "summary": "Project your system's output decline over its warranty life.",
      "formula": "Year N output = year 1 output × (1 − degradation rate)^(N−1).",
      "inputs": [
        {
          "id": "year1Production",
          "label": "Year 1 annual production",
          "kind": "number"
        },
        {
          "id": "degradationRate",
          "label": "Annual degradation rate",
          "kind": "number"
        },
        {
          "id": "warrantyYear",
          "label": "Check output at year",
          "kind": "number"
        },
        {
          "id": "warrantyFloorPct",
          "label": "Manufacturer warranty floor at that year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "outputAtYear",
          "label": "Projected production at chosen year"
        },
        {
          "id": "pctOfOriginal",
          "label": "Percent of original output remaining"
        },
        {
          "id": "meetsWarranty",
          "label": "Meets warranty floor? (1=yes)"
        },
        {
          "id": "lifetimeTotal",
          "label": "Cumulative production through that year"
        }
      ]
    },
    {
      "slug": "roof-orientation-derate",
      "url": "https://www.revenuelab.fyi/toolbox/roof-orientation-derate",
      "title": "Roof Orientation & Tilt Solar Derate Calculator",
      "category": "other",
      "summary": "How much azimuth and tilt cost you versus a perfect south-facing roof.",
      "formula": "Production factor = azimuth factor × tilt factor (from standard solar production tables), applied to south-facing/optimal-tilt baseline production.",
      "inputs": [
        {
          "id": "baselineProduction",
          "label": "Production at ideal south-facing, optimal tilt",
          "kind": "number"
        },
        {
          "id": "azimuth",
          "label": "Roof-facing direction",
          "kind": "select"
        },
        {
          "id": "tiltMismatch",
          "label": "Tilt vs ideal for your latitude",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "adjustedProduction",
          "label": "Adjusted annual production"
        },
        {
          "id": "productionLoss",
          "label": "Annual production lost vs ideal"
        },
        {
          "id": "derateePct",
          "label": "Total derate percentage"
        }
      ]
    },
    {
      "slug": "kwh-bill-breakdown",
      "url": "https://www.revenuelab.fyi/toolbox/kwh-bill-breakdown",
      "title": "kWh Electric Bill Breakdown Calculator",
      "category": "financial",
      "summary": "See where your electric bill actually goes, by category.",
      "formula": "Bill = fixed customer charge + (kWh used × (generation rate + delivery rate)) + riders (% of energy charge).",
      "inputs": [
        {
          "id": "monthlyKwh",
          "label": "Monthly usage",
          "kind": "number"
        },
        {
          "id": "fixedCharge",
          "label": "Fixed monthly customer charge",
          "kind": "number"
        },
        {
          "id": "generationRate",
          "label": "Generation/supply rate",
          "kind": "number"
        },
        {
          "id": "deliveryRate",
          "label": "Delivery/transmission rate",
          "kind": "number"
        },
        {
          "id": "riderPct",
          "label": "Riders/fees as % of energy charge",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalBill",
          "label": "Total estimated monthly bill"
        },
        {
          "id": "generationCost",
          "label": "Generation/supply charge"
        },
        {
          "id": "deliveryCost",
          "label": "Delivery/transmission charge"
        },
        {
          "id": "riderCost",
          "label": "Riders and fees"
        },
        {
          "id": "effectiveRate",
          "label": "Effective blended rate per kWh"
        },
        {
          "id": "reduciblePct",
          "label": "Share of bill that scales with usage"
        }
      ]
    },
    {
      "slug": "food-cost-percentage",
      "url": "https://www.revenuelab.fyi/toolbox/food-cost-percentage",
      "title": "Food Cost Percentage Calculator",
      "category": "financial",
      "summary": "Find your plate cost as a share of menu price and where it lands vs. target.",
      "formula": "Food cost % = plate cost ÷ menu price × 100. Target price = plate cost ÷ target food cost %.",
      "inputs": [
        {
          "id": "plateCost",
          "label": "Plate cost (raw ingredients)",
          "kind": "number"
        },
        {
          "id": "menuPrice",
          "label": "Current menu price",
          "kind": "number"
        },
        {
          "id": "targetPct",
          "label": "Target food cost %",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "foodCostPct",
          "label": "Current food cost %"
        },
        {
          "id": "grossProfit",
          "label": "Gross profit per plate"
        },
        {
          "id": "targetPrice",
          "label": "Price needed to hit target %"
        },
        {
          "id": "priceGapPct",
          "label": "Price adjustment needed"
        }
      ]
    },
    {
      "slug": "menu-engineering-margin",
      "url": "https://www.revenuelab.fyi/toolbox/menu-engineering-margin",
      "title": "Menu Engineering Margin Calculator",
      "category": "financial",
      "summary": "Classify a dish as Star, Plowhorse, Puzzle, or Dog by margin and popularity.",
      "formula": "Contribution margin = price − plate cost. Compare to menu average margin and average units sold to place in quadrant.",
      "inputs": [
        {
          "id": "itemPrice",
          "label": "Item price",
          "kind": "number"
        },
        {
          "id": "itemCost",
          "label": "Item plate cost",
          "kind": "number"
        },
        {
          "id": "itemUnits",
          "label": "Units sold last period",
          "kind": "number"
        },
        {
          "id": "avgMargin",
          "label": "Menu average margin",
          "kind": "number"
        },
        {
          "id": "avgUnits",
          "label": "Menu average units sold",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "quadrant",
          "label": "Menu quadrant"
        },
        {
          "id": "margin",
          "label": "Contribution margin"
        },
        {
          "id": "marginGap",
          "label": "Margin vs. menu average"
        },
        {
          "id": "popIndex",
          "label": "Popularity index (100=avg)"
        }
      ]
    },
    {
      "slug": "pour-cost-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/pour-cost-calculator",
      "title": "Pour Cost Calculator",
      "category": "financial",
      "summary": "Liquor cost per drink as a percentage of the price you charge.",
      "formula": "Cost per pour = bottle cost ÷ pours per bottle. Pour cost % = (cost per pour + mixer cost) ÷ drink price × 100.",
      "inputs": [
        {
          "id": "bottleCost",
          "label": "Bottle cost",
          "kind": "number"
        },
        {
          "id": "bottleSizeMl",
          "label": "Bottle size",
          "kind": "number"
        },
        {
          "id": "pourOz",
          "label": "Pour size",
          "kind": "number"
        },
        {
          "id": "mixerCost",
          "label": "Mixer / garnish cost",
          "kind": "number"
        },
        {
          "id": "drinkPrice",
          "label": "Drink price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pourCostPct",
          "label": "Pour cost %"
        },
        {
          "id": "costPerPour",
          "label": "Total cost per drink"
        },
        {
          "id": "pours",
          "label": "Pours per bottle"
        },
        {
          "id": "marginDollar",
          "label": "Gross margin per drink"
        }
      ]
    },
    {
      "slug": "labor-cost-percentage",
      "url": "https://www.revenuelab.fyi/toolbox/labor-cost-percentage",
      "title": "Restaurant Labor Cost Percentage Calculator",
      "category": "financial",
      "summary": "Total labor spend as a share of sales, with a benchmark check.",
      "formula": "Labor cost % = (hourly wages + management salary + payroll tax/benefits) ÷ net sales × 100.",
      "inputs": [
        {
          "id": "hourlyWages",
          "label": "Hourly wages paid",
          "kind": "number"
        },
        {
          "id": "mgmtSalary",
          "label": "Management salary (period)",
          "kind": "number"
        },
        {
          "id": "taxBenefitsPct",
          "label": "Payroll tax + benefits load",
          "kind": "number"
        },
        {
          "id": "netSales",
          "label": "Net sales (same period)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "laborPct",
          "label": "Labor cost %"
        },
        {
          "id": "loaded",
          "label": "Fully loaded labor cost"
        },
        {
          "id": "perHundred",
          "label": "Labor $ per $100 sales"
        },
        {
          "id": "flowThrough",
          "label": "Sales remaining after labor"
        }
      ]
    },
    {
      "slug": "prime-cost-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/prime-cost-calculator",
      "title": "Prime Cost Calculator",
      "category": "financial",
      "summary": "Combine food cost and labor cost into the single number that predicts survival.",
      "formula": "Prime cost % = (total food & beverage cost + total labor cost) ÷ net sales × 100.",
      "inputs": [
        {
          "id": "foodCost",
          "label": "Food & beverage cost (period)",
          "kind": "number"
        },
        {
          "id": "laborCost",
          "label": "Total loaded labor cost (period)",
          "kind": "number"
        },
        {
          "id": "netSales",
          "label": "Net sales (same period)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "primePct",
          "label": "Prime cost %"
        },
        {
          "id": "prime",
          "label": "Total prime cost"
        },
        {
          "id": "remaining",
          "label": "Sales left for rent, overhead, profit"
        },
        {
          "id": "health",
          "label": "Health flag"
        }
      ]
    },
    {
      "slug": "break-even-covers",
      "url": "https://www.revenuelab.fyi/toolbox/break-even-covers",
      "title": "Break-Even Covers Calculator",
      "category": "financial",
      "summary": "How many customers per day you need to cover fixed and variable costs.",
      "formula": "Break-even covers/month = fixed costs ÷ (average check − variable cost per cover).",
      "inputs": [
        {
          "id": "fixedCosts",
          "label": "Fixed costs per month",
          "kind": "number"
        },
        {
          "id": "avgCheck",
          "label": "Average check per cover",
          "kind": "number"
        },
        {
          "id": "varCostCover",
          "label": "Variable cost per cover (food + variable labor)",
          "kind": "number"
        },
        {
          "id": "daysOpen",
          "label": "Operating days per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "dailyCovers",
          "label": "Break-even covers per day"
        },
        {
          "id": "monthlyCovers",
          "label": "Break-even covers per month"
        },
        {
          "id": "breakEvenSales",
          "label": "Break-even monthly sales"
        },
        {
          "id": "contribution",
          "label": "Contribution margin per cover"
        }
      ]
    },
    {
      "slug": "waste-percentage-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/waste-percentage-calculator",
      "title": "Food Waste Percentage Calculator",
      "category": "financial",
      "summary": "Track waste, spoilage, and comps as a share of total food cost.",
      "formula": "Waste % = total waste value ÷ total food purchases × 100.",
      "inputs": [
        {
          "id": "wasteValue",
          "label": "Waste/spoilage/comp value (period)",
          "kind": "number"
        },
        {
          "id": "foodPurchases",
          "label": "Total food purchases (same period)",
          "kind": "number"
        },
        {
          "id": "periodsPerYear",
          "label": "Periods per year (12=monthly, 52=weekly)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "wastePct",
          "label": "Waste as % of food cost"
        },
        {
          "id": "annualWaste",
          "label": "Annualized waste cost"
        },
        {
          "id": "savingsAt5pct",
          "label": "Annual savings if cut to 5%"
        },
        {
          "id": "waste",
          "label": "Waste this period"
        }
      ]
    },
    {
      "slug": "recipe-yield-scaling",
      "url": "https://www.revenuelab.fyi/toolbox/recipe-yield-scaling",
      "title": "Recipe Yield & Batch Scaling Calculator",
      "category": "math",
      "summary": "Scale a recipe up or down to a new batch size with per-ingredient math.",
      "formula": "Scale factor = new yield ÷ original yield. Scaled quantity = original quantity × scale factor.",
      "inputs": [
        {
          "id": "originalYield",
          "label": "Original recipe yield",
          "kind": "number"
        },
        {
          "id": "newYield",
          "label": "Target yield",
          "kind": "number"
        },
        {
          "id": "ingredientQty",
          "label": "Sample ingredient quantity (original recipe)",
          "kind": "number"
        },
        {
          "id": "batchWeight",
          "label": "Original total batch weight (optional)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "factor",
          "label": "Scale factor"
        },
        {
          "id": "scaledQty",
          "label": "Scaled ingredient quantity"
        },
        {
          "id": "scaledBatchWeight",
          "label": "Scaled total batch weight"
        },
        {
          "id": "seasoningFactor",
          "label": "Suggested seasoning scale factor"
        }
      ]
    },
    {
      "slug": "catering-quote-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/catering-quote-calculator",
      "title": "Catering Quote Calculator",
      "category": "financial",
      "summary": "Build a per-head catering price from food, labor, rentals, and margin.",
      "formula": "Per-head price = (food cost/head + labor cost/head + (fixed costs ÷ guests)) ÷ (1 − target margin %).",
      "inputs": [
        {
          "id": "guests",
          "label": "Guest count",
          "kind": "number"
        },
        {
          "id": "foodPerHead",
          "label": "Food cost per head",
          "kind": "number"
        },
        {
          "id": "staffHours",
          "label": "Total staff hours needed",
          "kind": "number"
        },
        {
          "id": "staffRate",
          "label": "Blended staff pay rate",
          "kind": "number"
        },
        {
          "id": "fixedCosts",
          "label": "Rentals + delivery + misc fixed",
          "kind": "number"
        },
        {
          "id": "targetMargin",
          "label": "Target gross margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pricePerHead",
          "label": "Price per head"
        },
        {
          "id": "totalQuote",
          "label": "Total event quote"
        },
        {
          "id": "costPerHead",
          "label": "Total cost per head"
        },
        {
          "id": "laborTotal",
          "label": "Total labor cost"
        }
      ]
    },
    {
      "slug": "delivery-app-commission-net",
      "url": "https://www.revenuelab.fyi/toolbox/delivery-app-commission-net",
      "title": "Delivery App Commission Net Calculator",
      "category": "financial",
      "summary": "See what you actually keep after third-party delivery commission and fees.",
      "formula": "Net to restaurant = order subtotal × (1 − commission % ) − flat fee. Profit = net − food cost.",
      "inputs": [
        {
          "id": "orderSubtotal",
          "label": "Order subtotal",
          "kind": "number"
        },
        {
          "id": "commissionPct",
          "label": "Platform commission",
          "kind": "number"
        },
        {
          "id": "flatFee",
          "label": "Flat processing fee",
          "kind": "number"
        },
        {
          "id": "foodCostPct",
          "label": "Food cost % of this order",
          "kind": "number"
        },
        {
          "id": "packagingCost",
          "label": "Packaging cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Net after platform fees"
        },
        {
          "id": "profit",
          "label": "Profit after food & packaging"
        },
        {
          "id": "netPct",
          "label": "Net as % of order"
        },
        {
          "id": "commission",
          "label": "Commission taken by platform"
        }
      ]
    },
    {
      "slug": "bar-inventory-variance",
      "url": "https://www.revenuelab.fyi/toolbox/bar-inventory-variance",
      "title": "Bar Inventory Variance Calculator",
      "category": "financial",
      "summary": "Compare theoretical vs. actual liquor usage to catch over-pouring or theft.",
      "formula": "Actual usage = beginning inventory + purchases − ending inventory. Variance % = (actual − theoretical) ÷ theoretical × 100.",
      "inputs": [
        {
          "id": "beginInv",
          "label": "Beginning inventory value",
          "kind": "number"
        },
        {
          "id": "purchases",
          "label": "Purchases (period)",
          "kind": "number"
        },
        {
          "id": "endInv",
          "label": "Ending inventory value",
          "kind": "number"
        },
        {
          "id": "theoreticalUsage",
          "label": "POS theoretical usage cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "variancePct",
          "label": "Variance %"
        },
        {
          "id": "varianceDollar",
          "label": "Variance in dollars"
        },
        {
          "id": "actualUsage",
          "label": "Actual usage (calculated)"
        },
        {
          "id": "flag",
          "label": "Status"
        }
      ]
    },
    {
      "slug": "coffee-shop-cup-economics",
      "url": "https://www.revenuelab.fyi/toolbox/coffee-shop-cup-economics",
      "title": "Coffee Shop Cup Economics Calculator",
      "category": "financial",
      "summary": "Cost and margin breakdown per cup, from beans to cup lid.",
      "formula": "Cup cost = espresso cost + milk cost + packaging cost. Cup cost % = cup cost ÷ price × 100.",
      "inputs": [
        {
          "id": "beanPricePerLb",
          "label": "Bean price per pound",
          "kind": "number"
        },
        {
          "id": "doseGrams",
          "label": "Espresso dose",
          "kind": "number"
        },
        {
          "id": "milkPriceGallon",
          "label": "Milk price per gallon",
          "kind": "number"
        },
        {
          "id": "milkOz",
          "label": "Milk used",
          "kind": "number"
        },
        {
          "id": "packagingCost",
          "label": "Cup + lid + sleeve cost",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Menu price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cupCost",
          "label": "True cup cost"
        },
        {
          "id": "cupCostPct",
          "label": "Cup cost %"
        },
        {
          "id": "margin",
          "label": "Gross margin per cup"
        },
        {
          "id": "espressoCost",
          "label": "Espresso cost only"
        }
      ]
    },
    {
      "slug": "tip-pooling-split",
      "url": "https://www.revenuelab.fyi/toolbox/tip-pooling-split",
      "title": "Tip Pooling Split Calculator",
      "category": "financial",
      "summary": "Distribute pooled tips across roles by hours worked or point weighting.",
      "formula": "Points per role = hours × weight. Value per point = total tips ÷ total points. Payout = role points × value per point.",
      "inputs": [
        {
          "id": "totalTips",
          "label": "Total tips to distribute",
          "kind": "number"
        },
        {
          "id": "serverHours",
          "label": "Server hours",
          "kind": "number"
        },
        {
          "id": "serverWeight",
          "label": "Server point weight",
          "kind": "number"
        },
        {
          "id": "bartenderHours",
          "label": "Bartender hours",
          "kind": "number"
        },
        {
          "id": "bartenderWeight",
          "label": "Bartender point weight",
          "kind": "number"
        },
        {
          "id": "supportHours",
          "label": "Support (busser/expo) hours",
          "kind": "number"
        },
        {
          "id": "supportWeight",
          "label": "Support point weight",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "valuePerPoint",
          "label": "Value per point"
        },
        {
          "id": "serverPayout",
          "label": "Server pool payout"
        },
        {
          "id": "bartenderPayout",
          "label": "Bartender pool payout"
        },
        {
          "id": "supportPayout",
          "label": "Support staff pool payout"
        }
      ]
    },
    {
      "slug": "kitchen-equipment-payback",
      "url": "https://www.revenuelab.fyi/toolbox/kitchen-equipment-payback",
      "title": "Kitchen Equipment Payback Calculator",
      "category": "financial",
      "summary": "How long it takes new equipment to pay for itself in labor or cost savings.",
      "formula": "Net monthly savings = savings − added costs. Payback months = equipment cost ÷ net monthly savings.",
      "inputs": [
        {
          "id": "equipmentCost",
          "label": "Equipment cost (net)",
          "kind": "number"
        },
        {
          "id": "monthlySavings",
          "label": "Expected monthly savings",
          "kind": "number"
        },
        {
          "id": "addedMonthlyCost",
          "label": "Added monthly cost (service, utility)",
          "kind": "number"
        },
        {
          "id": "usefulLifeYears",
          "label": "Expected useful life",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paybackMonths",
          "label": "Payback period"
        },
        {
          "id": "netSavings",
          "label": "Net monthly savings"
        },
        {
          "id": "lifetimeReturn",
          "label": "Net return over useful life"
        },
        {
          "id": "roiPct",
          "label": "Lifetime ROI %"
        }
      ]
    },
    {
      "slug": "seat-turnover-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/seat-turnover-calculator",
      "title": "Seat Turnover Calculator",
      "category": "financial",
      "summary": "How many times each seat turns during service and the revenue impact.",
      "formula": "Turnover = covers served ÷ seats. Revenue = covers × average check. Turns/hour = service hours ÷ average table time.",
      "inputs": [
        {
          "id": "seats",
          "label": "Total seats",
          "kind": "number"
        },
        {
          "id": "coversServed",
          "label": "Covers served (service period)",
          "kind": "number"
        },
        {
          "id": "avgCheck",
          "label": "Average check per cover",
          "kind": "number"
        },
        {
          "id": "serviceHours",
          "label": "Service window length",
          "kind": "number"
        },
        {
          "id": "avgTableMinutes",
          "label": "Average table time",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "turnover",
          "label": "Seat turns this period"
        },
        {
          "id": "revenue",
          "label": "Revenue this period"
        },
        {
          "id": "maxTurnsPossible",
          "label": "Max turns possible in window"
        },
        {
          "id": "upside",
          "label": "Revenue upside if fully turned"
        }
      ]
    },
    {
      "slug": "banquet-beo-cost",
      "url": "https://www.revenuelab.fyi/toolbox/banquet-beo-cost",
      "title": "Banquet BEO Cost Calculator",
      "category": "financial",
      "summary": "Full per-head cost and margin for a banquet event order.",
      "formula": "Total cost = (food+bev per head × guests) + staff labor + room/AV + rentals. Margin % = (revenue − total cost) ÷ revenue × 100.",
      "inputs": [
        {
          "id": "guests",
          "label": "Guest count",
          "kind": "number"
        },
        {
          "id": "fbPerHead",
          "label": "Food & beverage cost per head",
          "kind": "number"
        },
        {
          "id": "staffCost",
          "label": "Service staff labor (total)",
          "kind": "number"
        },
        {
          "id": "roomAvCost",
          "label": "Room + AV cost",
          "kind": "number"
        },
        {
          "id": "rentalsCost",
          "label": "Linen / rentals / decor cost",
          "kind": "number"
        },
        {
          "id": "contractedPrice",
          "label": "Contracted price per head",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "marginPct",
          "label": "Gross margin %"
        },
        {
          "id": "margin",
          "label": "Gross margin dollars"
        },
        {
          "id": "costPerHead",
          "label": "Total cost per head"
        },
        {
          "id": "revenue",
          "label": "Total event revenue"
        }
      ]
    },
    {
      "slug": "dough-batch-scaling",
      "url": "https://www.revenuelab.fyi/toolbox/dough-batch-scaling",
      "title": "Dough Batch Scaling Calculator (Baker's Percentage)",
      "category": "math",
      "summary": "Scale a dough formula using baker's percentages to any flour weight.",
      "formula": "Ingredient weight = flour weight × (ingredient baker's % ÷ 100). Total dough = sum of all ingredient weights.",
      "inputs": [
        {
          "id": "flourWeight",
          "label": "Flour weight",
          "kind": "number"
        },
        {
          "id": "hydrationPct",
          "label": "Hydration (water %)",
          "kind": "number"
        },
        {
          "id": "saltPct",
          "label": "Salt %",
          "kind": "number"
        },
        {
          "id": "yeastPct",
          "label": "Yeast %",
          "kind": "number"
        },
        {
          "id": "unitWeight",
          "label": "Target unit (ball) weight",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalDough",
          "label": "Total dough weight"
        },
        {
          "id": "water",
          "label": "Water weight"
        },
        {
          "id": "salt",
          "label": "Salt weight"
        },
        {
          "id": "yeast",
          "label": "Yeast weight"
        },
        {
          "id": "units",
          "label": "Dough balls/units produced"
        }
      ]
    },
    {
      "slug": "keg-yield-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/keg-yield-calculator",
      "title": "Keg Yield Calculator",
      "category": "financial",
      "summary": "Pints per keg, cost per pour, and pour cost percentage for draft beer.",
      "formula": "Usable ounces = keg ounces × (1 − loss %). Pours = usable ounces ÷ pour size. Cost per pour = keg cost ÷ pours.",
      "inputs": [
        {
          "id": "kegSize",
          "label": "Keg size",
          "kind": "select"
        },
        {
          "id": "kegCost",
          "label": "Keg cost",
          "kind": "number"
        },
        {
          "id": "pourOz",
          "label": "Pour size",
          "kind": "number"
        },
        {
          "id": "lossPct",
          "label": "Foam/spillage loss",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per pour",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pours",
          "label": "Usable pours per keg"
        },
        {
          "id": "costPerPour",
          "label": "Cost per pour"
        },
        {
          "id": "pourCostPct",
          "label": "Pour cost %"
        },
        {
          "id": "usableOz",
          "label": "Usable ounces after loss"
        }
      ]
    },
    {
      "slug": "wine-markup-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/wine-markup-calculator",
      "title": "Wine Markup Calculator",
      "category": "financial",
      "summary": "Set bottle and by-the-glass wine prices from wholesale cost and target margin.",
      "formula": "Bottle price = wholesale cost × markup multiple. Glass price = bottle price ÷ glasses per bottle × glass markup factor.",
      "inputs": [
        {
          "id": "wholesaleCost",
          "label": "Wholesale bottle cost",
          "kind": "number"
        },
        {
          "id": "markupMultiple",
          "label": "Bottle markup multiple",
          "kind": "number"
        },
        {
          "id": "glassesPerBottle",
          "label": "Glasses poured per bottle",
          "kind": "number"
        },
        {
          "id": "glassMarkupFactor",
          "label": "Glass price factor (vs. even split)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "bottlePrice",
          "label": "Bottle price"
        },
        {
          "id": "glassPrice",
          "label": "By-the-glass price"
        },
        {
          "id": "bottlePourCostPct",
          "label": "Bottle pour cost %"
        },
        {
          "id": "glassPourCostPct",
          "label": "Glass pour cost %"
        },
        {
          "id": "revenueIfAllByGlass",
          "label": "Revenue if entire bottle sold by glass"
        }
      ]
    },
    {
      "slug": "pos-fee-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/pos-fee-calculator",
      "title": "POS & Payment Processing Fee Calculator",
      "category": "financial",
      "summary": "True cost of card processing and POS fees on your restaurant sales.",
      "formula": "Total cost = (card sales × processing %) + POS software fee + hardware fee. Effective rate = total cost ÷ total sales × 100.",
      "inputs": [
        {
          "id": "cardSales",
          "label": "Monthly card sales",
          "kind": "number"
        },
        {
          "id": "processingPct",
          "label": "Processing rate",
          "kind": "number"
        },
        {
          "id": "perTxnFee",
          "label": "Per-transaction fee",
          "kind": "number"
        },
        {
          "id": "txnCount",
          "label": "Transactions per month",
          "kind": "number"
        },
        {
          "id": "posMonthlyFee",
          "label": "POS software/hardware fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalCost",
          "label": "Total monthly processing cost"
        },
        {
          "id": "effectiveRate",
          "label": "Effective rate on sales"
        },
        {
          "id": "processingCost",
          "label": "Base processing cost"
        },
        {
          "id": "txnFees",
          "label": "Per-transaction fees"
        }
      ]
    },
    {
      "slug": "food-truck-event-pnl",
      "url": "https://www.revenuelab.fyi/toolbox/food-truck-event-pnl",
      "title": "Food Truck Event P&L Calculator",
      "category": "financial",
      "summary": "Project profit for a single food truck event after fees, food cost, and staffing.",
      "formula": "Revenue = crowd size × capture rate × avg ticket. Profit = revenue − event fee − food cost − staff wages.",
      "inputs": [
        {
          "id": "crowdSize",
          "label": "Expected crowd/foot traffic",
          "kind": "number"
        },
        {
          "id": "captureRate",
          "label": "Capture rate (% who buy from you)",
          "kind": "number"
        },
        {
          "id": "avgTicket",
          "label": "Average ticket",
          "kind": "number"
        },
        {
          "id": "eventFeePct",
          "label": "Event commission (if %)",
          "kind": "number"
        },
        {
          "id": "eventFeeFlat",
          "label": "Flat booth fee",
          "kind": "number"
        },
        {
          "id": "foodCostPct",
          "label": "Food cost %",
          "kind": "number"
        },
        {
          "id": "staffWages",
          "label": "Staff wages for event",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "profit",
          "label": "Projected net profit"
        },
        {
          "id": "revenue",
          "label": "Projected revenue"
        },
        {
          "id": "eventFee",
          "label": "Total event fees"
        },
        {
          "id": "profitPerHour",
          "label": "Profit per hour (6hr event est.)"
        }
      ]
    },
    {
      "slug": "staff-scheduling-hours",
      "url": "https://www.revenuelab.fyi/toolbox/staff-scheduling-hours",
      "title": "Staff Scheduling Hours Calculator",
      "category": "financial",
      "summary": "Right-size staffing hours to projected sales and target labor percentage.",
      "formula": "Labor budget $ = projected sales × target labor %. Budgeted hours = labor budget $ ÷ blended hourly rate.",
      "inputs": [
        {
          "id": "projectedSales",
          "label": "Projected sales for shift/day",
          "kind": "number"
        },
        {
          "id": "targetLaborPct",
          "label": "Target labor %",
          "kind": "number"
        },
        {
          "id": "blendedRate",
          "label": "Blended hourly wage (loaded)",
          "kind": "number"
        },
        {
          "id": "plannedHours",
          "label": "Hours currently scheduled",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "budgetedHours",
          "label": "Budgeted labor hours"
        },
        {
          "id": "hoursGap",
          "label": "Scheduled vs. budgeted gap"
        },
        {
          "id": "laborBudget",
          "label": "Labor dollar budget"
        },
        {
          "id": "projectedLaborPct",
          "label": "Projected labor % if scheduled as planned"
        }
      ]
    },
    {
      "slug": "health-margin-per-menu-item",
      "url": "https://www.revenuelab.fyi/toolbox/health-margin-per-menu-item",
      "title": "Menu Item Health Margin Calculator",
      "category": "financial",
      "summary": "True profitability per dish after food cost, prep labor, and waste allowance.",
      "formula": "True cost = plate cost × (1 + waste %) + (prep minutes ÷ 60 × labor rate). Health margin = price − true cost.",
      "inputs": [
        {
          "id": "plateCost",
          "label": "Plate cost (ingredients)",
          "kind": "number"
        },
        {
          "id": "prepMinutes",
          "label": "Prep time per plate",
          "kind": "number"
        },
        {
          "id": "laborRate",
          "label": "Loaded kitchen labor rate",
          "kind": "number"
        },
        {
          "id": "wastePct",
          "label": "Typical waste/trim allowance",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Menu price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "healthMargin",
          "label": "True health margin per plate"
        },
        {
          "id": "healthMarginPct",
          "label": "Health margin %"
        },
        {
          "id": "trueCost",
          "label": "True cost (food + labor + waste)"
        },
        {
          "id": "foodCostOnlyPct",
          "label": "Food cost % alone (for comparison)"
        }
      ]
    },
    {
      "slug": "ingredient-price-increase-impact",
      "url": "https://www.revenuelab.fyi/toolbox/ingredient-price-increase-impact",
      "title": "Ingredient Price Increase Impact Calculator",
      "category": "financial",
      "summary": "See how a supplier price hike hits food cost % and what to do about it.",
      "formula": "New plate cost = old plate cost + (portion qty × price increase). New food cost % = new plate cost ÷ price. Offset price = new plate cost ÷ old food cost %.",
      "inputs": [
        {
          "id": "oldPrice",
          "label": "Old ingredient price",
          "kind": "number"
        },
        {
          "id": "newPrice",
          "label": "New ingredient price",
          "kind": "number"
        },
        {
          "id": "portionQty",
          "label": "Portion used per plate",
          "kind": "number"
        },
        {
          "id": "otherPlateCost",
          "label": "Rest of plate cost (unaffected)",
          "kind": "number"
        },
        {
          "id": "menuPrice",
          "label": "Menu price",
          "kind": "number"
        },
        {
          "id": "unitsMonth",
          "label": "Units sold per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "newPct",
          "label": "New food cost %"
        },
        {
          "id": "perPlateHit",
          "label": "Cost increase per plate"
        },
        {
          "id": "monthlyHit",
          "label": "Monthly profit impact if no change"
        },
        {
          "id": "offsetPrice",
          "label": "Price needed to hold food cost % flat"
        }
      ]
    },
    {
      "slug": "reservation-no-show-cost",
      "url": "https://www.revenuelab.fyi/toolbox/reservation-no-show-cost",
      "title": "Reservation No-Show Cost Calculator",
      "category": "financial",
      "summary": "Quantify the revenue lost to no-shows and whether a deposit policy pays off.",
      "formula": "Lost revenue = bookings × no-show rate × party size × avg check. Recovered = lost revenue × policy effectiveness %.",
      "inputs": [
        {
          "id": "bookingsPeriod",
          "label": "Reservations per week",
          "kind": "number"
        },
        {
          "id": "noShowRate",
          "label": "No-show rate",
          "kind": "number"
        },
        {
          "id": "partySize",
          "label": "Average party size",
          "kind": "number"
        },
        {
          "id": "avgCheck",
          "label": "Average check per person",
          "kind": "number"
        },
        {
          "id": "policyEffectiveness",
          "label": "Deposit policy effectiveness",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualLoss",
          "label": "Annual revenue lost to no-shows"
        },
        {
          "id": "weeklyLoss",
          "label": "Weekly revenue lost"
        },
        {
          "id": "recoveredAnnual",
          "label": "Estimated annual recovery with deposit policy"
        },
        {
          "id": "noShows",
          "label": "No-shows per week"
        }
      ]
    },
    {
      "slug": "general-conditions-percentage",
      "url": "https://www.revenuelab.fyi/toolbox/general-conditions-percentage",
      "title": "General Conditions Percentage Calculator",
      "category": "financial",
      "summary": "Turn jobsite overhead staffing and rentals into a % of hard cost.",
      "formula": "GC lump sum = Monthly GC cost × Duration (months). GC % = GC lump sum ÷ Hard cost × 100.",
      "inputs": [
        {
          "id": "monthlyGc",
          "label": "Monthly GC cost",
          "kind": "number"
        },
        {
          "id": "duration",
          "label": "Project duration",
          "kind": "number"
        },
        {
          "id": "hardCost",
          "label": "Hard construction cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pct",
          "label": "GCs as % of hard cost"
        },
        {
          "id": "lumpSum",
          "label": "GC lump sum"
        },
        {
          "id": "totalCost",
          "label": "Total cost (hard + GC)"
        },
        {
          "id": "dailyRate",
          "label": "GC burn rate per day"
        }
      ]
    },
    {
      "slug": "construction-change-order-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/construction-change-order-pricing",
      "title": "Change Order Pricing Calculator",
      "category": "financial",
      "summary": "Price added scope with labor, material, equipment, markup, and bond adder.",
      "formula": "CO price = (Self-perform cost × (1 + OH%) × (1 + Profit%)) + (Sub cost × (1 + Tier markup%)) + Bond adder.",
      "inputs": [
        {
          "id": "selfCost",
          "label": "Self-perform direct cost",
          "kind": "number"
        },
        {
          "id": "subCost",
          "label": "Subcontractor quoted cost",
          "kind": "number"
        },
        {
          "id": "ohPct",
          "label": "Overhead on self-perform",
          "kind": "number"
        },
        {
          "id": "profitPct",
          "label": "Profit on self-perform",
          "kind": "number"
        },
        {
          "id": "tierPct",
          "label": "Markup on sub cost",
          "kind": "number"
        },
        {
          "id": "bondRate",
          "label": "Bond rate adjustment",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total change order price"
        },
        {
          "id": "self",
          "label": "Self-perform portion (marked up)"
        },
        {
          "id": "sub",
          "label": "Sub portion (marked up)"
        },
        {
          "id": "bond",
          "label": "Bond premium adder"
        },
        {
          "id": "effMarkupPct",
          "label": "Effective blended markup"
        }
      ]
    },
    {
      "slug": "retainage-cash-flow",
      "url": "https://www.revenuelab.fyi/toolbox/retainage-cash-flow",
      "title": "Retainage Cash Flow Calculator",
      "category": "financial",
      "summary": "See how much cash retainage ties up and when it comes back.",
      "formula": "Retainage held per pay app = Billing × Retainage%. Financing cost ≈ Average held balance × Rate × (Duration ÷ 12).",
      "inputs": [
        {
          "id": "contractValue",
          "label": "Contract value",
          "kind": "number"
        },
        {
          "id": "retainagePct",
          "label": "Retainage rate",
          "kind": "number"
        },
        {
          "id": "duration",
          "label": "Project duration",
          "kind": "number"
        },
        {
          "id": "lineRate",
          "label": "Line of credit rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "held",
          "label": "Total retainage held at completion"
        },
        {
          "id": "financingCost",
          "label": "Estimated financing cost of retainage"
        },
        {
          "id": "avgBalance",
          "label": "Average balance held during job"
        },
        {
          "id": "monthlyHeldPace",
          "label": "Retainage accruing per month"
        }
      ]
    },
    {
      "slug": "bonding-capacity",
      "url": "https://www.revenuelab.fyi/toolbox/bonding-capacity",
      "title": "Bonding Capacity Calculator",
      "category": "financial",
      "summary": "Estimate single-job and aggregate bonding limits from working capital.",
      "formula": "Single-job capacity ≈ Working capital × Single-job multiplier. Aggregate capacity ≈ Working capital × Aggregate multiplier.",
      "inputs": [
        {
          "id": "currentAssets",
          "label": "Current assets",
          "kind": "number"
        },
        {
          "id": "currentLiabilities",
          "label": "Current liabilities",
          "kind": "number"
        },
        {
          "id": "netWorth",
          "label": "Net worth",
          "kind": "number"
        },
        {
          "id": "singleMult",
          "label": "Single-job multiplier",
          "kind": "number"
        },
        {
          "id": "aggMult",
          "label": "Aggregate multiplier",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "aggregate",
          "label": "Estimated aggregate program capacity"
        },
        {
          "id": "single",
          "label": "Estimated single-job limit"
        },
        {
          "id": "workingCapital",
          "label": "Working capital"
        },
        {
          "id": "wcToNetWorth",
          "label": "Working capital as % of net worth"
        }
      ]
    },
    {
      "slug": "earthwork-cut-fill",
      "url": "https://www.revenuelab.fyi/toolbox/earthwork-cut-fill",
      "title": "Earthwork Cut & Fill Calculator",
      "category": "math",
      "summary": "Balance cut and fill volumes and price the haul or import.",
      "formula": "Usable fill from cut = Cut volume × (1 - Shrinkage%). Net balance = Usable fill − Fill required. Haul/import cost = |Net balance| × Rate per yard.",
      "inputs": [
        {
          "id": "cutVolume",
          "label": "Cut volume",
          "kind": "number"
        },
        {
          "id": "fillVolume",
          "label": "Fill required",
          "kind": "number"
        },
        {
          "id": "shrinkage",
          "label": "Shrinkage factor",
          "kind": "number"
        },
        {
          "id": "haulRate",
          "label": "Haul-off / import rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Net balance (yd³, + = surplus)"
        },
        {
          "id": "usableFill",
          "label": "Usable fill from cut"
        },
        {
          "id": "cost",
          "label": "Haul-off or import cost"
        },
        {
          "id": "status",
          "label": "1 = surplus to haul off, 0 = deficit to import"
        }
      ]
    },
    {
      "slug": "crew-productivity-per-day",
      "url": "https://www.revenuelab.fyi/toolbox/crew-productivity-per-day",
      "title": "Crew Productivity Calculator",
      "category": "financial",
      "summary": "Convert a crew's daily output rate into schedule duration and unit cost.",
      "formula": "Duration (days) = Total quantity ÷ Daily output rate. Labor cost per unit = Crew daily cost ÷ Daily output rate.",
      "inputs": [
        {
          "id": "quantity",
          "label": "Total quantity",
          "kind": "number"
        },
        {
          "id": "dailyOutput",
          "label": "Crew daily output",
          "kind": "number"
        },
        {
          "id": "crewCost",
          "label": "Crew fully burdened cost",
          "kind": "number"
        },
        {
          "id": "productivityFactor",
          "label": "Productivity adjustment",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "days",
          "label": "Working days required"
        },
        {
          "id": "totalLaborCost",
          "label": "Total crew labor cost"
        },
        {
          "id": "costPerUnit",
          "label": "Labor cost per unit"
        },
        {
          "id": "adjustedOutput",
          "label": "Adjusted daily output"
        }
      ]
    },
    {
      "slug": "equipment-rental-vs-buy-crossover",
      "url": "https://www.revenuelab.fyi/toolbox/equipment-rental-vs-buy-crossover",
      "title": "Equipment Rental vs. Buy Crossover Calculator",
      "category": "financial",
      "summary": "Find the usage point where owning equipment beats renting it.",
      "formula": "Annual ownership cost = (Purchase price ÷ Useful life) + Annual interest + Insurance + Maintenance. Breakeven days = Annual ownership cost ÷ Daily rental rate.",
      "inputs": [
        {
          "id": "purchasePrice",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "usefulLife",
          "label": "Useful life",
          "kind": "number"
        },
        {
          "id": "interestPct",
          "label": "Financing interest rate",
          "kind": "number"
        },
        {
          "id": "annualMaint",
          "label": "Insurance + maintenance",
          "kind": "number"
        },
        {
          "id": "dailyRentalRate",
          "label": "Daily rental rate",
          "kind": "number"
        },
        {
          "id": "annualUsageDays",
          "label": "Expected usage",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenDays",
          "label": "Breakeven usage"
        },
        {
          "id": "annualOwnCost",
          "label": "Annual ownership cost"
        },
        {
          "id": "rentalCostAtUsage",
          "label": "Rental cost at your usage level"
        },
        {
          "id": "savingsIfBuy",
          "label": "Annual savings if you buy (+ = buy wins)"
        }
      ]
    },
    {
      "slug": "punch-list-cost-estimator",
      "url": "https://www.revenuelab.fyi/toolbox/punch-list-cost-estimator",
      "title": "Punch List Cost Estimator",
      "category": "financial",
      "summary": "Budget the closeout cost of outstanding punch items before final payment.",
      "formula": "Punch list cost = (Item count × Avg cost per item) × (1 + Remobilization surcharge%).",
      "inputs": [
        {
          "id": "itemCount",
          "label": "Number of punch items",
          "kind": "number"
        },
        {
          "id": "avgCostPerItem",
          "label": "Average cost per item",
          "kind": "number"
        },
        {
          "id": "remobPct",
          "label": "Remobilization surcharge",
          "kind": "number"
        },
        {
          "id": "contractValue",
          "label": "Contract value",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated total punch list cost"
        },
        {
          "id": "pctOfContract",
          "label": "Punch list as % of contract value"
        },
        {
          "id": "base",
          "label": "Base cost before remobilization"
        },
        {
          "id": "costPerItemAllIn",
          "label": "All-in cost per item"
        }
      ]
    },
    {
      "slug": "liquidated-damages-exposure",
      "url": "https://www.revenuelab.fyi/toolbox/liquidated-damages-exposure",
      "title": "Liquidated Damages Exposure Calculator",
      "category": "financial",
      "summary": "Model total LD exposure if substantial completion slips past the deadline.",
      "formula": "LD exposure = LD rate per day × Days late. Net position = Bonus earned (if early) − LD exposure (if late).",
      "inputs": [
        {
          "id": "ldRate",
          "label": "LD rate",
          "kind": "number"
        },
        {
          "id": "daysLate",
          "label": "Projected days late (0 if on time)",
          "kind": "number"
        },
        {
          "id": "bonusRate",
          "label": "Early completion bonus rate",
          "kind": "number"
        },
        {
          "id": "daysEarly",
          "label": "Projected days early (0 if not applicable)",
          "kind": "number"
        },
        {
          "id": "contractFee",
          "label": "Contractor's fee on contract",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ldExposure",
          "label": "Liquidated damages exposure"
        },
        {
          "id": "pctOfFee",
          "label": "Exposure as % of contractor fee"
        },
        {
          "id": "bonus",
          "label": "Early completion bonus (if applicable)"
        },
        {
          "id": "net",
          "label": "Net position (bonus − LD)"
        }
      ]
    },
    {
      "slug": "prevailing-wage-burden",
      "url": "https://www.revenuelab.fyi/toolbox/prevailing-wage-burden",
      "title": "Prevailing Wage Burden Calculator",
      "category": "financial",
      "summary": "Compute true hourly cost on Davis-Bacon and state prevailing wage jobs.",
      "formula": "Loaded rate = Base wage + Fringe + (Base wage × Burden%). Fringe paid as cash also incurs FICA if not routed through a qualifying benefit plan.",
      "inputs": [
        {
          "id": "baseWage",
          "label": "Base wage rate",
          "kind": "number"
        },
        {
          "id": "fringeRate",
          "label": "Fringe benefit rate",
          "kind": "number"
        },
        {
          "id": "fringeAsCash",
          "label": "Fringe paid as",
          "kind": "select"
        },
        {
          "id": "burdenPct",
          "label": "Payroll burden rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "loadedRate",
          "label": "Fully loaded hourly rate"
        },
        {
          "id": "burdenAmount",
          "label": "Burden cost per hour"
        },
        {
          "id": "dailyCost",
          "label": "Loaded cost per 8-hr day"
        },
        {
          "id": "burdenBase",
          "label": "Amount burden is calculated on"
        }
      ]
    },
    {
      "slug": "submittal-rfi-cost-impact",
      "url": "https://www.revenuelab.fyi/toolbox/submittal-rfi-cost-impact",
      "title": "Submittal & RFI Cost Impact Calculator",
      "category": "financial",
      "summary": "Price the administrative and schedule cost of the RFI and submittal cycle.",
      "formula": "Processing cost = (RFI count × Hrs/RFI + Submittal count × Hrs/submittal) × Admin rate. Delay cost = Delayed items × Avg delay days × Daily crew idle cost.",
      "inputs": [
        {
          "id": "rfiCount",
          "label": "Projected RFI count",
          "kind": "number"
        },
        {
          "id": "hrsPerRfi",
          "label": "Hours per RFI (write + track)",
          "kind": "number"
        },
        {
          "id": "submittalCount",
          "label": "Projected submittal count",
          "kind": "number"
        },
        {
          "id": "hrsPerSubmittal",
          "label": "Hours per submittal",
          "kind": "number"
        },
        {
          "id": "adminRate",
          "label": "Blended admin labor rate",
          "kind": "number"
        },
        {
          "id": "delayedPct",
          "label": "% of RFIs causing field delay",
          "kind": "number"
        },
        {
          "id": "idleCostPerDay",
          "label": "Crew idle cost per delay day",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total submittal/RFI cost impact"
        },
        {
          "id": "processingCost",
          "label": "Admin processing labor cost"
        },
        {
          "id": "delayCost",
          "label": "Estimated field delay cost"
        },
        {
          "id": "processingHrs",
          "label": "Total processing hours"
        }
      ]
    },
    {
      "slug": "jobsite-overhead-per-day",
      "url": "https://www.revenuelab.fyi/toolbox/jobsite-overhead-per-day",
      "title": "Jobsite Overhead Per Day Calculator",
      "category": "financial",
      "summary": "Find your daily burn rate to price delay claims and acceleration decisions.",
      "formula": "Daily overhead rate = Sum of all recurring jobsite costs converted to a daily-equivalent basis. Delay cost = Daily rate × Delay days.",
      "inputs": [
        {
          "id": "superSalary",
          "label": "Super + PM salary allocation",
          "kind": "number"
        },
        {
          "id": "tempFacilities",
          "label": "Temp facilities & utilities",
          "kind": "number"
        },
        {
          "id": "equipmentStandby",
          "label": "Equipment standing by",
          "kind": "number"
        },
        {
          "id": "insuranceMonthly",
          "label": "Insurance allocation",
          "kind": "number"
        },
        {
          "id": "delayDays",
          "label": "Days to price (delay or acceleration)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "dailyRate",
          "label": "Jobsite overhead per calendar day"
        },
        {
          "id": "delayCost",
          "label": "Cost for the days entered"
        },
        {
          "id": "monthlyTotal",
          "label": "Total monthly overhead"
        },
        {
          "id": "weeklyRate",
          "label": "Overhead per week"
        }
      ]
    },
    {
      "slug": "construction-escalation-clause",
      "url": "https://www.revenuelab.fyi/toolbox/construction-escalation-clause",
      "title": "Construction Escalation Clause Calculator",
      "category": "financial",
      "summary": "Estimate price escalation exposure on volatile materials over the schedule.",
      "formula": "Projected price = Base price × (1 + Monthly escalation rate)^Months to purchase. Exposure = (Projected price − Base price) × Quantity.",
      "inputs": [
        {
          "id": "basePrice",
          "label": "Base unit price at bid",
          "kind": "number"
        },
        {
          "id": "quantity",
          "label": "Quantity needed",
          "kind": "number"
        },
        {
          "id": "monthlyEscalation",
          "label": "Assumed monthly escalation",
          "kind": "number"
        },
        {
          "id": "monthsOut",
          "label": "Months until purchase",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "exposure",
          "label": "Total escalation cost exposure"
        },
        {
          "id": "projectedPrice",
          "label": "Projected unit price at purchase"
        },
        {
          "id": "pctIncrease",
          "label": "Cumulative price increase"
        },
        {
          "id": "totalProjectedCost",
          "label": "Total projected material cost"
        }
      ]
    },
    {
      "slug": "material-waste-factor",
      "url": "https://www.revenuelab.fyi/toolbox/material-waste-factor",
      "title": "Material Waste Factor Calculator",
      "category": "math",
      "summary": "Apply the right waste percentage by material so you order accurately.",
      "formula": "Order quantity = Net quantity × (1 + Waste%). Waste cost = Net quantity × Waste% × Unit price.",
      "inputs": [
        {
          "id": "material",
          "label": "Material type",
          "kind": "select"
        },
        {
          "id": "netQuantity",
          "label": "Net quantity needed",
          "kind": "number"
        },
        {
          "id": "unitPrice",
          "label": "Unit price",
          "kind": "number"
        },
        {
          "id": "customWaste",
          "label": "Override waste % (0 = use default)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "orderQty",
          "label": "Order quantity (with waste)"
        },
        {
          "id": "wastePct",
          "label": "Waste factor applied"
        },
        {
          "id": "wasteQty",
          "label": "Waste quantity"
        },
        {
          "id": "wasteCost",
          "label": "Cost of waste allowance"
        }
      ]
    },
    {
      "slug": "construction-draw-schedule",
      "url": "https://www.revenuelab.fyi/toolbox/construction-draw-schedule",
      "title": "Construction Draw Schedule Calculator",
      "category": "financial",
      "summary": "Model milestone-based draws against a construction loan and interest accrual.",
      "formula": "Interest for a period = Outstanding drawn balance × Annual rate × (Days in period ÷ 365). Total interest = Sum across all draw periods.",
      "inputs": [
        {
          "id": "loanAmount",
          "label": "Total construction loan",
          "kind": "number"
        },
        {
          "id": "numDraws",
          "label": "Number of draws",
          "kind": "number"
        },
        {
          "id": "monthsBetweenDraws",
          "label": "Months between draws",
          "kind": "number"
        },
        {
          "id": "annualRate",
          "label": "Interest rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalInterest",
          "label": "Total interest carry through project"
        },
        {
          "id": "perDraw",
          "label": "Amount per draw"
        },
        {
          "id": "totalCost",
          "label": "Total cost (loan + interest)"
        },
        {
          "id": "avgDrawnBalance",
          "label": "Average outstanding balance"
        }
      ]
    },
    {
      "slug": "bid-bond-premium",
      "url": "https://www.revenuelab.fyi/toolbox/bid-bond-premium",
      "title": "Bid Bond Premium Calculator",
      "category": "financial",
      "summary": "Estimate bid, performance, and payment bond premium cost by contract size.",
      "formula": "Premium = (First bracket × Tier 1 rate) + (Remaining amount × Tier 2 rate).",
      "inputs": [
        {
          "id": "contractValue",
          "label": "Contract value",
          "kind": "number"
        },
        {
          "id": "bracket1",
          "label": "First bracket ceiling",
          "kind": "number"
        },
        {
          "id": "tier1Rate",
          "label": "Tier 1 rate",
          "kind": "number"
        },
        {
          "id": "tier2Rate",
          "label": "Tier 2 rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "premium",
          "label": "Estimated bond premium"
        },
        {
          "id": "effectiveRate",
          "label": "Effective blended rate"
        },
        {
          "id": "tier1Amount",
          "label": "Amount in tier 1 bracket"
        },
        {
          "id": "tier2Amount",
          "label": "Amount in tier 2 bracket"
        }
      ]
    },
    {
      "slug": "mobilization-demobilization-cost",
      "url": "https://www.revenuelab.fyi/toolbox/mobilization-demobilization-cost",
      "title": "Mobilization & Demobilization Cost Calculator",
      "category": "financial",
      "summary": "Price the fixed cost of setting up and tearing down a jobsite.",
      "formula": "Mob/demob cost = Equipment transport (both ways) + Temp facility setup/teardown + Crew travel cost for setup/breakdown days.",
      "inputs": [
        {
          "id": "equipmentTransport",
          "label": "Equipment transport, round trip",
          "kind": "number"
        },
        {
          "id": "tempFacilitySetup",
          "label": "Temp facility setup + teardown",
          "kind": "number"
        },
        {
          "id": "crewTravelDays",
          "label": "Crew days spent mobilizing/demobilizing",
          "kind": "number"
        },
        {
          "id": "crewDayRate",
          "label": "Crew cost per day",
          "kind": "number"
        },
        {
          "id": "contractValue",
          "label": "Contract value",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total mobilization/demobilization cost"
        },
        {
          "id": "pctOfContract",
          "label": "As % of contract value"
        },
        {
          "id": "crewCost",
          "label": "Crew travel/setup labor cost"
        }
      ]
    },
    {
      "slug": "general-contractor-fee-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/general-contractor-fee-calculator",
      "title": "General Contractor Fee Calculator",
      "category": "financial",
      "summary": "Compute GC fee on a cost-plus-fee contract and the guaranteed max price.",
      "formula": "Fee = Cost of work × Fee% (or flat fee). Contract sum = Cost + Fee, capped at GMP. Savings below GMP split per agreed ratio.",
      "inputs": [
        {
          "id": "estCost",
          "label": "Estimated cost of work",
          "kind": "number"
        },
        {
          "id": "feeType",
          "label": "Fee structure",
          "kind": "select"
        },
        {
          "id": "feePct",
          "label": "Fee percentage",
          "kind": "number"
        },
        {
          "id": "flatFee",
          "label": "Flat fee amount",
          "kind": "number"
        },
        {
          "id": "gmp",
          "label": "GMP cap (0 = no cap)",
          "kind": "number"
        },
        {
          "id": "actualCost",
          "label": "Actual cost realized",
          "kind": "number"
        },
        {
          "id": "ownerSharePct",
          "label": "Owner's share of savings below GMP",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "contractSum",
          "label": "Estimated contract sum"
        },
        {
          "id": "fee",
          "label": "GC fee"
        },
        {
          "id": "contractorSavings",
          "label": "Contractor's share of savings under GMP"
        },
        {
          "id": "ownerSavings",
          "label": "Owner's share of savings under GMP"
        },
        {
          "id": "overrun",
          "label": "Contractor-absorbed overrun above GMP"
        }
      ]
    },
    {
      "slug": "change-order-markup-stacking",
      "url": "https://www.revenuelab.fyi/toolbox/change-order-markup-stacking",
      "title": "Change Order Markup Stacking Calculator",
      "category": "financial",
      "summary": "See how markup compounds across sub-tier, GC, and CM layers on a change.",
      "formula": "Tier 1 total = Base cost × (1 + Tier1%). Tier 2 total = Tier 1 total × (1 + Tier2%). Tier 3 total = Tier 2 total × (1 + Tier3%).",
      "inputs": [
        {
          "id": "baseCost",
          "label": "Base labor + material cost",
          "kind": "number"
        },
        {
          "id": "tier1Pct",
          "label": "Sub-subcontractor markup",
          "kind": "number"
        },
        {
          "id": "tier2Pct",
          "label": "Subcontractor markup",
          "kind": "number"
        },
        {
          "id": "tier3Pct",
          "label": "GC/CM markup",
          "kind": "number"
        },
        {
          "id": "capPct",
          "label": "Contract markup cap (0 = no cap)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "final",
          "label": "Final stacked price"
        },
        {
          "id": "totalMarkupPct",
          "label": "Total effective markup"
        },
        {
          "id": "capped",
          "label": "Price if capped per contract"
        },
        {
          "id": "overCapAmount",
          "label": "Amount exceeding contract cap"
        }
      ]
    },
    {
      "slug": "schedule-of-values",
      "url": "https://www.revenuelab.fyi/toolbox/schedule-of-values",
      "title": "Schedule of Values Line Item Calculator",
      "category": "financial",
      "summary": "Allocate contract value across line items and check front-loading.",
      "formula": "Amount billable = Line item value × % complete this period. Front-load ratio = (Line item % of contract value) ÷ (Line item % of actual cost).",
      "inputs": [
        {
          "id": "lineItemValue",
          "label": "Line item scheduled value",
          "kind": "number"
        },
        {
          "id": "pctComplete",
          "label": "Percent complete this period",
          "kind": "number"
        },
        {
          "id": "totalContractValue",
          "label": "Total contract value",
          "kind": "number"
        },
        {
          "id": "actualCostEstimate",
          "label": "Estimated actual cost of this line item",
          "kind": "number"
        },
        {
          "id": "totalActualCost",
          "label": "Total estimated actual project cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "billable",
          "label": "Amount billable this period"
        },
        {
          "id": "frontLoadRatio",
          "label": "Front-load ratio (1.0 = neutral)"
        },
        {
          "id": "pctOfContract",
          "label": "Line item % of total contract value"
        },
        {
          "id": "overallocation",
          "label": "Value allocated above actual cost estimate"
        }
      ]
    },
    {
      "slug": "overhead-and-profit-allocation",
      "url": "https://www.revenuelab.fyi/toolbox/overhead-and-profit-allocation",
      "title": "Overhead & Profit Allocation Calculator",
      "category": "financial",
      "summary": "Split company overhead recovery and profit target across a bid.",
      "formula": "Overhead recovery % = Annual fixed overhead ÷ Projected annual revenue. Bid price = Direct cost × (1 + Overhead%) × (1 + Profit%).",
      "inputs": [
        {
          "id": "annualOverhead",
          "label": "Annual fixed overhead",
          "kind": "number"
        },
        {
          "id": "projectedRevenue",
          "label": "Projected annual revenue",
          "kind": "number"
        },
        {
          "id": "targetProfitPct",
          "label": "Target profit margin",
          "kind": "number"
        },
        {
          "id": "jobDirectCost",
          "label": "This job's direct cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "bidPrice",
          "label": "Bid price with O&P applied"
        },
        {
          "id": "overheadPct",
          "label": "Calculated overhead recovery rate"
        },
        {
          "id": "opDollarAmount",
          "label": "Total O&P dollars added"
        },
        {
          "id": "withOverhead",
          "label": "Cost with overhead only (pre-profit)"
        }
      ]
    },
    {
      "slug": "weather-delay-days",
      "url": "https://www.revenuelab.fyi/toolbox/weather-delay-days",
      "title": "Weather Delay Days Calculator",
      "category": "other",
      "summary": "Estimate expected weather delay days from historical climate data and schedule.",
      "formula": "Expected delay days = Avg adverse weather days/month × Project duration (months). Shortfall = Expected delay − Scheduled contingency days.",
      "inputs": [
        {
          "id": "avgDaysPerMonth",
          "label": "Avg adverse weather days per month",
          "kind": "number"
        },
        {
          "id": "duration",
          "label": "Project duration",
          "kind": "number"
        },
        {
          "id": "scheduledContingency",
          "label": "Weather contingency days in schedule",
          "kind": "number"
        },
        {
          "id": "dailyOverheadRate",
          "label": "Daily overhead rate (for cost estimate)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "expected",
          "label": "Expected weather delay days"
        },
        {
          "id": "shortfall",
          "label": "Shortfall vs. scheduled contingency (+ = underprotected)"
        },
        {
          "id": "shortfallCost",
          "label": "Unbudgeted cost exposure if shortfall"
        },
        {
          "id": "scheduled",
          "label": "Weather days already in schedule"
        }
      ]
    },
    {
      "slug": "labor-burden-rate",
      "url": "https://www.revenuelab.fyi/toolbox/labor-burden-rate",
      "title": "Labor Burden Rate Calculator",
      "category": "financial",
      "summary": "Compute the true loaded cost of a construction worker beyond base wage.",
      "formula": "Loaded rate = Base wage + FICA + FUTA/SUTA + Workers' comp + GL allocation + Benefits/PTO, all calculated on base wage.",
      "inputs": [
        {
          "id": "baseWage",
          "label": "Base wage",
          "kind": "number"
        },
        {
          "id": "workersCompPct",
          "label": "Workers' comp rate",
          "kind": "number"
        },
        {
          "id": "unemploymentPct",
          "label": "FUTA/SUTA rate",
          "kind": "number"
        },
        {
          "id": "glPct",
          "label": "General liability allocation",
          "kind": "number"
        },
        {
          "id": "benefitsPct",
          "label": "Benefits + PTO",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "loadedRate",
          "label": "Fully loaded hourly rate"
        },
        {
          "id": "burdenPct",
          "label": "Total burden as % of base wage"
        },
        {
          "id": "totalBurden",
          "label": "Total burden cost per hour"
        },
        {
          "id": "annualCost",
          "label": "Annualized cost (2,080 hrs)"
        }
      ]
    },
    {
      "slug": "direct-vs-indirect-cost-ratio",
      "url": "https://www.revenuelab.fyi/toolbox/direct-vs-indirect-cost-ratio",
      "title": "Direct vs. Indirect Cost Ratio Calculator",
      "category": "financial",
      "summary": "Check how much of your job cost is overhead versus installed work.",
      "formula": "Indirect ratio = Indirect cost ÷ Direct cost. Indirect % of total = Indirect cost ÷ (Direct + Indirect) × 100.",
      "inputs": [
        {
          "id": "directCost",
          "label": "Direct cost (labor + material + equipment)",
          "kind": "number"
        },
        {
          "id": "indirectCost",
          "label": "Indirect cost (GCs, supervision, overhead)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pctOfTotal",
          "label": "Indirect cost as % of total cost"
        },
        {
          "id": "ratio",
          "label": "Indirect-to-direct ratio"
        },
        {
          "id": "total",
          "label": "Total project cost"
        },
        {
          "id": "inNormalRange",
          "label": "1 = within typical 5-15% range, 0 = outside"
        }
      ]
    },
    {
      "slug": "contingency-reserve-percentage",
      "url": "https://www.revenuelab.fyi/toolbox/contingency-reserve-percentage",
      "title": "Contingency Reserve Percentage Calculator",
      "category": "financial",
      "summary": "Size project contingency based on design completeness and risk factors.",
      "formula": "Contingency % = Base rate by design phase + Risk adjustment points. Contingency $ = Estimated cost × Contingency%.",
      "inputs": [
        {
          "id": "designPhase",
          "label": "Design phase at time of estimate",
          "kind": "select"
        },
        {
          "id": "existingConditions",
          "label": "Unknown existing conditions risk (renovation)",
          "kind": "select"
        },
        {
          "id": "aggressiveSchedule",
          "label": "Aggressive/compressed schedule",
          "kind": "select"
        },
        {
          "id": "estimatedCost",
          "label": "Estimated project cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pct",
          "label": "Recommended contingency %"
        },
        {
          "id": "contingencyAmount",
          "label": "Contingency dollar amount"
        },
        {
          "id": "totalWithContingency",
          "label": "Total estimated cost with contingency"
        }
      ]
    },
    {
      "slug": "deductible-vs-premium-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/deductible-vs-premium-breakeven",
      "title": "Deductible vs Premium Breakeven Calculator",
      "category": "financial",
      "summary": "Find the medical spend level where a high-deductible plan beats a low-deductible plan.",
      "formula": "Plan cost = premium×12 + min(spend, deductible) + coinsurance×max(0, min(spend, oopMax)−deductible), capped so member share never exceeds (oopMax − deductible) + deductible.",
      "inputs": [
        {
          "id": "premiumA",
          "label": "Plan A monthly premium",
          "kind": "number"
        },
        {
          "id": "deductibleA",
          "label": "Plan A deductible",
          "kind": "number"
        },
        {
          "id": "oopA",
          "label": "Plan A out-of-pocket max",
          "kind": "number"
        },
        {
          "id": "coinsA",
          "label": "Plan A coinsurance after deductible",
          "kind": "number"
        },
        {
          "id": "premiumB",
          "label": "Plan B monthly premium",
          "kind": "number"
        },
        {
          "id": "deductibleB",
          "label": "Plan B deductible",
          "kind": "number"
        },
        {
          "id": "oopB",
          "label": "Plan B out-of-pocket max",
          "kind": "number"
        },
        {
          "id": "coinsB",
          "label": "Plan B coinsurance after deductible",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakeven",
          "label": "Breakeven annual medical spend"
        },
        {
          "id": "annualA",
          "label": "Plan A annual premium"
        },
        {
          "id": "annualB",
          "label": "Plan B annual premium"
        },
        {
          "id": "maxTotalA",
          "label": "Plan A worst-case total cost"
        },
        {
          "id": "maxTotalB",
          "label": "Plan B worst-case total cost"
        }
      ]
    },
    {
      "slug": "hsa-vs-ppo-total-cost",
      "url": "https://www.revenuelab.fyi/toolbox/hsa-vs-ppo-total-cost",
      "title": "HSA vs PPO Total Cost Calculator",
      "category": "financial",
      "summary": "Compare true after-tax cost of an HSA-eligible plan against a traditional PPO.",
      "formula": "After-tax cost = premium×12 + memberClaimsShare − (HSA contribution × marginal tax rate) − employer HSA contribution.",
      "inputs": [
        {
          "id": "premiumHDHP",
          "label": "HDHP monthly premium",
          "kind": "number"
        },
        {
          "id": "premiumPPO",
          "label": "PPO monthly premium",
          "kind": "number"
        },
        {
          "id": "expectedSpend",
          "label": "Expected annual medical spend",
          "kind": "number"
        },
        {
          "id": "hdhpDeductible",
          "label": "HDHP deductible",
          "kind": "number"
        },
        {
          "id": "ppoDeductible",
          "label": "PPO deductible",
          "kind": "number"
        },
        {
          "id": "hsaContrib",
          "label": "Your annual HSA contribution",
          "kind": "number"
        },
        {
          "id": "employerHsa",
          "label": "Employer HSA contribution",
          "kind": "number"
        },
        {
          "id": "taxRate",
          "label": "Marginal tax rate (fed+state+FICA)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "savings",
          "label": "HDHP+HSA advantage vs PPO"
        },
        {
          "id": "hdhpCost",
          "label": "HDHP after-tax annual cost"
        },
        {
          "id": "ppoCost",
          "label": "PPO annual cost"
        },
        {
          "id": "taxSavings",
          "label": "HSA tax savings this year"
        },
        {
          "id": "hsaBalanceGrowth",
          "label": "HSA balance after 1 yr at 7% growth"
        }
      ]
    },
    {
      "slug": "out-of-pocket-max-exposure",
      "url": "https://www.revenuelab.fyi/toolbox/out-of-pocket-max-exposure",
      "title": "Out-of-Pocket Max Exposure Calculator",
      "category": "financial",
      "summary": "See your worst-case annual medical bill across deductible, coinsurance, and copays.",
      "formula": "Exposure at spend level = min(spend, deductible) + coinsurance × max(0, min(spend, oopMax) − deductible), capped at oopMax, plus any non-counting copays.",
      "inputs": [
        {
          "id": "deductible",
          "label": "Deductible",
          "kind": "number"
        },
        {
          "id": "oopMax",
          "label": "Out-of-pocket maximum",
          "kind": "number"
        },
        {
          "id": "coinsurance",
          "label": "Coinsurance after deductible",
          "kind": "number"
        },
        {
          "id": "scenarioSpend",
          "label": "Scenario: total billed medical cost",
          "kind": "number"
        },
        {
          "id": "nonCountingCopays",
          "label": "Annual copays excluded from OOP max",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalExposure",
          "label": "Your total cost in this scenario"
        },
        {
          "id": "worstCase",
          "label": "Absolute worst-case annual exposure"
        },
        {
          "id": "pctOfMax",
          "label": "% of out-of-pocket max reached"
        },
        {
          "id": "insurerPays",
          "label": "Insurer pays (this scenario)"
        },
        {
          "id": "cappedShare",
          "label": "Your share, capped at OOP max"
        }
      ]
    },
    {
      "slug": "medical-practice-cost-per-visit",
      "url": "https://www.revenuelab.fyi/toolbox/medical-practice-cost-per-visit",
      "title": "Medical Practice Cost Per Visit Calculator",
      "category": "financial",
      "summary": "Break down fully-loaded overhead and staff cost per visit for a medical practice.",
      "formula": "Cost per visit = (fixed monthly overhead + variable cost per visit × visits) ÷ visits; margin = avg reimbursement − cost per visit.",
      "inputs": [
        {
          "id": "rent",
          "label": "Monthly rent & utilities",
          "kind": "number"
        },
        {
          "id": "staffCost",
          "label": "Monthly non-provider staff cost",
          "kind": "number"
        },
        {
          "id": "otherFixed",
          "label": "Other fixed overhead (EHR, insurance, billing)",
          "kind": "number"
        },
        {
          "id": "variablePerVisit",
          "label": "Variable cost per visit (supplies, labs)",
          "kind": "number"
        },
        {
          "id": "visitsMonth",
          "label": "Visits per month",
          "kind": "number"
        },
        {
          "id": "avgReimbursement",
          "label": "Average reimbursement per visit",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerVisit",
          "label": "Fully-loaded cost per visit"
        },
        {
          "id": "margin",
          "label": "Margin per visit"
        },
        {
          "id": "marginTotal",
          "label": "Monthly profit at this volume"
        },
        {
          "id": "fixedPerVisit",
          "label": "Overhead share per visit"
        },
        {
          "id": "breakEvenVisits",
          "label": "Break-even visits per month"
        }
      ]
    },
    {
      "slug": "rvu-physician-compensation",
      "url": "https://www.revenuelab.fyi/toolbox/rvu-physician-compensation",
      "title": "RVU-Based Physician Compensation Calculator",
      "category": "financial",
      "summary": "Estimate physician pay under an RVU productivity model.",
      "formula": "Bonus comp = max(0, wRVUs − threshold) × conversion factor; total comp = base salary + bonus comp.",
      "inputs": [
        {
          "id": "baseSalary",
          "label": "Base salary",
          "kind": "number"
        },
        {
          "id": "annualWrvu",
          "label": "Annual work RVUs produced",
          "kind": "number"
        },
        {
          "id": "threshold",
          "label": "wRVU threshold before bonus",
          "kind": "number"
        },
        {
          "id": "conversionFactor",
          "label": "Conversion factor per wRVU",
          "kind": "number"
        },
        {
          "id": "visits",
          "label": "Annual visits (optional, for per-visit view)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total estimated compensation"
        },
        {
          "id": "bonus",
          "label": "Productivity bonus"
        },
        {
          "id": "effectivePerWrvu",
          "label": "Effective $ per wRVU (total comp)"
        },
        {
          "id": "wrvuPerVisit",
          "label": "wRVUs per visit"
        },
        {
          "id": "compPerVisit",
          "label": "Compensation per visit"
        }
      ]
    },
    {
      "slug": "no-show-cost-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/no-show-cost-calculator",
      "title": "No-Show Cost Calculator",
      "category": "financial",
      "summary": "Quantify the annual revenue lost to missed appointments and whether a fee or reminder system pays for itself.",
      "formula": "Lost revenue = slots × no-show rate × avg reimbursement; net benefit of intervention = recovered revenue − program cost.",
      "inputs": [
        {
          "id": "slotsMonth",
          "label": "Scheduled slots per month",
          "kind": "number"
        },
        {
          "id": "noShowRate",
          "label": "Current no-show rate",
          "kind": "number"
        },
        {
          "id": "avgReimbursement",
          "label": "Average reimbursement per visit",
          "kind": "number"
        },
        {
          "id": "noShowFee",
          "label": "No-show fee collected (if any)",
          "kind": "number"
        },
        {
          "id": "feeCollectionRate",
          "label": "% of no-show fees actually collected",
          "kind": "number"
        },
        {
          "id": "targetReduction",
          "label": "Expected no-show rate reduction from reminders",
          "kind": "number"
        },
        {
          "id": "programCost",
          "label": "Monthly cost of reminder/confirmation program",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualLoss",
          "label": "Annual revenue lost to no-shows"
        },
        {
          "id": "netLostMonthly",
          "label": "Monthly net loss (after fees)"
        },
        {
          "id": "recoveredRevenue",
          "label": "Monthly revenue recovered from reminders"
        },
        {
          "id": "netBenefit",
          "label": "Monthly net benefit of reminder program"
        },
        {
          "id": "annualNetBenefit",
          "label": "Annual net benefit of reminder program"
        }
      ]
    },
    {
      "slug": "claim-denial-rate-cost",
      "url": "https://www.revenuelab.fyi/toolbox/claim-denial-rate-cost",
      "title": "Claim Denial Rate Cost Calculator",
      "category": "financial",
      "summary": "Quantify the revenue at risk from claim denials and the cost of rework.",
      "formula": "Net revenue lost = claims × denialRate × avgClaimValue × (1 − appealRecoveryRate); rework cost = denied claims × minutes per appeal × biller hourly rate ÷ 60.",
      "inputs": [
        {
          "id": "claimsMonth",
          "label": "Claims submitted per month",
          "kind": "number"
        },
        {
          "id": "avgClaimValue",
          "label": "Average claim value",
          "kind": "number"
        },
        {
          "id": "denialRate",
          "label": "Denial rate",
          "kind": "number"
        },
        {
          "id": "appealRecoveryRate",
          "label": "% of denials successfully overturned",
          "kind": "number"
        },
        {
          "id": "minutesPerAppeal",
          "label": "Staff minutes per appeal",
          "kind": "number"
        },
        {
          "id": "billerHourly",
          "label": "Biller loaded hourly cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualCost",
          "label": "Total annual cost of denials"
        },
        {
          "id": "netLostRevenue",
          "label": "Net revenue lost monthly"
        },
        {
          "id": "reworkCost",
          "label": "Monthly staff rework cost"
        },
        {
          "id": "totalCost",
          "label": "Total monthly cost"
        },
        {
          "id": "denials",
          "label": "Denied claims per month"
        }
      ]
    },
    {
      "slug": "days-in-ar-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/days-in-ar-calculator",
      "title": "Days in AR Calculator",
      "category": "financial",
      "summary": "Measure how fast your practice collects on billed charges.",
      "formula": "Days in AR = total AR ÷ (annual charges ÷ 365); cash freed by improvement = daily charge volume × days reduced.",
      "inputs": [
        {
          "id": "totalAR",
          "label": "Total accounts receivable outstanding",
          "kind": "number"
        },
        {
          "id": "annualCharges",
          "label": "Annual gross charges billed",
          "kind": "number"
        },
        {
          "id": "targetDays",
          "label": "Target days in AR",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "daysInAR",
          "label": "Current days in AR"
        },
        {
          "id": "daysReduction",
          "label": "Days to cut to reach target"
        },
        {
          "id": "cashFreed",
          "label": "Cash freed by reaching target"
        },
        {
          "id": "dailyCharges",
          "label": "Average daily charge volume"
        },
        {
          "id": "targetAR",
          "label": "AR balance at target days"
        }
      ]
    },
    {
      "slug": "dental-practice-hourly-production",
      "url": "https://www.revenuelab.fyi/toolbox/dental-practice-hourly-production",
      "title": "Dental Practice Hourly Production Calculator",
      "category": "financial",
      "summary": "Turn daily dental production into an hourly rate and compare it against chair overhead cost.",
      "formula": "Hourly production = total production ÷ clinical hours; margin per hour = hourly production − hourly overhead cost per chair.",
      "inputs": [
        {
          "id": "dailyProduction",
          "label": "Daily production",
          "kind": "number"
        },
        {
          "id": "clinicalHours",
          "label": "Clinical hours per day",
          "kind": "number"
        },
        {
          "id": "monthlyOverhead",
          "label": "Monthly practice overhead",
          "kind": "number"
        },
        {
          "id": "workDaysMonth",
          "label": "Clinical days per month",
          "kind": "number"
        },
        {
          "id": "collectionRate",
          "label": "Collection rate (% of production collected)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "hourly",
          "label": "Production per clinical hour"
        },
        {
          "id": "overheadHourly",
          "label": "Overhead cost per clinical hour"
        },
        {
          "id": "marginHourly",
          "label": "Margin per hour (production basis)"
        },
        {
          "id": "collected",
          "label": "Collected revenue per hour"
        },
        {
          "id": "marginCollected",
          "label": "Margin per hour (collections basis)"
        }
      ]
    },
    {
      "slug": "therapy-private-pay-vs-insurance",
      "url": "https://www.revenuelab.fyi/toolbox/therapy-private-pay-vs-insurance",
      "title": "Therapy Private-Pay vs Insurance Calculator",
      "category": "financial",
      "summary": "Compare take-home pay per session as a private-pay therapist vs an in-network provider.",
      "formula": "Net per session = feePerSession × (1 − no-show rate) − billingLaborCost; monthly income = net per session × sessions per week × 4.33.",
      "inputs": [
        {
          "id": "privatePayFee",
          "label": "Private-pay fee per session",
          "kind": "number"
        },
        {
          "id": "insuranceRate",
          "label": "Contracted insurance rate per session",
          "kind": "number"
        },
        {
          "id": "privateNoShow",
          "label": "Private-pay no-show rate",
          "kind": "number"
        },
        {
          "id": "insuranceNoShow",
          "label": "Insurance client no-show rate",
          "kind": "number"
        },
        {
          "id": "billingMinutes",
          "label": "Billing/admin minutes per insurance session",
          "kind": "number"
        },
        {
          "id": "hourlyValue",
          "label": "Your hourly value of time",
          "kind": "number"
        },
        {
          "id": "sessionsWeek",
          "label": "Sessions per week",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "diff",
          "label": "Private-pay advantage per session"
        },
        {
          "id": "ppNet",
          "label": "Net private-pay session value"
        },
        {
          "id": "insNet",
          "label": "Net insurance session value"
        },
        {
          "id": "ppMonthly",
          "label": "Monthly income, all private-pay"
        },
        {
          "id": "insMonthly",
          "label": "Monthly income, all insurance"
        }
      ]
    },
    {
      "slug": "medical-billing-service-fee",
      "url": "https://www.revenuelab.fyi/toolbox/medical-billing-service-fee",
      "title": "Medical Billing Service Fee Calculator",
      "category": "financial",
      "summary": "Compare outsourced billing percentage fees against an in-house billing team's cost.",
      "formula": "Outsourced cost = collections × fee%; in-house cost = salaries + benefits + software; breakeven collections = in-house cost ÷ fee%.",
      "inputs": [
        {
          "id": "monthlyCollections",
          "label": "Monthly collections",
          "kind": "number"
        },
        {
          "id": "outsourcedFeePct",
          "label": "Outsourced billing fee",
          "kind": "number"
        },
        {
          "id": "billerSalaries",
          "label": "In-house biller salaries (monthly, loaded)",
          "kind": "number"
        },
        {
          "id": "billingSoftware",
          "label": "Billing software/clearinghouse cost",
          "kind": "number"
        },
        {
          "id": "collectionsLift",
          "label": "Expected collections lift from outsourced service",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "advantage",
          "label": "Outsourced advantage (net revenue)"
        },
        {
          "id": "outsourcedNet",
          "label": "Net revenue, outsourced billing"
        },
        {
          "id": "inHouseNet",
          "label": "Net revenue, in-house billing"
        },
        {
          "id": "outsourcedCost",
          "label": "Outsourced fee cost"
        },
        {
          "id": "breakevenCollections",
          "label": "Collections level where costs are equal"
        }
      ]
    },
    {
      "slug": "nurse-staffing-ratio-cost",
      "url": "https://www.revenuelab.fyi/toolbox/nurse-staffing-ratio-cost",
      "title": "Nurse Staffing Ratio Cost Calculator",
      "category": "financial",
      "summary": "Estimate the labor cost of hitting a target nurse-to-patient ratio across shifts.",
      "formula": "FTEs needed = (census ÷ ratio) × shifts per day × 7 ÷ FTE hours per week × relief factor; annual labor cost = FTEs × loaded annual pay.",
      "inputs": [
        {
          "id": "census",
          "label": "Average daily census (patients)",
          "kind": "number"
        },
        {
          "id": "ratio",
          "label": "Target nurse-to-patient ratio (1 : X)",
          "kind": "number"
        },
        {
          "id": "shiftsPerDay",
          "label": "Shifts per day (e.g. 2 for 12-hr shifts)",
          "kind": "number"
        },
        {
          "id": "fteHoursWeek",
          "label": "Hours per week per FTE",
          "kind": "number"
        },
        {
          "id": "reliefFactor",
          "label": "Relief factor (breaks, PTO, sick coverage)",
          "kind": "number"
        },
        {
          "id": "loadedPay",
          "label": "Loaded annual pay per nurse FTE",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalFTEs",
          "label": "Total nurse FTEs needed"
        },
        {
          "id": "nursesPerShift",
          "label": "Nurses needed per shift"
        },
        {
          "id": "annualCost",
          "label": "Annual nursing labor cost"
        },
        {
          "id": "costPerPatientDay",
          "label": "Nursing labor cost per patient-day"
        },
        {
          "id": "coreFTEs",
          "label": "Core FTEs before relief factor"
        }
      ]
    },
    {
      "slug": "telehealth-vs-in-person-margin",
      "url": "https://www.revenuelab.fyi/toolbox/telehealth-vs-in-person-margin",
      "title": "Telehealth vs In-Person Visit Margin Calculator",
      "category": "financial",
      "summary": "Compare per-visit profit margin between telehealth and in-person appointments.",
      "formula": "Margin = reimbursement × (1 − no-show rate) − variable cost − overhead allocation − platform fee (telehealth only).",
      "inputs": [
        {
          "id": "reimbursementInPerson",
          "label": "In-person reimbursement",
          "kind": "number"
        },
        {
          "id": "reimbursementTele",
          "label": "Telehealth reimbursement",
          "kind": "number"
        },
        {
          "id": "overheadInPerson",
          "label": "In-person overhead allocation per visit",
          "kind": "number"
        },
        {
          "id": "overheadTele",
          "label": "Telehealth overhead allocation per visit",
          "kind": "number"
        },
        {
          "id": "noShowInPerson",
          "label": "In-person no-show rate",
          "kind": "number"
        },
        {
          "id": "noShowTele",
          "label": "Telehealth no-show rate",
          "kind": "number"
        },
        {
          "id": "platformFee",
          "label": "Telehealth platform fee per visit",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "diff",
          "label": "Telehealth margin advantage per visit"
        },
        {
          "id": "inPersonMargin",
          "label": "In-person margin per visit"
        },
        {
          "id": "teleMargin",
          "label": "Telehealth margin per visit"
        },
        {
          "id": "inPersonMarginDaily",
          "label": "Est. daily margin, 16 in-person visits"
        },
        {
          "id": "teleMarginDaily",
          "label": "Est. daily margin, 20 telehealth visits"
        }
      ]
    },
    {
      "slug": "prior-auth-labor-cost",
      "url": "https://www.revenuelab.fyi/toolbox/prior-auth-labor-cost",
      "title": "Prior Authorization Labor Cost Calculator",
      "category": "financial",
      "summary": "Quantify staff time and cost consumed by prior authorization requests.",
      "formula": "Monthly labor cost = PA requests × avg minutes per request ÷ 60 × loaded hourly rate; savings from ePA = requests × (current minutes − ePA minutes) ÷ 60 × hourly rate.",
      "inputs": [
        {
          "id": "paRequests",
          "label": "Prior auth requests per month",
          "kind": "number"
        },
        {
          "id": "minutesPerRequest",
          "label": "Avg minutes per request (current process)",
          "kind": "number"
        },
        {
          "id": "staffHourly",
          "label": "Loaded staff hourly cost",
          "kind": "number"
        },
        {
          "id": "denialFollowupRate",
          "label": "% of PAs requiring appeal/follow-up",
          "kind": "number"
        },
        {
          "id": "followupMinutes",
          "label": "Additional minutes per follow-up",
          "kind": "number"
        },
        {
          "id": "epaMinutes",
          "label": "Avg minutes per request with ePA tool",
          "kind": "number"
        },
        {
          "id": "epaCost",
          "label": "Monthly cost of ePA tool",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualCost",
          "label": "Annual prior auth labor cost"
        },
        {
          "id": "monthlyCost",
          "label": "Monthly prior auth labor cost"
        },
        {
          "id": "epaLaborCost",
          "label": "Monthly cost with ePA tool"
        },
        {
          "id": "savings",
          "label": "Monthly savings from ePA tool"
        },
        {
          "id": "annualSavings",
          "label": "Annual savings from ePA tool"
        }
      ]
    },
    {
      "slug": "cobra-vs-marketplace-cost",
      "url": "https://www.revenuelab.fyi/toolbox/cobra-vs-marketplace-cost",
      "title": "COBRA vs Marketplace Cost Calculator",
      "category": "financial",
      "summary": "Compare COBRA continuation premiums against ACA marketplace plans after job loss.",
      "formula": "COBRA cost = full premium × 1.02 × months; marketplace net cost = (gross premium − monthly premium tax credit) × months.",
      "inputs": [
        {
          "id": "cobraPremium",
          "label": "COBRA monthly premium (employer's full cost)",
          "kind": "number"
        },
        {
          "id": "marketplacePremium",
          "label": "Comparable marketplace plan premium",
          "kind": "number"
        },
        {
          "id": "estAnnualIncome",
          "label": "Estimated household income this year",
          "kind": "number"
        },
        {
          "id": "householdSize",
          "label": "Household size",
          "kind": "number"
        },
        {
          "id": "monthsNeeded",
          "label": "Months of coverage needed",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "savings",
          "label": "Savings choosing marketplace over COBRA"
        },
        {
          "id": "cobraTotal",
          "label": "Total COBRA cost over period"
        },
        {
          "id": "marketplaceTotal",
          "label": "Total marketplace cost over period"
        },
        {
          "id": "marketplaceNet",
          "label": "Est. marketplace premium after subsidy"
        },
        {
          "id": "estSubsidy",
          "label": "Estimated monthly premium tax credit"
        }
      ]
    },
    {
      "slug": "urgent-care-visit-margin",
      "url": "https://www.revenuelab.fyi/toolbox/urgent-care-visit-margin",
      "title": "Urgent Care Visit Margin Calculator",
      "category": "financial",
      "summary": "See the true profit per visit after staffing, supplies, and payer mix.",
      "formula": "Net revenue per visit = charge × collection rate. Margin per visit = net revenue per visit − variable cost − (fixed cost per day ÷ visits per day). Breakeven visits = fixed cost per day ÷ (net revenue per visit − variable cost per visit).",
      "inputs": [
        {
          "id": "chargePerVisit",
          "label": "Average charge per visit",
          "kind": "number"
        },
        {
          "id": "collectionRate",
          "label": "Blended net collection rate",
          "kind": "number"
        },
        {
          "id": "variableCost",
          "label": "Variable cost per visit (labs, supplies, imaging)",
          "kind": "number"
        },
        {
          "id": "fixedCostDay",
          "label": "Fixed cost per operating day",
          "kind": "number"
        },
        {
          "id": "visitsPerDay",
          "label": "Average visits per day",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "marginPerVisit",
          "label": "Net margin per visit"
        },
        {
          "id": "dailyProfit",
          "label": "Daily profit at current volume"
        },
        {
          "id": "netRevPerVisit",
          "label": "Net collected revenue per visit"
        },
        {
          "id": "contribution",
          "label": "Contribution margin per visit"
        },
        {
          "id": "breakevenVisits",
          "label": "Breakeven visits per day"
        }
      ]
    },
    {
      "slug": "pt-clinic-visits-per-therapist",
      "url": "https://www.revenuelab.fyi/toolbox/pt-clinic-visits-per-therapist",
      "title": "PT Clinic Visits Per Therapist Calculator",
      "category": "financial",
      "summary": "Find the visit throughput and revenue capacity of each therapist on staff.",
      "formula": "Visits per day = scheduled hours × 60 ÷ minutes per visit × concurrency. Revenue capacity = visits per day × units per visit × reimbursement per unit × working days per year.",
      "inputs": [
        {
          "id": "scheduledHours",
          "label": "Scheduled patient-care hours per day",
          "kind": "number"
        },
        {
          "id": "minutesPerVisit",
          "label": "Minutes per visit slot",
          "kind": "number"
        },
        {
          "id": "unitsPerVisit",
          "label": "Billable units per visit",
          "kind": "number"
        },
        {
          "id": "reimbursementPerUnit",
          "label": "Average net reimbursement per unit",
          "kind": "number"
        },
        {
          "id": "concurrency",
          "label": "Concurrency multiplier (1 = 1:1 care)",
          "kind": "number"
        },
        {
          "id": "workingDays",
          "label": "Working days per year",
          "kind": "number"
        },
        {
          "id": "noShowRate",
          "label": "No-show / cancellation rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualActual",
          "label": "Realistic annual revenue per therapist"
        },
        {
          "id": "effectiveVisitsPerDay",
          "label": "Effective visits per day"
        },
        {
          "id": "revenuePerVisit",
          "label": "Net revenue per visit"
        },
        {
          "id": "annualCapacity",
          "label": "Theoretical max annual revenue"
        },
        {
          "id": "lostToNoShow",
          "label": "Revenue lost to no-shows/cancellations"
        }
      ]
    },
    {
      "slug": "med-spa-treatment-margin",
      "url": "https://www.revenuelab.fyi/toolbox/med-spa-treatment-margin",
      "title": "Med Spa Treatment Margin Calculator",
      "category": "financial",
      "summary": "Calculate true margin per treatment after product cost, injector time, and room overhead.",
      "formula": "Margin = retail price − (units × cost per unit) − (minutes × labor rate ÷ 60) − room overhead allocation. Margin % = margin ÷ retail price.",
      "inputs": [
        {
          "id": "retailPrice",
          "label": "Retail price charged to patient",
          "kind": "number"
        },
        {
          "id": "units",
          "label": "Units or syringes used",
          "kind": "number"
        },
        {
          "id": "costPerUnit",
          "label": "Product cost per unit",
          "kind": "number"
        },
        {
          "id": "minutesUsed",
          "label": "Injector/provider time",
          "kind": "number"
        },
        {
          "id": "laborRate",
          "label": "Fully loaded hourly labor rate",
          "kind": "number"
        },
        {
          "id": "roomOverhead",
          "label": "Room/equipment overhead per treatment",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "margin",
          "label": "Net margin per treatment"
        },
        {
          "id": "marginPct",
          "label": "Margin as % of retail price"
        },
        {
          "id": "productCost",
          "label": "Total product cost"
        },
        {
          "id": "laborCost",
          "label": "Provider labor cost"
        },
        {
          "id": "breakevenUnits",
          "label": "Max units before margin hits zero"
        }
      ]
    },
    {
      "slug": "chiropractic-membership-plan-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/chiropractic-membership-plan-pricing",
      "title": "Chiropractic Membership Plan Pricing Calculator",
      "category": "financial",
      "summary": "Price a monthly wellness membership plan without cannibalizing per-visit revenue.",
      "formula": "Membership price = per-visit price × visits per month × (1 − discount%). Effective price per visit = membership price ÷ visits per month. MRR = membership price × active members.",
      "inputs": [
        {
          "id": "perVisitPrice",
          "label": "Current cash price per visit",
          "kind": "number"
        },
        {
          "id": "visitsPerMonth",
          "label": "Average visits per member per month",
          "kind": "number"
        },
        {
          "id": "discountPct",
          "label": "Target discount vs per-visit pricing",
          "kind": "number"
        },
        {
          "id": "activeMembers",
          "label": "Expected active members",
          "kind": "number"
        },
        {
          "id": "variableCostVisit",
          "label": "Variable cost per visit (supplies, time)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "membershipPrice",
          "label": "Recommended monthly membership price"
        },
        {
          "id": "effectivePerVisit",
          "label": "Effective price per visit on plan"
        },
        {
          "id": "mrr",
          "label": "Projected monthly recurring revenue"
        },
        {
          "id": "marginPerMember",
          "label": "Monthly margin per member"
        },
        {
          "id": "breakevenVisits",
          "label": "Visits before plan cost exceeds cash pricing revenue"
        }
      ]
    },
    {
      "slug": "ehr-software-tco-per-provider",
      "url": "https://www.revenuelab.fyi/toolbox/ehr-software-tco-per-provider",
      "title": "EHR Software TCO Per Provider Calculator",
      "category": "financial",
      "summary": "Compare the real annual cost per provider across EHR vendors, not just the sticker license fee.",
      "formula": "Annual cost per provider = (implementation cost ÷ contract years ÷ providers) + annual license per provider + annual support per provider + interface fees per provider + (productivity loss weeks × weekly revenue per provider ÷ contract years).",
      "inputs": [
        {
          "id": "implementationCost",
          "label": "One-time implementation & training cost",
          "kind": "number"
        },
        {
          "id": "providers",
          "label": "Number of providers",
          "kind": "number"
        },
        {
          "id": "annualLicensePerProvider",
          "label": "Annual license fee per provider",
          "kind": "number"
        },
        {
          "id": "annualSupportPerProvider",
          "label": "Annual support/maintenance per provider",
          "kind": "number"
        },
        {
          "id": "interfaceFeesTotal",
          "label": "Annual interface fees (labs, e-Rx, etc.)",
          "kind": "number"
        },
        {
          "id": "contractYears",
          "label": "Contract term",
          "kind": "number"
        },
        {
          "id": "productivityLossWeeks",
          "label": "Productivity loss during go-live",
          "kind": "number"
        },
        {
          "id": "weeklyRevenuePerProvider",
          "label": "Weekly revenue per provider",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualCostPerProvider",
          "label": "True annual cost per provider"
        },
        {
          "id": "annualCostAllProviders",
          "label": "Total annual cost, all providers"
        },
        {
          "id": "totalCostAllProviders",
          "label": "Total cost over contract term"
        },
        {
          "id": "implPerProviderPerYear",
          "label": "Amortized implementation cost per provider/yr"
        },
        {
          "id": "productivityLossTotal",
          "label": "One-time productivity loss cost (all providers)"
        }
      ]
    },
    {
      "slug": "patient-collections-rate-impact",
      "url": "https://www.revenuelab.fyi/toolbox/patient-collections-rate-impact",
      "title": "Patient Collections Rate Impact Calculator",
      "category": "financial",
      "summary": "See how much revenue a change in your collections rate adds or costs annually.",
      "formula": "Net revenue = gross charges × net collection rate. Revenue impact = gross charges × (new rate − current rate). Denial-attributable impact ≈ 60% of the gap; patient-balance-attributable ≈ 40%.",
      "inputs": [
        {
          "id": "grossCharges",
          "label": "Annual gross charges",
          "kind": "number"
        },
        {
          "id": "currentRate",
          "label": "Current net collection rate",
          "kind": "number"
        },
        {
          "id": "targetRate",
          "label": "Target net collection rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "revenueImpact",
          "label": "Annual revenue impact of rate change"
        },
        {
          "id": "currentRevenue",
          "label": "Current annual net revenue"
        },
        {
          "id": "targetRevenue",
          "label": "Net revenue at target rate"
        },
        {
          "id": "denialShare",
          "label": "Est. impact attributable to denials"
        },
        {
          "id": "patientBalanceShare",
          "label": "Est. impact attributable to patient balances"
        }
      ]
    },
    {
      "slug": "surgery-center-case-cost",
      "url": "https://www.revenuelab.fyi/toolbox/surgery-center-case-cost",
      "title": "Surgery Center Case Cost Calculator",
      "category": "financial",
      "summary": "Break down true cost per surgical case and margin against facility fee reimbursement.",
      "formula": "Case cost = implant/device cost + supply cost + (OR minutes × cost per OR minute) + recovery cost. Margin = facility fee reimbursement − case cost.",
      "inputs": [
        {
          "id": "facilityFee",
          "label": "Facility fee reimbursement",
          "kind": "number"
        },
        {
          "id": "implantCost",
          "label": "Implant/device cost",
          "kind": "number"
        },
        {
          "id": "supplyCost",
          "label": "Disposable supply cost",
          "kind": "number"
        },
        {
          "id": "orMinutes",
          "label": "OR time (skin to skin plus turnover)",
          "kind": "number"
        },
        {
          "id": "orCostPerMinute",
          "label": "Fully loaded OR cost per minute",
          "kind": "number"
        },
        {
          "id": "recoveryCost",
          "label": "Post-op recovery/PACU cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "margin",
          "label": "Net margin per case"
        },
        {
          "id": "marginPct",
          "label": "Margin as % of facility fee"
        },
        {
          "id": "totalCost",
          "label": "Total case cost"
        },
        {
          "id": "orTimeCost",
          "label": "OR time cost component"
        }
      ]
    },
    {
      "slug": "home-health-visit-cost-per-mile",
      "url": "https://www.revenuelab.fyi/toolbox/home-health-visit-cost-per-mile",
      "title": "Home Health Visit Cost Per Mile Calculator",
      "category": "financial",
      "summary": "Calculate the true cost of drive time and mileage eating into home health visit margin.",
      "formula": "Travel cost = (drive minutes ÷ 60 × hourly pay) + (miles × mileage rate). Net margin = reimbursement − travel cost − in-home visit labor cost.",
      "inputs": [
        {
          "id": "reimbursementPerVisit",
          "label": "Reimbursement per visit",
          "kind": "number"
        },
        {
          "id": "driveMinutes",
          "label": "Average one-way drive time between visits",
          "kind": "number"
        },
        {
          "id": "driveMiles",
          "label": "Average one-way drive distance",
          "kind": "number"
        },
        {
          "id": "mileageRate",
          "label": "Mileage reimbursement rate",
          "kind": "number"
        },
        {
          "id": "hourlyPay",
          "label": "Clinician hourly pay (incl. burden)",
          "kind": "number"
        },
        {
          "id": "inHomeMinutes",
          "label": "Average in-home visit time",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netMargin",
          "label": "Net margin per visit after travel"
        },
        {
          "id": "travelCost",
          "label": "Total travel cost per visit"
        },
        {
          "id": "driveTimeCost",
          "label": "Paid drive time cost"
        },
        {
          "id": "mileageCost",
          "label": "Mileage reimbursement cost"
        },
        {
          "id": "visitsPerEightHourDay",
          "label": "Visits possible in an 8-hour day"
        }
      ]
    },
    {
      "slug": "pharmacy-generic-margin",
      "url": "https://www.revenuelab.fyi/toolbox/pharmacy-generic-margin",
      "title": "Pharmacy Generic Drug Margin Calculator",
      "category": "financial",
      "summary": "Calculate true margin on a generic prescription after acquisition cost, dispensing fee, and DIR fees.",
      "formula": "Gross margin = reimbursement + dispensing fee − acquisition cost. Net margin = gross margin − estimated DIR fee.",
      "inputs": [
        {
          "id": "reimbursement",
          "label": "Ingredient cost reimbursement",
          "kind": "number"
        },
        {
          "id": "dispensingFee",
          "label": "Dispensing fee",
          "kind": "number"
        },
        {
          "id": "acquisitionCost",
          "label": "Pharmacy acquisition cost (NADAC/actual)",
          "kind": "number"
        },
        {
          "id": "dirFeePct",
          "label": "Estimated DIR fee (% of reimbursement)",
          "kind": "number"
        },
        {
          "id": "fillsPerMonth",
          "label": "Fills per month for this drug",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netMargin",
          "label": "Net margin per fill (after DIR)"
        },
        {
          "id": "monthlyProfit",
          "label": "Monthly profit on this drug"
        },
        {
          "id": "grossMargin",
          "label": "Gross margin before DIR fee"
        },
        {
          "id": "dirFeeAmount",
          "label": "Estimated DIR fee per fill"
        },
        {
          "id": "netMarginPct",
          "label": "Net margin as % of total reimbursement"
        }
      ]
    },
    {
      "slug": "credentialing-delay-revenue-loss",
      "url": "https://www.revenuelab.fyi/toolbox/credentialing-delay-revenue-loss",
      "title": "Provider Credentialing Delay Revenue Loss Calculator",
      "category": "financial",
      "summary": "Quantify the revenue lost every day a new provider sits uncredentialed with payers.",
      "formula": "Revenue at risk = daily revenue × delay days. Net cash flow impact = revenue at risk − (retroactive recovery % × revenue at risk) + salary cost during delay (already paid, not billable).",
      "inputs": [
        {
          "id": "dailyRevenue",
          "label": "Expected daily revenue once ramped",
          "kind": "number"
        },
        {
          "id": "delayDays",
          "label": "Credentialing delay beyond target (business days)",
          "kind": "number"
        },
        {
          "id": "dailySalaryCost",
          "label": "Provider daily salary + benefits cost",
          "kind": "number"
        },
        {
          "id": "retroactivePct",
          "label": "Retroactive billing recovery rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netCashFlowImpact",
          "label": "Total net cash flow impact"
        },
        {
          "id": "revenueAtRisk",
          "label": "Total revenue at risk"
        },
        {
          "id": "recovered",
          "label": "Est. recovered via retroactive billing"
        },
        {
          "id": "permanentLoss",
          "label": "Permanently lost revenue"
        },
        {
          "id": "salaryCostDuringDelay",
          "label": "Salary paid during delay window"
        }
      ]
    },
    {
      "slug": "locum-tenens-vs-hire-cost",
      "url": "https://www.revenuelab.fyi/toolbox/locum-tenens-vs-hire-cost",
      "title": "Locum Tenens vs Permanent Hire Cost Calculator",
      "category": "financial",
      "summary": "Compare the true cost of a locum contract against a permanent hire over a coverage period.",
      "formula": "Locum total cost = (day rate × days) + travel/housing + agency fee. Permanent hire total cost = (salary+benefits × period) + recruiting fee + signing bonus − productivity loss adjustment during ramp.",
      "inputs": [
        {
          "id": "coverageDays",
          "label": "Coverage period (working days)",
          "kind": "number"
        },
        {
          "id": "locumDayRate",
          "label": "Locum day rate",
          "kind": "number"
        },
        {
          "id": "locumTravelMonthly",
          "label": "Locum travel & housing cost per month",
          "kind": "number"
        },
        {
          "id": "permanentAnnualCost",
          "label": "Permanent hire annual salary + benefits",
          "kind": "number"
        },
        {
          "id": "recruitingFee",
          "label": "Recruiting fee / signing bonus (one-time)",
          "kind": "number"
        },
        {
          "id": "rampMonths",
          "label": "Months at reduced productivity for new hire",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "difference",
          "label": "Cost difference (permanent minus locum)"
        },
        {
          "id": "locumTotal",
          "label": "Total locum coverage cost"
        },
        {
          "id": "permanentTotal",
          "label": "Total permanent-hire cost for period"
        },
        {
          "id": "rampPenalty",
          "label": "Productivity ramp cost (permanent hire)"
        }
      ]
    },
    {
      "slug": "medical-practice-valuation-multiple",
      "url": "https://www.revenuelab.fyi/toolbox/medical-practice-valuation-multiple",
      "title": "Medical Practice Valuation Multiple Calculator",
      "category": "financial",
      "summary": "Estimate practice value using EBITDA multiples common in physician practice M&A.",
      "formula": "Valuation = adjusted EBITDA × multiple. Low/mid/high estimates use the specialty-typical multiple range, scaled up modestly for larger EBITDA (platform scale premium).",
      "inputs": [
        {
          "id": "adjustedEbitda",
          "label": "Adjusted (normalized) EBITDA",
          "kind": "number"
        },
        {
          "id": "lowMultiple",
          "label": "Low-end multiple for specialty",
          "kind": "number"
        },
        {
          "id": "highMultiple",
          "label": "High-end multiple for specialty",
          "kind": "number"
        },
        {
          "id": "providerCount",
          "label": "Number of providers",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "midVal",
          "label": "Mid-point valuation estimate"
        },
        {
          "id": "lowVal",
          "label": "Low-end valuation estimate"
        },
        {
          "id": "highVal",
          "label": "High-end valuation estimate"
        },
        {
          "id": "midMultiple",
          "label": "Implied mid-point multiple"
        },
        {
          "id": "ebitdaPerProvider",
          "label": "EBITDA per provider"
        }
      ]
    },
    {
      "slug": "visa-application-cost",
      "url": "https://www.revenuelab.fyi/toolbox/visa-application-cost",
      "title": "Visa Application Cost Calculator",
      "category": "financial",
      "summary": "Add up government fees, biometrics, medical exam, and translations for a visa application.",
      "formula": "Total = applicants × (filing fee + biometrics + medical exam + translation + photos) + courier/misc.",
      "inputs": [
        {
          "id": "filingFee",
          "label": "Government filing fee (per applicant)",
          "kind": "number"
        },
        {
          "id": "biometrics",
          "label": "Biometrics fee (per applicant)",
          "kind": "number"
        },
        {
          "id": "medical",
          "label": "Medical exam (per applicant)",
          "kind": "number"
        },
        {
          "id": "translation",
          "label": "Certified translations (per applicant)",
          "kind": "number"
        },
        {
          "id": "photos",
          "label": "Passport photos + misc (per applicant)",
          "kind": "number"
        },
        {
          "id": "applicants",
          "label": "Number of applicants",
          "kind": "number"
        },
        {
          "id": "courier",
          "label": "Courier / return shipping (total)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total cost"
        },
        {
          "id": "perApplicant",
          "label": "Cost per applicant"
        },
        {
          "id": "govFees",
          "label": "Government fees (all applicants)"
        },
        {
          "id": "thirdParty",
          "label": "Third-party costs (medical, translation, etc.)"
        }
      ]
    },
    {
      "slug": "green-card-sponsorship-cost",
      "url": "https://www.revenuelab.fyi/toolbox/green-card-sponsorship-cost",
      "title": "Green Card Sponsorship Cost Calculator",
      "category": "financial",
      "summary": "Estimate the full cost of sponsoring a spouse, parent, or family member for a green card.",
      "formula": "Total = petition fee + status fee (AOS or consular) + affidavit fee + medical + translation + attorney fee.",
      "inputs": [
        {
          "id": "path",
          "label": "Processing path",
          "kind": "select"
        },
        {
          "id": "petitionFee",
          "label": "I-130 petition fee",
          "kind": "number"
        },
        {
          "id": "statusFee",
          "label": "I-485 or DS-260 + biometrics",
          "kind": "number"
        },
        {
          "id": "affidavitFee",
          "label": "Affidavit of support fee (consular only)",
          "kind": "number"
        },
        {
          "id": "medical",
          "label": "Medical exam",
          "kind": "number"
        },
        {
          "id": "translation",
          "label": "Document translation",
          "kind": "number"
        },
        {
          "id": "attorney",
          "label": "Attorney fee (0 if self-filing)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total sponsorship cost"
        },
        {
          "id": "govOnly",
          "label": "Government fees only"
        },
        {
          "id": "withoutAttorney",
          "label": "Total if self-filing"
        },
        {
          "id": "attorney",
          "label": "Attorney fee assumed"
        }
      ]
    },
    {
      "slug": "naturalization-fee-total",
      "url": "https://www.revenuelab.fyi/toolbox/naturalization-fee-total",
      "title": "Naturalization / Citizenship Fee Calculator",
      "category": "financial",
      "summary": "Total the N-400 filing fee, biometrics, and prep costs for naturalization.",
      "formula": "Total = N-400 fee + prep materials + travel/time-off cost + misc document costs.",
      "inputs": [
        {
          "id": "filingMethod",
          "label": "Filing method",
          "kind": "select"
        },
        {
          "id": "prep",
          "label": "Test prep materials / classes",
          "kind": "number"
        },
        {
          "id": "travel",
          "label": "Travel cost to appointments (round trips)",
          "kind": "number"
        },
        {
          "id": "lostDocs",
          "label": "Replacement documents (if needed)",
          "kind": "number"
        },
        {
          "id": "wageLoss",
          "label": "Lost wages from time off",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total realistic cost"
        },
        {
          "id": "filingFee",
          "label": "N-400 government fee"
        },
        {
          "id": "extras",
          "label": "Extras beyond the government fee"
        }
      ]
    },
    {
      "slug": "citizenship-income-requirement",
      "url": "https://www.revenuelab.fyi/toolbox/citizenship-income-requirement",
      "title": "Immigration Sponsor Income Requirement Calculator (125% FPL)",
      "category": "financial",
      "summary": "Check if your household income meets the 125% federal poverty guideline for sponsoring an immigrant.",
      "formula": "Threshold = 125% (or 100% for military) × HHS poverty guideline for household size; shortfall = threshold − income.",
      "inputs": [
        {
          "id": "householdSize",
          "label": "Total household size (incl. sponsored immigrant)",
          "kind": "number"
        },
        {
          "id": "income",
          "label": "Sponsor's household income (last tax year)",
          "kind": "number"
        },
        {
          "id": "military",
          "label": "Active duty sponsoring own spouse/child",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "threshold",
          "label": "Required income threshold"
        },
        {
          "id": "meets",
          "label": "Meets requirement?"
        },
        {
          "id": "shortfall",
          "label": "Shortfall (if any)"
        },
        {
          "id": "surplus",
          "label": "Surplus above threshold"
        },
        {
          "id": "povertyLine",
          "label": "100% poverty guideline for household size"
        }
      ]
    },
    {
      "slug": "asylum-application-cost",
      "url": "https://www.revenuelab.fyi/toolbox/asylum-application-cost",
      "title": "Asylum Application Cost Calculator",
      "category": "financial",
      "summary": "Estimate attorney, translation, and expert witness costs for an affirmative or defensive asylum case.",
      "formula": "Total = attorney fee + translation cost + expert report(s) + filing/travel misc.",
      "inputs": [
        {
          "id": "caseType",
          "label": "Case type",
          "kind": "select"
        },
        {
          "id": "attorneyFee",
          "label": "Attorney flat fee",
          "kind": "number"
        },
        {
          "id": "translationWords",
          "label": "Words needing certified translation",
          "kind": "number"
        },
        {
          "id": "translationRate",
          "label": "Translation rate per word",
          "kind": "number"
        },
        {
          "id": "experts",
          "label": "Number of expert/medical reports",
          "kind": "number"
        },
        {
          "id": "expertCost",
          "label": "Cost per expert report",
          "kind": "number"
        },
        {
          "id": "misc",
          "label": "Travel, copies, misc",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated total cost"
        },
        {
          "id": "attorney",
          "label": "Attorney fee"
        },
        {
          "id": "translation",
          "label": "Translation cost"
        },
        {
          "id": "experts",
          "label": "Expert report cost"
        }
      ]
    },
    {
      "slug": "fiance-visa-cost",
      "url": "https://www.revenuelab.fyi/toolbox/fiance-visa-cost",
      "title": "K-1 Fiancé Visa Cost Calculator",
      "category": "financial",
      "summary": "Total the I-129F petition, consular fee, medical exam, and adjustment of status costs.",
      "formula": "Total = I-129F fee + DS-160 fee + medical exam (abroad) + I-485 fee + medical exam (US) + misc.",
      "inputs": [
        {
          "id": "petitionFee",
          "label": "I-129F petition fee",
          "kind": "number"
        },
        {
          "id": "visaFee",
          "label": "DS-160 visa application fee",
          "kind": "number"
        },
        {
          "id": "medicalAbroad",
          "label": "Medical exam abroad",
          "kind": "number"
        },
        {
          "id": "i485Fee",
          "label": "I-485 adjustment of status fee",
          "kind": "number"
        },
        {
          "id": "medicalUS",
          "label": "Medical exam in US (for I-485)",
          "kind": "number"
        },
        {
          "id": "misc",
          "label": "Wedding, travel, translations, misc",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total lifetime cost"
        },
        {
          "id": "beforeArrival",
          "label": "Cost before fiancé arrives"
        },
        {
          "id": "afterMarriage",
          "label": "Cost after marriage (green card stage)"
        }
      ]
    },
    {
      "slug": "work-visa-sponsorship-cost",
      "url": "https://www.revenuelab.fyi/toolbox/work-visa-sponsorship-cost",
      "title": "Work Visa Sponsorship Cost Calculator (H-1B)",
      "category": "financial",
      "summary": "Estimate employer and employee costs for sponsoring an H-1B work visa.",
      "formula": "Total = base fee + fraud prevention fee + ACWIA fee + (dependent employer fee) + premium processing + attorney fee.",
      "inputs": [
        {
          "id": "baseFee",
          "label": "Base I-129 filing fee",
          "kind": "number"
        },
        {
          "id": "fraudFee",
          "label": "Fraud prevention & detection fee",
          "kind": "number"
        },
        {
          "id": "acwiaFee",
          "label": "ACWIA training fee",
          "kind": "number"
        },
        {
          "id": "dependent",
          "label": "H-1B dependent employer (25%+ H-1B workforce, smaller companies)",
          "kind": "select"
        },
        {
          "id": "premium",
          "label": "Use premium processing?",
          "kind": "select"
        },
        {
          "id": "attorney",
          "label": "Attorney fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total employer cost"
        },
        {
          "id": "mandatory",
          "label": "Mandatory government fees"
        },
        {
          "id": "optional",
          "label": "Optional (premium + attorney)"
        }
      ]
    },
    {
      "slug": "immigration-bond-cost",
      "url": "https://www.revenuelab.fyi/toolbox/immigration-bond-cost",
      "title": "Immigration Bond Cost Calculator",
      "category": "financial",
      "summary": "Estimate the cash outlay to post an immigration bond through a surety company.",
      "formula": "Cash option = full bond amount (refundable minus admin fee). Bond company = bond × premium rate (non-refundable) + collateral held.",
      "inputs": [
        {
          "id": "bondAmount",
          "label": "Bond amount set by judge/ICE",
          "kind": "number"
        },
        {
          "id": "premiumRate",
          "label": "Bond company premium rate",
          "kind": "number"
        },
        {
          "id": "collateral",
          "label": "Collateral required beyond premium",
          "kind": "number"
        },
        {
          "id": "adminFee",
          "label": "Cash bond admin/processing fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "bondCompanyOutlay",
          "label": "Upfront cost via bond company"
        },
        {
          "id": "premium",
          "label": "Non-refundable premium"
        },
        {
          "id": "cashOutlay",
          "label": "Cash bond required upfront"
        },
        {
          "id": "cashRefundLater",
          "label": "Cash bond refunded at case close"
        },
        {
          "id": "savingsUpfront",
          "label": "Upfront savings using bond company"
        }
      ]
    },
    {
      "slug": "dual-citizenship-renunciation-cost",
      "url": "https://www.revenuelab.fyi/toolbox/dual-citizenship-renunciation-cost",
      "title": "Citizenship Renunciation Cost Calculator",
      "category": "financial",
      "summary": "Total the State Department fee, exit tax exposure, and expatriation legal costs.",
      "formula": "Exit tax ≈ (unrealized gain − exemption) × capital gains rate, if covered expatriate; plus $2,350 fee and attorney cost.",
      "inputs": [
        {
          "id": "netWorth",
          "label": "Worldwide net worth",
          "kind": "number"
        },
        {
          "id": "unrealizedGain",
          "label": "Total unrealized capital gains",
          "kind": "number"
        },
        {
          "id": "exemption",
          "label": "Exit tax exemption (2024)",
          "kind": "number"
        },
        {
          "id": "capGainsRate",
          "label": "Applicable capital gains rate",
          "kind": "number"
        },
        {
          "id": "attorneyFee",
          "label": "Cross-border tax attorney fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total estimated cost"
        },
        {
          "id": "exitTax",
          "label": "Estimated exit tax"
        },
        {
          "id": "stateFee",
          "label": "State Department renunciation fee"
        },
        {
          "id": "coveredStatus",
          "label": "Covered expatriate status"
        }
      ]
    },
    {
      "slug": "deportation-defense-cost",
      "url": "https://www.revenuelab.fyi/toolbox/deportation-defense-cost",
      "title": "Deportation Defense Attorney Cost Calculator",
      "category": "financial",
      "summary": "Estimate attorney fees for fighting removal proceedings in immigration court.",
      "formula": "Flat: sum of per-stage fees. Hourly: hours × rate + court costs.",
      "inputs": [
        {
          "id": "billing",
          "label": "Billing structure",
          "kind": "select"
        },
        {
          "id": "masterCalendar",
          "label": "Master calendar hearing(s) fee",
          "kind": "number"
        },
        {
          "id": "meritsHearing",
          "label": "Individual merits hearing fee",
          "kind": "number"
        },
        {
          "id": "appeal",
          "label": "Anticipate BIA appeal?",
          "kind": "select"
        },
        {
          "id": "appealFee",
          "label": "BIA appeal fee (if applicable)",
          "kind": "number"
        },
        {
          "id": "hourlyRate",
          "label": "Hourly rate",
          "kind": "number"
        },
        {
          "id": "estHours",
          "label": "Estimated total hours",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated total cost"
        },
        {
          "id": "flatTotal",
          "label": "Flat-fee estimate"
        },
        {
          "id": "hourlyTotal",
          "label": "Hourly estimate"
        },
        {
          "id": "appealCost",
          "label": "Appeal cost (if included)"
        }
      ]
    },
    {
      "slug": "attorney-hourly-vs-flat-fee",
      "url": "https://www.revenuelab.fyi/toolbox/attorney-hourly-vs-flat-fee",
      "title": "Attorney Hourly vs Flat Fee Calculator",
      "category": "financial",
      "summary": "Compare total cost of hourly billing against a flat fee for the same legal matter.",
      "formula": "Hourly cost = hours × rate; break-even hours = flat fee ÷ rate; compare hourly cost to flat fee at estimated and pessimistic hour counts.",
      "inputs": [
        {
          "id": "rate",
          "label": "Attorney hourly rate",
          "kind": "number"
        },
        {
          "id": "estHours",
          "label": "Estimated hours needed",
          "kind": "number"
        },
        {
          "id": "flatFee",
          "label": "Competing flat fee quote",
          "kind": "number"
        },
        {
          "id": "overrunPct",
          "label": "Pessimistic time overrun",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakEvenHours",
          "label": "Break-even hours (hourly = flat)"
        },
        {
          "id": "estCost",
          "label": "Hourly cost at estimate"
        },
        {
          "id": "pessimisticCost",
          "label": "Hourly cost if case runs over"
        },
        {
          "id": "cheaperAtEstimate",
          "label": "Cheaper option at estimate"
        },
        {
          "id": "cheaperPessimistic",
          "label": "Cheaper option if overrun"
        }
      ]
    },
    {
      "slug": "contingency-fee-net-payout",
      "url": "https://www.revenuelab.fyi/toolbox/contingency-fee-net-payout",
      "title": "Contingency Fee Net Payout Calculator",
      "category": "financial",
      "summary": "Calculate what you actually keep after attorney contingency fee and case costs.",
      "formula": "Method A (costs first): fee = (gross − costs) × rate; net = gross − costs − fee − liens. Method B (fee on gross): fee = gross × rate; net = gross − fee − costs − liens.",
      "inputs": [
        {
          "id": "gross",
          "label": "Gross settlement/verdict",
          "kind": "number"
        },
        {
          "id": "feeRate",
          "label": "Contingency fee rate",
          "kind": "number"
        },
        {
          "id": "costs",
          "label": "Case costs (experts, filing, records)",
          "kind": "number"
        },
        {
          "id": "liens",
          "label": "Medical liens / subrogation",
          "kind": "number"
        },
        {
          "id": "method",
          "label": "Fee calculation method",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Your net take-home"
        },
        {
          "id": "fee",
          "label": "Attorney fee"
        },
        {
          "id": "costs",
          "label": "Case costs deducted"
        },
        {
          "id": "liens",
          "label": "Liens/subrogation deducted"
        },
        {
          "id": "effectiveRate",
          "label": "Effective fee rate on gross"
        }
      ]
    },
    {
      "slug": "court-filing-service-cost",
      "url": "https://www.revenuelab.fyi/toolbox/court-filing-service-cost",
      "title": "Court Filing & Service of Process Cost Calculator",
      "category": "financial",
      "summary": "Total court filing fees, service of process, and copies to file a civil case.",
      "formula": "Total = filing fee + service fee + certified mail (if used) + copy/certification fees.",
      "inputs": [
        {
          "id": "filingFee",
          "label": "Court filing fee",
          "kind": "number"
        },
        {
          "id": "serviceMethod",
          "label": "Service method",
          "kind": "select"
        },
        {
          "id": "serviceFee",
          "label": "Service cost",
          "kind": "number"
        },
        {
          "id": "attempts",
          "label": "Expected service attempts",
          "kind": "number"
        },
        {
          "id": "copies",
          "label": "Copy/certification fees",
          "kind": "number"
        },
        {
          "id": "recoverable",
          "label": "Costs recoverable if you win?",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total upfront cost"
        },
        {
          "id": "serviceTotal",
          "label": "Total service cost"
        },
        {
          "id": "recoverable",
          "label": "Potentially recoverable if you win"
        }
      ]
    },
    {
      "slug": "small-claims-max-recovery",
      "url": "https://www.revenuelab.fyi/toolbox/small-claims-max-recovery",
      "title": "Small Claims Court Max Recovery Calculator",
      "category": "financial",
      "summary": "Check your state's small claims limit and whether it's worth filing versus regular civil court.",
      "formula": "If claim ≤ cap: file small claims, recover claim minus filing fee. If claim > cap: waived amount = claim − cap; compare to full civil recovery minus civil costs.",
      "inputs": [
        {
          "id": "claimAmount",
          "label": "Amount owed to you",
          "kind": "number"
        },
        {
          "id": "stateCap",
          "label": "Your state's small claims cap",
          "kind": "number"
        },
        {
          "id": "smallClaimsFee",
          "label": "Small claims filing fee",
          "kind": "number"
        },
        {
          "id": "civilFee",
          "label": "Regular civil court filing + service",
          "kind": "number"
        },
        {
          "id": "attorneyPct",
          "label": "Attorney contingency % (civil court)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "smallClaimsNet",
          "label": "Net recovery in small claims"
        },
        {
          "id": "withinCap",
          "label": "Cap status"
        },
        {
          "id": "waived",
          "label": "Amount waived if filing small claims"
        },
        {
          "id": "civilNet",
          "label": "Est. net recovery in regular civil court"
        },
        {
          "id": "better",
          "label": "Better path financially"
        }
      ]
    },
    {
      "slug": "patent-filing-cost",
      "url": "https://www.revenuelab.fyi/toolbox/patent-filing-cost",
      "title": "Patent Filing Cost Calculator",
      "category": "financial",
      "summary": "Estimate USPTO fees, attorney drafting costs, and prosecution fees for a utility patent.",
      "formula": "Total = (filing + search + exam + issue fees, entity-adjusted) + attorney drafting fee + (office action responses × cost each).",
      "inputs": [
        {
          "id": "entity",
          "label": "Entity size",
          "kind": "select"
        },
        {
          "id": "govBaseFees",
          "label": "Base gov't fees at large-entity rate (filing+search+exam+issue)",
          "kind": "number"
        },
        {
          "id": "attorneyFee",
          "label": "Attorney drafting fee",
          "kind": "number"
        },
        {
          "id": "officeActions",
          "label": "Expected office action responses",
          "kind": "number"
        },
        {
          "id": "oaResponseCost",
          "label": "Cost per office action response",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated total cost through allowance"
        },
        {
          "id": "govFees",
          "label": "USPTO government fees"
        },
        {
          "id": "attorneyFee",
          "label": "Attorney drafting fee"
        },
        {
          "id": "oaCost",
          "label": "Office action response cost"
        }
      ]
    },
    {
      "slug": "trademark-filing-cost",
      "url": "https://www.revenuelab.fyi/toolbox/trademark-filing-cost",
      "title": "Trademark Filing Cost Calculator",
      "category": "financial",
      "summary": "Total USPTO filing fees per class, attorney fees, and office action costs for a trademark.",
      "formula": "Total = (classes × gov fee per class) + attorney fee + (office actions × response cost).",
      "inputs": [
        {
          "id": "classes",
          "label": "Number of classes",
          "kind": "number"
        },
        {
          "id": "govFeePerClass",
          "label": "USPTO fee per class",
          "kind": "number"
        },
        {
          "id": "attorneyFee",
          "label": "Attorney fee (search + filing)",
          "kind": "number"
        },
        {
          "id": "officeActions",
          "label": "Expected office actions",
          "kind": "number"
        },
        {
          "id": "oaCost",
          "label": "Cost per office action response",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated total cost"
        },
        {
          "id": "govTotal",
          "label": "USPTO government fees"
        },
        {
          "id": "attorneyFee",
          "label": "Attorney fee"
        },
        {
          "id": "oaTotal",
          "label": "Office action response cost"
        }
      ]
    },
    {
      "slug": "llc-formation-cost-by-state",
      "url": "https://www.revenuelab.fyi/toolbox/llc-formation-cost-by-state",
      "title": "LLC Formation Cost by State Calculator",
      "category": "financial",
      "summary": "Total state filing fee, registered agent, and ongoing annual costs to form an LLC.",
      "formula": "Year one = state filing fee + registered agent + operating agreement + publication (if required). Ongoing = annual report fee + franchise tax + registered agent renewal.",
      "inputs": [
        {
          "id": "filingFee",
          "label": "State LLC filing fee",
          "kind": "number"
        },
        {
          "id": "registeredAgent",
          "label": "Registered agent (annual)",
          "kind": "number"
        },
        {
          "id": "operatingAgreement",
          "label": "Operating agreement drafting",
          "kind": "number"
        },
        {
          "id": "publication",
          "label": "Publication requirement cost (0 if none)",
          "kind": "number"
        },
        {
          "id": "annualReportFee",
          "label": "Annual report fee",
          "kind": "number"
        },
        {
          "id": "franchiseTax",
          "label": "Annual franchise tax (0 if none)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "yearOne",
          "label": "Year-one cost"
        },
        {
          "id": "annualOngoing",
          "label": "Ongoing annual cost (year 2+)"
        },
        {
          "id": "fiveYearTotal",
          "label": "Total cost over 5 years"
        }
      ]
    },
    {
      "slug": "corporation-formation-cost",
      "url": "https://www.revenuelab.fyi/toolbox/corporation-formation-cost",
      "title": "Corporation Formation Cost Calculator",
      "category": "financial",
      "summary": "Total state incorporation fees, registered agent, bylaws, and franchise tax for a corporation.",
      "formula": "Year one = filing fee + registered agent + bylaws/resolutions + EIN/misc. Ongoing = annual report + franchise tax + registered agent renewal + annual compliance (minutes, meetings).",
      "inputs": [
        {
          "id": "filingFee",
          "label": "State incorporation filing fee",
          "kind": "number"
        },
        {
          "id": "registeredAgent",
          "label": "Registered agent (annual)",
          "kind": "number"
        },
        {
          "id": "bylaws",
          "label": "Bylaws + initial resolutions drafting",
          "kind": "number"
        },
        {
          "id": "annualReportFee",
          "label": "Annual report fee",
          "kind": "number"
        },
        {
          "id": "franchiseTax",
          "label": "Annual franchise tax",
          "kind": "number"
        },
        {
          "id": "compliance",
          "label": "Annual compliance (minutes, meetings)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "yearOne",
          "label": "Year-one cost"
        },
        {
          "id": "annualOngoing",
          "label": "Ongoing annual cost (year 2+)"
        },
        {
          "id": "fiveYearTotal",
          "label": "Total cost over 5 years"
        }
      ]
    },
    {
      "slug": "estate-executor-fee",
      "url": "https://www.revenuelab.fyi/toolbox/estate-executor-fee",
      "title": "Estate Executor Fee Calculator",
      "category": "financial",
      "summary": "Estimate the executor's fee for administering an estate under state statutory schedules.",
      "formula": "Fee = 4%×min(100k,estate) + 3%×next 100k + 2%×next 800k + 1%×next 9M + 0.5%×remainder.",
      "inputs": [
        {
          "id": "estateValue",
          "label": "Gross estate value (probate assets)",
          "kind": "number"
        },
        {
          "id": "waived",
          "label": "Executor waiving fee?",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "finalFee",
          "label": "Statutory executor fee"
        },
        {
          "id": "effectiveRate",
          "label": "Effective rate on estate"
        },
        {
          "id": "netToHeirs",
          "label": "Remaining for distribution"
        }
      ]
    },
    {
      "slug": "child-support-guideline-range",
      "url": "https://www.revenuelab.fyi/toolbox/child-support-guideline-range",
      "title": "Child Support Guideline Range Calculator",
      "category": "financial",
      "summary": "Estimate a rough child support range using an income-shares style guideline.",
      "formula": "Base obligation ≈ f(combined income, # children); each parent's share = base × (their income ÷ combined income); adjust for parenting time %; add proportional childcare/insurance.",
      "inputs": [
        {
          "id": "incomeA",
          "label": "Parent A monthly gross income",
          "kind": "number"
        },
        {
          "id": "incomeB",
          "label": "Parent B monthly gross income",
          "kind": "number"
        },
        {
          "id": "children",
          "label": "Number of children",
          "kind": "number"
        },
        {
          "id": "parentingTimeB",
          "label": "Parent B overnight parenting time",
          "kind": "number"
        },
        {
          "id": "childcare",
          "label": "Monthly childcare + health premium",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthlyMid",
          "label": "Estimated monthly support (midpoint)"
        },
        {
          "id": "monthlyLow",
          "label": "Low end of range"
        },
        {
          "id": "monthlyHigh",
          "label": "High end of range"
        },
        {
          "id": "annualMid",
          "label": "Annual estimate (midpoint)"
        }
      ]
    },
    {
      "slug": "alimony-duration-guideline",
      "url": "https://www.revenuelab.fyi/toolbox/alimony-duration-guideline",
      "title": "Alimony Duration Guideline Calculator",
      "category": "financial",
      "summary": "Estimate typical spousal support duration and monthly amount using common state formulas.",
      "formula": "Duration ≈ marriage years ÷ 3 (capped/indefinite over 20 years). Monthly amount ≈ 30% payor gross income − 20% recipient gross income, capped at 40% of payor income.",
      "inputs": [
        {
          "id": "marriageYears",
          "label": "Length of marriage",
          "kind": "number"
        },
        {
          "id": "payorIncome",
          "label": "Paying spouse monthly gross income",
          "kind": "number"
        },
        {
          "id": "recipientIncome",
          "label": "Receiving spouse monthly gross income",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthly",
          "label": "Estimated monthly support"
        },
        {
          "id": "durationLabel",
          "label": "Estimated duration"
        },
        {
          "id": "totalEstimate",
          "label": "Rough lifetime total (est. duration)"
        }
      ]
    },
    {
      "slug": "traffic-ticket-insurance-impact",
      "url": "https://www.revenuelab.fyi/toolbox/traffic-ticket-insurance-impact",
      "title": "Traffic Ticket Insurance Impact Calculator",
      "category": "financial",
      "summary": "Estimate the fine plus the multi-year insurance premium increase from a moving violation.",
      "formula": "Total cost = fine + court costs + (annual premium × surcharge % × 3 years).",
      "inputs": [
        {
          "id": "fine",
          "label": "Ticket fine",
          "kind": "number"
        },
        {
          "id": "courtCosts",
          "label": "Court costs/fees",
          "kind": "number"
        },
        {
          "id": "annualPremium",
          "label": "Current annual insurance premium",
          "kind": "number"
        },
        {
          "id": "severity",
          "label": "Violation severity",
          "kind": "select"
        },
        {
          "id": "trafficSchool",
          "label": "Taking traffic school to mask it?",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total real cost (3-year impact)"
        },
        {
          "id": "fine",
          "label": "Fine + court costs"
        },
        {
          "id": "annualIncrease",
          "label": "Annual premium increase"
        },
        {
          "id": "threeYearIncrease",
          "label": "Cumulative 3-year insurance increase"
        }
      ]
    },
    {
      "slug": "expungement-cost-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/expungement-cost-calculator",
      "title": "Expungement Cost Calculator",
      "category": "financial",
      "summary": "Total court filing fees, background check retrieval, and attorney costs to expunge a record.",
      "formula": "Total = court filing fee + records/fingerprint fees + attorney fee (0 if self-filing or automatic).",
      "inputs": [
        {
          "id": "filingFee",
          "label": "Court filing fee",
          "kind": "number"
        },
        {
          "id": "recordsFee",
          "label": "Certified records / fingerprint fee",
          "kind": "number"
        },
        {
          "id": "complexity",
          "label": "Case complexity",
          "kind": "select"
        },
        {
          "id": "attorneyFee",
          "label": "Attorney fee (0 if self-filing)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated total cost"
        },
        {
          "id": "attorney",
          "label": "Attorney fee (complexity-adjusted)"
        },
        {
          "id": "courtCosts",
          "label": "Court + records costs"
        }
      ]
    },
    {
      "slug": "notary-apostille-cost",
      "url": "https://www.revenuelab.fyi/toolbox/notary-apostille-cost",
      "title": "Notary & Apostille Cost Calculator",
      "category": "financial",
      "summary": "Total notarization, apostille/authentication, and courier fees to legalize a document abroad.",
      "formula": "Total = documents × (notary fee + travel fee/doc count + apostille/authentication fee) + courier costs.",
      "inputs": [
        {
          "id": "documents",
          "label": "Number of documents",
          "kind": "number"
        },
        {
          "id": "notaryFee",
          "label": "Notary fee per signature",
          "kind": "number"
        },
        {
          "id": "travelFee",
          "label": "Mobile notary travel fee (total, 0 if in-office)",
          "kind": "number"
        },
        {
          "id": "hague",
          "label": "Destination country type",
          "kind": "select"
        },
        {
          "id": "apostilleFee",
          "label": "Apostille fee per document",
          "kind": "number"
        },
        {
          "id": "consularFee",
          "label": "Consular legalization fee per document (non-Hague)",
          "kind": "number"
        },
        {
          "id": "courier",
          "label": "Courier / mailing costs (total)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total cost"
        },
        {
          "id": "notaryTotal",
          "label": "Notary fees total"
        },
        {
          "id": "legalTotal",
          "label": "Apostille/legalization fees total"
        },
        {
          "id": "perDoc",
          "label": "Average cost per document"
        }
      ]
    },
    {
      "slug": "document-translation-certification-cost",
      "url": "https://www.revenuelab.fyi/toolbox/document-translation-certification-cost",
      "title": "Document Translation & Certification Cost Calculator",
      "category": "financial",
      "summary": "Estimate cost for certified translation of legal or immigration documents by word or page count.",
      "formula": "By word: cost = words × rate × (1+rush%). By document: cost = documents × flat rate × (1+rush%). Plus notarization fee if required.",
      "inputs": [
        {
          "id": "pricingMethod",
          "label": "Pricing method",
          "kind": "select"
        },
        {
          "id": "documents",
          "label": "Number of standard documents",
          "kind": "number"
        },
        {
          "id": "flatRate",
          "label": "Flat rate per document",
          "kind": "number"
        },
        {
          "id": "words",
          "label": "Total word count (if per-word)",
          "kind": "number"
        },
        {
          "id": "wordRate",
          "label": "Rate per word",
          "kind": "number"
        },
        {
          "id": "rush",
          "label": "Rush turnaround?",
          "kind": "select"
        },
        {
          "id": "notarization",
          "label": "Notarization of certification (0 if not required)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total cost"
        },
        {
          "id": "base",
          "label": "Base translation cost"
        },
        {
          "id": "rushSurcharge",
          "label": "Rush surcharge"
        },
        {
          "id": "notarization",
          "label": "Notarization fee"
        }
      ]
    },
    {
      "slug": "unemployment-benefit-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/unemployment-benefit-estimate",
      "title": "Unemployment Weekly Benefit Estimator",
      "category": "financial",
      "summary": "Estimate your weekly unemployment check from your highest-earning quarter.",
      "formula": "WBA = min(max, highest quarter wages ÷ 26); capped at state max/min; total = WBA × weeks.",
      "inputs": [
        {
          "id": "highQuarter",
          "label": "Highest-earning quarter wages",
          "kind": "number"
        },
        {
          "id": "pctMethod",
          "label": "State divisor (weeks in formula)",
          "kind": "number"
        },
        {
          "id": "maxWBA",
          "label": "State max weekly benefit",
          "kind": "number"
        },
        {
          "id": "minWBA",
          "label": "State min weekly benefit",
          "kind": "number"
        },
        {
          "id": "weeks",
          "label": "Maximum benefit weeks",
          "kind": "number"
        },
        {
          "id": "partialEarnings",
          "label": "Weekly part-time earnings (if any)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "wba",
          "label": "Estimated weekly benefit"
        },
        {
          "id": "reduced",
          "label": "Benefit if working part-time"
        },
        {
          "id": "weeklyTotal",
          "label": "Total weekly income (benefit + work)"
        },
        {
          "id": "total",
          "label": "Max total benefit over base period"
        },
        {
          "id": "weeks",
          "label": "Weeks of eligibility used"
        }
      ]
    },
    {
      "slug": "ssdi-vs-ssi-comparison",
      "url": "https://www.revenuelab.fyi/toolbox/ssdi-vs-ssi-comparison",
      "title": "SSDI vs SSI Comparison Calculator",
      "category": "financial",
      "summary": "Compare Social Security Disability Insurance and Supplemental Security Income estimates side by side.",
      "formula": "SSDI ≈ bend-point PIA formula on AIME; SSI = Federal Benefit Rate − countable income (unearned + earned above exclusions).",
      "inputs": [
        {
          "id": "aime",
          "label": "Average indexed monthly earnings (AIME)",
          "kind": "number"
        },
        {
          "id": "unearnedIncome",
          "label": "Other unearned monthly income",
          "kind": "number"
        },
        {
          "id": "earnedIncome",
          "label": "Monthly earned income (if any)",
          "kind": "number"
        },
        {
          "id": "fbr",
          "label": "SSI federal benefit rate (individual)",
          "kind": "number"
        },
        {
          "id": "stateSupplement",
          "label": "State SSI supplement",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ssdi",
          "label": "Estimated SSDI monthly benefit"
        },
        {
          "id": "ssi",
          "label": "Estimated SSI monthly benefit (if only SSI)"
        },
        {
          "id": "concurrent",
          "label": "Possible SSI top-up if also on SSDI"
        },
        {
          "id": "countable",
          "label": "Countable income used in SSI calc"
        },
        {
          "id": "fbr",
          "label": "Federal benefit rate + supplement used"
        }
      ]
    },
    {
      "slug": "social-security-earnings-test",
      "url": "https://www.revenuelab.fyi/toolbox/social-security-earnings-test",
      "title": "Social Security Earnings Test Calculator",
      "category": "financial",
      "summary": "See how much Social Security withholds if you claim early and keep working.",
      "formula": "Under FRA: withhold $1 per $2 over limit. Year reaching FRA: withhold $1 per $3 over the higher limit (earnings before FRA month only).",
      "inputs": [
        {
          "id": "stage",
          "label": "Your situation",
          "kind": "select"
        },
        {
          "id": "earnings",
          "label": "Expected annual earnings (pre-FRA-month if applicable)",
          "kind": "number"
        },
        {
          "id": "monthlyBenefit",
          "label": "Monthly benefit amount",
          "kind": "number"
        },
        {
          "id": "limitUnder",
          "label": "Annual limit (under FRA)",
          "kind": "number"
        },
        {
          "id": "limitFRAYear",
          "label": "Annual limit (year of FRA)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "withheldCapped",
          "label": "Estimated annual benefit withheld"
        },
        {
          "id": "netAnnual",
          "label": "Net benefit received this year"
        },
        {
          "id": "monthsWithheld",
          "label": "Equivalent months of benefit withheld"
        },
        {
          "id": "excess",
          "label": "Earnings above the limit"
        },
        {
          "id": "annualBenefit",
          "label": "Full annual benefit before withholding"
        }
      ]
    },
    {
      "slug": "spousal-benefit-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/spousal-benefit-estimate",
      "title": "Social Security Spousal Benefit Calculator",
      "category": "financial",
      "summary": "Estimate your spousal Social Security benefit based on your spouse's record.",
      "formula": "Spousal benefit at FRA = 50% × spouse's PIA; reduced ~8.3-25/36 of 1% per month claimed early; SSA pays greater of own benefit or spousal benefit.",
      "inputs": [
        {
          "id": "spousePIA",
          "label": "Spouse's primary insurance amount (PIA)",
          "kind": "number"
        },
        {
          "id": "ownBenefit",
          "label": "Your own benefit at your FRA",
          "kind": "number"
        },
        {
          "id": "claimAgeMonths",
          "label": "Months before your FRA you plan to claim",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "payable",
          "label": "Total benefit SSA would pay"
        },
        {
          "id": "reducedSpousal",
          "label": "Spousal benefit after early-claim reduction"
        },
        {
          "id": "fullSpousal",
          "label": "Full spousal benefit at your FRA (50%)"
        },
        {
          "id": "excessSpousal",
          "label": "Spousal top-up above your own benefit"
        },
        {
          "id": "reductionPct",
          "label": "Reduction for claiming early"
        }
      ]
    },
    {
      "slug": "wep-gpo-impact-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/wep-gpo-impact-estimate",
      "title": "WEP/GPO Impact Estimator",
      "category": "financial",
      "summary": "Estimate how a non-covered government pension could reduce your Social Security.",
      "formula": "Old WEP: reduced first PIA bend-point factor from 90% toward 40% based on years of substantial covered earnings. Old GPO: spousal/survivor benefit reduced by (2/3 × government pension).",
      "inputs": [
        {
          "id": "aime",
          "label": "Average indexed monthly earnings (AIME)",
          "kind": "number"
        },
        {
          "id": "yearsCovered",
          "label": "Years of substantial covered earnings",
          "kind": "number"
        },
        {
          "id": "govPension",
          "label": "Monthly non-covered government pension",
          "kind": "number"
        },
        {
          "id": "spousalBenefit",
          "label": "Spousal/survivor SS benefit before offset",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "wepPIA",
          "label": "Old WEP-reduced PIA (historical formula)"
        },
        {
          "id": "wepReduction",
          "label": "Old WEP monthly reduction"
        },
        {
          "id": "normalPIA",
          "label": "Unreduced PIA (current law)"
        },
        {
          "id": "gpoOffset",
          "label": "Old GPO spousal/survivor offset"
        },
        {
          "id": "spousalAfterGPO",
          "label": "Old GPO-reduced spousal benefit"
        }
      ]
    },
    {
      "slug": "irmaa-bracket-cost",
      "url": "https://www.revenuelab.fyi/toolbox/irmaa-bracket-cost",
      "title": "Medicare IRMAA Bracket Cost Calculator",
      "category": "financial",
      "summary": "See which income-related Medicare surcharge bracket you fall into and what it costs.",
      "formula": "IRMAA bracket determined by 2-years-prior MAGI vs threshold table; surcharge added to standard Part B/D premium.",
      "inputs": [
        {
          "id": "magi",
          "label": "MAGI from 2 years ago",
          "kind": "number"
        },
        {
          "id": "filing",
          "label": "Filing status",
          "kind": "select"
        },
        {
          "id": "basePartB",
          "label": "Standard Part B premium",
          "kind": "number"
        },
        {
          "id": "basePartD",
          "label": "Your Part D plan premium",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthlyExtra",
          "label": "Extra monthly cost from IRMAA"
        },
        {
          "id": "partBTotal",
          "label": "Total Part B premium with IRMAA"
        },
        {
          "id": "partDTotal",
          "label": "Total Part D premium with IRMAA"
        },
        {
          "id": "annualExtra",
          "label": "Extra annual cost from IRMAA"
        },
        {
          "id": "bracket",
          "label": "IRMAA bracket (0 = none)"
        }
      ]
    },
    {
      "slug": "medicare-premium-total",
      "url": "https://www.revenuelab.fyi/toolbox/medicare-premium-total",
      "title": "Medicare Part B/D Premium Total Calculator",
      "category": "financial",
      "summary": "Add up your total monthly Medicare premium including IRMAA and late penalties.",
      "formula": "Total = Part B (+ IRMAA + late penalty%) + Part D plan premium (+ IRMAA + late penalty) + supplemental plan premium.",
      "inputs": [
        {
          "id": "partB",
          "label": "Standard Part B premium",
          "kind": "number"
        },
        {
          "id": "partBIRMAA",
          "label": "Part B IRMAA surcharge",
          "kind": "number"
        },
        {
          "id": "bLatePeriods",
          "label": "Full 12-month periods late enrolling Part B",
          "kind": "number"
        },
        {
          "id": "partD",
          "label": "Part D plan premium",
          "kind": "number"
        },
        {
          "id": "partDIRMAA",
          "label": "Part D IRMAA surcharge",
          "kind": "number"
        },
        {
          "id": "dLateMonths",
          "label": "Months without creditable drug coverage",
          "kind": "number"
        },
        {
          "id": "supplemental",
          "label": "Medigap / Medicare Advantage premium",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthlyTotal",
          "label": "Total monthly Medicare cost"
        },
        {
          "id": "partBTotal",
          "label": "Part B total (incl. IRMAA/penalty)"
        },
        {
          "id": "partDTotal",
          "label": "Part D total (incl. IRMAA/penalty)"
        },
        {
          "id": "annualTotal",
          "label": "Total annual Medicare cost"
        },
        {
          "id": "bPenalty",
          "label": "Part B late penalty portion"
        },
        {
          "id": "dPenalty",
          "label": "Part D late penalty portion"
        }
      ]
    },
    {
      "slug": "aca-subsidy-cliff-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/aca-subsidy-cliff-estimate",
      "title": "ACA Subsidy Cliff Estimator",
      "category": "financial",
      "summary": "See how much your marketplace premium tax credit changes near income thresholds.",
      "formula": "Contribution = income × applicable %; subsidy = benchmark premium − contribution (or $0 if cliff applies and income > 400% FPL).",
      "inputs": [
        {
          "id": "income",
          "label": "Household MAGI",
          "kind": "number"
        },
        {
          "id": "fplPct",
          "label": "Income as % of Federal Poverty Level",
          "kind": "number"
        },
        {
          "id": "benchmarkPremium",
          "label": "Annual benchmark silver plan premium",
          "kind": "number"
        },
        {
          "id": "cliffApplies",
          "label": "Subsidy structure",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "subsidy",
          "label": "Estimated annual premium tax credit"
        },
        {
          "id": "netPremium",
          "label": "Your net annual premium after subsidy"
        },
        {
          "id": "contribution",
          "label": "Your expected contribution toward benchmark plan"
        },
        {
          "id": "contribPct",
          "label": "Contribution as % of income"
        },
        {
          "id": "lostIfOverCliff",
          "label": "Subsidy at risk if just over 400% FPL cliff"
        }
      ]
    },
    {
      "slug": "fpl-percentage-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/fpl-percentage-calculator",
      "title": "Federal Poverty Level Percentage Calculator",
      "category": "financial",
      "summary": "Find your household's income as a percentage of the Federal Poverty Level.",
      "formula": "FPL% = (annual household income ÷ FPL guideline for household size) × 100.",
      "inputs": [
        {
          "id": "income",
          "label": "Annual household income",
          "kind": "number"
        },
        {
          "id": "householdSize",
          "label": "Household size",
          "kind": "number"
        },
        {
          "id": "region",
          "label": "Region",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "pct",
          "label": "Income as % of FPL"
        },
        {
          "id": "fpl",
          "label": "100% FPL for this household size"
        },
        {
          "id": "gapTo138",
          "label": "Room below 138% FPL (Medicaid expansion)"
        },
        {
          "id": "gapTo400",
          "label": "Room below 400% FPL"
        }
      ]
    },
    {
      "slug": "snap-allotment-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/snap-allotment-estimate",
      "title": "SNAP Benefit Allotment Estimator",
      "category": "financial",
      "summary": "Estimate your monthly SNAP allotment from household size, income, and expenses.",
      "formula": "Benefit = max allotment for household size − (0.3 × net monthly income), floor of $0 (or minimum benefit for small households).",
      "inputs": [
        {
          "id": "householdSize",
          "label": "Household size",
          "kind": "number"
        },
        {
          "id": "grossIncome",
          "label": "Gross monthly household income",
          "kind": "number"
        },
        {
          "id": "shelterCost",
          "label": "Monthly rent/mortgage + utilities",
          "kind": "number"
        },
        {
          "id": "dependentCare",
          "label": "Monthly dependent care costs",
          "kind": "number"
        },
        {
          "id": "medicalExpense",
          "label": "Monthly medical expenses (elderly/disabled, over $35)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "benefit",
          "label": "Estimated monthly SNAP benefit"
        },
        {
          "id": "maxAllotment",
          "label": "Maximum allotment for household size"
        },
        {
          "id": "netIncome",
          "label": "Estimated net monthly income used"
        },
        {
          "id": "cappedShelter",
          "label": "Excess shelter deduction applied"
        },
        {
          "id": "standardDeduction",
          "label": "Standard deduction applied"
        }
      ]
    },
    {
      "slug": "va-disability-combined-rating",
      "url": "https://www.revenuelab.fyi/toolbox/va-disability-combined-rating",
      "title": "VA Disability Combined Rating Calculator",
      "category": "financial",
      "summary": "Combine multiple VA disability ratings using the VA's non-additive math.",
      "formula": "Combine highest to lowest: remaining = 100 − running total; new total = running total + (rating × remaining/100); round final to nearest 10.",
      "inputs": [
        {
          "id": "r1",
          "label": "Rating 1",
          "kind": "number"
        },
        {
          "id": "r2",
          "label": "Rating 2",
          "kind": "number"
        },
        {
          "id": "r3",
          "label": "Rating 3",
          "kind": "number"
        },
        {
          "id": "r4",
          "label": "Rating 4",
          "kind": "number"
        },
        {
          "id": "r5",
          "label": "Rating 5",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rounded",
          "label": "Combined VA rating (rounded)"
        },
        {
          "id": "exact",
          "label": "Exact combined percentage before rounding"
        },
        {
          "id": "naive",
          "label": "Naive sum (incorrect method, for comparison)"
        },
        {
          "id": "count",
          "label": "Number of ratings combined"
        }
      ]
    },
    {
      "slug": "military-bah-bas-takehome",
      "url": "https://www.revenuelab.fyi/toolbox/military-bah-bas-takehome",
      "title": "Military BAH/BAS Take-Home Calculator",
      "category": "financial",
      "summary": "Estimate total military take-home pay including housing and subsistence allowances.",
      "formula": "Gross taxable = base pay; total compensation = base pay + BAH + BAS; take-home = base pay × (1 − tax rate) + BAH + BAS.",
      "inputs": [
        {
          "id": "basePay",
          "label": "Monthly base pay",
          "kind": "number"
        },
        {
          "id": "bah",
          "label": "Monthly BAH (housing allowance)",
          "kind": "number"
        },
        {
          "id": "bas",
          "label": "Monthly BAS (subsistence allowance)",
          "kind": "number"
        },
        {
          "id": "effTaxRate",
          "label": "Effective federal + state tax rate on base pay",
          "kind": "number"
        },
        {
          "id": "tsp",
          "label": "Monthly TSP contribution",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "takeHome",
          "label": "Estimated monthly take-home pay"
        },
        {
          "id": "totalComp",
          "label": "Total monthly compensation (pay + allowances)"
        },
        {
          "id": "taxOwed",
          "label": "Estimated monthly tax withheld"
        },
        {
          "id": "annualTotalComp",
          "label": "Total annual compensation"
        },
        {
          "id": "effectiveTaxOnTotal",
          "label": "Effective tax rate on total compensation"
        }
      ]
    },
    {
      "slug": "fers-pension-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/fers-pension-estimate",
      "title": "FERS Pension Estimate Calculator",
      "category": "financial",
      "summary": "Estimate your Federal Employees Retirement System annuity.",
      "formula": "Annual pension = high-3 salary × years of service × multiplier (1% standard, 1.1% if age 62+ with 20+ years).",
      "inputs": [
        {
          "id": "high3",
          "label": "High-3 average salary",
          "kind": "number"
        },
        {
          "id": "yearsService",
          "label": "Years of creditable service",
          "kind": "number"
        },
        {
          "id": "retireAge",
          "label": "Age at retirement",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annual",
          "label": "Estimated annual FERS pension"
        },
        {
          "id": "monthly",
          "label": "Estimated monthly FERS pension"
        },
        {
          "id": "multiplierPct",
          "label": "Multiplier used"
        },
        {
          "id": "bonus",
          "label": "Extra annual amount from 1.1% multiplier vs 1%"
        }
      ]
    },
    {
      "slug": "tsp-growth-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/tsp-growth-calculator",
      "title": "TSP Growth Calculator",
      "category": "financial",
      "summary": "Project your TSP balance growth including agency match.",
      "formula": "Agency match = 1% automatic + dollar-for-dollar up to 3% + $0.50/$1 on next 2%; balance compounds annually with contributions and growth rate.",
      "inputs": [
        {
          "id": "salary",
          "label": "Annual salary",
          "kind": "number"
        },
        {
          "id": "contribPct",
          "label": "Your contribution rate",
          "kind": "number"
        },
        {
          "id": "currentBalance",
          "label": "Current TSP balance",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years until retirement",
          "kind": "number"
        },
        {
          "id": "growthRate",
          "label": "Expected annual return",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "balance",
          "label": "Projected ending TSP balance"
        },
        {
          "id": "agencyContribAnnual",
          "label": "Annual agency contribution"
        },
        {
          "id": "totalAgency",
          "label": "Total agency contributions over the period"
        },
        {
          "id": "totalEmployee",
          "label": "Total your contributions over the period"
        },
        {
          "id": "matchPct",
          "label": "Effective agency match % of salary"
        }
      ]
    },
    {
      "slug": "student-loan-idr-payment",
      "url": "https://www.revenuelab.fyi/toolbox/student-loan-idr-payment",
      "title": "Student Loan IDR Payment Calculator",
      "category": "financial",
      "summary": "Estimate your monthly federal student loan payment under income-driven repayment.",
      "formula": "Discretionary income = AGI − (poverty line % × FPL for family size); payment = discretionary income × plan % ÷ 12.",
      "inputs": [
        {
          "id": "agi",
          "label": "Adjusted gross income",
          "kind": "number"
        },
        {
          "id": "familySize",
          "label": "Family size",
          "kind": "number"
        },
        {
          "id": "plan",
          "label": "IDR plan",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "monthlyPayment",
          "label": "Estimated monthly IDR payment"
        },
        {
          "id": "exemption",
          "label": "Income exempted from payment calc"
        },
        {
          "id": "discretionary",
          "label": "Discretionary income used"
        },
        {
          "id": "annualPayment",
          "label": "Estimated annual payment"
        }
      ]
    },
    {
      "slug": "pslf-remaining-payments",
      "url": "https://www.revenuelab.fyi/toolbox/pslf-remaining-payments",
      "title": "PSLF Remaining Payments Calculator",
      "category": "financial",
      "summary": "Estimate how many qualifying payments you have left until Public Service Loan Forgiveness.",
      "formula": "Remaining payments = 120 − qualifying payments made; forgiveness date = today + (remaining payments in months), if continuously qualifying.",
      "inputs": [
        {
          "id": "paymentsMade",
          "label": "Qualifying payments made so far",
          "kind": "number"
        },
        {
          "id": "monthlyPayment",
          "label": "Current monthly IDR payment",
          "kind": "number"
        },
        {
          "id": "loanBalance",
          "label": "Current federal Direct Loan balance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "remaining",
          "label": "Qualifying payments remaining"
        },
        {
          "id": "yearsRemaining",
          "label": "Approx. years remaining (if continuous)"
        },
        {
          "id": "pctComplete",
          "label": "Percent of 120 payments complete"
        },
        {
          "id": "totalRemainingPaid",
          "label": "Estimated total still to be paid"
        },
        {
          "id": "forgivenAmount",
          "label": "Estimated balance forgiven at completion"
        }
      ]
    },
    {
      "slug": "gov-benefits-cliff-checker",
      "url": "https://www.revenuelab.fyi/toolbox/gov-benefits-cliff-checker",
      "title": "Benefits Cliff Checker",
      "category": "financial",
      "summary": "See if a raise could cost you more in lost benefits than you gain in pay.",
      "formula": "Net change = (new income − old income) − (benefits lost due to crossing thresholds).",
      "inputs": [
        {
          "id": "oldIncome",
          "label": "Current annual income",
          "kind": "number"
        },
        {
          "id": "newIncome",
          "label": "Income after raise/promotion",
          "kind": "number"
        },
        {
          "id": "medicaidLoss",
          "label": "Annual Medicaid value lost if ineligible",
          "kind": "number"
        },
        {
          "id": "snapLoss",
          "label": "Annual SNAP benefit lost",
          "kind": "number"
        },
        {
          "id": "childcareLoss",
          "label": "Annual childcare subsidy lost",
          "kind": "number"
        },
        {
          "id": "housingLoss",
          "label": "Annual housing assistance lost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netChange",
          "label": "Net financial change from the raise"
        },
        {
          "id": "totalLoss",
          "label": "Total estimated benefits lost"
        },
        {
          "id": "raiseAmount",
          "label": "Gross raise amount"
        },
        {
          "id": "breakEvenRaise",
          "label": "Raise needed just to break even"
        },
        {
          "id": "isCliff",
          "label": "Cliff effect present (1 = yes)"
        }
      ]
    },
    {
      "slug": "cobra-continuation-cost",
      "url": "https://www.revenuelab.fyi/toolbox/cobra-continuation-cost",
      "title": "COBRA Continuation Cost Calculator",
      "category": "financial",
      "summary": "Estimate your monthly COBRA premium after losing job-based coverage.",
      "formula": "COBRA premium = (employer share + employee share) × 1.02; total cost = monthly premium × months of coverage.",
      "inputs": [
        {
          "id": "employerShare",
          "label": "Employer's former monthly contribution",
          "kind": "number"
        },
        {
          "id": "employeeShare",
          "label": "Your former monthly payroll deduction",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Months of COBRA coverage needed",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cobraMonthly",
          "label": "Monthly COBRA premium"
        },
        {
          "id": "increase",
          "label": "Increase vs. what you used to pay"
        },
        {
          "id": "totalCost",
          "label": "Total cost over coverage period"
        },
        {
          "id": "fullPremium",
          "label": "Full unsubsidized group plan premium"
        }
      ]
    },
    {
      "slug": "eitc-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/eitc-estimate",
      "title": "Earned Income Tax Credit Estimator",
      "category": "financial",
      "summary": "Estimate your Earned Income Tax Credit based on income and qualifying children.",
      "formula": "Credit phases in at a rate × earned income up to max, plateaus, then phases out at a rate × (income − phase-out start), floor of $0.",
      "inputs": [
        {
          "id": "earnedIncome",
          "label": "Earned income",
          "kind": "number"
        },
        {
          "id": "children",
          "label": "Qualifying children",
          "kind": "select"
        },
        {
          "id": "filing",
          "label": "Filing status",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "credit",
          "label": "Estimated EITC amount"
        },
        {
          "id": "maxCredit",
          "label": "Maximum possible credit for this family size"
        },
        {
          "id": "phaseoutStart",
          "label": "Income where phase-out begins"
        },
        {
          "id": "phaseInRate",
          "label": "Phase-in rate applied to early income"
        }
      ]
    },
    {
      "slug": "ssi-resource-limit-check",
      "url": "https://www.revenuelab.fyi/toolbox/ssi-resource-limit-check",
      "title": "SSI Resource Limit Checker",
      "category": "financial",
      "summary": "Check if your countable resources are under SSI's asset limit.",
      "formula": "Countable resources = total assets − excluded assets (home, one vehicle, burial funds up to limit, ABLE balance up to $100k); compare to $2,000/$3,000 limit.",
      "inputs": [
        {
          "id": "cash",
          "label": "Cash, checking, savings",
          "kind": "number"
        },
        {
          "id": "investments",
          "label": "Stocks, bonds, other investments",
          "kind": "number"
        },
        {
          "id": "secondVehicleValue",
          "label": "Value of any 2nd+ vehicle",
          "kind": "number"
        },
        {
          "id": "ableBalance",
          "label": "ABLE account balance",
          "kind": "number"
        },
        {
          "id": "burialFund",
          "label": "Designated burial funds",
          "kind": "number"
        },
        {
          "id": "status",
          "label": "Individual or couple",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "countable",
          "label": "Total countable resources"
        },
        {
          "id": "limit",
          "label": "Applicable resource limit"
        },
        {
          "id": "overBy",
          "label": "Amount over the limit (if any)"
        },
        {
          "id": "roomLeft",
          "label": "Room remaining under the limit"
        },
        {
          "id": "isOver",
          "label": "Over the limit? (1 = yes)"
        }
      ]
    },
    {
      "slug": "medicaid-spend-down",
      "url": "https://www.revenuelab.fyi/toolbox/medicaid-spend-down",
      "title": "Medicaid Spend-Down Calculator",
      "category": "financial",
      "summary": "Estimate how much income you need to spend on medical bills to qualify for Medicaid.",
      "formula": "Spend-down = (monthly income − MNIL) × budget period months.",
      "inputs": [
        {
          "id": "monthlyIncome",
          "label": "Countable monthly income",
          "kind": "number"
        },
        {
          "id": "mnil",
          "label": "State medically needy income level",
          "kind": "number"
        },
        {
          "id": "budgetMonths",
          "label": "Budget period length (months)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "spendDown",
          "label": "Spend-down amount for the budget period"
        },
        {
          "id": "monthlyExcess",
          "label": "Monthly income above MNIL"
        },
        {
          "id": "months",
          "label": "Budget period length"
        },
        {
          "id": "mnil",
          "label": "State medically needy income level used"
        }
      ]
    },
    {
      "slug": "chapter31-va-vre-stipend",
      "url": "https://www.revenuelab.fyi/toolbox/chapter31-va-vre-stipend",
      "title": "VA VR&E Subsistence Allowance Estimator",
      "category": "financial",
      "summary": "Estimate your monthly VA VR&E (Chapter 31) training subsistence payment.",
      "formula": "Subsistence allowance = base rate table lookup by (training intensity, dependent count), paid monthly during enrollment.",
      "inputs": [
        {
          "id": "intensity",
          "label": "Training intensity",
          "kind": "select"
        },
        {
          "id": "dependents",
          "label": "Dependents",
          "kind": "select"
        },
        {
          "id": "additionalDependents",
          "label": "Additional dependents beyond 2",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthly",
          "label": "Estimated monthly subsistence allowance"
        },
        {
          "id": "annual",
          "label": "Estimated annual amount (12 months)"
        },
        {
          "id": "base",
          "label": "Base rate for intensity/dependent tier"
        },
        {
          "id": "extra",
          "label": "Extra for additional dependents"
        }
      ]
    },
    {
      "slug": "csrs-pension-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/csrs-pension-estimate",
      "title": "CSRS Pension Estimate Calculator",
      "category": "financial",
      "summary": "Estimate your Civil Service Retirement System annuity for pre-1984 federal hires.",
      "formula": "Annuity = high-3 × (1.5% × first 5 yrs + 1.75% × next 5 yrs + 2% × remaining yrs), capped at 80% of high-3.",
      "inputs": [
        {
          "id": "high3",
          "label": "High-3 average salary",
          "kind": "number"
        },
        {
          "id": "yearsService",
          "label": "Years of creditable service",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annual",
          "label": "Estimated annual CSRS annuity"
        },
        {
          "id": "monthly",
          "label": "Estimated monthly CSRS annuity"
        },
        {
          "id": "pctUsed",
          "label": "Replacement percentage of high-3 (capped)"
        },
        {
          "id": "uncappedPct",
          "label": "Uncapped calculated percentage"
        }
      ]
    },
    {
      "slug": "social-security-survivor-benefit",
      "url": "https://www.revenuelab.fyi/toolbox/social-security-survivor-benefit",
      "title": "Social Security Survivor Benefit Calculator",
      "category": "financial",
      "summary": "Estimate a widow(er) or child survivor benefit from a deceased worker's record.",
      "formula": "Spouse survivor at FRA = 100% PIA (reduced for early claim to ~71.5% at 60); each child = 75% PIA; total capped at family max (~175-180% PIA).",
      "inputs": [
        {
          "id": "deceasedPIA",
          "label": "Deceased worker's PIA",
          "kind": "number"
        },
        {
          "id": "spouseClaimAge",
          "label": "Surviving spouse's claiming age",
          "kind": "number"
        },
        {
          "id": "numChildren",
          "label": "Number of eligible children",
          "kind": "number"
        },
        {
          "id": "familyMaxPct",
          "label": "Family maximum as % of PIA",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "finalSpouse",
          "label": "Surviving spouse benefit (after family max)"
        },
        {
          "id": "perChild",
          "label": "Per-child benefit (after family max)"
        },
        {
          "id": "finalChildTotal",
          "label": "Total for all children combined"
        },
        {
          "id": "familyMax",
          "label": "Family maximum benefit"
        },
        {
          "id": "rawTotal",
          "label": "Uncapped total before family max applied"
        }
      ]
    },
    {
      "slug": "owner-operator-cost-per-mile",
      "url": "https://www.revenuelab.fyi/toolbox/owner-operator-cost-per-mile",
      "title": "Owner-Operator Cost Per Mile Calculator",
      "category": "financial",
      "summary": "Fixed plus variable costs split across your monthly miles.",
      "formula": "Fixed CPM = monthly fixed ÷ monthly miles; Total CPM = Fixed CPM + variable CPM.",
      "inputs": [
        {
          "id": "truckPayment",
          "label": "Truck/trailer payment",
          "kind": "number"
        },
        {
          "id": "insurance",
          "label": "Insurance",
          "kind": "number"
        },
        {
          "id": "otherFixed",
          "label": "Permits, ELD, phone, misc fixed",
          "kind": "number"
        },
        {
          "id": "miles",
          "label": "Miles driven",
          "kind": "number"
        },
        {
          "id": "fuelCpm",
          "label": "Fuel cost per mile",
          "kind": "number"
        },
        {
          "id": "maintCpm",
          "label": "Maintenance + tires per mile",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalCpm",
          "label": "Total cost per mile"
        },
        {
          "id": "fixedCpm",
          "label": "Fixed cost per mile"
        },
        {
          "id": "varCpm",
          "label": "Variable cost per mile"
        },
        {
          "id": "totalMonthlyCost",
          "label": "Total monthly cost"
        },
        {
          "id": "breakEvenRate",
          "label": "Minimum rate to break even"
        }
      ]
    },
    {
      "slug": "deadhead-percentage-impact",
      "url": "https://www.revenuelab.fyi/toolbox/deadhead-percentage-impact",
      "title": "Deadhead Percentage Impact Calculator",
      "category": "financial",
      "summary": "See how empty miles quietly erase your per-mile profit.",
      "formula": "Total miles = loaded + deadhead; effective revenue/mi = (loaded miles × rate) ÷ total miles.",
      "inputs": [
        {
          "id": "loadedMiles",
          "label": "Loaded miles",
          "kind": "number"
        },
        {
          "id": "deadheadMiles",
          "label": "Deadhead (empty) miles",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Rate per loaded mile",
          "kind": "number"
        },
        {
          "id": "costCpm",
          "label": "All-in cost per mile",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "effRate",
          "label": "Effective rate per total mile"
        },
        {
          "id": "deadheadPct",
          "label": "Deadhead percentage"
        },
        {
          "id": "profit",
          "label": "Total trip profit"
        },
        {
          "id": "profitPerLoadedMile",
          "label": "Profit per loaded mile"
        },
        {
          "id": "revenue",
          "label": "Total revenue"
        },
        {
          "id": "cost",
          "label": "Total cost"
        }
      ]
    },
    {
      "slug": "fuel-surcharge-recovery",
      "url": "https://www.revenuelab.fyi/toolbox/fuel-surcharge-recovery",
      "title": "Fuel Surcharge Recovery Calculator",
      "category": "financial",
      "summary": "Recover rising diesel cost above your base fuel price assumption.",
      "formula": "Surcharge per mile = (current price − baseline price) ÷ MPG.",
      "inputs": [
        {
          "id": "currentPrice",
          "label": "Current diesel price",
          "kind": "number"
        },
        {
          "id": "basePrice",
          "label": "Contract baseline price",
          "kind": "number"
        },
        {
          "id": "mpg",
          "label": "Truck average MPG",
          "kind": "number"
        },
        {
          "id": "miles",
          "label": "Monthly miles",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "surchargeMile",
          "label": "Surcharge per mile"
        },
        {
          "id": "monthlySurcharge",
          "label": "Monthly surcharge recovery"
        },
        {
          "id": "gap",
          "label": "Price gap above baseline"
        },
        {
          "id": "gallonsPerMonth",
          "label": "Gallons burned per month"
        }
      ]
    },
    {
      "slug": "ifta-fuel-tax-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/ifta-fuel-tax-estimate",
      "title": "IFTA Fuel Tax Estimate Calculator",
      "category": "financial",
      "summary": "Rough net tax owed or refunded across your IFTA jurisdictions.",
      "formula": "Net tax = (total miles ÷ MPG − gallons purchased) × avg tax rate per gallon.",
      "inputs": [
        {
          "id": "totalMiles",
          "label": "Total miles this quarter",
          "kind": "number"
        },
        {
          "id": "gallonsPurchased",
          "label": "Gallons purchased (all jurisdictions)",
          "kind": "number"
        },
        {
          "id": "avgTaxRate",
          "label": "Average IFTA tax rate",
          "kind": "number"
        },
        {
          "id": "avgPurchasePrice",
          "label": "Average price paid per gallon (pre-tax basis)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netTax",
          "label": "Net IFTA tax due (+) / refund (−)"
        },
        {
          "id": "mpg",
          "label": "Fleet average MPG"
        },
        {
          "id": "gallonsConsumed",
          "label": "Gallons consumed (by miles)"
        },
        {
          "id": "netGallons",
          "label": "Net taxable gallon gap"
        },
        {
          "id": "totalFuelSpend",
          "label": "Total fuel spend this quarter"
        }
      ]
    },
    {
      "slug": "driver-pay-per-mile-vs-hourly",
      "url": "https://www.revenuelab.fyi/toolbox/driver-pay-per-mile-vs-hourly",
      "title": "Driver Pay Per Mile vs Hourly Calculator",
      "category": "financial",
      "summary": "Compare take-home pay under mileage vs hourly pay structures.",
      "formula": "Mileage pay = miles × rate/mi; Hourly pay = hours × rate/hr; compare effective rates.",
      "inputs": [
        {
          "id": "miles",
          "label": "Miles this week",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Hours worked this week",
          "kind": "number"
        },
        {
          "id": "cpmRate",
          "label": "Per-mile pay rate",
          "kind": "number"
        },
        {
          "id": "hourlyRate",
          "label": "Hourly pay rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "difference",
          "label": "Mileage pay minus hourly pay"
        },
        {
          "id": "mileagePay",
          "label": "Weekly pay under mileage"
        },
        {
          "id": "hourlyPay",
          "label": "Weekly pay under hourly"
        },
        {
          "id": "mileagePayEffHourly",
          "label": "Mileage pay's effective $/hr"
        },
        {
          "id": "hourlyPayEffCpm",
          "label": "Hourly pay's effective $/mi"
        }
      ]
    },
    {
      "slug": "detention-pay-recovery",
      "url": "https://www.revenuelab.fyi/toolbox/detention-pay-recovery",
      "title": "Detention Pay Recovery Calculator",
      "category": "financial",
      "summary": "What you're owed for wait time beyond free loading/unloading hours.",
      "formula": "Billable hours = max(0, total time − free hours), rounded to billing increment; pay = billable hours × rate.",
      "inputs": [
        {
          "id": "totalMinutes",
          "label": "Total time at facility",
          "kind": "number"
        },
        {
          "id": "freeHours",
          "label": "Free time allowed",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Detention rate",
          "kind": "number"
        },
        {
          "id": "increment",
          "label": "Billing increment",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "pay",
          "label": "Detention pay owed"
        },
        {
          "id": "billableHours",
          "label": "Billable hours (rounded)"
        },
        {
          "id": "waitedMinutes",
          "label": "Raw minutes over free time"
        }
      ]
    },
    {
      "slug": "factoring-fee-cost",
      "url": "https://www.revenuelab.fyi/toolbox/factoring-fee-cost",
      "title": "Freight Factoring Fee Cost Calculator",
      "category": "financial",
      "summary": "What factoring actually costs you in dollars and annualized rate.",
      "formula": "Fee $ = invoice × fee%; APR ≈ fee% × (365 ÷ days saved).",
      "inputs": [
        {
          "id": "invoiceAmount",
          "label": "Invoice amount",
          "kind": "number"
        },
        {
          "id": "feePct",
          "label": "Factoring fee",
          "kind": "number"
        },
        {
          "id": "normalDays",
          "label": "Days shipper would normally take to pay",
          "kind": "number"
        },
        {
          "id": "invoicesPerMonth",
          "label": "Invoices factored per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "feeDollars",
          "label": "Fee per invoice"
        },
        {
          "id": "apr",
          "label": "Implied annualized rate"
        },
        {
          "id": "netProceeds",
          "label": "Net proceeds received"
        },
        {
          "id": "monthlyCost",
          "label": "Total monthly factoring cost"
        },
        {
          "id": "annualCost",
          "label": "Total annual factoring cost"
        }
      ]
    },
    {
      "slug": "truck-lease-vs-buy",
      "url": "https://www.revenuelab.fyi/toolbox/truck-lease-vs-buy",
      "title": "Truck Lease vs Buy Calculator",
      "category": "financial",
      "summary": "Compare total cost of leasing vs financing a Class 8 truck.",
      "formula": "Buy net cost = down + payments − resale value; Lease net cost = lease payments + lease-end fees.",
      "inputs": [
        {
          "id": "termMonths",
          "label": "Comparison term",
          "kind": "number"
        },
        {
          "id": "leasePayment",
          "label": "Monthly lease payment",
          "kind": "number"
        },
        {
          "id": "leaseEndFee",
          "label": "Lease-end / disposition fee",
          "kind": "number"
        },
        {
          "id": "loanDown",
          "label": "Down payment (buy)",
          "kind": "number"
        },
        {
          "id": "loanPayment",
          "label": "Monthly loan payment",
          "kind": "number"
        },
        {
          "id": "resaleValue",
          "label": "Estimated resale value at term end",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "difference",
          "label": "Buy cost minus lease cost"
        },
        {
          "id": "leaseCost",
          "label": "Total net lease cost"
        },
        {
          "id": "buyCost",
          "label": "Total net buy cost (after resale)"
        }
      ]
    },
    {
      "slug": "truck-loan-payment",
      "url": "https://www.revenuelab.fyi/toolbox/truck-loan-payment",
      "title": "Commercial Truck Loan Payment Calculator",
      "category": "financial",
      "summary": "Monthly payment and total interest for a commercial truck loan.",
      "formula": "Payment = P × r(1+r)^n / ((1+r)^n − 1), where r = monthly rate, n = months.",
      "inputs": [
        {
          "id": "price",
          "label": "Truck price",
          "kind": "number"
        },
        {
          "id": "down",
          "label": "Down payment",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Interest rate (APR)",
          "kind": "number"
        },
        {
          "id": "termMonths",
          "label": "Loan term",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "payment",
          "label": "Monthly payment"
        },
        {
          "id": "totalInterest",
          "label": "Total interest paid"
        },
        {
          "id": "totalPaid",
          "label": "Total of all payments"
        },
        {
          "id": "principal",
          "label": "Amount financed"
        }
      ]
    },
    {
      "slug": "trailer-utilization-rate",
      "url": "https://www.revenuelab.fyi/toolbox/trailer-utilization-rate",
      "title": "Trailer Utilization Rate Calculator",
      "category": "financial",
      "summary": "How much of your trailer fleet's capacity is actually earning.",
      "formula": "Utilization % = loaded trailer-days ÷ available trailer-days; idle cost = idle days × daily fixed cost.",
      "inputs": [
        {
          "id": "trailers",
          "label": "Trailers in fleet",
          "kind": "number"
        },
        {
          "id": "periodDays",
          "label": "Period length",
          "kind": "number"
        },
        {
          "id": "loadedTrailerDays",
          "label": "Total loaded/moving trailer-days",
          "kind": "number"
        },
        {
          "id": "dailyFixedCost",
          "label": "Fixed cost per trailer per day",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "utilization",
          "label": "Trailer utilization rate"
        },
        {
          "id": "idleDays",
          "label": "Total idle trailer-days"
        },
        {
          "id": "idleCost",
          "label": "Cost of idle capacity"
        },
        {
          "id": "effectiveIdleTrailers",
          "label": "Effective idle trailers (avg)"
        }
      ]
    },
    {
      "slug": "maintenance-cost-per-mile-age",
      "url": "https://www.revenuelab.fyi/toolbox/maintenance-cost-per-mile-age",
      "title": "Maintenance Cost Per Mile by Truck Age Calculator",
      "category": "financial",
      "summary": "Project rising maintenance cost per mile as a truck ages.",
      "formula": "Projected CPM = base CPM × (1 + escalation rate)^(miles ÷ 100,000).",
      "inputs": [
        {
          "id": "baseCpm",
          "label": "Base maintenance CPM (new truck)",
          "kind": "number"
        },
        {
          "id": "currentMiles",
          "label": "Current odometer",
          "kind": "number"
        },
        {
          "id": "escalationPer100k",
          "label": "Cost escalation per 100k miles",
          "kind": "number"
        },
        {
          "id": "annualMiles",
          "label": "Annual miles driven",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "projectedCpm",
          "label": "Current projected maintenance CPM"
        },
        {
          "id": "projectedAnnualCost",
          "label": "Projected annual maintenance cost"
        },
        {
          "id": "nextYearCpm",
          "label": "Projected CPM one year from now"
        },
        {
          "id": "cpmIncrease",
          "label": "Year-over-year CPM increase"
        }
      ]
    },
    {
      "slug": "dot-compliance-cost",
      "url": "https://www.revenuelab.fyi/toolbox/dot-compliance-cost",
      "title": "DOT Compliance Cost Calculator",
      "category": "financial",
      "summary": "Annual per-truck cost of drug testing, ELD, IFTA, and inspections.",
      "formula": "Annual compliance cost = sum of recurring fees; monthly = annual ÷ 12.",
      "inputs": [
        {
          "id": "eld",
          "label": "ELD subscription",
          "kind": "number"
        },
        {
          "id": "drugConsortium",
          "label": "Drug/alcohol consortium",
          "kind": "number"
        },
        {
          "id": "annualInspection",
          "label": "Annual DOT inspection/BIT",
          "kind": "number"
        },
        {
          "id": "ucr",
          "label": "UCR registration",
          "kind": "number"
        },
        {
          "id": "irpIfta",
          "label": "IRP/IFTA admin & plates",
          "kind": "number"
        },
        {
          "id": "dqFiles",
          "label": "DQ file / compliance software",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthly",
          "label": "Compliance cost per truck"
        },
        {
          "id": "annual",
          "label": "Total annual compliance cost"
        },
        {
          "id": "perMileAt100k",
          "label": "Cost per mile at 100k mi/yr"
        }
      ]
    },
    {
      "slug": "insurance-cost-per-power-unit",
      "url": "https://www.revenuelab.fyi/toolbox/insurance-cost-per-power-unit",
      "title": "Trucking Insurance Cost Per Power Unit Calculator",
      "category": "financial",
      "summary": "Blend liability, cargo, and physical damage into one per-truck cost.",
      "formula": "Total annual premium = liability + cargo + physical damage + other; CPM = annual ÷ annual miles.",
      "inputs": [
        {
          "id": "liability",
          "label": "Primary liability",
          "kind": "number"
        },
        {
          "id": "cargo",
          "label": "Cargo insurance",
          "kind": "number"
        },
        {
          "id": "physicalDamage",
          "label": "Physical damage",
          "kind": "number"
        },
        {
          "id": "otherCoverage",
          "label": "Other (non-trucking, occ. accident)",
          "kind": "number"
        },
        {
          "id": "annualMiles",
          "label": "Annual miles",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annual",
          "label": "Total annual insurance cost"
        },
        {
          "id": "monthly",
          "label": "Monthly insurance cost"
        },
        {
          "id": "cpm",
          "label": "Insurance cost per mile"
        }
      ]
    },
    {
      "slug": "load-board-rate-vs-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/load-board-rate-vs-breakeven",
      "title": "Load Board Rate vs Breakeven Calculator",
      "category": "financial",
      "summary": "Instantly check if a posted rate covers your real cost.",
      "formula": "Margin = (rate × loaded miles) − (cost/mi × total miles); margin per loaded mile = margin ÷ loaded miles.",
      "inputs": [
        {
          "id": "postedRate",
          "label": "Posted rate per loaded mile",
          "kind": "number"
        },
        {
          "id": "loadedMiles",
          "label": "Loaded miles for this load",
          "kind": "number"
        },
        {
          "id": "deadheadToOrigin",
          "label": "Deadhead miles to reach pickup",
          "kind": "number"
        },
        {
          "id": "costCpm",
          "label": "Your cost per mile",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "margin",
          "label": "Load profit margin"
        },
        {
          "id": "marginPerLoadedMile",
          "label": "Margin per loaded mile"
        },
        {
          "id": "effRatePerTotalMile",
          "label": "Effective rate per total mile"
        },
        {
          "id": "revenue",
          "label": "Total revenue"
        },
        {
          "id": "cost",
          "label": "Total cost of trip"
        }
      ]
    },
    {
      "slug": "route-density-stops-per-hour",
      "url": "https://www.revenuelab.fyi/toolbox/route-density-stops-per-hour",
      "title": "Route Density Stops Per Hour Calculator",
      "category": "other",
      "summary": "Plan realistic route timing from stop count, distance, and dwell.",
      "formula": "Total time = (miles ÷ speed) + (stops × dwell); stops/hr = stops ÷ total hours.",
      "inputs": [
        {
          "id": "stops",
          "label": "Total stops",
          "kind": "number"
        },
        {
          "id": "routeMiles",
          "label": "Total route miles",
          "kind": "number"
        },
        {
          "id": "avgSpeed",
          "label": "Average speed between stops",
          "kind": "number"
        },
        {
          "id": "dwellMinutes",
          "label": "Average dwell per stop",
          "kind": "number"
        },
        {
          "id": "shiftHours",
          "label": "Available shift length",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "stopsPerHour",
          "label": "Stops per hour"
        },
        {
          "id": "totalHours",
          "label": "Total route time"
        },
        {
          "id": "driveHours",
          "label": "Drive time"
        },
        {
          "id": "dwellHours",
          "label": "Total dwell time"
        },
        {
          "id": "overShiftBy",
          "label": "Hours over available shift"
        }
      ]
    },
    {
      "slug": "van-fleet-replacement-cycle",
      "url": "https://www.revenuelab.fyi/toolbox/van-fleet-replacement-cycle",
      "title": "Van Fleet Replacement Cycle Calculator",
      "category": "financial",
      "summary": "Find the mileage or age point that minimizes total cost of ownership.",
      "formula": "Avg CPM = (depreciation + total maintenance) ÷ total miles at replacement age.",
      "inputs": [
        {
          "id": "purchasePrice",
          "label": "Van purchase price",
          "kind": "number"
        },
        {
          "id": "resaleAtCycle",
          "label": "Expected resale at replacement",
          "kind": "number"
        },
        {
          "id": "annualMiles",
          "label": "Annual miles per van",
          "kind": "number"
        },
        {
          "id": "replacementYears",
          "label": "Replacement cycle",
          "kind": "number"
        },
        {
          "id": "avgMaintPerYear",
          "label": "Average maintenance cost per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "avgCpm",
          "label": "Average total cost per mile"
        },
        {
          "id": "totalCost",
          "label": "Total cost over cycle"
        },
        {
          "id": "depreciation",
          "label": "Total depreciation"
        },
        {
          "id": "totalMaint",
          "label": "Total maintenance over cycle"
        },
        {
          "id": "annualCost",
          "label": "Average annual cost"
        }
      ]
    },
    {
      "slug": "ev-van-tco-vs-diesel",
      "url": "https://www.revenuelab.fyi/toolbox/ev-van-tco-vs-diesel",
      "title": "EV Delivery Van TCO vs Diesel Calculator",
      "category": "financial",
      "summary": "Total cost of ownership comparison over your holding period.",
      "formula": "Total cost = net purchase price + (annual miles × years × (energy CPM + maint CPM)); breakeven miles = price gap ÷ CPM savings.",
      "inputs": [
        {
          "id": "evPrice",
          "label": "EV van price (after incentives)",
          "kind": "number"
        },
        {
          "id": "dieselPrice",
          "label": "Diesel van price",
          "kind": "number"
        },
        {
          "id": "evCpm",
          "label": "EV energy + maintenance CPM",
          "kind": "number"
        },
        {
          "id": "dieselCpm",
          "label": "Diesel fuel + maintenance CPM",
          "kind": "number"
        },
        {
          "id": "annualMiles",
          "label": "Annual miles",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Holding period",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "savings",
          "label": "EV savings vs diesel over period"
        },
        {
          "id": "evTotal",
          "label": "Total EV cost"
        },
        {
          "id": "dieselTotal",
          "label": "Total diesel cost"
        },
        {
          "id": "breakevenMiles",
          "label": "Breakeven miles"
        },
        {
          "id": "breakevenYears",
          "label": "Breakeven at your annual mileage"
        }
      ]
    },
    {
      "slug": "empty-mile-fuel-cost",
      "url": "https://www.revenuelab.fyi/toolbox/empty-mile-fuel-cost",
      "title": "Empty Mile Fuel Cost Calculator",
      "category": "financial",
      "summary": "Dollar cost of running deadhead miles at current diesel prices.",
      "formula": "Fuel cost = deadhead miles ÷ empty MPG × price per gallon.",
      "inputs": [
        {
          "id": "deadheadMiles",
          "label": "Deadhead miles",
          "kind": "number"
        },
        {
          "id": "emptyMpg",
          "label": "Empty (unloaded) MPG",
          "kind": "number"
        },
        {
          "id": "dieselPrice",
          "label": "Diesel price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cost",
          "label": "Fuel cost of deadhead run"
        },
        {
          "id": "gallons",
          "label": "Gallons burned"
        },
        {
          "id": "costPerMile",
          "label": "Fuel cost per deadhead mile"
        }
      ]
    },
    {
      "slug": "truck-idle-time-cost",
      "url": "https://www.revenuelab.fyi/toolbox/truck-idle-time-cost",
      "title": "Truck Idle Time Fuel Cost Calculator",
      "category": "financial",
      "summary": "What idling for climate control and rest actually costs per year.",
      "formula": "Annual idle cost = idle hours/day × 365 × gal/hr × price/gal.",
      "inputs": [
        {
          "id": "idleHoursPerDay",
          "label": "Average idle hours per day",
          "kind": "number"
        },
        {
          "id": "idleGph",
          "label": "Idle fuel burn rate",
          "kind": "number"
        },
        {
          "id": "dieselPrice",
          "label": "Diesel price",
          "kind": "number"
        },
        {
          "id": "apuCost",
          "label": "APU/bunk heater investment",
          "kind": "number"
        },
        {
          "id": "apuFuelSavingsPct",
          "label": "Idle fuel reduction with APU",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualCost",
          "label": "Annual idle fuel cost"
        },
        {
          "id": "annualSavings",
          "label": "Annual savings with APU/heater"
        },
        {
          "id": "paybackYears",
          "label": "APU payback period"
        },
        {
          "id": "annualGallons",
          "label": "Annual idle gallons burned"
        }
      ]
    },
    {
      "slug": "cargo-claim-loss-ratio",
      "url": "https://www.revenuelab.fyi/toolbox/cargo-claim-loss-ratio",
      "title": "Cargo Claim Loss Ratio Calculator",
      "category": "financial",
      "summary": "Claims paid as a share of cargo premium — a key renewal metric.",
      "formula": "Loss ratio = total claims paid ÷ total premium paid, over the same period.",
      "inputs": [
        {
          "id": "claimsPaid",
          "label": "Total claims paid (period)",
          "kind": "number"
        },
        {
          "id": "premiumPaid",
          "label": "Total cargo premium paid (period)",
          "kind": "number"
        },
        {
          "id": "numClaims",
          "label": "Number of claims filed",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ratio",
          "label": "Loss ratio"
        },
        {
          "id": "avgClaim",
          "label": "Average claim size"
        },
        {
          "id": "netMargin",
          "label": "Premium minus claims paid"
        }
      ]
    },
    {
      "slug": "brokered-load-margin",
      "url": "https://www.revenuelab.fyi/toolbox/brokered-load-margin",
      "title": "Broker Load Margin Calculator",
      "category": "financial",
      "summary": "Broker's gross margin between shipper rate and carrier pay.",
      "formula": "Margin $ = shipper rate − carrier rate; margin % = margin ÷ shipper rate.",
      "inputs": [
        {
          "id": "shipperRate",
          "label": "Rate billed to shipper",
          "kind": "number"
        },
        {
          "id": "carrierRate",
          "label": "Rate paid to carrier",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "margin",
          "label": "Gross margin"
        },
        {
          "id": "marginPct",
          "label": "Margin percentage"
        },
        {
          "id": "carrierSharePct",
          "label": "Carrier's share of shipper rate"
        }
      ]
    },
    {
      "slug": "tire-cost-per-mile",
      "url": "https://www.revenuelab.fyi/toolbox/tire-cost-per-mile",
      "title": "Truck Tire Cost Per Mile Calculator",
      "category": "financial",
      "summary": "Cost per mile for a tire position over its expected tread life.",
      "formula": "Tire CPM = total cost ÷ tread-life miles; fleet tire CPM = tire CPM × number of tires.",
      "inputs": [
        {
          "id": "tireCost",
          "label": "Cost per new tire",
          "kind": "number"
        },
        {
          "id": "retreadCost",
          "label": "Cost per retread cycle",
          "kind": "number"
        },
        {
          "id": "retreadCycles",
          "label": "Expected retread cycles per casing",
          "kind": "number"
        },
        {
          "id": "treadLifeMiles",
          "label": "Miles per tread life (new or retread)",
          "kind": "number"
        },
        {
          "id": "tireCount",
          "label": "Tires on the truck/trailer combo",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "fleetTireCpm",
          "label": "Total tire cost per mile (all positions)"
        },
        {
          "id": "tireCpm",
          "label": "Cost per mile per single tire"
        },
        {
          "id": "totalCost",
          "label": "Total cost per casing over its life"
        },
        {
          "id": "totalMiles",
          "label": "Total miles per casing (new + retreads)"
        }
      ]
    },
    {
      "slug": "driver-turnover-cost",
      "url": "https://www.revenuelab.fyi/toolbox/driver-turnover-cost",
      "title": "Driver Turnover Cost Calculator",
      "category": "financial",
      "summary": "What replacing a driver actually costs from vacancy to ramp-up.",
      "formula": "Total cost = recruiting + orientation pay + (vacant days × daily truck revenue) + ramp-up productivity loss.",
      "inputs": [
        {
          "id": "recruitingCost",
          "label": "Recruiting/advertising cost per hire",
          "kind": "number"
        },
        {
          "id": "orientationPay",
          "label": "Orientation/training pay",
          "kind": "number"
        },
        {
          "id": "vacantDays",
          "label": "Days truck sits empty between drivers",
          "kind": "number"
        },
        {
          "id": "dailyTruckRevenue",
          "label": "Average daily revenue that truck generates",
          "kind": "number"
        },
        {
          "id": "rampUpLossPct",
          "label": "Productivity loss during first 60 days",
          "kind": "number"
        },
        {
          "id": "rampUpDailyRevenue",
          "label": "Daily revenue during ramp-up period",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total cost per driver turnover"
        },
        {
          "id": "vacancyLoss",
          "label": "Lost revenue from vacant seat"
        },
        {
          "id": "rampLoss",
          "label": "Ramp-up productivity loss"
        },
        {
          "id": "recruiting",
          "label": "Recruiting cost"
        },
        {
          "id": "orientation",
          "label": "Orientation/training pay"
        }
      ]
    },
    {
      "slug": "cost-per-stop-last-mile",
      "url": "https://www.revenuelab.fyi/toolbox/cost-per-stop-last-mile",
      "title": "Cost Per Stop Last-Mile Delivery Calculator",
      "category": "financial",
      "summary": "Blend vehicle, labor, and fuel cost into one cost-per-stop figure.",
      "formula": "Cost per stop = (labor cost + vehicle cost + fuel cost + handling cost) ÷ stops completed.",
      "inputs": [
        {
          "id": "laborCost",
          "label": "Driver labor cost for route",
          "kind": "number"
        },
        {
          "id": "vehicleCost",
          "label": "Vehicle fixed cost allocated to route",
          "kind": "number"
        },
        {
          "id": "fuelCost",
          "label": "Fuel cost for route",
          "kind": "number"
        },
        {
          "id": "handlingCostPerStop",
          "label": "Handling cost per stop (scanning, packaging)",
          "kind": "number"
        },
        {
          "id": "stops",
          "label": "Stops completed",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerStop",
          "label": "Cost per stop"
        },
        {
          "id": "total",
          "label": "Total route cost"
        },
        {
          "id": "fixed",
          "label": "Fixed route cost (labor+vehicle+fuel)"
        },
        {
          "id": "handling",
          "label": "Total handling cost"
        }
      ]
    },
    {
      "slug": "reefer-fuel-cost",
      "url": "https://www.revenuelab.fyi/toolbox/reefer-fuel-cost",
      "title": "Reefer Unit Fuel Cost Calculator",
      "category": "financial",
      "summary": "Diesel cost for running a reefer unit over a trip or month.",
      "formula": "Reefer fuel cost = run hours × gal/hr × price/gal.",
      "inputs": [
        {
          "id": "runHours",
          "label": "Reefer run hours",
          "kind": "number"
        },
        {
          "id": "burnRate",
          "label": "Operating mode",
          "kind": "select"
        },
        {
          "id": "dieselPrice",
          "label": "Diesel price",
          "kind": "number"
        },
        {
          "id": "miles",
          "label": "Trip miles (for CPM figure)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cost",
          "label": "Reefer fuel cost"
        },
        {
          "id": "gallons",
          "label": "Reefer gallons burned"
        },
        {
          "id": "costPerMile",
          "label": "Reefer fuel cost per mile"
        }
      ]
    },
    {
      "slug": "per-diem-tax-savings",
      "url": "https://www.revenuelab.fyi/toolbox/per-diem-tax-savings",
      "title": "Trucker Per Diem Tax Savings Calculator",
      "category": "financial",
      "summary": "Estimated tax savings from claiming the DOT per diem meal deduction.",
      "formula": "Deduction = nights away × per diem rate × deductible %; tax savings = deduction × marginal tax rate.",
      "inputs": [
        {
          "id": "nightsAway",
          "label": "Nights away from home (tax year)",
          "kind": "number"
        },
        {
          "id": "perDiemRate",
          "label": "Per diem rate",
          "kind": "number"
        },
        {
          "id": "deductiblePct",
          "label": "Deductible percentage of per diem",
          "kind": "number"
        },
        {
          "id": "marginalRate",
          "label": "Combined marginal tax rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "savings",
          "label": "Estimated tax savings"
        },
        {
          "id": "deduction",
          "label": "Total deductible amount"
        },
        {
          "id": "totalPerDiem",
          "label": "Total per diem before deductible %"
        }
      ]
    },
    {
      "slug": "heat-index-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/heat-index-calculator",
      "title": "Heat Index Calculator",
      "category": "other",
      "summary": "Feels-like temperature from air temp and humidity using the NWS Rothfusz regression.",
      "formula": "HI = -42.379 + 2.049×T + 10.143×RH − 0.225×T×RH − 6.838e-3×T² − 5.482e-2×RH² + 1.229e-3×T²×RH + 8.528e-4×T×RH² − 1.99e-6×T²×RH², with low/high-humidity adjustments applied per NWS convention.",
      "inputs": [
        {
          "id": "temp",
          "label": "Air temperature",
          "kind": "number"
        },
        {
          "id": "rh",
          "label": "Relative humidity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "HI",
          "label": "Heat index (feels like)"
        },
        {
          "id": "category",
          "label": "NWS risk category"
        },
        {
          "id": "diff",
          "label": "Degrees hotter than air temp"
        }
      ]
    },
    {
      "slug": "wind-chill-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/wind-chill-calculator",
      "title": "Wind Chill Calculator",
      "category": "other",
      "summary": "Feels-like cold temperature from air temp and wind speed using the NWS 2001 formula.",
      "formula": "WC = 35.74 + 0.6215×T − 35.75×V^0.16 + 0.4275×T×V^0.16, where T is °F and V is wind speed in mph.",
      "inputs": [
        {
          "id": "temp",
          "label": "Air temperature",
          "kind": "number"
        },
        {
          "id": "wind",
          "label": "Wind speed",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "WC",
          "label": "Wind chill (feels like)"
        },
        {
          "id": "diff",
          "label": "Degrees colder than air temp"
        },
        {
          "id": "frostbiteMin",
          "label": "Est. minutes to frostbite (-1 = low risk)"
        }
      ]
    },
    {
      "slug": "dew-point-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/dew-point-calculator",
      "title": "Dew Point Calculator",
      "category": "other",
      "summary": "Compute dew point and comfort level from temperature and relative humidity.",
      "formula": "α = ln(RH/100) + (17.625×T)/(243.04+T); dew point = 243.04×α / (17.625−α), computed in °C then converted to °F.",
      "inputs": [
        {
          "id": "temp",
          "label": "Air temperature",
          "kind": "number"
        },
        {
          "id": "rh",
          "label": "Relative humidity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "dpF",
          "label": "Dew point"
        },
        {
          "id": "dpC",
          "label": "Dew point (°C)"
        },
        {
          "id": "comfort",
          "label": "Comfort level"
        }
      ]
    },
    {
      "slug": "relative-humidity-wet-bulb",
      "url": "https://www.revenuelab.fyi/toolbox/relative-humidity-wet-bulb",
      "title": "Relative Humidity from Wet Bulb Calculator",
      "category": "other",
      "summary": "Estimate RH and dew point from dry bulb and wet bulb thermometer readings.",
      "formula": "Vapor pressure e = es(Tw) − A×P×(T−Tw), where A≈0.000662/°C, P is station pressure, es is saturation vapor pressure (Tetens equation); RH = e / es(T) × 100.",
      "inputs": [
        {
          "id": "dryBulb",
          "label": "Dry bulb temperature",
          "kind": "number"
        },
        {
          "id": "wetBulb",
          "label": "Wet bulb temperature",
          "kind": "number"
        },
        {
          "id": "pressure",
          "label": "Station pressure",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rh",
          "label": "Relative humidity"
        },
        {
          "id": "dpF",
          "label": "Dew point"
        }
      ]
    },
    {
      "slug": "heating-degree-days",
      "url": "https://www.revenuelab.fyi/toolbox/heating-degree-days",
      "title": "Heating Degree Days Calculator",
      "category": "other",
      "summary": "Estimate heating demand and fuel cost from daily average temperature vs. base 65°F.",
      "formula": "HDD = max(0, base − avg daily temp) × days; estimated fuel units = HDD × building factor ÷ efficiency; cost = units × price.",
      "inputs": [
        {
          "id": "avgTemp",
          "label": "Average outdoor temperature over period",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Number of days",
          "kind": "number"
        },
        {
          "id": "base",
          "label": "Base temperature",
          "kind": "number"
        },
        {
          "id": "buildingFactor",
          "label": "Fuel units per HDD (from past bill)",
          "kind": "number"
        },
        {
          "id": "efficiency",
          "label": "System efficiency (AFUE)",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Fuel price per unit (therm/gallon/kWh)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "hdd",
          "label": "Total heating degree days"
        },
        {
          "id": "units",
          "label": "Estimated fuel units needed"
        },
        {
          "id": "cost",
          "label": "Estimated heating cost"
        },
        {
          "id": "perDay",
          "label": "Average HDD per day"
        }
      ]
    },
    {
      "slug": "cooling-degree-days",
      "url": "https://www.revenuelab.fyi/toolbox/cooling-degree-days",
      "title": "Cooling Degree Days Calculator",
      "category": "other",
      "summary": "Estimate air conditioning demand and cost from average temperature above base 65°F.",
      "formula": "CDD = max(0, avg daily temp − base) × days; estimated kWh = CDD × building factor ÷ SEER-derived efficiency term; cost = kWh × rate.",
      "inputs": [
        {
          "id": "avgTemp",
          "label": "Average outdoor temperature over period",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Number of days",
          "kind": "number"
        },
        {
          "id": "base",
          "label": "Base temperature",
          "kind": "number"
        },
        {
          "id": "buildingFactor",
          "label": "kWh per CDD (from past bill)",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Electricity rate per kWh",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cdd",
          "label": "Total cooling degree days"
        },
        {
          "id": "kwh",
          "label": "Estimated AC electricity"
        },
        {
          "id": "cost",
          "label": "Estimated cooling cost"
        },
        {
          "id": "perDay",
          "label": "Average CDD per day"
        }
      ]
    },
    {
      "slug": "frost-date-growing-window",
      "url": "https://www.revenuelab.fyi/toolbox/frost-date-growing-window",
      "title": "Frost Date Growing Window Calculator",
      "category": "other",
      "summary": "Find your frost-free growing window and safe planting dates from local frost dates.",
      "formula": "Growing days = first fall frost − last spring frost; seed start date = last frost − weeks before transplant; harvest-by date = last frost + days to maturity.",
      "inputs": [
        {
          "id": "lastFrost",
          "label": "Average last spring frost date",
          "kind": "date"
        },
        {
          "id": "firstFrost",
          "label": "Average first fall frost date",
          "kind": "date"
        },
        {
          "id": "daysToMaturity",
          "label": "Crop days to maturity",
          "kind": "number"
        },
        {
          "id": "weeksBefore",
          "label": "Weeks to start seeds before transplant",
          "kind": "number"
        },
        {
          "id": "buffer",
          "label": "Safety buffer after last frost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "growingDays",
          "label": "Frost-free growing days"
        },
        {
          "id": "seedStart",
          "label": "Start seeds indoors by"
        },
        {
          "id": "transplantDate",
          "label": "Safe outdoor transplant date"
        },
        {
          "id": "harvestBy",
          "label": "Estimated harvest-ready date"
        },
        {
          "id": "fits",
          "label": "Fits before first fall frost?"
        }
      ]
    },
    {
      "slug": "roof-rainwater-harvest",
      "url": "https://www.revenuelab.fyi/toolbox/roof-rainwater-harvest",
      "title": "Rainwater Harvest Calculator",
      "category": "other",
      "summary": "Convert rainfall on your roof footprint into gallons collectible in a rain barrel or cistern.",
      "formula": "Gallons = roof footprint (sq ft) × rainfall (in) × 0.623 × collection efficiency.",
      "inputs": [
        {
          "id": "footprint",
          "label": "Roof footprint area",
          "kind": "number"
        },
        {
          "id": "rainfall",
          "label": "Rainfall amount",
          "kind": "number"
        },
        {
          "id": "efficiency",
          "label": "Collection efficiency",
          "kind": "number"
        },
        {
          "id": "barrelSize",
          "label": "Storage capacity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "gallons",
          "label": "Gallons collectible"
        },
        {
          "id": "perInch",
          "label": "Gallons per inch of rain"
        },
        {
          "id": "barrelsNeeded",
          "label": "Barrels needed to capture it all"
        },
        {
          "id": "overflow",
          "label": "Overflow past first barrel"
        }
      ]
    },
    {
      "slug": "snow-load-roof",
      "url": "https://www.revenuelab.fyi/toolbox/snow-load-roof",
      "title": "Snow Load on Roof Calculator",
      "category": "other",
      "summary": "Estimate ground and roof snow load in psf to check against your roof's rated capacity.",
      "formula": "Load (psf) = depth (ft) × density (lb/ft³); roof snow load = ground load × 0.7 (exposure) × thermal factor × importance factor.",
      "inputs": [
        {
          "id": "depth",
          "label": "Snow depth",
          "kind": "number"
        },
        {
          "id": "snowType",
          "label": "Snow type",
          "kind": "select"
        },
        {
          "id": "capacity",
          "label": "Roof rated capacity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "roofLoad",
          "label": "Estimated roof snow load"
        },
        {
          "id": "groundLoad",
          "label": "Ground-equivalent load"
        },
        {
          "id": "pctOfCapacity",
          "label": "% of rated roof capacity"
        },
        {
          "id": "status",
          "label": "Status"
        }
      ]
    },
    {
      "slug": "flood-depth-damage-cost",
      "url": "https://www.revenuelab.fyi/toolbox/flood-depth-damage-cost",
      "title": "Flood Depth-Damage Cost Estimator",
      "category": "financial",
      "summary": "Estimate structural and content damage cost from flood depth using FEMA-style curves.",
      "formula": "Damage % from depth-damage curve (one-story, no basement); structure cost = structure value × structure %; contents cost = contents value × contents %.",
      "inputs": [
        {
          "id": "depth",
          "label": "Flood depth above first floor",
          "kind": "number"
        },
        {
          "id": "structureValue",
          "label": "Home replacement value",
          "kind": "number"
        },
        {
          "id": "contentsValue",
          "label": "Contents value",
          "kind": "number"
        },
        {
          "id": "deductible",
          "label": "Insurance deductible",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated total damage"
        },
        {
          "id": "structCost",
          "label": "Structural damage estimate"
        },
        {
          "id": "contentsCost",
          "label": "Contents damage estimate"
        },
        {
          "id": "structPct",
          "label": "Structural damage %"
        },
        {
          "id": "outOfPocket",
          "label": "Out-of-pocket (deductible)"
        }
      ]
    },
    {
      "slug": "hurricane-deductible-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/hurricane-deductible-calculator",
      "title": "Hurricane Deductible Calculator",
      "category": "financial",
      "summary": "Convert a percentage-based hurricane deductible into actual dollars owed.",
      "formula": "Hurricane deductible ($) = dwelling coverage limit × hurricane deductible %; savings needed = hurricane deductible − standard deductible.",
      "inputs": [
        {
          "id": "dwellingCoverage",
          "label": "Dwelling coverage (Coverage A)",
          "kind": "number"
        },
        {
          "id": "hurricanePct",
          "label": "Hurricane deductible",
          "kind": "number"
        },
        {
          "id": "standardDeductible",
          "label": "Standard (all-other-perils) deductible",
          "kind": "number"
        },
        {
          "id": "claimEstimate",
          "label": "Estimated hurricane damage",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "hurricaneDed",
          "label": "Hurricane deductible owed"
        },
        {
          "id": "extraExposure",
          "label": "Extra vs. standard deductible"
        },
        {
          "id": "payout",
          "label": "Insurance payout on this claim"
        },
        {
          "id": "standardDed",
          "label": "Standard deductible (for reference)"
        }
      ]
    },
    {
      "slug": "wind-pressure-on-wall",
      "url": "https://www.revenuelab.fyi/toolbox/wind-pressure-on-wall",
      "title": "Wind Pressure on a Wall Calculator",
      "category": "other",
      "summary": "Estimate wind load force in psf and total pounds on a wall from wind speed.",
      "formula": "q = 0.00256 × V² (psf, V in mph); wall pressure = q × Cp (pressure coefficient); total force = pressure × wall area.",
      "inputs": [
        {
          "id": "windSpeed",
          "label": "Sustained wind speed",
          "kind": "number"
        },
        {
          "id": "cp",
          "label": "Pressure coefficient (Cp)",
          "kind": "number"
        },
        {
          "id": "wallArea",
          "label": "Wall area",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pressure",
          "label": "Wall pressure"
        },
        {
          "id": "totalForce",
          "label": "Total lateral force"
        },
        {
          "id": "tons",
          "label": "Total force (tons)"
        },
        {
          "id": "q",
          "label": "Basic velocity pressure (q)"
        }
      ]
    },
    {
      "slug": "uv-exposure-burn-time",
      "url": "https://www.revenuelab.fyi/toolbox/uv-exposure-burn-time",
      "title": "UV Exposure Burn Time Calculator",
      "category": "fitness-health",
      "summary": "Estimate minutes to sunburn based on UV index, skin type, and sunscreen SPF.",
      "formula": "Burn time (min) = (base MED minutes for skin type ÷ UV index) × effective SPF factor × surface reflection adjustment.",
      "inputs": [
        {
          "id": "skinType",
          "label": "Skin type (Fitzpatrick)",
          "kind": "select"
        },
        {
          "id": "uvIndex",
          "label": "UV index",
          "kind": "number"
        },
        {
          "id": "spf",
          "label": "Sunscreen SPF (0 = none)",
          "kind": "number"
        },
        {
          "id": "surface",
          "label": "Surface reflection",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "withProtection",
          "label": "Est. burn time with sunscreen"
        },
        {
          "id": "noProtection",
          "label": "Burn time with no protection"
        },
        {
          "id": "reapply",
          "label": "Suggested reapplication interval"
        }
      ]
    },
    {
      "slug": "air-quality-exposure-equivalent",
      "url": "https://www.revenuelab.fyi/toolbox/air-quality-exposure-equivalent",
      "title": "Air Quality Exposure Equivalent Calculator",
      "category": "fitness-health",
      "summary": "Convert PM2.5 air pollution exposure into a cigarette-equivalent for intuitive comparison.",
      "formula": "Cigarette-equivalent = (PM2.5 µg/m³ × exposure hours ÷ 24) ÷ 22. AQI category from EPA PM2.5 breakpoints.",
      "inputs": [
        {
          "id": "pm25",
          "label": "PM2.5 concentration",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Exposure duration",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cigEquiv",
          "label": "Cigarette-equivalent exposure"
        },
        {
          "id": "category",
          "label": "EPA AQI category (PM2.5)"
        },
        {
          "id": "dailyDose",
          "label": "24-hr equivalent PM2.5 dose"
        }
      ]
    },
    {
      "slug": "carbon-footprint-flight",
      "url": "https://www.revenuelab.fyi/toolbox/carbon-footprint-flight",
      "title": "Flight Carbon Footprint Calculator",
      "category": "other",
      "summary": "Estimate CO2 emissions per passenger for a flight by distance and cabin class.",
      "formula": "CO2e = distance (mi) × emission factor by haul length × class multiplier × radiative forcing factor (1.9) ÷ 1000 (kg to tonnes conversion applied at display).",
      "inputs": [
        {
          "id": "distance",
          "label": "Flight distance",
          "kind": "number"
        },
        {
          "id": "cabinClass",
          "label": "Cabin class",
          "kind": "select"
        },
        {
          "id": "roundTrip",
          "label": "Trip type",
          "kind": "select"
        },
        {
          "id": "passengers",
          "label": "Number of passengers",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalKg",
          "label": "Total CO2e emissions (kg)"
        },
        {
          "id": "kgPerPax",
          "label": "Per passenger per leg (kg)"
        },
        {
          "id": "tonnes",
          "label": "Total (metric tonnes)"
        },
        {
          "id": "treesNeeded",
          "label": "Tree-years to offset"
        }
      ]
    },
    {
      "slug": "carbon-footprint-drive",
      "url": "https://www.revenuelab.fyi/toolbox/carbon-footprint-drive",
      "title": "Driving Carbon Footprint Calculator",
      "category": "other",
      "summary": "Estimate CO2 emissions from a car trip based on distance, fuel economy, and fuel type.",
      "formula": "Gas/diesel: gallons = miles ÷ MPG; CO2 = gallons × factor (8.887 kg/gal gas, 10.18 kg/gal diesel). EV: CO2 = (miles ÷ miles-per-kWh) × grid intensity.",
      "inputs": [
        {
          "id": "fuelType",
          "label": "Fuel type",
          "kind": "select"
        },
        {
          "id": "distance",
          "label": "Trip distance",
          "kind": "number"
        },
        {
          "id": "mpg",
          "label": "Fuel economy (MPG or mi/kWh)",
          "kind": "number"
        },
        {
          "id": "gridIntensity",
          "label": "Grid carbon intensity (EV only)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalKg",
          "label": "Total CO2 emissions (kg)"
        },
        {
          "id": "unitsUsed",
          "label": "Fuel/electricity used (gal or kWh)"
        },
        {
          "id": "perMile",
          "label": "CO2 per mile (kg)"
        },
        {
          "id": "tonnes",
          "label": "Total (metric tonnes)"
        }
      ]
    },
    {
      "slug": "carbon-footprint-home",
      "url": "https://www.revenuelab.fyi/toolbox/carbon-footprint-home",
      "title": "Home Carbon Footprint Calculator",
      "category": "other",
      "summary": "Estimate annual household CO2 emissions from electricity, natural gas, and heating fuel use.",
      "formula": "CO2 = (kWh × grid intensity) + (therms × 5.3 kg/therm) + (heating oil gallons × 10.16 kg/gal).",
      "inputs": [
        {
          "id": "kwh",
          "label": "Annual electricity use",
          "kind": "number"
        },
        {
          "id": "gridIntensity",
          "label": "Grid carbon intensity",
          "kind": "number"
        },
        {
          "id": "therms",
          "label": "Annual natural gas use",
          "kind": "number"
        },
        {
          "id": "oilGallons",
          "label": "Annual heating oil use",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalKg",
          "label": "Total annual home CO2 (kg)"
        },
        {
          "id": "tonnes",
          "label": "Total (metric tonnes)"
        },
        {
          "id": "elecKg",
          "label": "From electricity"
        },
        {
          "id": "gasKg",
          "label": "From natural gas"
        },
        {
          "id": "oilKg",
          "label": "From heating oil"
        }
      ]
    },
    {
      "slug": "tree-carbon-offset",
      "url": "https://www.revenuelab.fyi/toolbox/tree-carbon-offset",
      "title": "Tree Carbon Offset Calculator",
      "category": "other",
      "summary": "Estimate how many trees and years are needed to offset a given amount of CO2.",
      "formula": "Trees needed = target CO2 (kg) ÷ (annual absorption per tree × offset period years); accounts for maturity ramp-up factor of ~40% for young trees.",
      "inputs": [
        {
          "id": "targetCO2",
          "label": "CO2 to offset",
          "kind": "number"
        },
        {
          "id": "absorptionRate",
          "label": "CO2 absorbed per mature tree",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Offset time horizon",
          "kind": "number"
        },
        {
          "id": "maturityFactor",
          "label": "Average maturity factor (young trees absorb less)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "treesNeeded",
          "label": "Trees needed to offset annual amount"
        },
        {
          "id": "effectivePerTreePerYear",
          "label": "Effective CO2 per tree per year"
        },
        {
          "id": "totalCapacity",
          "label": "Total CO2 absorbed over period"
        },
        {
          "id": "acreage",
          "label": "Approx. acres needed (435 trees/acre)"
        }
      ]
    },
    {
      "slug": "evapotranspiration-irrigation",
      "url": "https://www.revenuelab.fyi/toolbox/evapotranspiration-irrigation",
      "title": "Evapotranspiration Irrigation Calculator",
      "category": "other",
      "summary": "Estimate weekly irrigation needs from reference ET, crop coefficient, and rainfall.",
      "formula": "ETc = ETo × Kc; net irrigation need = ETc − effective rainfall; gallons = net need (in) × area (sq ft) × 0.623.",
      "inputs": [
        {
          "id": "eto",
          "label": "Reference ET (weekly)",
          "kind": "number"
        },
        {
          "id": "kc",
          "label": "Crop coefficient (Kc)",
          "kind": "number"
        },
        {
          "id": "rainfall",
          "label": "Effective rainfall this week",
          "kind": "number"
        },
        {
          "id": "area",
          "label": "Irrigated area",
          "kind": "number"
        },
        {
          "id": "systemEfficiency",
          "label": "Irrigation system efficiency",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "gallons",
          "label": "Gallons to apply this week"
        },
        {
          "id": "grossNeed",
          "label": "Gross irrigation depth"
        },
        {
          "id": "netNeed",
          "label": "Net irrigation need (after rain)"
        },
        {
          "id": "etc",
          "label": "Crop evapotranspiration (ETc)"
        }
      ]
    },
    {
      "slug": "wbgt-heat-stress",
      "url": "https://www.revenuelab.fyi/toolbox/wbgt-heat-stress",
      "title": "WBGT Heat Stress Calculator",
      "category": "fitness-health",
      "summary": "Estimate Wet Bulb Globe Temperature and safe work/exercise guidance in the sun.",
      "formula": "WBGT ≈ 0.7×Tw + 0.2×Tg + 0.1×Td, approximated here from T and RH using a natural wet bulb estimate and a sun-exposure globe temperature adjustment.",
      "inputs": [
        {
          "id": "temp",
          "label": "Air temperature",
          "kind": "number"
        },
        {
          "id": "rh",
          "label": "Relative humidity",
          "kind": "number"
        },
        {
          "id": "sun",
          "label": "Sun exposure",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "wbgtF",
          "label": "Estimated WBGT"
        },
        {
          "id": "wbgtC",
          "label": "WBGT (°C)"
        },
        {
          "id": "flag",
          "label": "Activity flag guidance"
        }
      ]
    },
    {
      "slug": "lightning-distance-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/lightning-distance-calculator",
      "title": "Lightning Distance Calculator",
      "category": "other",
      "summary": "Estimate how far away a lightning strike is using the flash-to-bang time delay.",
      "formula": "Distance (mi) = seconds ÷ 5 (approx); distance (km) = seconds ÷ 3; based on sound speed of ~1,125 ft/s.",
      "inputs": [
        {
          "id": "seconds",
          "label": "Seconds between flash and thunder",
          "kind": "number"
        },
        {
          "id": "tempF",
          "label": "Air temperature (affects sound speed)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "distanceMi",
          "label": "Estimated distance"
        },
        {
          "id": "distanceKm",
          "label": "Distance (km)"
        },
        {
          "id": "speedFtPerSec",
          "label": "Speed of sound used (ft/s)"
        },
        {
          "id": "safety",
          "label": "Safety guidance"
        }
      ]
    },
    {
      "slug": "solar-noon-shadow-length",
      "url": "https://www.revenuelab.fyi/toolbox/solar-noon-shadow-length",
      "title": "Solar Shadow Length Calculator",
      "category": "other",
      "summary": "Estimate solar elevation angle and shadow length by latitude, date, and time of day.",
      "formula": "Declination δ = 23.45°×sin(360×(284+n)/365); hour angle H = 15°×(hours from solar noon); elevation = asin(sin(lat)sin(δ)+cos(lat)cos(δ)cos(H)); shadow length = object height ÷ tan(elevation).",
      "inputs": [
        {
          "id": "latitude",
          "label": "Latitude",
          "kind": "number"
        },
        {
          "id": "dayOfYear",
          "label": "Day of year (1-365)",
          "kind": "number"
        },
        {
          "id": "hoursFromNoon",
          "label": "Hours from solar noon",
          "kind": "number"
        },
        {
          "id": "objectHeight",
          "label": "Object height",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "shadow",
          "label": "Shadow length (-1 = sun below horizon)"
        },
        {
          "id": "elevDeg",
          "label": "Sun elevation angle"
        },
        {
          "id": "declDeg",
          "label": "Solar declination"
        }
      ]
    },
    {
      "slug": "barometric-pressure-altitude",
      "url": "https://www.revenuelab.fyi/toolbox/barometric-pressure-altitude",
      "title": "Barometric Pressure Altitude Calculator",
      "category": "other",
      "summary": "Convert station pressure and temperature into pressure altitude and density altitude.",
      "formula": "Pressure altitude (ft) = (29.92 − station pressure) × 1000 + field elevation. Density altitude ≈ pressure altitude + 120 × (OAT − ISA temp at that altitude).",
      "inputs": [
        {
          "id": "elevation",
          "label": "Field elevation",
          "kind": "number"
        },
        {
          "id": "pressure",
          "label": "Station (altimeter) pressure",
          "kind": "number"
        },
        {
          "id": "tempF",
          "label": "Outside air temperature",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "densityAlt",
          "label": "Density altitude"
        },
        {
          "id": "pressureAlt",
          "label": "Pressure altitude"
        },
        {
          "id": "isaTempF",
          "label": "Standard (ISA) temp at this altitude"
        },
        {
          "id": "deltaFromIsa",
          "label": "Degrees above/below ISA standard"
        }
      ]
    },
    {
      "slug": "drought-water-deficit",
      "url": "https://www.revenuelab.fyi/toolbox/drought-water-deficit",
      "title": "Drought Water Deficit Calculator",
      "category": "other",
      "summary": "Track cumulative rainfall deficit against normal to gauge drought severity.",
      "formula": "Deficit (in) = normal rainfall − actual rainfall; percent of normal = (actual ÷ normal) × 100.",
      "inputs": [
        {
          "id": "actual",
          "label": "Actual rainfall over period",
          "kind": "number"
        },
        {
          "id": "normal",
          "label": "Normal rainfall for same period",
          "kind": "number"
        },
        {
          "id": "reservoirCapacity",
          "label": "Local reservoir capacity (optional)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pctOfNormal",
          "label": "% of normal rainfall"
        },
        {
          "id": "deficit",
          "label": "Rainfall deficit"
        },
        {
          "id": "severity",
          "label": "Approximate drought severity"
        }
      ]
    },
    {
      "slug": "storm-surge-elevation-risk",
      "url": "https://www.revenuelab.fyi/toolbox/storm-surge-elevation-risk",
      "title": "Storm Surge Elevation Risk Calculator",
      "category": "other",
      "summary": "Compare your property's elevation to forecast storm surge height to estimate flood risk.",
      "formula": "Water level at property = surge height (AGL) + wave setup allowance − property elevation above local reference datum; positive = flooding expected.",
      "inputs": [
        {
          "id": "propertyElevation",
          "label": "Property elevation above sea level",
          "kind": "number"
        },
        {
          "id": "surgeForecast",
          "label": "Forecast storm surge height (above ground)",
          "kind": "number"
        },
        {
          "id": "waveAllowance",
          "label": "Additional wave action allowance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netDepth",
          "label": "Est. water depth at property (ft)"
        },
        {
          "id": "totalWaterLevel",
          "label": "Total surge + wave water level"
        },
        {
          "id": "risk",
          "label": "Risk category"
        }
      ]
    },
    {
      "slug": "odds-format-converter",
      "url": "https://www.revenuelab.fyi/toolbox/odds-format-converter",
      "title": "Odds Format Converter (American, Decimal, Fractional)",
      "category": "math",
      "summary": "Convert American, decimal, and fractional betting odds instantly.",
      "formula": "Decimal = 1 + (American/100) if positive, or 1 + (100/|American|) if negative. Fractional ≈ decimal − 1, reduced to lowest terms. Implied probability = 1 ÷ decimal.",
      "inputs": [
        {
          "id": "format",
          "label": "Input format",
          "kind": "select"
        },
        {
          "id": "american",
          "label": "American odds",
          "kind": "number"
        },
        {
          "id": "decimal",
          "label": "Decimal odds",
          "kind": "number"
        },
        {
          "id": "stake",
          "label": "Stake to illustrate payout",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "decimal",
          "label": "Decimal odds"
        },
        {
          "id": "american",
          "label": "American odds"
        },
        {
          "id": "fractional",
          "label": "Fractional odds"
        },
        {
          "id": "implied",
          "label": "Implied probability"
        },
        {
          "id": "profit",
          "label": "Profit on stake"
        },
        {
          "id": "payout",
          "label": "Total payout (stake + profit)"
        }
      ]
    },
    {
      "slug": "implied-probability-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/implied-probability-calculator",
      "title": "Implied Probability Calculator",
      "category": "math",
      "summary": "See the win probability a betting line is actually pricing in.",
      "formula": "Implied probability = 100 ÷ (American + 100) for positive odds, or |American| ÷ (|American| + 100) for negative odds. Overround = sum of both sides' implied probabilities − 100%.",
      "inputs": [
        {
          "id": "sideA",
          "label": "Side A odds (American)",
          "kind": "number"
        },
        {
          "id": "sideB",
          "label": "Side B odds (American)",
          "kind": "number"
        },
        {
          "id": "yourProb",
          "label": "Your estimated true probability for Side A",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "impliedA",
          "label": "Implied probability — Side A"
        },
        {
          "id": "impliedB",
          "label": "Implied probability — Side B"
        },
        {
          "id": "overround",
          "label": "Market overround (vig)"
        },
        {
          "id": "fairA",
          "label": "Vig-free fair probability — Side A"
        },
        {
          "id": "edge",
          "label": "Your edge vs. market (Side A)"
        }
      ]
    },
    {
      "slug": "no-vig-fair-odds",
      "url": "https://www.revenuelab.fyi/toolbox/no-vig-fair-odds",
      "title": "No-Vig Fair Odds Calculator",
      "category": "math",
      "summary": "Strip the sportsbook's hold out of a two-way line to find fair odds.",
      "formula": "Fair probability(side) = implied probability(side) ÷ sum of both implied probabilities. Fair American odds are then derived by inverting that fair probability back through the odds formula.",
      "inputs": [
        {
          "id": "sideA",
          "label": "Side A odds (American)",
          "kind": "number"
        },
        {
          "id": "sideB",
          "label": "Side B odds (American)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "fairAmericanA",
          "label": "Fair odds — Side A"
        },
        {
          "id": "fairAmericanB",
          "label": "Fair odds — Side B"
        },
        {
          "id": "fairProbA",
          "label": "Fair probability — Side A"
        },
        {
          "id": "fairProbB",
          "label": "Fair probability — Side B"
        },
        {
          "id": "hold",
          "label": "Book hold removed"
        }
      ]
    },
    {
      "slug": "hedge-bet-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/hedge-bet-calculator",
      "title": "Hedge Bet Calculator",
      "category": "math",
      "summary": "Find the hedge stake that locks in a guaranteed profit either way.",
      "formula": "Hedge stake = (original stake × original decimal odds) ÷ hedge decimal odds. Equal profit on both sides when hedge stake exactly offsets the original payout.",
      "inputs": [
        {
          "id": "origStake",
          "label": "Original bet stake",
          "kind": "number"
        },
        {
          "id": "origOdds",
          "label": "Original bet odds (American)",
          "kind": "number"
        },
        {
          "id": "hedgeOdds",
          "label": "Current hedge odds (American, other side)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "hedgeStake",
          "label": "Hedge stake needed"
        },
        {
          "id": "guaranteedProfit",
          "label": "Guaranteed profit (locked)"
        },
        {
          "id": "profitIfOrigWins",
          "label": "Profit if original bet wins"
        },
        {
          "id": "profitIfHedgeWins",
          "label": "Profit if hedge bet wins"
        },
        {
          "id": "origPayout",
          "label": "Original bet total payout"
        }
      ]
    },
    {
      "slug": "arbitrage-stake-split",
      "url": "https://www.revenuelab.fyi/toolbox/arbitrage-stake-split",
      "title": "Arbitrage Stake Split Calculator",
      "category": "math",
      "summary": "Split stakes across two books to lock in profit from a pricing gap.",
      "formula": "Stake on side A = bankroll × (implied probability A ÷ total implied probability). Guaranteed return = bankroll ÷ total implied probability. Arb % = 100 − total implied probability × 100.",
      "inputs": [
        {
          "id": "bankroll",
          "label": "Total amount to stake",
          "kind": "number"
        },
        {
          "id": "oddsA",
          "label": "Best odds, Side A (American)",
          "kind": "number"
        },
        {
          "id": "oddsB",
          "label": "Best odds, Side B (American)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "arbPercent",
          "label": "Arbitrage margin"
        },
        {
          "id": "stakeA",
          "label": "Stake on Side A"
        },
        {
          "id": "stakeB",
          "label": "Stake on Side B"
        },
        {
          "id": "guaranteedProfit",
          "label": "Guaranteed profit"
        },
        {
          "id": "guaranteedReturn",
          "label": "Guaranteed total return"
        }
      ]
    },
    {
      "slug": "expected-value-bet-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/expected-value-bet-calculator",
      "title": "Expected Value (EV) Bet Calculator",
      "category": "math",
      "summary": "Find the dollar EV of a wager given your true win probability.",
      "formula": "EV = (probability of winning × profit if win) − (probability of losing × stake). EV% = EV ÷ stake × 100.",
      "inputs": [
        {
          "id": "stake",
          "label": "Stake",
          "kind": "number"
        },
        {
          "id": "odds",
          "label": "Odds offered (American)",
          "kind": "number"
        },
        {
          "id": "trueProb",
          "label": "Your estimated true win probability",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ev",
          "label": "Expected value per bet"
        },
        {
          "id": "evPercent",
          "label": "EV as % of stake"
        },
        {
          "id": "breakeven",
          "label": "Break-even win probability"
        },
        {
          "id": "edgeVsBreakeven",
          "label": "Your edge vs. break-even"
        },
        {
          "id": "potentialProfit",
          "label": "Profit if bet wins"
        }
      ]
    },
    {
      "slug": "breakeven-win-rate-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/breakeven-win-rate-calculator",
      "title": "Break-Even Win Rate Calculator (-110 and Beyond)",
      "category": "math",
      "summary": "The win percentage you need at any odds just to break even.",
      "formula": "Break-even win rate = |American odds| ÷ (|American odds| + 100) for negative odds, or 100 ÷ (American odds + 100) for positive odds.",
      "inputs": [
        {
          "id": "odds",
          "label": "American odds",
          "kind": "number"
        },
        {
          "id": "sampleSize",
          "label": "Bets to project",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakeven",
          "label": "Break-even win rate"
        },
        {
          "id": "winsNeeded",
          "label": "Wins needed per sample"
        },
        {
          "id": "losses",
          "label": "Losses allowed per sample"
        },
        {
          "id": "roiAt55",
          "label": "ROI if you actually win 55%"
        }
      ]
    },
    {
      "slug": "teaser-pleaser-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/teaser-pleaser-calculator",
      "title": "Teaser & Pleaser Math Calculator",
      "category": "math",
      "summary": "See adjusted payouts and break-even rates for NFL teasers and pleasers.",
      "formula": "Break-even per-leg win rate = (1 ÷ decimal payout)^(1/legs). Total parlay probability needed = break-even^legs = 1 ÷ decimal payout.",
      "inputs": [
        {
          "id": "legs",
          "label": "Number of legs",
          "kind": "number"
        },
        {
          "id": "payoutOdds",
          "label": "Teaser/pleaser payout (American)",
          "kind": "number"
        },
        {
          "id": "stake",
          "label": "Stake",
          "kind": "number"
        },
        {
          "id": "estWinRate",
          "label": "Your estimated per-leg win rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perLegBreakeven",
          "label": "Break-even win rate per leg"
        },
        {
          "id": "parlayWinProb",
          "label": "Estimated full-ticket win probability"
        },
        {
          "id": "payoutProfit",
          "label": "Profit if ticket wins"
        },
        {
          "id": "ev",
          "label": "Expected value at your estimate"
        }
      ]
    },
    {
      "slug": "futures-bet-hold-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/futures-bet-hold-calculator",
      "title": "Futures Bet Hold Calculator",
      "category": "math",
      "summary": "See how much total vig a futures board (all teams/players) is holding.",
      "formula": "Hold = (sum of all implied probabilities on the board) − 100%. Fair probability for one entry = its implied probability ÷ total implied probability.",
      "inputs": [
        {
          "id": "totalImplied",
          "label": "Sum of implied probability across entire board",
          "kind": "number"
        },
        {
          "id": "entryOdds",
          "label": "Your team/player's odds (American)",
          "kind": "number"
        },
        {
          "id": "stake",
          "label": "Stake",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "hold",
          "label": "Total board hold"
        },
        {
          "id": "entryImplied",
          "label": "Your entry's raw implied probability"
        },
        {
          "id": "fairProb",
          "label": "Your entry's vig-free fair probability"
        },
        {
          "id": "payoutIfWin",
          "label": "Total payout if it wins"
        }
      ]
    },
    {
      "slug": "risk-of-ruin-bankroll-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/risk-of-ruin-bankroll-calculator",
      "title": "Bankroll Risk of Ruin Calculator",
      "category": "math",
      "summary": "Estimate the odds of busting your bankroll at a given edge and bet size.",
      "formula": "For edge-based sizing, risk of ruin ≈ ((1−p)/p)^(bankroll ÷ betSize) using the win/loss ratio, adjusted for payout odds b via q/p when b=1; for general b, ruin risk uses the recursive gambler's ruin formula approximated here via the edge-to-variance ratio.",
      "inputs": [
        {
          "id": "winProb",
          "label": "Win probability",
          "kind": "number"
        },
        {
          "id": "odds",
          "label": "Odds per bet (American)",
          "kind": "number"
        },
        {
          "id": "betPercent",
          "label": "Bet size as % of bankroll",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ruinProb",
          "label": "Estimated risk of ruin"
        },
        {
          "id": "survivalProb",
          "label": "Estimated survival probability"
        },
        {
          "id": "edge",
          "label": "Per-bet edge"
        },
        {
          "id": "units",
          "label": "Bankroll measured in bet-sized units"
        }
      ]
    },
    {
      "slug": "fantasy-league-payout-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/fantasy-league-payout-calculator",
      "title": "Fantasy League Payout Split Calculator",
      "category": "financial",
      "summary": "Split your league's total prize pool across places and side pots fairly.",
      "formula": "Each place's payout = pool × its percentage share, after subtracting any flat side-pot amounts first. Percentages must sum to 100% of the remaining pool.",
      "inputs": [
        {
          "id": "teams",
          "label": "Number of teams",
          "kind": "number"
        },
        {
          "id": "buyIn",
          "label": "Buy-in per team",
          "kind": "number"
        },
        {
          "id": "sidePot",
          "label": "Side pot (weekly high score, etc.) — flat $ off the top",
          "kind": "number"
        },
        {
          "id": "firstPct",
          "label": "1st place %",
          "kind": "number"
        },
        {
          "id": "secondPct",
          "label": "2nd place %",
          "kind": "number"
        },
        {
          "id": "thirdPct",
          "label": "3rd place %",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pool",
          "label": "Total prize pool"
        },
        {
          "id": "first",
          "label": "1st place payout"
        },
        {
          "id": "second",
          "label": "2nd place payout"
        },
        {
          "id": "third",
          "label": "3rd place payout"
        },
        {
          "id": "remaining",
          "label": "Pool after side pots removed"
        },
        {
          "id": "pctSum",
          "label": "Your percentages total (should be 100%)"
        }
      ]
    },
    {
      "slug": "dfs-breakeven-roi-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/dfs-breakeven-roi-calculator",
      "title": "DFS Breakeven ROI Calculator",
      "category": "financial",
      "summary": "Find the cash/win rate you need to profit after DFS rake and entry fees.",
      "formula": "Breakeven cash rate (50/50s) = 100 ÷ (2 × (1 − rake)). Expected ROI = (cash rate × avg multiplier) − 1, expressed as a percentage of entry fee.",
      "inputs": [
        {
          "id": "contestType",
          "label": "Contest type",
          "kind": "select"
        },
        {
          "id": "rake",
          "label": "Site rake / vig",
          "kind": "number"
        },
        {
          "id": "entryFee",
          "label": "Entry fee",
          "kind": "number"
        },
        {
          "id": "yourCashRate",
          "label": "Your actual cash rate",
          "kind": "number"
        },
        {
          "id": "avgMultiplier",
          "label": "Average payout multiplier when you cash (GPP only)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakeven",
          "label": "Breakeven cash rate needed"
        },
        {
          "id": "roi",
          "label": "Your ROI at current cash rate"
        },
        {
          "id": "edge",
          "label": "Cash rate edge above breakeven"
        },
        {
          "id": "profitPer100Entries",
          "label": "Est. profit per 100 entries at this fee"
        }
      ]
    },
    {
      "slug": "season-win-total-ev-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/season-win-total-ev-calculator",
      "title": "Season Win Total EV Calculator",
      "category": "math",
      "summary": "Check if a team's win total over/under has expected value for you.",
      "formula": "Using a normal approximation with standard deviation ≈ 2.0 wins over a season, P(over) = 1 − Φ((line + 0.5 − your projection) ÷ σ), where Φ is the standard normal CDF.",
      "inputs": [
        {
          "id": "line",
          "label": "Posted win total line",
          "kind": "number"
        },
        {
          "id": "overOdds",
          "label": "Over odds (American)",
          "kind": "number"
        },
        {
          "id": "underOdds",
          "label": "Under odds (American)",
          "kind": "number"
        },
        {
          "id": "yourProjection",
          "label": "Your projected win total",
          "kind": "number"
        },
        {
          "id": "stake",
          "label": "Stake",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pOver",
          "label": "Your estimated P(over)"
        },
        {
          "id": "pUnder",
          "label": "Your estimated P(under)"
        },
        {
          "id": "evOver",
          "label": "EV betting the over"
        },
        {
          "id": "evUnder",
          "label": "EV betting the under"
        }
      ]
    },
    {
      "slug": "closing-line-value-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/closing-line-value-calculator",
      "title": "Closing Line Value (CLV) Calculator",
      "category": "math",
      "summary": "Measure whether you beat the market's final price, independent of the result.",
      "formula": "CLV (probability) = implied probability at closing line − implied probability at your bet. Positive CLV means you got a bet placed at better odds (lower implied probability) than the closing number.",
      "inputs": [
        {
          "id": "yourOdds",
          "label": "Odds you bet at (American)",
          "kind": "number"
        },
        {
          "id": "closingOdds",
          "label": "Closing odds, same side (American)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "clv",
          "label": "Closing line value (percentage points)"
        },
        {
          "id": "yourImplied",
          "label": "Your bet's implied probability"
        },
        {
          "id": "closingImplied",
          "label": "Closing line implied probability"
        },
        {
          "id": "clvPercentOdds",
          "label": "CLV as % better price (decimal odds)"
        }
      ]
    },
    {
      "slug": "round-robin-parlay-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/round-robin-parlay-calculator",
      "title": "Round Robin Parlay Calculator",
      "category": "math",
      "summary": "See combos, total stake, and payout for a round robin of multiple bets.",
      "formula": "Number of combinations = C(n, k) = n! ÷ (k! × (n−k)!). Total stake = combinations × stake per combo. Per-combo payout = stake × (decimal odds per leg)^k.",
      "inputs": [
        {
          "id": "picks",
          "label": "Total number of picks",
          "kind": "number"
        },
        {
          "id": "comboSize",
          "label": "Round robin by (legs per combo)",
          "kind": "number"
        },
        {
          "id": "avgOdds",
          "label": "Average odds per leg (American)",
          "kind": "number"
        },
        {
          "id": "stakePerCombo",
          "label": "Stake per combination",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "combos",
          "label": "Total combinations"
        },
        {
          "id": "totalStake",
          "label": "Total amount risked"
        },
        {
          "id": "payoutPerWinningCombo",
          "label": "Payout for each winning combo"
        },
        {
          "id": "bestCasePayout",
          "label": "Best-case payout (all picks win)"
        }
      ]
    },
    {
      "slug": "betting-unit-size-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/betting-unit-size-calculator",
      "title": "Betting Unit Size Calculator",
      "category": "math",
      "summary": "Turn your bankroll into a consistent flat unit size for disciplined staking.",
      "formula": "Unit size = bankroll × unit percentage. Bet size at confidence tier = unit size × number of units for that tier.",
      "inputs": [
        {
          "id": "bankroll",
          "label": "Total betting bankroll",
          "kind": "number"
        },
        {
          "id": "unitPercent",
          "label": "Unit size as % of bankroll",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "unit",
          "label": "1-unit bet size"
        },
        {
          "id": "halfUnit",
          "label": "0.5-unit bet size"
        },
        {
          "id": "twoUnit",
          "label": "2-unit bet size"
        },
        {
          "id": "threeUnit",
          "label": "3-unit bet size"
        }
      ]
    },
    {
      "slug": "buy-points-cost-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/buy-points-cost-calculator",
      "title": "Buy Points Cost Calculator",
      "category": "math",
      "summary": "See if paying extra odds to move a point spread is worth it.",
      "formula": "Break-even win rate at each price = |odds| ÷ (|odds| + 100) for negative American odds. Cost of buying = difference in break-even win rate between original and bought line.",
      "inputs": [
        {
          "id": "originalOdds",
          "label": "Original odds (American)",
          "kind": "number"
        },
        {
          "id": "boughtOdds",
          "label": "Odds after buying points",
          "kind": "number"
        },
        {
          "id": "stake",
          "label": "Stake",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "extraWinRateNeeded",
          "label": "Extra win-rate needed to justify buying"
        },
        {
          "id": "origBreakeven",
          "label": "Break-even at original line"
        },
        {
          "id": "boughtBreakeven",
          "label": "Break-even at bought line"
        },
        {
          "id": "profitDiff",
          "label": "Profit given up per win by buying"
        }
      ]
    },
    {
      "slug": "prop-bet-payout-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/prop-bet-payout-calculator",
      "title": "Prop Bet Payout Calculator",
      "category": "math",
      "summary": "Quick payout, profit, and implied probability for a single prop wager.",
      "formula": "Profit = stake × (decimal odds − 1). Implied probability = standard American-to-probability conversion. Payout = stake + profit.",
      "inputs": [
        {
          "id": "odds",
          "label": "Prop odds (American)",
          "kind": "number"
        },
        {
          "id": "stake",
          "label": "Stake",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "payout",
          "label": "Total payout if it hits"
        },
        {
          "id": "profit",
          "label": "Profit if it hits"
        },
        {
          "id": "implied",
          "label": "Implied probability required"
        }
      ]
    },
    {
      "slug": "bet-cash-out-value-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/bet-cash-out-value-calculator",
      "title": "Bet Cash Out Value Calculator",
      "category": "math",
      "summary": "Judge whether a sportsbook's early cash-out offer is a fair price.",
      "formula": "Fair remaining value = original stake × original decimal odds ÷ current live decimal odds for the same outcome. Cash-out haircut = fair value − cash-out offer.",
      "inputs": [
        {
          "id": "origStake",
          "label": "Original stake",
          "kind": "number"
        },
        {
          "id": "origOdds",
          "label": "Original odds (American)",
          "kind": "number"
        },
        {
          "id": "currentLiveOdds",
          "label": "Current live odds for same outcome (American)",
          "kind": "number"
        },
        {
          "id": "cashOutOffer",
          "label": "Cash-out amount offered",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "fairValue",
          "label": "Fair value of remaining bet"
        },
        {
          "id": "haircut",
          "label": "Cash-out haircut ($ left on the table)"
        },
        {
          "id": "haircutPercent",
          "label": "Haircut as % of fair value"
        },
        {
          "id": "offer",
          "label": "Cash-out offer entered"
        }
      ]
    },
    {
      "slug": "free-bet-conversion-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/free-bet-conversion-calculator",
      "title": "Free Bet Conversion Value Calculator",
      "category": "math",
      "summary": "See the real cash value of a free bet or bonus bet credit.",
      "formula": "Free bet cash-equivalent value = stake × (decimal odds − 1) × true win probability. At fair odds, this simplifies to roughly stake × (1 − 1/decimal odds).",
      "inputs": [
        {
          "id": "faceValue",
          "label": "Free bet face value",
          "kind": "number"
        },
        {
          "id": "odds",
          "label": "Odds you'll place it at (American)",
          "kind": "number"
        },
        {
          "id": "hedgeOdds",
          "label": "Available hedge odds, other side (American)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cashEquivFairOdds",
          "label": "Estimated cash-equivalent value"
        },
        {
          "id": "freeBetPayout",
          "label": "Payout if free bet wins (profit only)"
        },
        {
          "id": "hedgeStake",
          "label": "Hedge stake to lock in value"
        },
        {
          "id": "guaranteedLocked",
          "label": "Guaranteed value if hedged"
        }
      ]
    },
    {
      "slug": "line-shopping-value-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/line-shopping-value-calculator",
      "title": "Line Shopping Value Calculator",
      "category": "financial",
      "summary": "Quantify the annual dollar value of always getting the best price.",
      "formula": "Value per bet = avg stake × (decimal odds at best price − decimal odds at typical price) × assumed win rate. Annual value = value per bet × bets per year.",
      "inputs": [
        {
          "id": "avgStake",
          "label": "Average stake per bet",
          "kind": "number"
        },
        {
          "id": "typicalOdds",
          "label": "Typical odds you'd get at one book (American)",
          "kind": "number"
        },
        {
          "id": "bestOdds",
          "label": "Best odds after shopping (American)",
          "kind": "number"
        },
        {
          "id": "winRate",
          "label": "Your assumed win rate",
          "kind": "number"
        },
        {
          "id": "betsPerYear",
          "label": "Bets placed per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualValue",
          "label": "Estimated annual value of line shopping"
        },
        {
          "id": "valuePerBet",
          "label": "Value per bet"
        },
        {
          "id": "oddsImprovement",
          "label": "Decimal odds improvement (×100)"
        }
      ]
    },
    {
      "slug": "survivor-pool-pick-ev-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/survivor-pool-pick-ev-calculator",
      "title": "Survivor Pool Pick EV Calculator",
      "category": "math",
      "summary": "Weigh a safe pick against a contrarian pick in an NFL survivor pool.",
      "formula": "Pool equity score = win probability × (1 − pool pick percentage), rewarding safer picks that fewer opponents also made, which matters more once pool size shrinks and outright winning (not just surviving) becomes the goal.",
      "inputs": [
        {
          "id": "teamAWinProb",
          "label": "Team A win probability",
          "kind": "number"
        },
        {
          "id": "teamAPoolPct",
          "label": "% of pool also picking Team A",
          "kind": "number"
        },
        {
          "id": "teamBWinProb",
          "label": "Team B win probability",
          "kind": "number"
        },
        {
          "id": "teamBPoolPct",
          "label": "% of pool also picking Team B",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "scoreA",
          "label": "Team A pool equity score"
        },
        {
          "id": "scoreB",
          "label": "Team B pool equity score"
        },
        {
          "id": "survivalEdgeA",
          "label": "Team A raw win probability"
        },
        {
          "id": "survivalEdgeB",
          "label": "Team B raw win probability"
        }
      ]
    },
    {
      "slug": "fantasy-auction-budget-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/fantasy-auction-budget-calculator",
      "title": "Fantasy Auction Draft Budget Calculator",
      "category": "other",
      "summary": "Allocate your auction budget across positions before draft day.",
      "formula": "Position budget = total cap × position allocation %. Remaining bench budget = total cap − sum of allocated starter budgets, reserved as $1-2 minimums per remaining roster spot.",
      "inputs": [
        {
          "id": "totalBudget",
          "label": "Total auction budget",
          "kind": "number"
        },
        {
          "id": "rbPct",
          "label": "RB allocation %",
          "kind": "number"
        },
        {
          "id": "wrPct",
          "label": "WR allocation %",
          "kind": "number"
        },
        {
          "id": "qbPct",
          "label": "QB allocation %",
          "kind": "number"
        },
        {
          "id": "tePct",
          "label": "TE allocation %",
          "kind": "number"
        },
        {
          "id": "benchSpots",
          "label": "Remaining bench/flex spots",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "benchBudget",
          "label": "Total bench/flex budget"
        },
        {
          "id": "rb",
          "label": "RB budget"
        },
        {
          "id": "wr",
          "label": "WR budget"
        },
        {
          "id": "qb",
          "label": "QB budget"
        },
        {
          "id": "te",
          "label": "TE budget"
        },
        {
          "id": "perBenchSpot",
          "label": "Avg per bench spot"
        }
      ]
    },
    {
      "slug": "fantasy-keeper-value-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/fantasy-keeper-value-calculator",
      "title": "Fantasy Keeper Value Calculator",
      "category": "other",
      "summary": "Compare a player's keeper cost against their expected draft-round value.",
      "formula": "Surplus rounds = keeper cost round − projected actual round next season (positive surplus means the player is cheaper than their expected value, a good keep).",
      "inputs": [
        {
          "id": "keeperRound",
          "label": "Keeper cost (round)",
          "kind": "number"
        },
        {
          "id": "projectedRound",
          "label": "Projected actual draft round next season",
          "kind": "number"
        },
        {
          "id": "totalRounds",
          "label": "Total draft rounds in your league",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "surplusRounds",
          "label": "Surplus rounds of value"
        },
        {
          "id": "surplusPercent",
          "label": "Surplus as % of total draft"
        }
      ]
    },
    {
      "slug": "sportsbook-hold-percentage-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/sportsbook-hold-percentage-calculator",
      "title": "Sportsbook Hold Percentage Calculator",
      "category": "math",
      "summary": "Calculate the vig/hold a sportsbook is baking into any two-way market.",
      "formula": "Hold % = (implied probability of side A + implied probability of side B) − 100%, using standard American-to-probability conversion on each side.",
      "inputs": [
        {
          "id": "sideA",
          "label": "Side A odds (American)",
          "kind": "number"
        },
        {
          "id": "sideB",
          "label": "Side B odds (American)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "hold",
          "label": "Hold percentage"
        },
        {
          "id": "pa",
          "label": "Side A implied probability"
        },
        {
          "id": "pb",
          "label": "Side B implied probability"
        }
      ]
    },
    {
      "slug": "operating-reserve-months",
      "url": "https://www.revenuelab.fyi/toolbox/operating-reserve-months",
      "title": "Nonprofit Operating Reserve Calculator",
      "category": "financial",
      "summary": "How many months your unrestricted cash would cover if revenue stopped.",
      "formula": "Reserve months = unrestricted liquid reserves ÷ (annual operating expense ÷ 12).",
      "inputs": [
        {
          "id": "reserves",
          "label": "Unrestricted liquid reserves",
          "kind": "number"
        },
        {
          "id": "annualExpense",
          "label": "Annual operating expenses",
          "kind": "number"
        },
        {
          "id": "targetMonths",
          "label": "Board target (months)",
          "kind": "number"
        },
        {
          "id": "monthlyRevenueVolatility",
          "label": "Revenue volatility",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "months",
          "label": "Months of reserve"
        },
        {
          "id": "monthlyExpense",
          "label": "Monthly operating expense"
        },
        {
          "id": "adjTarget",
          "label": "Recommended target (adjusted)"
        },
        {
          "id": "gapMonths",
          "label": "Months short of target"
        },
        {
          "id": "gapDollars",
          "label": "Dollars needed to close gap"
        }
      ]
    },
    {
      "slug": "indirect-cost-rate",
      "url": "https://www.revenuelab.fyi/toolbox/indirect-cost-rate",
      "title": "Indirect Cost Rate Calculator",
      "category": "financial",
      "summary": "Calculate your organization's indirect cost rate for grant proposals.",
      "formula": "Indirect rate = total indirect costs ÷ modified total direct costs (MTDC) × 100.",
      "inputs": [
        {
          "id": "indirectCosts",
          "label": "Total indirect/overhead costs",
          "kind": "number"
        },
        {
          "id": "directCosts",
          "label": "Direct program costs (total)",
          "kind": "number"
        },
        {
          "id": "excludedCapital",
          "label": "Equipment/capital costs to exclude from base",
          "kind": "number"
        },
        {
          "id": "excludedSubawards",
          "label": "Subaward amounts over $25k to exclude",
          "kind": "number"
        },
        {
          "id": "deMinimis",
          "label": "Using de minimis rate instead?",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "rate",
          "label": "Indirect cost rate"
        },
        {
          "id": "mtdc",
          "label": "Modified total direct cost base"
        },
        {
          "id": "recoveryOnBase",
          "label": "Indirect recovery on current base"
        },
        {
          "id": "indirectOn100k",
          "label": "Indirect $ recoverable from a $100k grant"
        }
      ]
    },
    {
      "slug": "grant-budget-builder",
      "url": "https://www.revenuelab.fyi/toolbox/grant-budget-builder",
      "title": "Grant Proposal Budget Builder",
      "category": "financial",
      "summary": "Build a defensible grant budget with personnel, indirect, and fringe rolled up.",
      "formula": "Total request = personnel × (1 + fringe%) + non-personnel direct + indirect (rate × MTDC base).",
      "inputs": [
        {
          "id": "personnel",
          "label": "Personnel salary total",
          "kind": "number"
        },
        {
          "id": "fringeRate",
          "label": "Fringe benefit rate",
          "kind": "number"
        },
        {
          "id": "nonPersonnel",
          "label": "Non-personnel direct costs",
          "kind": "number"
        },
        {
          "id": "indirectRate",
          "label": "Indirect cost rate",
          "kind": "number"
        },
        {
          "id": "requestCap",
          "label": "Funder's max award (0 = none)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total grant request"
        },
        {
          "id": "fringe",
          "label": "Fringe benefits cost"
        },
        {
          "id": "indirect",
          "label": "Indirect cost recovery"
        },
        {
          "id": "personnelShare",
          "label": "Personnel share of total"
        },
        {
          "id": "overCap",
          "label": "Amount over funder's cap"
        }
      ]
    },
    {
      "slug": "program-admin-ratio",
      "url": "https://www.revenuelab.fyi/toolbox/program-admin-ratio",
      "title": "Program vs Admin Expense Ratio Calculator",
      "category": "financial",
      "summary": "See what share of spending goes to mission programs versus overhead.",
      "formula": "Program ratio = program expenses ÷ total expenses; admin ratio = management & general ÷ total.",
      "inputs": [
        {
          "id": "program",
          "label": "Program services expenses",
          "kind": "number"
        },
        {
          "id": "admin",
          "label": "Management & general expenses",
          "kind": "number"
        },
        {
          "id": "fundraising",
          "label": "Fundraising expenses",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "programRatio",
          "label": "Program expense ratio"
        },
        {
          "id": "adminRatio",
          "label": "Admin (M&G) ratio"
        },
        {
          "id": "fundraisingRatio",
          "label": "Fundraising expense ratio"
        },
        {
          "id": "overheadRatio",
          "label": "Total overhead ratio"
        },
        {
          "id": "total",
          "label": "Total expenses"
        }
      ]
    },
    {
      "slug": "cost-per-beneficiary",
      "url": "https://www.revenuelab.fyi/toolbox/cost-per-beneficiary",
      "title": "Cost Per Beneficiary Calculator",
      "category": "financial",
      "summary": "Find your true program cost per person served, fully loaded.",
      "formula": "Cost per beneficiary = (direct program cost + allocated overhead) ÷ unique beneficiaries served.",
      "inputs": [
        {
          "id": "directCost",
          "label": "Direct program cost",
          "kind": "number"
        },
        {
          "id": "allocatedOverhead",
          "label": "Allocated overhead for this program",
          "kind": "number"
        },
        {
          "id": "beneficiaries",
          "label": "Unique beneficiaries served",
          "kind": "number"
        },
        {
          "id": "serviceUnits",
          "label": "Total service units delivered (e.g. meals, sessions)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perBeneficiary",
          "label": "Cost per beneficiary"
        },
        {
          "id": "perUnit",
          "label": "Cost per service unit"
        },
        {
          "id": "totalCost",
          "label": "Total fully-loaded program cost"
        },
        {
          "id": "unitsPerBeneficiary",
          "label": "Service units per beneficiary"
        }
      ]
    },
    {
      "slug": "volunteer-service-value",
      "url": "https://www.revenuelab.fyi/toolbox/volunteer-service-value",
      "title": "Volunteer Service Value Calculator",
      "category": "financial",
      "summary": "Assign a defensible dollar value to volunteer time for grants and 990s.",
      "formula": "Value = hours × hourly rate; skilled hours use market rate, not the blended average rate.",
      "inputs": [
        {
          "id": "generalHours",
          "label": "General volunteer hours (year)",
          "kind": "number"
        },
        {
          "id": "generalRate",
          "label": "General volunteer hour rate",
          "kind": "number"
        },
        {
          "id": "skilledHours",
          "label": "Skilled/professional volunteer hours",
          "kind": "number"
        },
        {
          "id": "skilledRate",
          "label": "Market rate for that skilled service",
          "kind": "number"
        },
        {
          "id": "includeOnStatements",
          "label": "Does it meet GAAP recognition criteria?",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "totalValue",
          "label": "Total estimated volunteer value"
        },
        {
          "id": "generalValue",
          "label": "General volunteer value"
        },
        {
          "id": "skilledValue",
          "label": "Skilled/pro bono value"
        },
        {
          "id": "totalHours",
          "label": "Total volunteer hours"
        },
        {
          "id": "gaapEligible",
          "label": "GAAP-recognizable amount"
        }
      ]
    },
    {
      "slug": "board-give-or-get",
      "url": "https://www.revenuelab.fyi/toolbox/board-give-or-get",
      "title": "Board Give-or-Get Target Calculator",
      "category": "financial",
      "summary": "Set a fair annual board fundraising target per member.",
      "formula": "Baseline per-seat target = board fundraising goal ÷ board seats, then adjusted by tier weight.",
      "inputs": [
        {
          "id": "boardGoal",
          "label": "Total board fundraising goal",
          "kind": "number"
        },
        {
          "id": "boardSeats",
          "label": "Number of board seats",
          "kind": "number"
        },
        {
          "id": "annualFundGoal",
          "label": "Total annual fund goal (org-wide)",
          "kind": "number"
        },
        {
          "id": "highTierSeats",
          "label": "Seats in higher-capacity tier",
          "kind": "number"
        },
        {
          "id": "highTierMultiple",
          "label": "Multiple for high-capacity tier",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "baseline",
          "label": "Flat per-seat target"
        },
        {
          "id": "lowTierTarget",
          "label": "Standard tier target"
        },
        {
          "id": "highTierTarget",
          "label": "High-capacity tier target"
        },
        {
          "id": "shareOfAnnualFund",
          "label": "Board share of annual fund goal"
        }
      ]
    },
    {
      "slug": "membership-dues-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/membership-dues-pricing",
      "title": "Membership Dues Pricing Calculator",
      "category": "financial",
      "summary": "Price association or church membership tiers to hit a revenue target.",
      "formula": "Required average dues = (revenue target ÷ expected renewing members); check against per-member cost.",
      "inputs": [
        {
          "id": "revenueTarget",
          "label": "Dues revenue target",
          "kind": "number"
        },
        {
          "id": "currentMembers",
          "label": "Current member count",
          "kind": "number"
        },
        {
          "id": "renewalRate",
          "label": "Expected renewal rate",
          "kind": "number"
        },
        {
          "id": "newMembers",
          "label": "Projected new members",
          "kind": "number"
        },
        {
          "id": "perMemberCost",
          "label": "Cost to deliver benefits per member",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "requiredDues",
          "label": "Required average dues"
        },
        {
          "id": "totalMembers",
          "label": "Projected total members"
        },
        {
          "id": "marginPerMember",
          "label": "Margin per member after cost"
        },
        {
          "id": "marginPct",
          "label": "Margin percentage"
        }
      ]
    },
    {
      "slug": "endowment-spending-rate",
      "url": "https://www.revenuelab.fyi/toolbox/endowment-spending-rate",
      "title": "Endowment Spending Rate Calculator",
      "category": "financial",
      "summary": "Find a sustainable spending rate that preserves purchasing power.",
      "formula": "Sustainable rate ≈ expected return − inflation − fees; spending $ = rate × trailing avg balance.",
      "inputs": [
        {
          "id": "balance",
          "label": "Trailing average endowment balance",
          "kind": "number"
        },
        {
          "id": "spendingRate",
          "label": "Proposed spending rate",
          "kind": "number"
        },
        {
          "id": "expectedReturn",
          "label": "Expected long-term nominal return",
          "kind": "number"
        },
        {
          "id": "inflation",
          "label": "Expected inflation",
          "kind": "number"
        },
        {
          "id": "fees",
          "label": "Investment/admin fees",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "spendAmount",
          "label": "Annual spending amount"
        },
        {
          "id": "sustainableRate",
          "label": "Sustainable spending rate"
        },
        {
          "id": "gap",
          "label": "Cushion (or deficit) vs proposed rate"
        },
        {
          "id": "realGrowthDollars",
          "label": "Real dollar growth (or erosion) per year"
        }
      ]
    },
    {
      "slug": "capital-campaign-pacing",
      "url": "https://www.revenuelab.fyi/toolbox/capital-campaign-pacing",
      "title": "Capital Campaign Pacing Calculator",
      "category": "financial",
      "summary": "Map your campaign goal against the standard gift pyramid.",
      "formula": "Top gift ≈ 15% of goal; top-10 gifts ≈ 45% of goal; remainder spread across a widening gift table.",
      "inputs": [
        {
          "id": "goal",
          "label": "Total campaign goal",
          "kind": "number"
        },
        {
          "id": "topGiftPct",
          "label": "Lead gift as % of goal",
          "kind": "number"
        },
        {
          "id": "top10Pct",
          "label": "Top 10 gifts combined as % of goal",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Planned campaign length",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "topGift",
          "label": "Target lead gift"
        },
        {
          "id": "top10Total",
          "label": "Top 10 gifts combined target"
        },
        {
          "id": "next9Avg",
          "label": "Average of gifts #2-10"
        },
        {
          "id": "remainder",
          "label": "Remaining goal from broader base"
        },
        {
          "id": "monthlyPace",
          "label": "Required monthly pace"
        }
      ]
    },
    {
      "slug": "donor-advised-fund-payout",
      "url": "https://www.revenuelab.fyi/toolbox/donor-advised-fund-payout",
      "title": "Donor-Advised Fund Payout Estimator",
      "category": "financial",
      "summary": "Estimate how much of a DAF balance a nonprofit might realistically expect.",
      "formula": "Estimated available grant = DAF balance × assumed payout rate × donor engagement multiplier.",
      "inputs": [
        {
          "id": "balance",
          "label": "Known or estimated DAF balance",
          "kind": "number"
        },
        {
          "id": "payoutRate",
          "label": "Assumed annual payout rate",
          "kind": "number"
        },
        {
          "id": "engagement",
          "label": "Donor engagement level",
          "kind": "select"
        },
        {
          "id": "yourShare",
          "label": "Your typical share of their annual giving",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "yourEstimate",
          "label": "Estimated grant to your org"
        },
        {
          "id": "estAnnualPayout",
          "label": "Estimated total annual DAF payout"
        },
        {
          "id": "multiplier",
          "label": "Engagement multiplier applied"
        }
      ]
    },
    {
      "slug": "in-kind-donation-valuation",
      "url": "https://www.revenuelab.fyi/toolbox/in-kind-donation-valuation",
      "title": "In-Kind Donation Valuation Calculator",
      "category": "financial",
      "summary": "Value donated goods and services at fair market value for your books.",
      "formula": "In-kind value = quantity × fair market unit value; % of revenue = in-kind ÷ total revenue.",
      "inputs": [
        {
          "id": "quantity",
          "label": "Quantity/units donated",
          "kind": "number"
        },
        {
          "id": "unitValue",
          "label": "Fair market value per unit",
          "kind": "number"
        },
        {
          "id": "condition",
          "label": "Condition of goods",
          "kind": "select"
        },
        {
          "id": "totalRevenue",
          "label": "Total organizational revenue",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalValue",
          "label": "Total in-kind value to record"
        },
        {
          "id": "adjustedUnitValue",
          "label": "Adjusted fair value per unit"
        },
        {
          "id": "pctOfRevenue",
          "label": "In-kind as % of total revenue"
        }
      ]
    },
    {
      "slug": "ubit-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/ubit-estimate",
      "title": "UBIT (Unrelated Business Income Tax) Estimator",
      "category": "financial",
      "summary": "Ballpark your unrelated business income tax exposure.",
      "formula": "Taxable UBI = gross UBI revenue − directly connected expenses − $1,000 deduction; tax = taxable UBI × 21%.",
      "inputs": [
        {
          "id": "grossRevenue",
          "label": "Gross unrelated business revenue",
          "kind": "number"
        },
        {
          "id": "expenses",
          "label": "Directly connected expenses",
          "kind": "number"
        },
        {
          "id": "stateTaxRate",
          "label": "State corporate tax rate (if applicable)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalTax",
          "label": "Estimated total tax owed"
        },
        {
          "id": "federalTax",
          "label": "Estimated federal UBIT (21%)"
        },
        {
          "id": "stateTax",
          "label": "Estimated state tax"
        },
        {
          "id": "taxableUBI",
          "label": "Taxable unrelated business income"
        },
        {
          "id": "effectiveRateOnGross",
          "label": "Effective tax rate on gross revenue"
        }
      ]
    },
    {
      "slug": "functional-expense-split",
      "url": "https://www.revenuelab.fyi/toolbox/functional-expense-split",
      "title": "990 Functional Expense Split Calculator",
      "category": "financial",
      "summary": "Allocate a shared cost across program, admin, and fundraising for Form 990.",
      "formula": "Allocated $ per category = shared cost × that category's share (time %, sq ft %, or headcount %).",
      "inputs": [
        {
          "id": "sharedCost",
          "label": "Shared cost to allocate",
          "kind": "number"
        },
        {
          "id": "programPct",
          "label": "Program share (time, sq ft, or headcount)",
          "kind": "number"
        },
        {
          "id": "adminPct",
          "label": "Admin (M&G) share",
          "kind": "number"
        },
        {
          "id": "fundraisingPct",
          "label": "Fundraising share",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "programAmount",
          "label": "Allocated to program services"
        },
        {
          "id": "adminAmount",
          "label": "Allocated to management & general"
        },
        {
          "id": "fundraisingAmount",
          "label": "Allocated to fundraising"
        },
        {
          "id": "normalizedCheck",
          "label": "Input percentages summed (should be 100)"
        }
      ]
    },
    {
      "slug": "fiscal-sponsorship-fee",
      "url": "https://www.revenuelab.fyi/toolbox/fiscal-sponsorship-fee",
      "title": "Fiscal Sponsorship Fee Calculator",
      "category": "financial",
      "summary": "Estimate what a fiscal sponsor should charge (or you should budget) for admin fees.",
      "formula": "Fee $ = project revenue × fee rate; margin = fee $ − actual admin cost to serve that project.",
      "inputs": [
        {
          "id": "projectRevenue",
          "label": "Sponsored project's annual revenue",
          "kind": "number"
        },
        {
          "id": "feeRate",
          "label": "Fiscal sponsorship fee rate",
          "kind": "number"
        },
        {
          "id": "sponsorshipModel",
          "label": "Sponsorship model",
          "kind": "select"
        },
        {
          "id": "actualAdminCost",
          "label": "Your estimated actual admin cost to serve",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "feeDollars",
          "label": "Annual fiscal sponsorship fee"
        },
        {
          "id": "margin",
          "label": "Margin over actual admin cost"
        },
        {
          "id": "marginPct",
          "label": "Margin as % of fee"
        }
      ]
    },
    {
      "slug": "chapter-revenue-share",
      "url": "https://www.revenuelab.fyi/toolbox/chapter-revenue-share",
      "title": "Chapter Revenue Share Calculator",
      "category": "financial",
      "summary": "Split dues or program revenue fairly between national and local chapters.",
      "formula": "National share = total revenue × national %; chapter share = remainder ÷ number of chapters or per member.",
      "inputs": [
        {
          "id": "totalRevenue",
          "label": "Total dues/program revenue collected",
          "kind": "number"
        },
        {
          "id": "nationalPct",
          "label": "National office share",
          "kind": "number"
        },
        {
          "id": "chapterCount",
          "label": "Number of local chapters",
          "kind": "number"
        },
        {
          "id": "totalMembers",
          "label": "Total members across all chapters",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "chapterTotal",
          "label": "Total retained by chapters"
        },
        {
          "id": "nationalShare",
          "label": "National office share"
        },
        {
          "id": "perChapter",
          "label": "Average per chapter"
        },
        {
          "id": "perMember",
          "label": "Chapter revenue per member"
        }
      ]
    },
    {
      "slug": "nonprofit-cash-runway",
      "url": "https://www.revenuelab.fyi/toolbox/nonprofit-cash-runway",
      "title": "Nonprofit Cash Runway Calculator",
      "category": "financial",
      "summary": "How many weeks until you hit zero cash at current burn rate.",
      "formula": "Runway weeks = (current cash + confident receivables) ÷ weekly burn rate.",
      "inputs": [
        {
          "id": "currentCash",
          "label": "Current cash on hand",
          "kind": "number"
        },
        {
          "id": "receivables",
          "label": "Confident receivables (next 60 days)",
          "kind": "number"
        },
        {
          "id": "monthlyBurn",
          "label": "Monthly cash burn (expenses)",
          "kind": "number"
        },
        {
          "id": "monthlyInflow",
          "label": "Reliable monthly cash inflow (excl. above)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "runwayWeeks",
          "label": "Cash runway"
        },
        {
          "id": "runwayMonths",
          "label": "Runway in months"
        },
        {
          "id": "cashAvailable",
          "label": "Total cash + confident receivables"
        },
        {
          "id": "netMonthlyBurn",
          "label": "Net monthly burn"
        }
      ]
    },
    {
      "slug": "multi-grant-overhead-allocation",
      "url": "https://www.revenuelab.fyi/toolbox/multi-grant-overhead-allocation",
      "title": "Multi-Grant Overhead Allocation Calculator",
      "category": "financial",
      "summary": "Spread total overhead across multiple grants proportional to direct cost.",
      "formula": "Overhead covered by each grant = grant direct cost × its allowed indirect rate; shortfall = total overhead − sum covered.",
      "inputs": [
        {
          "id": "totalOverhead",
          "label": "Total organizational overhead",
          "kind": "number"
        },
        {
          "id": "grant1Direct",
          "label": "Grant 1 direct costs",
          "kind": "number"
        },
        {
          "id": "grant1Rate",
          "label": "Grant 1 allowed indirect rate",
          "kind": "number"
        },
        {
          "id": "grant2Direct",
          "label": "Grant 2 direct costs",
          "kind": "number"
        },
        {
          "id": "grant2Rate",
          "label": "Grant 2 allowed indirect rate",
          "kind": "number"
        },
        {
          "id": "grant3Direct",
          "label": "Grant 3 direct costs (unrestricted/other)",
          "kind": "number"
        },
        {
          "id": "grant3Rate",
          "label": "Grant 3 allowed indirect rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalCovered",
          "label": "Overhead covered by grants"
        },
        {
          "id": "shortfall",
          "label": "Shortfall absorbed by unrestricted funds"
        },
        {
          "id": "coveragePct",
          "label": "% of overhead covered"
        },
        {
          "id": "g1",
          "label": "Grant 1 contribution to overhead"
        },
        {
          "id": "g2",
          "label": "Grant 2 contribution to overhead"
        },
        {
          "id": "g3",
          "label": "Grant 3 contribution to overhead"
        }
      ]
    },
    {
      "slug": "program-staff-ratio",
      "url": "https://www.revenuelab.fyi/toolbox/program-staff-ratio",
      "title": "Program-to-Staff Ratio Calculator",
      "category": "financial",
      "summary": "Check staffing capacity against caseload or membership to spot burnout risk.",
      "formula": "Ratio = total active caseload ÷ direct-service FTEs; compare to your sector benchmark.",
      "inputs": [
        {
          "id": "caseload",
          "label": "Total active caseload/participants",
          "kind": "number"
        },
        {
          "id": "fte",
          "label": "Direct-service staff FTEs",
          "kind": "number"
        },
        {
          "id": "targetRatio",
          "label": "Target ratio (clients per FTE)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ratio",
          "label": "Current ratio (per FTE)"
        },
        {
          "id": "idealFte",
          "label": "FTEs needed to hit target ratio"
        },
        {
          "id": "fteGap",
          "label": "Additional FTEs needed"
        },
        {
          "id": "overCapacityPct",
          "label": "% over (or under) target capacity"
        }
      ]
    },
    {
      "slug": "nonprofit-event-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/nonprofit-event-breakeven",
      "title": "Nonprofit Event Break-Even Calculator",
      "category": "financial",
      "summary": "Find the ticket price and attendance you need to net a target profit.",
      "formula": "Break-even attendees = (fixed costs − other revenue) ÷ (ticket price − variable cost per attendee).",
      "inputs": [
        {
          "id": "fixedCosts",
          "label": "Fixed event costs (venue, AV, entertainment)",
          "kind": "number"
        },
        {
          "id": "variableCost",
          "label": "Variable cost per attendee (catering, etc.)",
          "kind": "number"
        },
        {
          "id": "ticketPrice",
          "label": "Ticket price",
          "kind": "number"
        },
        {
          "id": "otherRevenue",
          "label": "Non-ticket revenue (sponsors, auction)",
          "kind": "number"
        },
        {
          "id": "netTarget",
          "label": "Net fundraising target",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "attendeesForTarget",
          "label": "Attendees needed for net target"
        },
        {
          "id": "breakEvenAttendees",
          "label": "Break-even attendees"
        },
        {
          "id": "marginPerTicket",
          "label": "Net margin per ticket"
        }
      ]
    },
    {
      "slug": "donor-lifetime-value",
      "url": "https://www.revenuelab.fyi/toolbox/donor-lifetime-value",
      "title": "Donor Lifetime Value Calculator",
      "category": "financial",
      "summary": "Estimate what an average donor is worth over their giving relationship.",
      "formula": "Expected years retained = 1 ÷ (1 − retention rate); LTV = average annual gift × expected years retained.",
      "inputs": [
        {
          "id": "avgGift",
          "label": "Average annual gift",
          "kind": "number"
        },
        {
          "id": "retentionRate",
          "label": "Donor retention rate",
          "kind": "number"
        },
        {
          "id": "donorCount",
          "label": "Total donors in file (for portfolio value)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ltv",
          "label": "Donor lifetime value"
        },
        {
          "id": "expectedYears",
          "label": "Expected years retained"
        },
        {
          "id": "portfolioValue",
          "label": "Total donor file lifetime value"
        },
        {
          "id": "valuePerPoint",
          "label": "Value of +1 point of retention (file-wide)"
        }
      ]
    },
    {
      "slug": "budget-variance-nonprofit",
      "url": "https://www.revenuelab.fyi/toolbox/budget-variance-nonprofit",
      "title": "Nonprofit Budget Variance Calculator",
      "category": "financial",
      "summary": "See how far actuals have drifted from budget, by dollar and percent.",
      "formula": "Variance $ = actual − budget; variance % = variance $ ÷ budget × 100; flagged if |variance %| > threshold.",
      "inputs": [
        {
          "id": "budgeted",
          "label": "Budgeted amount",
          "kind": "number"
        },
        {
          "id": "actual",
          "label": "Actual amount",
          "kind": "number"
        },
        {
          "id": "lineType",
          "label": "Line type",
          "kind": "select"
        },
        {
          "id": "threshold",
          "label": "Materiality threshold",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "variancePct",
          "label": "Variance percentage"
        },
        {
          "id": "varianceDollars",
          "label": "Variance dollars"
        },
        {
          "id": "flagged",
          "label": "Exceeds materiality threshold (1=yes)"
        },
        {
          "id": "favorable",
          "label": "Favorable variance (1=yes)"
        }
      ]
    },
    {
      "slug": "restricted-fund-drawdown",
      "url": "https://www.revenuelab.fyi/toolbox/restricted-fund-drawdown",
      "title": "Restricted Fund Drawdown Calculator",
      "category": "financial",
      "summary": "Plan how fast to spend down a restricted grant or fund balance.",
      "formula": "Required monthly spend = remaining balance ÷ months remaining; pacing = current spend rate − required rate.",
      "inputs": [
        {
          "id": "remainingBalance",
          "label": "Remaining restricted balance",
          "kind": "number"
        },
        {
          "id": "monthsRemaining",
          "label": "Months remaining in grant/fund period",
          "kind": "number"
        },
        {
          "id": "currentMonthlySpend",
          "label": "Current average monthly spend",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "requiredMonthly",
          "label": "Required monthly spend"
        },
        {
          "id": "pacingDiff",
          "label": "Current vs required (per month)"
        },
        {
          "id": "projectedEndBalance",
          "label": "Projected balance at period end"
        },
        {
          "id": "pacingPct",
          "label": "Current pacing (% of required rate)"
        }
      ]
    },
    {
      "slug": "annual-fund-growth-target",
      "url": "https://www.revenuelab.fyi/toolbox/annual-fund-growth-target",
      "title": "Annual Fund Growth Target Calculator",
      "category": "financial",
      "summary": "Set next year's fundraising goal from realistic retention and acquisition math.",
      "formula": "Goal = (last year × retention rate × avg upgrade factor) + (new donors × avg new-donor gift).",
      "inputs": [
        {
          "id": "lastYearTotal",
          "label": "Last year's annual fund total",
          "kind": "number"
        },
        {
          "id": "retentionRate",
          "label": "Donor retention rate",
          "kind": "number"
        },
        {
          "id": "upgradeFactor",
          "label": "Average upgrade among retained donors",
          "kind": "number"
        },
        {
          "id": "newDonors",
          "label": "Target new donors this year",
          "kind": "number"
        },
        {
          "id": "avgNewGift",
          "label": "Average new donor first gift",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "goal",
          "label": "Recommended annual fund goal"
        },
        {
          "id": "retainedRevenue",
          "label": "Expected retained + upgraded revenue"
        },
        {
          "id": "newRevenue",
          "label": "Expected new donor revenue"
        },
        {
          "id": "growthPct",
          "label": "Implied growth vs last year"
        }
      ]
    },
    {
      "slug": "staff-cost-allocation",
      "url": "https://www.revenuelab.fyi/toolbox/staff-cost-allocation",
      "title": "Staff Cost Allocation Calculator",
      "category": "financial",
      "summary": "Split one employee's fully-loaded cost across programs by time.",
      "formula": "Fully-loaded cost = salary × (1 + fringe rate); allocated cost per program = fully-loaded cost × time %.",
      "inputs": [
        {
          "id": "salary",
          "label": "Annual base salary",
          "kind": "number"
        },
        {
          "id": "fringeRate",
          "label": "Fringe/benefits rate",
          "kind": "number"
        },
        {
          "id": "program1Pct",
          "label": "% time on Program A",
          "kind": "number"
        },
        {
          "id": "program2Pct",
          "label": "% time on Program B",
          "kind": "number"
        },
        {
          "id": "program3Pct",
          "label": "% time on admin/other",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "fullyLoaded",
          "label": "Fully-loaded annual cost"
        },
        {
          "id": "program1Cost",
          "label": "Allocated to Program A"
        },
        {
          "id": "program2Cost",
          "label": "Allocated to Program B"
        },
        {
          "id": "program3Cost",
          "label": "Allocated to admin/other"
        }
      ]
    },
    {
      "slug": "scope1-2-emissions",
      "url": "https://www.revenuelab.fyi/toolbox/scope1-2-emissions",
      "title": "Scope 1 & 2 Emissions Calculator",
      "category": "other",
      "summary": "Estimate direct and purchased-energy emissions from utility bills.",
      "formula": "Scope 1 = (therms × 0.0053) + (gallons diesel × 0.01021) + (gallons propane × 0.00577) tCO2e. Scope 2 = kWh × grid factor (tCO2e/kWh). Total = Scope 1 + Scope 2.",
      "inputs": [
        {
          "id": "therms",
          "label": "Natural gas used",
          "kind": "number"
        },
        {
          "id": "dieselGal",
          "label": "Diesel/fuel oil used",
          "kind": "number"
        },
        {
          "id": "propaneGal",
          "label": "Propane used",
          "kind": "number"
        },
        {
          "id": "kwh",
          "label": "Purchased electricity",
          "kind": "number"
        },
        {
          "id": "gridFactor",
          "label": "Grid emission factor",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total Scope 1+2 emissions"
        },
        {
          "id": "scope1",
          "label": "Scope 1 (direct)"
        },
        {
          "id": "scope2",
          "label": "Scope 2 (electricity)"
        },
        {
          "id": "perMonth",
          "label": "Average per month"
        },
        {
          "id": "pctScope2",
          "label": "Share from electricity"
        }
      ]
    },
    {
      "slug": "fleet-ev-emissions-delta",
      "url": "https://www.revenuelab.fyi/toolbox/fleet-ev-emissions-delta",
      "title": "Fleet Electrification Emissions Delta Calculator",
      "category": "other",
      "summary": "Compare CO2e from a gas/diesel fleet against an equivalent electric fleet.",
      "formula": "ICE emissions = miles × gal/mile × 8.887 kg CO2e/gal gasoline. EV emissions = miles × kWh/mile × grid factor. Delta = ICE − EV; % reduction = delta ÷ ICE.",
      "inputs": [
        {
          "id": "vehicles",
          "label": "Number of vehicles",
          "kind": "number"
        },
        {
          "id": "milesYr",
          "label": "Annual miles per vehicle",
          "kind": "number"
        },
        {
          "id": "mpg",
          "label": "Current fleet fuel economy",
          "kind": "number"
        },
        {
          "id": "evKwhMile",
          "label": "EV efficiency",
          "kind": "number"
        },
        {
          "id": "gridFactor",
          "label": "Grid emission factor",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "deltaTons",
          "label": "Annual emissions reduction"
        },
        {
          "id": "iceTons",
          "label": "Current fleet emissions"
        },
        {
          "id": "evTons",
          "label": "EV fleet emissions"
        },
        {
          "id": "pctReduction",
          "label": "Percent reduction"
        },
        {
          "id": "perVehicleTons",
          "label": "Reduction per vehicle"
        }
      ]
    },
    {
      "slug": "carbon-offset-cost",
      "url": "https://www.revenuelab.fyi/toolbox/carbon-offset-cost",
      "title": "Carbon Offset Cost Calculator",
      "category": "financial",
      "summary": "What it costs to offset your emissions at current market prices.",
      "formula": "Cost = emissions (tCO2e) × price per ton, blended across the portfolio mix you select.",
      "inputs": [
        {
          "id": "tons",
          "label": "Emissions to offset",
          "kind": "number"
        },
        {
          "id": "forestryPct",
          "label": "Share as forestry/nature credits",
          "kind": "number"
        },
        {
          "id": "forestryPrice",
          "label": "Forestry credit price",
          "kind": "number"
        },
        {
          "id": "techPrice",
          "label": "Tech/DAC credit price",
          "kind": "number"
        },
        {
          "id": "revenue",
          "label": "Annual revenue (optional, for context)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cost",
          "label": "Total offset cost"
        },
        {
          "id": "avgPrice",
          "label": "Blended price per ton"
        },
        {
          "id": "forestryCost",
          "label": "Forestry credit spend"
        },
        {
          "id": "techCost",
          "label": "Tech/DAC credit spend"
        },
        {
          "id": "pctRevenue",
          "label": "Share of annual revenue"
        }
      ]
    },
    {
      "slug": "waste-diversion-rate",
      "url": "https://www.revenuelab.fyi/toolbox/waste-diversion-rate",
      "title": "Waste Diversion Rate & Hauling Savings Calculator",
      "category": "other",
      "summary": "Diversion percentage from landfill, plus hauling cost savings from recycling.",
      "formula": "Diversion rate = (recycled + composted tons) ÷ total waste tons. Hauling savings = diverted tons × (landfill cost/ton − recycling cost/ton).",
      "inputs": [
        {
          "id": "landfillTons",
          "label": "Landfill (disposed) tons/yr",
          "kind": "number"
        },
        {
          "id": "recycledTons",
          "label": "Recycled tons/yr",
          "kind": "number"
        },
        {
          "id": "compostTons",
          "label": "Composted tons/yr",
          "kind": "number"
        },
        {
          "id": "landfillCost",
          "label": "Landfill cost per ton",
          "kind": "number"
        },
        {
          "id": "recycleCost",
          "label": "Recycling cost per ton",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rate",
          "label": "Diversion rate"
        },
        {
          "id": "diverted",
          "label": "Total diverted tons"
        },
        {
          "id": "total",
          "label": "Total waste generated"
        },
        {
          "id": "savings",
          "label": "Estimated annual hauling savings"
        },
        {
          "id": "savingsPerTon",
          "label": "Savings per diverted ton"
        }
      ]
    },
    {
      "slug": "recycling-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/recycling-revenue",
      "title": "Recycling Revenue Calculator",
      "category": "financial",
      "summary": "Estimated revenue from selling recyclable materials by commodity.",
      "formula": "Revenue = Σ(tons of material × price per ton) − processing fee per ton × total tons.",
      "inputs": [
        {
          "id": "cardboardTons",
          "label": "Cardboard (OCC)",
          "kind": "number"
        },
        {
          "id": "cardboardPrice",
          "label": "Cardboard price",
          "kind": "number"
        },
        {
          "id": "aluminumTons",
          "label": "Aluminum cans",
          "kind": "number"
        },
        {
          "id": "aluminumPrice",
          "label": "Aluminum price",
          "kind": "number"
        },
        {
          "id": "mixedTons",
          "label": "Mixed paper/plastic",
          "kind": "number"
        },
        {
          "id": "mixedPrice",
          "label": "Mixed material price",
          "kind": "number"
        },
        {
          "id": "processingFee",
          "label": "Hauler processing fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Net recycling revenue"
        },
        {
          "id": "grossRevenue",
          "label": "Gross commodity revenue"
        },
        {
          "id": "fees",
          "label": "Processing fees paid"
        },
        {
          "id": "totalTons",
          "label": "Total recyclable tons"
        },
        {
          "id": "perTon",
          "label": "Net revenue per ton"
        }
      ]
    },
    {
      "slug": "water-use-intensity",
      "url": "https://www.revenuelab.fyi/toolbox/water-use-intensity",
      "title": "Water Use Intensity Calculator",
      "category": "other",
      "summary": "Gallons of water per square foot or per employee, benchmarked.",
      "formula": "WUI (per area) = annual gallons ÷ square footage. WUI (per person) = annual gallons ÷ average headcount.",
      "inputs": [
        {
          "id": "gallons",
          "label": "Annual water use",
          "kind": "number"
        },
        {
          "id": "sqft",
          "label": "Building square footage",
          "kind": "number"
        },
        {
          "id": "employees",
          "label": "Average headcount",
          "kind": "number"
        },
        {
          "id": "waterCost",
          "label": "Cost per 1,000 gallons (water + sewer)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perSqft",
          "label": "Gallons per sq ft / year"
        },
        {
          "id": "perEmployee",
          "label": "Gallons per employee / year"
        },
        {
          "id": "annualCost",
          "label": "Annual water + sewer cost"
        },
        {
          "id": "gallonsPerDay",
          "label": "Average gallons per day"
        }
      ]
    },
    {
      "slug": "packaging-reduction-savings",
      "url": "https://www.revenuelab.fyi/toolbox/packaging-reduction-savings",
      "title": "Packaging Material Reduction Savings Calculator",
      "category": "financial",
      "summary": "Cost and emissions savings from lighter or reduced packaging.",
      "formula": "Material savings = units × (old weight − new weight) × cost per lb. Freight savings = units × freight savings per package. Emissions avoided = units × weight reduction × material emission factor.",
      "inputs": [
        {
          "id": "units",
          "label": "Units shipped per year",
          "kind": "number"
        },
        {
          "id": "oldWeight",
          "label": "Current packaging weight per unit",
          "kind": "number"
        },
        {
          "id": "newWeight",
          "label": "Redesigned weight per unit",
          "kind": "number"
        },
        {
          "id": "materialCost",
          "label": "Material cost per lb",
          "kind": "number"
        },
        {
          "id": "freightSavings",
          "label": "Freight savings per unit",
          "kind": "number"
        },
        {
          "id": "emissionFactor",
          "label": "Material emission factor",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalSavings",
          "label": "Total annual savings"
        },
        {
          "id": "materialSavings",
          "label": "Material cost savings"
        },
        {
          "id": "freightSavings",
          "label": "Freight cost savings"
        },
        {
          "id": "emissionsAvoidedTons",
          "label": "Emissions avoided"
        },
        {
          "id": "savingsPerUnit",
          "label": "Savings per unit"
        }
      ]
    },
    {
      "slug": "building-eui",
      "url": "https://www.revenuelab.fyi/toolbox/building-eui",
      "title": "Building Energy Use Intensity (EUI) Calculator",
      "category": "other",
      "summary": "kBtu per square foot per year, benchmarked against ENERGY STAR medians.",
      "formula": "Site EUI = (kWh × 3.412 + therms × 100) ÷ square footage, in kBtu/sq ft/yr.",
      "inputs": [
        {
          "id": "kwh",
          "label": "Annual electricity",
          "kind": "number"
        },
        {
          "id": "therms",
          "label": "Annual natural gas",
          "kind": "number"
        },
        {
          "id": "sqft",
          "label": "Building square footage",
          "kind": "number"
        },
        {
          "id": "type",
          "label": "Building type",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "eui",
          "label": "Site EUI"
        },
        {
          "id": "kbtu",
          "label": "Total annual energy"
        },
        {
          "id": "median",
          "label": "ENERGY STAR median for type"
        },
        {
          "id": "vsMedianPct",
          "label": "vs. median (positive = worse)"
        }
      ]
    },
    {
      "slug": "led-retrofit-payback",
      "url": "https://www.revenuelab.fyi/toolbox/led-retrofit-payback",
      "title": "LED Retrofit Payback Calculator",
      "category": "financial",
      "summary": "Simple and rebate-adjusted payback period for switching to LED.",
      "formula": "Annual energy savings = fixtures × (old W − new W) × hours/yr ÷ 1000 × $/kWh. Payback = (project cost − rebate) ÷ (energy savings + maintenance savings).",
      "inputs": [
        {
          "id": "fixtures",
          "label": "Number of fixtures",
          "kind": "number"
        },
        {
          "id": "oldWatts",
          "label": "Existing fixture wattage",
          "kind": "number"
        },
        {
          "id": "newWatts",
          "label": "LED fixture wattage",
          "kind": "number"
        },
        {
          "id": "hoursYr",
          "label": "Operating hours per year",
          "kind": "number"
        },
        {
          "id": "elecRate",
          "label": "Electricity rate",
          "kind": "number"
        },
        {
          "id": "costPerFixture",
          "label": "Installed cost per fixture",
          "kind": "number"
        },
        {
          "id": "rebate",
          "label": "Utility rebate (total)",
          "kind": "number"
        },
        {
          "id": "maintSavingsYr",
          "label": "Annual maintenance savings",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paybackYears",
          "label": "Payback period"
        },
        {
          "id": "netCost",
          "label": "Net project cost after rebate"
        },
        {
          "id": "totalSavingsYr",
          "label": "Total annual savings"
        },
        {
          "id": "energySavingsKwh",
          "label": "Annual energy savings"
        },
        {
          "id": "emissionsAvoidedTons",
          "label": "Emissions avoided per year"
        }
      ]
    },
    {
      "slug": "employee-commute-emissions",
      "url": "https://www.revenuelab.fyi/toolbox/employee-commute-emissions",
      "title": "Employee Commute Emissions Calculator",
      "category": "other",
      "summary": "Scope 3 commuting emissions across your workforce's commute modes.",
      "formula": "Annual miles = employees × round-trip miles × days/week × 52. Emissions = Σ(miles by mode × per-mile factor ÷ avg occupancy).",
      "inputs": [
        {
          "id": "employees",
          "label": "Employees commuting",
          "kind": "number"
        },
        {
          "id": "roundTripMiles",
          "label": "Average round-trip commute",
          "kind": "number"
        },
        {
          "id": "daysWeek",
          "label": "In-office days per week",
          "kind": "number"
        },
        {
          "id": "driveAlonePct",
          "label": "Share driving alone",
          "kind": "number"
        },
        {
          "id": "carpoolPct",
          "label": "Share carpooling (avg 2.2 occupants)",
          "kind": "number"
        },
        {
          "id": "transitPct",
          "label": "Share using transit",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalTons",
          "label": "Total annual commute emissions"
        },
        {
          "id": "perEmployeeKg",
          "label": "Per-employee emissions"
        },
        {
          "id": "driveTons",
          "label": "From driving alone"
        },
        {
          "id": "transitTons",
          "label": "From transit"
        },
        {
          "id": "bikeWalkPct",
          "label": "Share biking/walking/other"
        }
      ]
    },
    {
      "slug": "embodied-carbon-materials",
      "url": "https://www.revenuelab.fyi/toolbox/embodied-carbon-materials",
      "title": "Embodied Carbon of Materials Calculator",
      "category": "other",
      "summary": "Upfront carbon footprint of concrete, steel, and other construction materials.",
      "formula": "Embodied carbon = Σ(material quantity × GWP factor per unit), summed across concrete, steel, and other inputs.",
      "inputs": [
        {
          "id": "concreteCy",
          "label": "Concrete volume",
          "kind": "number"
        },
        {
          "id": "concreteGwp",
          "label": "Concrete GWP factor",
          "kind": "number"
        },
        {
          "id": "steelTons",
          "label": "Structural steel",
          "kind": "number"
        },
        {
          "id": "steelGwp",
          "label": "Steel GWP factor",
          "kind": "number"
        },
        {
          "id": "sqft",
          "label": "Gross building area",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalTons",
          "label": "Total upfront embodied carbon"
        },
        {
          "id": "concreteTons",
          "label": "From concrete"
        },
        {
          "id": "steelTons",
          "label": "From steel"
        },
        {
          "id": "kgPerSqft",
          "label": "kg CO2e per sq ft"
        }
      ]
    },
    {
      "slug": "rec-cost",
      "url": "https://www.revenuelab.fyi/toolbox/rec-cost",
      "title": "Renewable Energy Certificate (REC) Cost Calculator",
      "category": "financial",
      "summary": "What it costs to match your electricity use with renewable energy certificates.",
      "formula": "RECs needed = annual kWh ÷ 1,000 (MWh). Cost = RECs × price per MWh.",
      "inputs": [
        {
          "id": "kwh",
          "label": "Annual electricity use",
          "kind": "number"
        },
        {
          "id": "recType",
          "label": "REC type",
          "kind": "select"
        },
        {
          "id": "customPrice",
          "label": "Or enter your own price ($/MWh, 0 = use type default)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cost",
          "label": "Annual REC purchase cost"
        },
        {
          "id": "mwh",
          "label": "RECs needed (MWh)"
        },
        {
          "id": "pricePerMwh",
          "label": "Price per MWh"
        },
        {
          "id": "costPerKwh",
          "label": "Cost per kWh (cents)"
        }
      ]
    },
    {
      "slug": "ghg-scope3-travel",
      "url": "https://www.revenuelab.fyi/toolbox/ghg-scope3-travel",
      "title": "Business Travel Emissions Calculator",
      "category": "other",
      "summary": "Flight and hotel emissions from your company's travel program.",
      "formula": "Flight emissions = Σ(segments × distance × per-mile factor by haul length × class multiplier). Hotel emissions = nights × per-night factor.",
      "inputs": [
        {
          "id": "shortSegments",
          "label": "Short-haul flights/yr (<500 mi)",
          "kind": "number"
        },
        {
          "id": "mediumSegments",
          "label": "Medium-haul flights/yr (500-2000 mi)",
          "kind": "number"
        },
        {
          "id": "longSegments",
          "label": "Long-haul flights/yr (>2000 mi)",
          "kind": "number"
        },
        {
          "id": "businessPct",
          "label": "Share flown business/first class",
          "kind": "number"
        },
        {
          "id": "hotelNights",
          "label": "Hotel nights per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalTons",
          "label": "Total travel emissions"
        },
        {
          "id": "flightTons",
          "label": "From flights"
        },
        {
          "id": "hotelTons",
          "label": "From hotel stays"
        },
        {
          "id": "totalSegments",
          "label": "Total flight segments"
        }
      ]
    },
    {
      "slug": "esg-carbon-intensity-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/esg-carbon-intensity-revenue",
      "title": "Carbon Intensity per Revenue Calculator",
      "category": "financial",
      "summary": "Emissions per dollar of revenue, the metric investors actually benchmark.",
      "formula": "Carbon intensity = total emissions (tCO2e) ÷ revenue ($M).",
      "inputs": [
        {
          "id": "scope12",
          "label": "Scope 1+2 emissions",
          "kind": "number"
        },
        {
          "id": "scope3",
          "label": "Scope 3 emissions (optional)",
          "kind": "number"
        },
        {
          "id": "revenue",
          "label": "Annual revenue",
          "kind": "number"
        },
        {
          "id": "priorIntensity",
          "label": "Prior year intensity (for comparison)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalIntensity",
          "label": "Total carbon intensity (incl. Scope 3)"
        },
        {
          "id": "scope12Intensity",
          "label": "Scope 1+2 intensity"
        },
        {
          "id": "totalEmissions",
          "label": "Total emissions"
        },
        {
          "id": "yoyChange",
          "label": "Change vs. prior year Scope 1+2 intensity"
        }
      ]
    },
    {
      "slug": "esg-score-improvement-cost",
      "url": "https://www.revenuelab.fyi/toolbox/esg-score-improvement-cost",
      "title": "ESG Score Improvement Cost Calculator",
      "category": "financial",
      "summary": "Budget for the initiatives typically needed to move an ESG score up a tier.",
      "formula": "Total cost = data & assurance cost + target-setting cost + program/initiative cost + FTE cost, each scaled by revenue tier.",
      "inputs": [
        {
          "id": "revenue",
          "label": "Annual revenue",
          "kind": "number"
        },
        {
          "id": "assuranceCost",
          "label": "Emissions data assurance (annual)",
          "kind": "number"
        },
        {
          "id": "targetSettingCost",
          "label": "SBTi target-setting & validation",
          "kind": "number"
        },
        {
          "id": "fteCount",
          "label": "Dedicated sustainability FTEs needed",
          "kind": "number"
        },
        {
          "id": "fteCost",
          "label": "Fully loaded cost per FTE",
          "kind": "number"
        },
        {
          "id": "programBudget",
          "label": "Initiative/program budget (supplier code, reporting platform, etc.)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated first-year budget"
        },
        {
          "id": "fteCost",
          "label": "Dedicated staff cost"
        },
        {
          "id": "pctRevenue",
          "label": "Share of annual revenue"
        },
        {
          "id": "annualOngoing",
          "label": "Ongoing annual cost (staff + assurance)"
        }
      ]
    },
    {
      "slug": "net-zero-gap",
      "url": "https://www.revenuelab.fyi/toolbox/net-zero-gap",
      "title": "Net-Zero Reduction Gap Calculator",
      "category": "other",
      "summary": "How much you need to cut each year to hit a net-zero target date.",
      "formula": "Required annual reduction rate r solves: baseline × (1−r)^years = target emissions. r = 1 − (target/baseline)^(1/years).",
      "inputs": [
        {
          "id": "baseline",
          "label": "Current annual emissions",
          "kind": "number"
        },
        {
          "id": "baseYear",
          "label": "Baseline year",
          "kind": "number"
        },
        {
          "id": "targetYear",
          "label": "Net-zero target year",
          "kind": "number"
        },
        {
          "id": "residualPct",
          "label": "Residual emissions at target (% of baseline)",
          "kind": "number"
        },
        {
          "id": "historicalRate",
          "label": "Your current annual reduction rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "requiredRate",
          "label": "Required annual reduction rate"
        },
        {
          "id": "gap",
          "label": "Gap vs. your current trajectory"
        },
        {
          "id": "target",
          "label": "Target residual emissions"
        },
        {
          "id": "projectedAtTarget",
          "label": "Where current rate lands you at target year"
        },
        {
          "id": "years",
          "label": "Years to target"
        }
      ]
    },
    {
      "slug": "carbon-price-exposure",
      "url": "https://www.revenuelab.fyi/toolbox/carbon-price-exposure",
      "title": "Carbon Price Exposure Calculator",
      "category": "financial",
      "summary": "Financial exposure if a carbon price were applied to your emissions.",
      "formula": "Exposure = emissions (tCO2e) × carbon price per ton, shown at current and modeled future price levels.",
      "inputs": [
        {
          "id": "emissions",
          "label": "Total emissions in scope",
          "kind": "number"
        },
        {
          "id": "currentPrice",
          "label": "Current/internal carbon price",
          "kind": "number"
        },
        {
          "id": "futurePrice",
          "label": "Modeled future carbon price",
          "kind": "number"
        },
        {
          "id": "revenue",
          "label": "Annual revenue (for context)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "currentExposure",
          "label": "Current price exposure"
        },
        {
          "id": "futureExposure",
          "label": "Modeled future exposure"
        },
        {
          "id": "delta",
          "label": "Increase if price rises"
        },
        {
          "id": "pctRevenue",
          "label": "Current exposure as % of revenue"
        }
      ]
    },
    {
      "slug": "carbon-tax-liability",
      "url": "https://www.revenuelab.fyi/toolbox/carbon-tax-liability",
      "title": "Carbon Tax Liability Calculator",
      "category": "financial",
      "summary": "Estimated compliance cost under a carbon tax or cap-and-trade program.",
      "formula": "Liability = max(0, covered emissions − free allowances) × allowance price.",
      "inputs": [
        {
          "id": "coveredEmissions",
          "label": "Covered emissions",
          "kind": "number"
        },
        {
          "id": "freeAllowances",
          "label": "Free allowances allocated",
          "kind": "number"
        },
        {
          "id": "allowancePrice",
          "label": "Allowance price",
          "kind": "number"
        },
        {
          "id": "bankedAllowances",
          "label": "Banked allowances from prior years",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "liability",
          "label": "Estimated compliance cost"
        },
        {
          "id": "shortfall",
          "label": "Allowance shortfall"
        },
        {
          "id": "coveragePct",
          "label": "Share covered by free allowances"
        },
        {
          "id": "avgCostPerTon",
          "label": "Average cost per ton of covered emissions"
        }
      ]
    },
    {
      "slug": "methane-landfill-emissions",
      "url": "https://www.revenuelab.fyi/toolbox/methane-landfill-emissions",
      "title": "Landfill Methane Emissions Calculator",
      "category": "other",
      "summary": "Estimated methane emissions from your organic and mixed waste sent to landfill.",
      "formula": "Methane emissions = landfilled tons × organic fraction × CH4 generation factor per ton × GWP (25-28 for CH4 on 100-yr basis).",
      "inputs": [
        {
          "id": "landfillTons",
          "label": "Total waste to landfill",
          "kind": "number"
        },
        {
          "id": "organicPct",
          "label": "Share that is organic (food, yard, paper)",
          "kind": "number"
        },
        {
          "id": "ch4Factor",
          "label": "CH4 generation factor",
          "kind": "number"
        },
        {
          "id": "gwp",
          "label": "CH4 global warming potential (100-yr)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "co2eTons",
          "label": "Estimated CO2e from landfill methane"
        },
        {
          "id": "ch4Kg",
          "label": "Methane generated"
        },
        {
          "id": "organicTons",
          "label": "Organic tons landfilled"
        },
        {
          "id": "co2ePerLandfillTon",
          "label": "CO2e per ton landfilled"
        }
      ]
    },
    {
      "slug": "compost-diversion-savings",
      "url": "https://www.revenuelab.fyi/toolbox/compost-diversion-savings",
      "title": "Compost Diversion Savings Calculator",
      "category": "financial",
      "summary": "Cost and emissions savings from composting instead of landfilling food waste.",
      "formula": "Net cost/savings = (landfill hauling+tip cost) − (compost hauling+tip cost). Emissions avoided = organic tons × CH4 factor × GWP.",
      "inputs": [
        {
          "id": "foodWasteTons",
          "label": "Food/organic waste generated",
          "kind": "number"
        },
        {
          "id": "landfillCost",
          "label": "Landfill hauling + tip cost",
          "kind": "number"
        },
        {
          "id": "compostCost",
          "label": "Composting service cost",
          "kind": "number"
        },
        {
          "id": "ch4Factor",
          "label": "CH4 generation factor",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "savings",
          "label": "Annual net savings"
        },
        {
          "id": "landfillTotal",
          "label": "Current landfill cost"
        },
        {
          "id": "compostTotal",
          "label": "Composting service cost"
        },
        {
          "id": "emissionsAvoidedTons",
          "label": "Methane emissions avoided (CO2e)"
        }
      ]
    },
    {
      "slug": "green-building-certification-cost",
      "url": "https://www.revenuelab.fyi/toolbox/green-building-certification-cost",
      "title": "Green Building Certification Cost Calculator",
      "category": "financial",
      "summary": "Estimated hard, soft, and registration costs to certify a building.",
      "formula": "Certification fees = registration + review fees (per USGBC schedule, scaled by size). Construction premium = base construction cost × premium % by certification level.",
      "inputs": [
        {
          "id": "sqft",
          "label": "Gross square footage",
          "kind": "number"
        },
        {
          "id": "baseConstructionCost",
          "label": "Base construction cost",
          "kind": "number"
        },
        {
          "id": "level",
          "label": "Target certification level",
          "kind": "select"
        },
        {
          "id": "consultingFee",
          "label": "LEED consultant/commissioning fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalCost",
          "label": "Total certification-related cost"
        },
        {
          "id": "constructionPremium",
          "label": "Construction cost premium"
        },
        {
          "id": "registrationFee",
          "label": "USGBC registration + review fees"
        },
        {
          "id": "costPerSqft",
          "label": "Cost per sq ft"
        }
      ]
    },
    {
      "slug": "sustainability-report-cost",
      "url": "https://www.revenuelab.fyi/toolbox/sustainability-report-cost",
      "title": "Sustainability Report Production Cost Calculator",
      "category": "financial",
      "summary": "Budget for producing an annual sustainability or ESG report.",
      "formula": "Total cost = data collection & coordination + third-party assurance + design/production + framework alignment consulting.",
      "inputs": [
        {
          "id": "dataCollection",
          "label": "Internal data collection & coordination cost",
          "kind": "number"
        },
        {
          "id": "assurance",
          "label": "Third-party assurance",
          "kind": "number"
        },
        {
          "id": "design",
          "label": "Design & production",
          "kind": "number"
        },
        {
          "id": "frameworkCount",
          "label": "Number of frameworks reported (GRI, SASB, TCFD, CSRD, etc.)",
          "kind": "number"
        },
        {
          "id": "frameworkCost",
          "label": "Consulting cost per additional framework",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated total report cost"
        },
        {
          "id": "frameworkCost",
          "label": "Multi-framework consulting cost"
        },
        {
          "id": "assurance",
          "label": "Third-party assurance cost"
        },
        {
          "id": "perFramework",
          "label": "Effective cost per framework"
        }
      ]
    },
    {
      "slug": "supply-chain-emissions-intensity",
      "url": "https://www.revenuelab.fyi/toolbox/supply-chain-emissions-intensity",
      "title": "Supply Chain Emissions Intensity Calculator",
      "category": "other",
      "summary": "Emissions per dollar of spend by supplier category, spend-based method.",
      "formula": "Category emissions = category spend ($) × emissions factor (kg CO2e/$). Total intensity = total emissions ÷ total spend.",
      "inputs": [
        {
          "id": "materialsSpend",
          "label": "Raw materials/metals spend",
          "kind": "number"
        },
        {
          "id": "materialsFactor",
          "label": "Materials emission factor",
          "kind": "number"
        },
        {
          "id": "logisticsSpend",
          "label": "Logistics/transport spend",
          "kind": "number"
        },
        {
          "id": "logisticsFactor",
          "label": "Logistics emission factor",
          "kind": "number"
        },
        {
          "id": "servicesSpend",
          "label": "Professional services spend",
          "kind": "number"
        },
        {
          "id": "servicesFactor",
          "label": "Services emission factor",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalTons",
          "label": "Total estimated supply chain emissions"
        },
        {
          "id": "materialsTons",
          "label": "From raw materials"
        },
        {
          "id": "logisticsTons",
          "label": "From logistics"
        },
        {
          "id": "intensity",
          "label": "Overall intensity (kg CO2e per $)"
        }
      ]
    },
    {
      "slug": "solar-ppa-emissions-avoided",
      "url": "https://www.revenuelab.fyi/toolbox/solar-ppa-emissions-avoided",
      "title": "Solar PPA Emissions Avoided Calculator",
      "category": "other",
      "summary": "Grid emissions avoided by contracting for solar generation via a PPA.",
      "formula": "Annual generation = capacity (MW) × capacity factor × 8,760 hours. Emissions avoided = generation (MWh) × grid emission factor.",
      "inputs": [
        {
          "id": "capacityMw",
          "label": "PPA contracted capacity",
          "kind": "number"
        },
        {
          "id": "capacityFactor",
          "label": "Solar capacity factor",
          "kind": "number"
        },
        {
          "id": "gridFactor",
          "label": "Grid emission factor",
          "kind": "number"
        },
        {
          "id": "annualLoadKwh",
          "label": "Your annual electricity load (for context)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "emissionsAvoidedTons",
          "label": "Annual emissions avoided"
        },
        {
          "id": "generationMwh",
          "label": "Estimated annual generation"
        },
        {
          "id": "pctLoadCovered",
          "label": "Share of your annual load covered"
        }
      ]
    },
    {
      "slug": "water-fixture-retrofit-savings",
      "url": "https://www.revenuelab.fyi/toolbox/water-fixture-retrofit-savings",
      "title": "Water Fixture Retrofit Savings Calculator",
      "category": "financial",
      "summary": "Water and cost savings from switching to low-flow toilets, faucets, and showerheads.",
      "formula": "Annual gallons saved = uses/day × (old gal/use − new gal/use) × fixture count × 365. Savings = gallons saved ÷ 1000 × combined water+sewer rate.",
      "inputs": [
        {
          "id": "toilets",
          "label": "Number of toilets to retrofit",
          "kind": "number"
        },
        {
          "id": "oldGpf",
          "label": "Current toilet flush volume",
          "kind": "number"
        },
        {
          "id": "newGpf",
          "label": "Low-flow toilet flush volume",
          "kind": "number"
        },
        {
          "id": "usesPerDay",
          "label": "Uses per fixture per day",
          "kind": "number"
        },
        {
          "id": "waterRate",
          "label": "Combined water + sewer rate",
          "kind": "number"
        },
        {
          "id": "retrofitCost",
          "label": "Installed cost per toilet",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualSavings",
          "label": "Annual cost savings"
        },
        {
          "id": "annualGallons",
          "label": "Annual gallons saved"
        },
        {
          "id": "totalCost",
          "label": "Total retrofit cost"
        },
        {
          "id": "paybackYears",
          "label": "Payback period"
        }
      ]
    },
    {
      "slug": "tutor-hourly-rate-utilization",
      "url": "https://www.revenuelab.fyi/toolbox/tutor-hourly-rate-utilization",
      "title": "Tutor Hourly Rate & Utilization Calculator",
      "category": "financial",
      "summary": "Find the rate you must charge given real bookable hours, not calendar hours.",
      "formula": "Billable hours/week = available hours × utilization%. Required rate = (annual income goal + annual expenses) ÷ (billable hours/week × weeks worked).",
      "inputs": [
        {
          "id": "incomeGoal",
          "label": "Target annual take-home",
          "kind": "number"
        },
        {
          "id": "expenses",
          "label": "Annual business expenses",
          "kind": "number"
        },
        {
          "id": "availHours",
          "label": "Available hours per week",
          "kind": "number"
        },
        {
          "id": "utilization",
          "label": "Realistic utilization",
          "kind": "number"
        },
        {
          "id": "weeks",
          "label": "Weeks worked per year",
          "kind": "number"
        },
        {
          "id": "platformFee",
          "label": "Platform / referral fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "listRate",
          "label": "Rate to list"
        },
        {
          "id": "netRate",
          "label": "Rate you keep per hour"
        },
        {
          "id": "billableHrsWeek",
          "label": "Billable hours per week"
        },
        {
          "id": "annualHours",
          "label": "Annual billable hours"
        },
        {
          "id": "weeklyIncome",
          "label": "Weekly income at full booking"
        }
      ]
    },
    {
      "slug": "cohort-course-revenue-refund",
      "url": "https://www.revenuelab.fyi/toolbox/cohort-course-revenue-refund",
      "title": "Cohort Course Revenue & Refund Reserve Calculator",
      "category": "financial",
      "summary": "Net revenue for a cohort-based course after refunds, fees, and affiliate cuts.",
      "formula": "Gross = seats × price. Refund reserve = gross × refund rate. Net revenue = gross − refunds − processing fees − affiliate payouts.",
      "inputs": [
        {
          "id": "seats",
          "label": "Seats sold",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price per seat",
          "kind": "number"
        },
        {
          "id": "refundRate",
          "label": "Expected refund rate",
          "kind": "number"
        },
        {
          "id": "processingFee",
          "label": "Payment processing fee",
          "kind": "number"
        },
        {
          "id": "affiliateShare",
          "label": "Seats via affiliate",
          "kind": "number"
        },
        {
          "id": "affiliateCommission",
          "label": "Affiliate commission",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "net",
          "label": "Net revenue after all cuts"
        },
        {
          "id": "gross",
          "label": "Gross revenue"
        },
        {
          "id": "refundReserve",
          "label": "Refund reserve to hold"
        },
        {
          "id": "processing",
          "label": "Payment processing cost"
        },
        {
          "id": "affiliatePayout",
          "label": "Affiliate payouts"
        },
        {
          "id": "perSeatNet",
          "label": "Net per seat"
        }
      ]
    },
    {
      "slug": "online-course-completion-economics",
      "url": "https://www.revenuelab.fyi/toolbox/online-course-completion-economics",
      "title": "Online Course Completion Economics Calculator",
      "category": "financial",
      "summary": "What low completion rates actually cost you in support load and refunds.",
      "formula": "Completers = buyers × completion rate. Non-completer refund risk = non-completers × refund propensity × price. Support cost = buyers × avg tickets × cost per ticket.",
      "inputs": [
        {
          "id": "buyers",
          "label": "Course buyers",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price",
          "kind": "number"
        },
        {
          "id": "completionRate",
          "label": "Completion rate",
          "kind": "number"
        },
        {
          "id": "refundPropensity",
          "label": "Refund rate among non-completers",
          "kind": "number"
        },
        {
          "id": "avgTickets",
          "label": "Support tickets per buyer",
          "kind": "number"
        },
        {
          "id": "costPerTicket",
          "label": "Cost per support ticket",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netAfterRisk",
          "label": "Net revenue after completion drag"
        },
        {
          "id": "completers",
          "label": "Buyers who finish"
        },
        {
          "id": "nonCompleters",
          "label": "Buyers who don't finish"
        },
        {
          "id": "refundRisk",
          "label": "Refund risk from non-completers"
        },
        {
          "id": "supportCost",
          "label": "Total support cost"
        }
      ]
    },
    {
      "slug": "private-school-vs-public-cost-delta",
      "url": "https://www.revenuelab.fyi/toolbox/private-school-vs-public-cost-delta",
      "title": "Private School vs Public School Cost Delta Calculator",
      "category": "financial",
      "summary": "The real dollar gap between private tuition and 'free' public school over K-12.",
      "formula": "Private annual cost = tuition + fees + extras. Public annual cost = extras only. Delta = (private − public) × years. Opportunity cost compounds delta annually at the given return.",
      "inputs": [
        {
          "id": "tuition",
          "label": "Private tuition per year",
          "kind": "number"
        },
        {
          "id": "privateFees",
          "label": "Private fees, uniforms, activities",
          "kind": "number"
        },
        {
          "id": "publicExtras",
          "label": "Public school extras per year",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Remaining school years",
          "kind": "number"
        },
        {
          "id": "tuitionInflation",
          "label": "Annual tuition inflation",
          "kind": "number"
        },
        {
          "id": "investReturn",
          "label": "Return if invested instead",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalDelta",
          "label": "Total extra cost of private school"
        },
        {
          "id": "futureValue",
          "label": "Value if difference were invested"
        },
        {
          "id": "avgAnnualDelta",
          "label": "Average annual extra cost"
        }
      ]
    },
    {
      "slug": "529-drawdown",
      "url": "https://www.revenuelab.fyi/toolbox/529-drawdown",
      "title": "529 Plan Drawdown Calculator",
      "category": "financial",
      "summary": "How long a 529 balance lasts against tuition, and the annual gap to fund out of pocket.",
      "formula": "Each year: balance grows at return rate, then withdrawal = current cost of attendance is subtracted. Shortfall = years where withdrawal exceeds balance.",
      "inputs": [
        {
          "id": "balance",
          "label": "Current 529 balance",
          "kind": "number"
        },
        {
          "id": "annualCost",
          "label": "Current annual cost of attendance",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years of school remaining",
          "kind": "number"
        },
        {
          "id": "costInflation",
          "label": "Tuition/cost inflation",
          "kind": "number"
        },
        {
          "id": "returnRate",
          "label": "Expected account return",
          "kind": "number"
        },
        {
          "id": "annualContribution",
          "label": "Additional contributions per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "yearsCovered",
          "label": "Years fully covered"
        },
        {
          "id": "shortfall",
          "label": "Total shortfall to fund elsewhere"
        },
        {
          "id": "endingBalance",
          "label": "Balance remaining at end"
        },
        {
          "id": "fullyCovered",
          "label": "All years fully funded?"
        }
      ]
    },
    {
      "slug": "student-teacher-ratio-staffing-cost",
      "url": "https://www.revenuelab.fyi/toolbox/student-teacher-ratio-staffing-cost",
      "title": "Student-Teacher Ratio Staffing Cost Calculator",
      "category": "financial",
      "summary": "What a target class size actually costs in teacher headcount and salary.",
      "formula": "Teachers needed = ceil(enrollment ÷ ratio). Staffing cost = teachers needed × fully loaded salary. Cost per student = staffing cost ÷ enrollment.",
      "inputs": [
        {
          "id": "enrollment",
          "label": "Total students",
          "kind": "number"
        },
        {
          "id": "targetRatio",
          "label": "Target student-teacher ratio",
          "kind": "number"
        },
        {
          "id": "salary",
          "label": "Average salary per teacher",
          "kind": "number"
        },
        {
          "id": "benefitsLoad",
          "label": "Benefits & payroll tax load",
          "kind": "number"
        },
        {
          "id": "altRatio",
          "label": "Alternate ratio to compare",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "staffingCost",
          "label": "Total staffing cost"
        },
        {
          "id": "teachersNeeded",
          "label": "Teachers needed at target ratio"
        },
        {
          "id": "costPerStudent",
          "label": "Staffing cost per student"
        },
        {
          "id": "teachersAlt",
          "label": "Teachers needed at alternate ratio"
        },
        {
          "id": "costDelta",
          "label": "Extra cost vs alternate ratio"
        }
      ]
    },
    {
      "slug": "lms-seat-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/lms-seat-pricing",
      "title": "LMS Seat Pricing Calculator",
      "category": "financial",
      "summary": "Per-seat price and margin for licensing your learning platform to schools or companies.",
      "formula": "Total cost = fixed cost + (seats × variable cost per seat). Required price/seat = (total cost) ÷ (seats × (1 − margin%)) adjusted for margin target. Discounted revenue = seats × price × (1 − discount%).",
      "inputs": [
        {
          "id": "seats",
          "label": "Seats in this contract",
          "kind": "number"
        },
        {
          "id": "fixedCost",
          "label": "Fixed annual cost (hosting, support base)",
          "kind": "number"
        },
        {
          "id": "variableCost",
          "label": "Variable cost per seat per year",
          "kind": "number"
        },
        {
          "id": "targetMargin",
          "label": "Target gross margin",
          "kind": "number"
        },
        {
          "id": "volumeDiscount",
          "label": "Volume discount offered",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pricePerSeat",
          "label": "List price per seat"
        },
        {
          "id": "discountedPrice",
          "label": "Price after volume discount"
        },
        {
          "id": "actualMargin",
          "label": "Actual margin at discounted price"
        },
        {
          "id": "actualRevenue",
          "label": "Total contract revenue"
        },
        {
          "id": "totalCost",
          "label": "Total cost to serve"
        }
      ]
    },
    {
      "slug": "test-prep-score-gain-value",
      "url": "https://www.revenuelab.fyi/toolbox/test-prep-score-gain-value",
      "title": "Test Prep Score-Gain Value Calculator",
      "category": "financial",
      "summary": "Cost per point of score improvement, and whether the prep investment is worth it.",
      "formula": "Cost per point = total prep cost ÷ expected score gain. Scholarship value estimate = expected gain × estimated dollars of scholarship per point. Net value = scholarship value − prep cost.",
      "inputs": [
        {
          "id": "prepCost",
          "label": "Total prep cost",
          "kind": "number"
        },
        {
          "id": "hoursCommitted",
          "label": "Student hours committed",
          "kind": "number"
        },
        {
          "id": "expectedGain",
          "label": "Expected score gain (points)",
          "kind": "number"
        },
        {
          "id": "scholarshipPerPoint",
          "label": "Est. scholarship $ per point",
          "kind": "number"
        },
        {
          "id": "baselineScore",
          "label": "Baseline score",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netValue",
          "label": "Net value (scholarship minus cost)"
        },
        {
          "id": "costPerPoint",
          "label": "Cost per point of gain"
        },
        {
          "id": "costPerHour",
          "label": "Cost per hour of prep"
        },
        {
          "id": "scholarshipValue",
          "label": "Estimated scholarship value of gain"
        },
        {
          "id": "newScore",
          "label": "Projected new score"
        }
      ]
    },
    {
      "slug": "teacher-stipend-cost",
      "url": "https://www.revenuelab.fyi/toolbox/teacher-stipend-cost",
      "title": "Teacher Stipend Cost Calculator",
      "category": "financial",
      "summary": "Budget the true cost of coaching, club, and extra-duty stipends across a staff.",
      "formula": "Total stipend cost = sum(positions × stipend amount). Loaded cost = total stipend cost × (1 + payroll tax rate). Percent of base budget = loaded cost ÷ base instructional budget.",
      "inputs": [
        {
          "id": "coachingPositions",
          "label": "Coaching / athletics positions",
          "kind": "number"
        },
        {
          "id": "coachingStipend",
          "label": "Average coaching stipend",
          "kind": "number"
        },
        {
          "id": "clubPositions",
          "label": "Club / activity advisor positions",
          "kind": "number"
        },
        {
          "id": "clubStipend",
          "label": "Average club stipend",
          "kind": "number"
        },
        {
          "id": "payrollTax",
          "label": "Payroll tax / benefits load on stipends",
          "kind": "number"
        },
        {
          "id": "baseBudget",
          "label": "Base instructional budget",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "loaded",
          "label": "Total loaded stipend cost"
        },
        {
          "id": "totalStipend",
          "label": "Raw stipend total"
        },
        {
          "id": "pctOfBudget",
          "label": "% of base instructional budget"
        },
        {
          "id": "coachTotal",
          "label": "Coaching stipend total"
        },
        {
          "id": "clubTotal",
          "label": "Club/activity stipend total"
        }
      ]
    },
    {
      "slug": "bootcamp-isa-vs-upfront",
      "url": "https://www.revenuelab.fyi/toolbox/bootcamp-isa-vs-upfront",
      "title": "Bootcamp ISA vs Upfront Tuition Calculator",
      "category": "financial",
      "summary": "Compare total cost of an income share agreement against paying tuition upfront.",
      "formula": "ISA total paid = min(salary × ISA% × months ÷ 12, ISA cap). Compare against upfront tuition minus any financing cost if upfront is a loan.",
      "inputs": [
        {
          "id": "upfrontTuition",
          "label": "Upfront tuition price",
          "kind": "number"
        },
        {
          "id": "postGradSalary",
          "label": "Expected post-bootcamp salary",
          "kind": "number"
        },
        {
          "id": "isaPercent",
          "label": "ISA percentage of income",
          "kind": "number"
        },
        {
          "id": "isaMonths",
          "label": "ISA payment period",
          "kind": "number"
        },
        {
          "id": "isaCap",
          "label": "ISA payment cap",
          "kind": "number"
        },
        {
          "id": "loanRate",
          "label": "APR if upfront is financed",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cheaperOption",
          "label": "Cheaper option"
        },
        {
          "id": "isaTotal",
          "label": "Total paid under ISA"
        },
        {
          "id": "upfrontTotal",
          "label": "Total paid upfront (incl. financing)"
        },
        {
          "id": "savings",
          "label": "Savings by choosing the cheaper option"
        }
      ]
    },
    {
      "slug": "homeschool-annual-budget",
      "url": "https://www.revenuelab.fyi/toolbox/homeschool-annual-budget",
      "title": "Homeschool Annual Budget Calculator",
      "category": "financial",
      "summary": "Curriculum, co-op, extracurricular, and lost-income cost of homeschooling one year.",
      "formula": "Direct cost = curriculum + co-op + extracurricular + testing + supplies. Total cost = direct cost + (lost work hours × hourly wage foregone).",
      "inputs": [
        {
          "id": "curriculum",
          "label": "Curriculum & materials",
          "kind": "number"
        },
        {
          "id": "coop",
          "label": "Co-op / group class fees",
          "kind": "number"
        },
        {
          "id": "extracurricular",
          "label": "Extracurriculars & sports",
          "kind": "number"
        },
        {
          "id": "testingSupplies",
          "label": "Testing & supplies",
          "kind": "number"
        },
        {
          "id": "lostHoursWeek",
          "label": "Parent work hours reduced per week",
          "kind": "number"
        },
        {
          "id": "hourlyWage",
          "label": "Parent's forgone hourly wage",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total annual cost including lost income"
        },
        {
          "id": "direct",
          "label": "Direct out-of-pocket cost"
        },
        {
          "id": "annualLostIncome",
          "label": "Opportunity cost of reduced work"
        },
        {
          "id": "monthlyDirect",
          "label": "Average monthly direct cost"
        }
      ]
    },
    {
      "slug": "school-bus-route-cost",
      "url": "https://www.revenuelab.fyi/toolbox/school-bus-route-cost",
      "title": "School Bus Route Cost Calculator",
      "category": "financial",
      "summary": "Per-route and per-rider cost of operating a school bus line.",
      "formula": "Fixed cost = driver wages + insurance + depreciation share. Variable cost = miles/day × days × cost per mile. Total annual cost = fixed + variable. Cost per rider = total ÷ riders.",
      "inputs": [
        {
          "id": "driverWage",
          "label": "Driver annual wage (loaded)",
          "kind": "number"
        },
        {
          "id": "insurance",
          "label": "Insurance allocated to this bus",
          "kind": "number"
        },
        {
          "id": "depreciation",
          "label": "Annual depreciation share",
          "kind": "number"
        },
        {
          "id": "milesPerDay",
          "label": "Route miles per day",
          "kind": "number"
        },
        {
          "id": "costPerMile",
          "label": "Fuel + maintenance cost per mile",
          "kind": "number"
        },
        {
          "id": "schoolDays",
          "label": "School days per year",
          "kind": "number"
        },
        {
          "id": "riders",
          "label": "Students on this route",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total annual route cost"
        },
        {
          "id": "costPerRider",
          "label": "Cost per rider per year"
        },
        {
          "id": "fixed",
          "label": "Fixed cost (driver, insurance, depreciation)"
        },
        {
          "id": "variable",
          "label": "Variable cost (fuel & maintenance)"
        },
        {
          "id": "costPerDay",
          "label": "Cost per school day"
        }
      ]
    },
    {
      "slug": "tutoring-package-discount",
      "url": "https://www.revenuelab.fyi/toolbox/tutoring-package-discount",
      "title": "Tutoring Package Discount Calculator",
      "category": "financial",
      "summary": "Set multi-session package prices that still protect your effective hourly rate.",
      "formula": "Package price = sessions × rate × (1 − discount%). Effective hourly = package price ÷ sessions.",
      "inputs": [
        {
          "id": "rate",
          "label": "Single-session rate",
          "kind": "number"
        },
        {
          "id": "sessions",
          "label": "Sessions in package",
          "kind": "number"
        },
        {
          "id": "discount",
          "label": "Package discount",
          "kind": "number"
        },
        {
          "id": "sessions2",
          "label": "Alternate package size",
          "kind": "number"
        },
        {
          "id": "discount2",
          "label": "Alternate discount",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Package price"
        },
        {
          "id": "effHourly",
          "label": "Effective hourly rate"
        },
        {
          "id": "price2",
          "label": "Alternate package price"
        },
        {
          "id": "effHourly2",
          "label": "Alternate effective hourly rate"
        }
      ]
    },
    {
      "slug": "gpa-scholarship-threshold-value",
      "url": "https://www.revenuelab.fyi/toolbox/gpa-scholarship-threshold-value",
      "title": "GPA Scholarship Threshold Value Calculator",
      "category": "financial",
      "summary": "Dollar value of crossing a merit scholarship GPA cutoff.",
      "formula": "Value gained = scholarship at next tier − scholarship at current tier. ROI = value gained ÷ cost to raise GPA.",
      "inputs": [
        {
          "id": "currentAward",
          "label": "Scholarship at current GPA tier",
          "kind": "number"
        },
        {
          "id": "nextAward",
          "label": "Scholarship at next GPA tier",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years the award applies",
          "kind": "number"
        },
        {
          "id": "tutoringCost",
          "label": "Cost to push GPA up (tutoring, etc.)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalGain",
          "label": "Total scholarship value gained"
        },
        {
          "id": "netValue",
          "label": "Net value after prep cost"
        },
        {
          "id": "perYearGain",
          "label": "Per-year award increase"
        },
        {
          "id": "roi",
          "label": "Return on prep investment"
        }
      ]
    },
    {
      "slug": "microschool-per-pupil-cost",
      "url": "https://www.revenuelab.fyi/toolbox/microschool-per-pupil-cost",
      "title": "Microschool Per-Pupil Cost Calculator",
      "category": "financial",
      "summary": "Tuition needed per student to break even on a small independent school model.",
      "formula": "Total cost = staffing + rent + materials + insurance. Tuition per pupil = total cost × (1 + margin%) ÷ enrollment.",
      "inputs": [
        {
          "id": "staffing",
          "label": "Staffing cost",
          "kind": "number"
        },
        {
          "id": "rent",
          "label": "Space rent/utilities per year",
          "kind": "number"
        },
        {
          "id": "materials",
          "label": "Materials & supplies",
          "kind": "number"
        },
        {
          "id": "insurance",
          "label": "Insurance & admin",
          "kind": "number"
        },
        {
          "id": "enrollment",
          "label": "Enrolled students",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Target margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "tuition",
          "label": "Tuition needed per student"
        },
        {
          "id": "tuitionPlus1",
          "label": "Tuition with one more student"
        },
        {
          "id": "tuitionMinus1",
          "label": "Tuition with one fewer student"
        },
        {
          "id": "totalCost",
          "label": "Total annual cost"
        }
      ]
    },
    {
      "slug": "tutoring-center-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/tutoring-center-breakeven",
      "title": "Tutoring Center Break-Even Calculator",
      "category": "financial",
      "summary": "Sessions per month needed to cover rent, staff, and overhead.",
      "formula": "Contribution margin/session = price − variable cost/session. Break-even sessions = fixed cost ÷ contribution margin.",
      "inputs": [
        {
          "id": "rent",
          "label": "Monthly rent & utilities",
          "kind": "number"
        },
        {
          "id": "staffFixed",
          "label": "Monthly fixed staff cost (admin/front desk)",
          "kind": "number"
        },
        {
          "id": "sessionPrice",
          "label": "Price per session",
          "kind": "number"
        },
        {
          "id": "tutorPay",
          "label": "Tutor pay per session",
          "kind": "number"
        },
        {
          "id": "currentSessions",
          "label": "Current monthly sessions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakEven",
          "label": "Break-even sessions per month"
        },
        {
          "id": "profitAtCurrent",
          "label": "Profit at current volume"
        },
        {
          "id": "margin",
          "label": "Contribution margin per session"
        },
        {
          "id": "gapToBreakEven",
          "label": "Sessions above/below break-even"
        }
      ]
    },
    {
      "slug": "textbook-rental-vs-buy",
      "url": "https://www.revenuelab.fyi/toolbox/textbook-rental-vs-buy",
      "title": "Textbook Rental vs Buy Calculator",
      "category": "financial",
      "summary": "Compare total cost of renting versus buying and reselling textbooks across a term.",
      "formula": "Rental cost = rental price + any late fees risk. Buy net cost = purchase price − (resale value × resale probability).",
      "inputs": [
        {
          "id": "rentalPrice",
          "label": "Rental price for the term",
          "kind": "number"
        },
        {
          "id": "purchasePrice",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "resaleValue",
          "label": "Expected resale/buyback value",
          "kind": "number"
        },
        {
          "id": "resaleProbability",
          "label": "Probability you successfully resell",
          "kind": "number"
        },
        {
          "id": "terms",
          "label": "Terms you'll use the book",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cheaper",
          "label": "Cheaper option"
        },
        {
          "id": "buyNet",
          "label": "Net cost if you buy & resell"
        },
        {
          "id": "rentalTotal",
          "label": "Total rental cost"
        },
        {
          "id": "savings",
          "label": "Savings choosing the cheaper option"
        }
      ]
    },
    {
      "slug": "after-school-program-margin",
      "url": "https://www.revenuelab.fyi/toolbox/after-school-program-margin",
      "title": "After-School Program Margin Calculator",
      "category": "financial",
      "summary": "Profit per child for an after-school enrichment program at a given enrollment.",
      "formula": "Staff needed = ceil(children ÷ ratio). Staff cost = staff needed × staff pay per session. Profit = (children × price) − staff cost − overhead.",
      "inputs": [
        {
          "id": "children",
          "label": "Enrolled children",
          "kind": "number"
        },
        {
          "id": "priceWeek",
          "label": "Price per child per week",
          "kind": "number"
        },
        {
          "id": "ratio",
          "label": "Required child-staff ratio",
          "kind": "number"
        },
        {
          "id": "staffPayWeek",
          "label": "Staff pay per week per staff",
          "kind": "number"
        },
        {
          "id": "overheadWeek",
          "label": "Weekly overhead (space/supplies)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "profit",
          "label": "Weekly profit"
        },
        {
          "id": "profitPerChild",
          "label": "Profit per child per week"
        },
        {
          "id": "revenue",
          "label": "Weekly revenue"
        },
        {
          "id": "staffCost",
          "label": "Weekly staff cost"
        }
      ]
    },
    {
      "slug": "learning-loss-recovery-cost",
      "url": "https://www.revenuelab.fyi/toolbox/learning-loss-recovery-cost",
      "title": "Learning Loss Recovery Cost Calculator",
      "category": "financial",
      "summary": "Tutoring hours and cost needed to close a measured grade-level learning gap.",
      "formula": "Hours needed = (grade levels behind × 12 months) ÷ recovery months per 10 hours × 10. Total cost = hours × cost per hour.",
      "inputs": [
        {
          "id": "gradeLevelsBehind",
          "label": "Grade levels behind",
          "kind": "number"
        },
        {
          "id": "recoveryRate",
          "label": "Months gained per 10 hours tutoring",
          "kind": "number"
        },
        {
          "id": "costPerHour",
          "label": "Tutoring cost per hour",
          "kind": "number"
        },
        {
          "id": "studentsCount",
          "label": "Students needing this intervention",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalCost",
          "label": "Total program cost"
        },
        {
          "id": "hoursNeeded",
          "label": "Hours needed per student"
        },
        {
          "id": "costPerStudent",
          "label": "Cost per student"
        },
        {
          "id": "monthsBehind",
          "label": "Months of learning behind"
        }
      ]
    },
    {
      "slug": "class-set-material-cost",
      "url": "https://www.revenuelab.fyi/toolbox/class-set-material-cost",
      "title": "Classroom Material Set Cost Calculator",
      "category": "financial",
      "summary": "Per-student and per-class cost of a classroom material or supply set.",
      "formula": "Total cost = (unit price × quantity) × (1 + tax%) + shipping. Annual cost = total cost ÷ expected years of use + (total cost × loss rate).",
      "inputs": [
        {
          "id": "unitPrice",
          "label": "Price per unit",
          "kind": "number"
        },
        {
          "id": "quantity",
          "label": "Units needed",
          "kind": "number"
        },
        {
          "id": "tax",
          "label": "Sales tax",
          "kind": "number"
        },
        {
          "id": "shipping",
          "label": "Shipping cost",
          "kind": "number"
        },
        {
          "id": "usefulYears",
          "label": "Expected years of use",
          "kind": "number"
        },
        {
          "id": "lossRate",
          "label": "Annual loss/damage rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualCost",
          "label": "Annual cost (depreciation + loss)"
        },
        {
          "id": "total",
          "label": "Total upfront cost"
        },
        {
          "id": "perStudent",
          "label": "Cost per student per year"
        },
        {
          "id": "annualLoss",
          "label": "Annual replacement reserve"
        }
      ]
    },
    {
      "slug": "study-abroad-program-cost",
      "url": "https://www.revenuelab.fyi/toolbox/study-abroad-program-cost",
      "title": "Study Abroad Program Cost Calculator",
      "category": "financial",
      "summary": "All-in cost of a semester or short-term study abroad program versus staying home.",
      "formula": "Total abroad cost = program fee + flights + visa + local living + insurance, adjusted for exchange rate. Incremental cost = total abroad cost − home semester cost.",
      "inputs": [
        {
          "id": "programFee",
          "label": "Program fee",
          "kind": "number"
        },
        {
          "id": "flights",
          "label": "Flights (round trip)",
          "kind": "number"
        },
        {
          "id": "visaInsurance",
          "label": "Visa & insurance",
          "kind": "number"
        },
        {
          "id": "localLiving",
          "label": "Local living/travel budget",
          "kind": "number"
        },
        {
          "id": "exchangeRateAdj",
          "label": "Exchange rate cost adjustment",
          "kind": "number"
        },
        {
          "id": "homeCost",
          "label": "Cost of a home semester",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalAbroad",
          "label": "Total study abroad cost"
        },
        {
          "id": "incremental",
          "label": "Incremental cost vs staying home"
        },
        {
          "id": "base",
          "label": "Base cost before FX adjustment"
        },
        {
          "id": "adj",
          "label": "Exchange rate adjustment"
        }
      ]
    },
    {
      "slug": "sat-act-prep-time-budget",
      "url": "https://www.revenuelab.fyi/toolbox/sat-act-prep-time-budget",
      "title": "SAT/ACT Prep Time Budget Calculator",
      "category": "other",
      "summary": "Weekly study hours needed to hit a target score by test day.",
      "formula": "Total hours needed = target gain × hours per point. Weekly hours = total hours ÷ weeks remaining.",
      "inputs": [
        {
          "id": "targetGain",
          "label": "Target score gain (points)",
          "kind": "number"
        },
        {
          "id": "hoursPerPoint",
          "label": "Hours needed per point (SAT: ~1-1.5)",
          "kind": "number"
        },
        {
          "id": "weeksRemaining",
          "label": "Weeks until test day",
          "kind": "number"
        },
        {
          "id": "maxWeeklyHours",
          "label": "Realistic max weekly hours",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "weeklyHours",
          "label": "Weekly hours needed"
        },
        {
          "id": "totalHours",
          "label": "Total prep hours needed"
        },
        {
          "id": "feasible",
          "label": "Feasibility at your max weekly hours"
        },
        {
          "id": "weeksAtMaxPace",
          "label": "Weeks needed at your max pace"
        }
      ]
    },
    {
      "slug": "class-field-trip-cost",
      "url": "https://www.revenuelab.fyi/toolbox/class-field-trip-cost",
      "title": "Class Field Trip Cost Calculator",
      "category": "financial",
      "summary": "Per-student cost of a field trip including transport, admission, and chaperone coverage.",
      "formula": "Total cost = transport + admission×students + chaperone pay + contingency. Per-student fee = total cost ÷ students.",
      "inputs": [
        {
          "id": "transport",
          "label": "Bus/transport cost",
          "kind": "number"
        },
        {
          "id": "admissionPerStudent",
          "label": "Admission per student",
          "kind": "number"
        },
        {
          "id": "students",
          "label": "Students attending",
          "kind": "number"
        },
        {
          "id": "chaperonePay",
          "label": "Substitute/chaperone pay",
          "kind": "number"
        },
        {
          "id": "contingencyPct",
          "label": "Contingency buffer",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perStudent",
          "label": "Fee per student"
        },
        {
          "id": "total",
          "label": "Total trip cost"
        },
        {
          "id": "admission",
          "label": "Total admission cost"
        },
        {
          "id": "needsWaiverPool",
          "label": "Affordability flag"
        }
      ]
    },
    {
      "slug": "online-tutoring-platform-take-rate",
      "url": "https://www.revenuelab.fyi/toolbox/online-tutoring-platform-take-rate",
      "title": "Online Tutoring Platform Take-Rate Calculator",
      "category": "financial",
      "summary": "What a marketplace's commission actually costs a tutor annually, and the break-even direct-booking rate.",
      "formula": "Annual commission = annual billed revenue × average commission rate. Break-even direct rate = current rate × (1 − commission rate) ÷ (1 − processing fee).",
      "inputs": [
        {
          "id": "annualRevenue",
          "label": "Annual gross tutoring revenue on platform",
          "kind": "number"
        },
        {
          "id": "commissionRate",
          "label": "Average platform commission",
          "kind": "number"
        },
        {
          "id": "currentRate",
          "label": "Current listed hourly rate",
          "kind": "number"
        },
        {
          "id": "directProcessingFee",
          "label": "Direct payment processing fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualCommission",
          "label": "Annual commission paid to platform"
        },
        {
          "id": "directBreakEven",
          "label": "Break-even rate if booking direct"
        },
        {
          "id": "directDiscount",
          "label": "Discount you could offer and still net the same"
        },
        {
          "id": "netKeepPct",
          "label": "% of platform revenue you currently keep"
        }
      ]
    },
    {
      "slug": "annualized-loss-expectancy",
      "url": "https://www.revenuelab.fyi/toolbox/annualized-loss-expectancy",
      "title": "Annualized Loss Expectancy (ALE) Calculator",
      "category": "financial",
      "summary": "Turn asset value, exposure, and threat frequency into a yearly risk dollar figure.",
      "formula": "SLE = Asset Value × Exposure Factor. ALE = SLE × Annualized Rate of Occurrence (ARO).",
      "inputs": [
        {
          "id": "assetValue",
          "label": "Asset value",
          "kind": "number"
        },
        {
          "id": "exposureFactor",
          "label": "Exposure factor (% of asset lost per incident)",
          "kind": "number"
        },
        {
          "id": "aro",
          "label": "Annualized rate of occurrence (events/year)",
          "kind": "number"
        },
        {
          "id": "controlCost",
          "label": "Proposed control cost per year",
          "kind": "number"
        },
        {
          "id": "aroReduction",
          "label": "ARO reduction from control",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ale",
          "label": "Annualized loss expectancy (before control)"
        },
        {
          "id": "sle",
          "label": "Single loss expectancy"
        },
        {
          "id": "newAle",
          "label": "ALE after control"
        },
        {
          "id": "savings",
          "label": "Annual expected loss avoided"
        },
        {
          "id": "netBenefit",
          "label": "Net benefit of control (savings − cost)"
        }
      ]
    },
    {
      "slug": "breach-cost-per-record",
      "url": "https://www.revenuelab.fyi/toolbox/breach-cost-per-record",
      "title": "Data Breach Cost Calculator",
      "category": "financial",
      "summary": "Estimate total breach cost from records exposed, industry, and detection speed.",
      "formula": "Total cost = (records × base cost per record × industry multiplier × containment factor) + fixed costs (legal, forensics, notification, credit monitoring).",
      "inputs": [
        {
          "id": "records",
          "label": "Records exposed",
          "kind": "number"
        },
        {
          "id": "baseCost",
          "label": "Base cost per record",
          "kind": "number"
        },
        {
          "id": "industry",
          "label": "Industry",
          "kind": "select"
        },
        {
          "id": "daysToContain",
          "label": "Days to identify and contain",
          "kind": "number"
        },
        {
          "id": "fixedCosts",
          "label": "Fixed costs (legal, forensics, notification)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated total breach cost"
        },
        {
          "id": "variableCost",
          "label": "Variable cost (records × adjusted rate)"
        },
        {
          "id": "perRecordAdjusted",
          "label": "Adjusted cost per record"
        },
        {
          "id": "costPerRecordAllIn",
          "label": "All-in cost per record (incl. fixed)"
        },
        {
          "id": "fixed",
          "label": "Fixed costs applied"
        }
      ]
    },
    {
      "slug": "ransomware-downtime-cost",
      "url": "https://www.revenuelab.fyi/toolbox/ransomware-downtime-cost",
      "title": "Ransomware Downtime Cost Calculator",
      "category": "financial",
      "summary": "Model lost revenue, labor, and recovery cost for each day systems are down.",
      "formula": "Downtime cost = (daily revenue × operational impact %) × recovery days + (idle labor cost + overtime cost) × recovery days.",
      "inputs": [
        {
          "id": "dailyRevenue",
          "label": "Normal daily revenue",
          "kind": "number"
        },
        {
          "id": "operationalImpact",
          "label": "Share of operations knocked offline",
          "kind": "number"
        },
        {
          "id": "recoveryDays",
          "label": "Estimated recovery time",
          "kind": "number"
        },
        {
          "id": "idleLaborDay",
          "label": "Idle staff labor cost per day",
          "kind": "number"
        },
        {
          "id": "overtimeDay",
          "label": "IT/recovery overtime cost per day",
          "kind": "number"
        },
        {
          "id": "ransomAmount",
          "label": "Ransom demand (for comparison)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalCost",
          "label": "Total downtime cost"
        },
        {
          "id": "revenueLoss",
          "label": "Lost revenue"
        },
        {
          "id": "laborCost",
          "label": "Idle + overtime labor cost"
        },
        {
          "id": "dailyLossRate",
          "label": "Cost per day of downtime"
        },
        {
          "id": "ratioToRansom",
          "label": "Downtime cost as multiple of ransom demand"
        }
      ]
    },
    {
      "slug": "soc-staffing-coverage",
      "url": "https://www.revenuelab.fyi/toolbox/soc-staffing-coverage",
      "title": "SOC Staffing Coverage Calculator",
      "category": "financial",
      "summary": "Figure out how many analysts you need for 24/7 or business-hours coverage.",
      "formula": "Required FTE = seats needed × coverage factor (≈4.3 for 24/7, ≈1.3 for extended business hours). Fully loaded cost = FTE × salary × (1 + overhead %).",
      "inputs": [
        {
          "id": "seatsNeeded",
          "label": "Concurrent analyst seats required",
          "kind": "number"
        },
        {
          "id": "coverageModel",
          "label": "Coverage model",
          "kind": "select"
        },
        {
          "id": "avgSalary",
          "label": "Average fully-loaded base salary",
          "kind": "number"
        },
        {
          "id": "overhead",
          "label": "Overhead (benefits, tools, training)",
          "kind": "number"
        },
        {
          "id": "currentFte",
          "label": "Current SOC FTE headcount",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "requiredFte",
          "label": "Required FTE for full coverage"
        },
        {
          "id": "totalCost",
          "label": "Fully loaded annual cost"
        },
        {
          "id": "gap",
          "label": "Staffing gap (FTE)"
        },
        {
          "id": "coveragePct",
          "label": "Current coverage vs. requirement"
        },
        {
          "id": "costPerFte",
          "label": "Fully loaded cost per FTE"
        }
      ]
    },
    {
      "slug": "mttd-mttr-cost-impact",
      "url": "https://www.revenuelab.fyi/toolbox/mttd-mttr-cost-impact",
      "title": "MTTD/MTTR Cost Impact Calculator",
      "category": "financial",
      "summary": "See how faster detection and response times translate into dollars saved.",
      "formula": "Cost of incident ≈ daily dwell cost × (MTTD + MTTR) × compounding factor. Savings = cost(current) − cost(target).",
      "inputs": [
        {
          "id": "dailyDwellCost",
          "label": "Estimated cost per day of undetected/unresolved access",
          "kind": "number"
        },
        {
          "id": "currentMttdDays",
          "label": "Current MTTD",
          "kind": "number"
        },
        {
          "id": "currentMttrDays",
          "label": "Current MTTR",
          "kind": "number"
        },
        {
          "id": "targetMttdDays",
          "label": "Target MTTD",
          "kind": "number"
        },
        {
          "id": "targetMttrDays",
          "label": "Target MTTR",
          "kind": "number"
        },
        {
          "id": "incidentsPerYear",
          "label": "Estimated incidents per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualSavings",
          "label": "Estimated annual savings"
        },
        {
          "id": "savingsPerIncident",
          "label": "Savings per incident"
        },
        {
          "id": "currentCost",
          "label": "Estimated cost per incident (current)"
        },
        {
          "id": "targetCost",
          "label": "Estimated cost per incident (target)"
        },
        {
          "id": "currentTotal",
          "label": "Current MTTD + MTTR (days)"
        }
      ]
    },
    {
      "slug": "phishing-training-roi",
      "url": "https://www.revenuelab.fyi/toolbox/phishing-training-roi",
      "title": "Phishing Training ROI Calculator",
      "category": "financial",
      "summary": "Quantify the return on security awareness training from reduced click rates.",
      "formula": "Phishes prevented = attempts/year × (baseline click rate − trained click rate). Value = phishes prevented × avg cost per successful phish. ROI = (value − program cost) ÷ program cost.",
      "inputs": [
        {
          "id": "attemptsYear",
          "label": "Phishing attempts received per year (est.)",
          "kind": "number"
        },
        {
          "id": "baselineClick",
          "label": "Baseline click rate",
          "kind": "number"
        },
        {
          "id": "trainedClick",
          "label": "Post-training click rate",
          "kind": "number"
        },
        {
          "id": "costPerPhish",
          "label": "Average cost of a successful phish",
          "kind": "number"
        },
        {
          "id": "programCost",
          "label": "Annual training program cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "roi",
          "label": "ROI"
        },
        {
          "id": "value",
          "label": "Estimated annual value of risk reduction"
        },
        {
          "id": "netBenefit",
          "label": "Net benefit (value − program cost)"
        },
        {
          "id": "phishesPrevented",
          "label": "Successful phishes prevented per year (est.)"
        },
        {
          "id": "delta",
          "label": "Click rate reduction"
        }
      ]
    },
    {
      "slug": "password-crack-time",
      "url": "https://www.revenuelab.fyi/toolbox/password-crack-time",
      "title": "Password Crack Time Calculator",
      "category": "math",
      "summary": "Estimate how long a password takes to brute-force based on entropy and hardware.",
      "formula": "Entropy (bits) = length × log2(charset size). Crack time (seconds) = 2^entropy ÷ (2 × guesses per second), using half the space as the average case.",
      "inputs": [
        {
          "id": "length",
          "label": "Password length",
          "kind": "number"
        },
        {
          "id": "lowercase",
          "label": "Includes lowercase letters?",
          "kind": "select"
        },
        {
          "id": "uppercase",
          "label": "Includes uppercase letters?",
          "kind": "select"
        },
        {
          "id": "digits",
          "label": "Includes digits?",
          "kind": "select"
        },
        {
          "id": "symbols",
          "label": "Includes symbols?",
          "kind": "select"
        },
        {
          "id": "hashType",
          "label": "Storage / attack scenario",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "years",
          "label": "Estimated average crack time (years)"
        },
        {
          "id": "entropy",
          "label": "Entropy"
        },
        {
          "id": "avgSeconds",
          "label": "Average crack time (seconds)"
        },
        {
          "id": "totalCombos",
          "label": "Total possible combinations"
        },
        {
          "id": "charset",
          "label": "Character set size"
        }
      ]
    },
    {
      "slug": "patch-sla-backlog",
      "url": "https://www.revenuelab.fyi/toolbox/patch-sla-backlog",
      "title": "Patch SLA Backlog Calculator",
      "category": "other",
      "summary": "See if your patching throughput can clear the vulnerability backlog before it grows.",
      "formula": "Net weekly change = new vulnerabilities/week − remediated/week. Backlog in N weeks = current backlog + (net weekly change × N). Required rate to clear SLA = (current backlog + inflow over SLA window) ÷ SLA window in weeks.",
      "inputs": [
        {
          "id": "currentBacklog",
          "label": "Current open critical/high vulnerabilities",
          "kind": "number"
        },
        {
          "id": "newPerWeek",
          "label": "New critical/high vulnerabilities per week",
          "kind": "number"
        },
        {
          "id": "remediatedPerWeek",
          "label": "Vulnerabilities remediated per week",
          "kind": "number"
        },
        {
          "id": "slaDays",
          "label": "SLA window (critical/high)",
          "kind": "number"
        },
        {
          "id": "projectionWeeks",
          "label": "Project forward",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "projectedBacklog",
          "label": "Projected backlog"
        },
        {
          "id": "netWeekly",
          "label": "Net weekly change (+growing / -shrinking)"
        },
        {
          "id": "requiredRate",
          "label": "Remediation rate needed to hit SLA"
        },
        {
          "id": "rateGap",
          "label": "Additional remediations/week needed"
        },
        {
          "id": "slaWeeks",
          "label": "SLA window in weeks"
        }
      ]
    },
    {
      "slug": "siem-log-ingestion-cost",
      "url": "https://www.revenuelab.fyi/toolbox/siem-log-ingestion-cost",
      "title": "SIEM Log Ingestion Cost Calculator",
      "category": "financial",
      "summary": "Estimate monthly SIEM cost from log volume, sources, and retention period.",
      "formula": "Monthly cost = daily GB × 30.4 × price per GB × retention multiplier, summed across log sources; archive tier applied to data beyond hot retention window.",
      "inputs": [
        {
          "id": "firewallGb",
          "label": "Firewall/network logs",
          "kind": "number"
        },
        {
          "id": "endpointGb",
          "label": "Endpoint/EDR telemetry",
          "kind": "number"
        },
        {
          "id": "cloudGb",
          "label": "Cloud/app audit logs",
          "kind": "number"
        },
        {
          "id": "otherGb",
          "label": "Other sources (DNS, proxy, identity)",
          "kind": "number"
        },
        {
          "id": "pricePerGb",
          "label": "Ingestion price per GB",
          "kind": "number"
        },
        {
          "id": "hotRetentionDays",
          "label": "Hot retention window",
          "kind": "number"
        },
        {
          "id": "archiveMultiplier",
          "label": "Cold/archive price as % of hot price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthlyTotal",
          "label": "Estimated monthly SIEM cost"
        },
        {
          "id": "annualTotal",
          "label": "Estimated annual cost"
        },
        {
          "id": "dailyGb",
          "label": "Total daily ingestion"
        },
        {
          "id": "monthlyGb",
          "label": "Total monthly ingestion"
        },
        {
          "id": "hotIngestCost",
          "label": "Hot-tier ingestion cost (monthly)"
        }
      ]
    },
    {
      "slug": "pen-test-vs-bug-bounty",
      "url": "https://www.revenuelab.fyi/toolbox/pen-test-vs-bug-bounty",
      "title": "Pen Test vs. Bug Bounty Cost Calculator",
      "category": "financial",
      "summary": "Compare annual cost and expected coverage of scheduled pen tests vs. an ongoing bounty program.",
      "formula": "Pen test annual cost = cost per engagement × engagements per year. Bounty annual cost = platform fee + Σ(expected findings per severity × bounty payout per severity).",
      "inputs": [
        {
          "id": "penTestCost",
          "label": "Cost per pen test engagement",
          "kind": "number"
        },
        {
          "id": "engagementsYear",
          "label": "Pen test engagements per year",
          "kind": "number"
        },
        {
          "id": "platformFee",
          "label": "Bug bounty platform management fee/year",
          "kind": "number"
        },
        {
          "id": "criticalFindings",
          "label": "Expected critical findings/year",
          "kind": "number"
        },
        {
          "id": "highFindings",
          "label": "Expected high findings/year",
          "kind": "number"
        },
        {
          "id": "criticalPayout",
          "label": "Payout per critical",
          "kind": "number"
        },
        {
          "id": "highPayout",
          "label": "Payout per high",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "penTestAnnual",
          "label": "Pen test annual cost"
        },
        {
          "id": "bountyAnnual",
          "label": "Bug bounty annual cost"
        },
        {
          "id": "diff",
          "label": "Cost difference"
        },
        {
          "id": "payouts",
          "label": "Expected bounty payouts (excl. platform fee)"
        },
        {
          "id": "cheaper",
          "label": "Lower cost option"
        }
      ]
    },
    {
      "slug": "mfa-rollout-roi",
      "url": "https://www.revenuelab.fyi/toolbox/mfa-rollout-roi",
      "title": "MFA Rollout ROI Calculator",
      "category": "financial",
      "summary": "Weigh MFA deployment cost against the account-takeover losses it prevents.",
      "formula": "Annual loss avoided = users × current account compromise rate × avg cost per compromise × MFA effectiveness %. ROI = (loss avoided − rollout cost) ÷ rollout cost.",
      "inputs": [
        {
          "id": "users",
          "label": "Number of user accounts",
          "kind": "number"
        },
        {
          "id": "compromiseRate",
          "label": "Current annual account compromise rate",
          "kind": "number"
        },
        {
          "id": "costPerCompromise",
          "label": "Average cost per compromised account",
          "kind": "number"
        },
        {
          "id": "mfaEffectiveness",
          "label": "MFA effectiveness at blocking takeover",
          "kind": "number"
        },
        {
          "id": "rolloutCost",
          "label": "One-time rollout cost (licensing, setup)",
          "kind": "number"
        },
        {
          "id": "annualCost",
          "label": "Ongoing annual cost (support, licensing)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "roiYearOne",
          "label": "Year-one ROI"
        },
        {
          "id": "lossAvoided",
          "label": "Annual loss avoided"
        },
        {
          "id": "netYearOne",
          "label": "Net benefit, year one"
        },
        {
          "id": "netOngoing",
          "label": "Net benefit, ongoing years"
        },
        {
          "id": "baselineLoss",
          "label": "Current expected annual loss (no MFA)"
        }
      ]
    },
    {
      "slug": "backup-rpo-rto-data-loss-cost",
      "url": "https://www.revenuelab.fyi/toolbox/backup-rpo-rto-data-loss-cost",
      "title": "Backup RPO/RTO Data Loss Cost Calculator",
      "category": "financial",
      "summary": "Translate your recovery point and recovery time objectives into a dollar exposure.",
      "formula": "Data-loss cost = hourly data value × RPO hours. Downtime cost = (hourly revenue + hourly labor cost) × RTO hours. Total exposure = data-loss cost + downtime cost.",
      "inputs": [
        {
          "id": "hourlyDataValue",
          "label": "Value of data/transactions generated per hour",
          "kind": "number"
        },
        {
          "id": "rpoHours",
          "label": "RPO (recovery point objective)",
          "kind": "number"
        },
        {
          "id": "hourlyRevenue",
          "label": "Revenue generated per hour",
          "kind": "number"
        },
        {
          "id": "hourlyLabor",
          "label": "Recovery labor cost per hour",
          "kind": "number"
        },
        {
          "id": "rtoHours",
          "label": "RTO (recovery time objective)",
          "kind": "number"
        },
        {
          "id": "actualRtoHours",
          "label": "Actual tested restore time (if known)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalExposure",
          "label": "Total worst-case exposure (stated RPO/RTO)"
        },
        {
          "id": "dataLossCost",
          "label": "Data-loss cost (from RPO)"
        },
        {
          "id": "downtimeCost",
          "label": "Downtime cost (from stated RTO)"
        },
        {
          "id": "actualDowntimeCost",
          "label": "Downtime cost at actual tested restore time"
        },
        {
          "id": "gapCost",
          "label": "Extra cost if actual restore exceeds RTO target"
        }
      ]
    },
    {
      "slug": "vendor-risk-exposure",
      "url": "https://www.revenuelab.fyi/toolbox/vendor-risk-exposure",
      "title": "Vendor Risk Exposure Calculator",
      "category": "financial",
      "summary": "Score and dollar-weight vendor risk from data access, criticality, and control maturity.",
      "formula": "Risk score = (data sensitivity × 0.4 + operational criticality × 0.35 + (10 − control maturity) × 0.25) on a 1-10 scale. Estimated exposure = base breach cost × (risk score ÷ 10) × access scope factor.",
      "inputs": [
        {
          "id": "dataSensitivity",
          "label": "Data sensitivity vendor can access (1=none, 10=crown jewel PII/financial)",
          "kind": "number"
        },
        {
          "id": "criticality",
          "label": "Operational criticality if vendor is disrupted (1-10)",
          "kind": "number"
        },
        {
          "id": "controlMaturity",
          "label": "Vendor security control maturity (1=poor, 10=excellent — SOC2, MFA, insurance)",
          "kind": "number"
        },
        {
          "id": "baseBreachCost",
          "label": "Typical breach cost for your org",
          "kind": "number"
        },
        {
          "id": "accessScope",
          "label": "Share of your data/systems vendor can reach",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "exposure",
          "label": "Estimated annual risk exposure"
        },
        {
          "id": "riskScore",
          "label": "Composite risk score (1-10)"
        },
        {
          "id": "tier",
          "label": "Recommended oversight tier"
        },
        {
          "id": "sensitivity",
          "label": "Data sensitivity input"
        },
        {
          "id": "maturity",
          "label": "Control maturity input"
        }
      ]
    },
    {
      "slug": "ddos-mitigation-cost",
      "url": "https://www.revenuelab.fyi/toolbox/ddos-mitigation-cost",
      "title": "DDoS Mitigation Cost Calculator",
      "category": "financial",
      "summary": "Compare scrubbing-service subscription cost against expected outage losses.",
      "formula": "Unmitigated annual loss = attacks/year × avg outage minutes × revenue per minute × (1 − baseline mitigation %). Net benefit = unmitigated loss − (loss with paid mitigation + mitigation cost).",
      "inputs": [
        {
          "id": "attacksPerYear",
          "label": "Expected damaging attacks per year",
          "kind": "number"
        },
        {
          "id": "outageMinutes",
          "label": "Average outage minutes per unmitigated attack",
          "kind": "number"
        },
        {
          "id": "revenuePerMinute",
          "label": "Revenue at risk per minute of downtime",
          "kind": "number"
        },
        {
          "id": "mitigationEffectiveness",
          "label": "Paid mitigation effectiveness (% of downtime prevented)",
          "kind": "number"
        },
        {
          "id": "mitigationCost",
          "label": "Annual mitigation service cost",
          "kind": "number"
        },
        {
          "id": "slaPenaltyPerIncident",
          "label": "Avg SLA/reputation penalty per incident",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netBenefit",
          "label": "Net annual benefit of mitigation"
        },
        {
          "id": "unmitigatedLoss",
          "label": "Expected annual loss without mitigation"
        },
        {
          "id": "totalCostWithMitigation",
          "label": "Total cost with mitigation (loss + fee)"
        },
        {
          "id": "mitigatedLoss",
          "label": "Residual loss with mitigation"
        },
        {
          "id": "breakEvenAttacks",
          "label": "Attacks/year to break even on cost"
        }
      ]
    },
    {
      "slug": "phishing-click-rate-reduction-value",
      "url": "https://www.revenuelab.fyi/toolbox/phishing-click-rate-reduction-value",
      "title": "Phishing Click-Rate Reduction Value Calculator",
      "category": "financial",
      "summary": "Turn a lower simulated-phishing click rate into avoided-incident dollars.",
      "formula": "Compromises avoided = employees × (baseline click rate − current click rate) × phishing emails/year × compromise conversion rate. Value = compromises avoided × avg incident cost − program cost.",
      "inputs": [
        {
          "id": "employees",
          "label": "Number of employees targeted",
          "kind": "number"
        },
        {
          "id": "baselineClickRate",
          "label": "Baseline click rate (%)",
          "kind": "number"
        },
        {
          "id": "currentClickRate",
          "label": "Current click rate (%)",
          "kind": "number"
        },
        {
          "id": "phishingEmailsPerYear",
          "label": "Real phishing emails reaching inbox per employee/year",
          "kind": "number"
        },
        {
          "id": "conversionRate",
          "label": "Click-to-compromise conversion rate (%)",
          "kind": "number"
        },
        {
          "id": "avgIncidentCost",
          "label": "Average cost per compromise incident",
          "kind": "number"
        },
        {
          "id": "programCost",
          "label": "Annual training program cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netValue",
          "label": "Net annual value of training program"
        },
        {
          "id": "grossValue",
          "label": "Gross incident cost avoided"
        },
        {
          "id": "compromisesAvoided",
          "label": "Compromises avoided per year (est.)"
        },
        {
          "id": "roiPct",
          "label": "Program ROI"
        },
        {
          "id": "clickReduction",
          "label": "Click-rate reduction achieved"
        }
      ]
    },
    {
      "slug": "edr-licensing-cost-per-endpoint",
      "url": "https://www.revenuelab.fyi/toolbox/edr-licensing-cost-per-endpoint",
      "title": "EDR Licensing Cost Per Endpoint Calculator",
      "category": "financial",
      "summary": "Budget endpoint detection and response licensing across your full fleet.",
      "formula": "Blended monthly cost = (workstations × workstation rate + servers × server rate + other × other rate) × (1 − volume discount %) × (1 + MDR add-on %).",
      "inputs": [
        {
          "id": "workstations",
          "label": "Workstation/laptop endpoints",
          "kind": "number"
        },
        {
          "id": "workstationRate",
          "label": "Workstation rate ($/endpoint/month)",
          "kind": "number"
        },
        {
          "id": "servers",
          "label": "Server endpoints",
          "kind": "number"
        },
        {
          "id": "serverRate",
          "label": "Server rate ($/endpoint/month)",
          "kind": "number"
        },
        {
          "id": "otherEndpoints",
          "label": "Other endpoints (mobile, IoT)",
          "kind": "number"
        },
        {
          "id": "otherRate",
          "label": "Other rate ($/endpoint/month)",
          "kind": "number"
        },
        {
          "id": "mdrAddonPct",
          "label": "MDR/managed hunting add-on (% of base)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualTotal",
          "label": "Annual EDR licensing cost"
        },
        {
          "id": "monthlyTotal",
          "label": "Monthly total"
        },
        {
          "id": "costPerEndpoint",
          "label": "Blended cost per endpoint/month"
        },
        {
          "id": "totalEndpoints",
          "label": "Total endpoints licensed"
        },
        {
          "id": "discountPct",
          "label": "Volume discount tier applied"
        }
      ]
    },
    {
      "slug": "soc2-audit-cost",
      "url": "https://www.revenuelab.fyi/toolbox/soc2-audit-cost",
      "title": "SOC 2 Audit Cost Calculator",
      "category": "financial",
      "summary": "Estimate first-year SOC 2 Type II cost including prep, auditor fees, and tooling.",
      "formula": "Total cost = auditor fee + compliance platform annual cost + (internal prep hours × loaded hourly rate) + readiness assessment fee.",
      "inputs": [
        {
          "id": "auditorFee",
          "label": "Auditor fee (Type II)",
          "kind": "number"
        },
        {
          "id": "platformCost",
          "label": "Compliance automation platform (annual)",
          "kind": "number"
        },
        {
          "id": "prepHours",
          "label": "Internal prep/remediation hours",
          "kind": "number"
        },
        {
          "id": "loadedHourlyRate",
          "label": "Loaded hourly rate for internal staff",
          "kind": "number"
        },
        {
          "id": "readinessFee",
          "label": "Readiness assessment / gap analysis fee",
          "kind": "number"
        },
        {
          "id": "isFirstYear",
          "label": "Engagement type",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated total SOC 2 cost"
        },
        {
          "id": "laborCost",
          "label": "Internal labor cost"
        },
        {
          "id": "auditorFee",
          "label": "Auditor fee"
        },
        {
          "id": "platformCost",
          "label": "Compliance platform cost"
        },
        {
          "id": "readiness",
          "label": "Readiness assessment fee applied"
        }
      ]
    },
    {
      "slug": "insider-threat-exposure",
      "url": "https://www.revenuelab.fyi/toolbox/insider-threat-exposure",
      "title": "Insider Threat Exposure Calculator",
      "category": "financial",
      "summary": "Estimate annual expected loss from malicious and negligent insider incidents.",
      "formula": "Exposure = headcount × [(malicious rate × malicious cost) + (negligent rate × negligent cost)] × (1 − control effectiveness %).",
      "inputs": [
        {
          "id": "headcount",
          "label": "Total employees + contractors with system access",
          "kind": "number"
        },
        {
          "id": "maliciousRate",
          "label": "Malicious incidents per 1,000 employees/year",
          "kind": "number"
        },
        {
          "id": "maliciousCost",
          "label": "Avg cost per malicious incident",
          "kind": "number"
        },
        {
          "id": "negligentRate",
          "label": "Negligent incidents per 1,000 employees/year",
          "kind": "number"
        },
        {
          "id": "negligentCost",
          "label": "Avg cost per negligent incident",
          "kind": "number"
        },
        {
          "id": "controlEffectiveness",
          "label": "Existing control effectiveness (DLP, PAM, offboarding)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "residualExposure",
          "label": "Residual annual exposure (after controls)"
        },
        {
          "id": "grossExposure",
          "label": "Gross exposure (no controls)"
        },
        {
          "id": "maliciousExposure",
          "label": "Malicious insider share"
        },
        {
          "id": "negligentExposure",
          "label": "Negligent insider share"
        },
        {
          "id": "avoidedLoss",
          "label": "Loss avoided by existing controls"
        }
      ]
    },
    {
      "slug": "zero-trust-migration-cost",
      "url": "https://www.revenuelab.fyi/toolbox/zero-trust-migration-cost",
      "title": "Zero-Trust Migration Cost Calculator",
      "category": "financial",
      "summary": "Budget identity, device, network, and app segmentation work for a zero-trust rollout.",
      "formula": "Total 3-year cost = identity cost/user × users + device cost/user × users + network segmentation cost/app × apps + ZTNA cost/user × users, with a phasing discount applied to years 2-3.",
      "inputs": [
        {
          "id": "users",
          "label": "Users to cover",
          "kind": "number"
        },
        {
          "id": "apps",
          "label": "Applications/services to segment",
          "kind": "number"
        },
        {
          "id": "identityCostPerUser",
          "label": "Identity/MFA cost per user (year 1)",
          "kind": "number"
        },
        {
          "id": "deviceCostPerUser",
          "label": "Device trust cost per user (year 1)",
          "kind": "number"
        },
        {
          "id": "networkCostPerApp",
          "label": "Network segmentation cost per app (year 1)",
          "kind": "number"
        },
        {
          "id": "ztnaCostPerUser",
          "label": "ZTNA/app-proxy cost per user (year 1)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "threeYearTotal",
          "label": "3-year total migration cost"
        },
        {
          "id": "year1",
          "label": "Year 1 cost (buildout)"
        },
        {
          "id": "year2",
          "label": "Year 2 cost (expansion)"
        },
        {
          "id": "year3",
          "label": "Year 3 cost (maturity)"
        },
        {
          "id": "costPerUser",
          "label": "3-year cost per user"
        }
      ]
    },
    {
      "slug": "cyber-insurance-premium-vs-retention",
      "url": "https://www.revenuelab.fyi/toolbox/cyber-insurance-premium-vs-retention",
      "title": "Cyber Insurance Premium vs. Retention Calculator",
      "category": "financial",
      "summary": "Compare a higher deductible/lower premium against expected annual loss.",
      "formula": "Expected annual cost = premium + (expected incidents/year × average incident cost capped at retention amount per incident, or full cost above retention up to policy limit).",
      "inputs": [
        {
          "id": "premiumOptionA",
          "label": "Option A: annual premium (lower retention)",
          "kind": "number"
        },
        {
          "id": "retentionA",
          "label": "Option A: retention (deductible) per incident",
          "kind": "number"
        },
        {
          "id": "premiumOptionB",
          "label": "Option B: annual premium (higher retention)",
          "kind": "number"
        },
        {
          "id": "retentionB",
          "label": "Option B: retention (deductible) per incident",
          "kind": "number"
        },
        {
          "id": "expectedIncidents",
          "label": "Expected covered incidents per year",
          "kind": "number"
        },
        {
          "id": "avgIncidentCost",
          "label": "Average incident cost (before insurance)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "expectedCostA",
          "label": "Option A total expected annual cost"
        },
        {
          "id": "expectedCostB",
          "label": "Option B total expected annual cost"
        },
        {
          "id": "difference",
          "label": "Difference (A − B)"
        },
        {
          "id": "cheaperOption",
          "label": "Lower expected-cost option"
        },
        {
          "id": "outOfPocketB",
          "label": "Out-of-pocket per incident under Option B"
        }
      ]
    },
    {
      "slug": "incident-response-retainer-value",
      "url": "https://www.revenuelab.fyi/toolbox/incident-response-retainer-value",
      "title": "Incident Response Retainer Value Calculator",
      "category": "financial",
      "summary": "Compare a pre-paid IR retainer against emergency hourly rates during a real breach.",
      "formula": "Expected annual cost without retainer = P(needing IR) × hours needed × emergency hourly rate. Retainer total cost = annual retainer fee + (hours beyond prepaid block × retainer hourly rate × P(needing IR)).",
      "inputs": [
        {
          "id": "probabilityNeedIr",
          "label": "Probability of needing IR support this year (%)",
          "kind": "number"
        },
        {
          "id": "hoursPerIncident",
          "label": "Estimated IR hours for a typical incident",
          "kind": "number"
        },
        {
          "id": "emergencyRate",
          "label": "Emergency (no retainer) hourly rate",
          "kind": "number"
        },
        {
          "id": "retainerAnnualFee",
          "label": "Annual retainer fee",
          "kind": "number"
        },
        {
          "id": "retainerPrepaidHours",
          "label": "Prepaid hours included in retainer",
          "kind": "number"
        },
        {
          "id": "retainerRate",
          "label": "Retainer hourly rate (beyond prepaid)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costWithRetainer",
          "label": "Expected annual cost with retainer"
        },
        {
          "id": "costWithoutRetainer",
          "label": "Expected annual cost without retainer"
        },
        {
          "id": "savings",
          "label": "Expected savings from retainer"
        },
        {
          "id": "savingsPct",
          "label": "Savings as % of no-retainer cost"
        },
        {
          "id": "extraHours",
          "label": "Hours beyond prepaid block (typical incident)"
        }
      ]
    },
    {
      "slug": "data-retention-storage-cost",
      "url": "https://www.revenuelab.fyi/toolbox/data-retention-storage-cost",
      "title": "Security Data Retention Storage Cost Calculator",
      "category": "financial",
      "summary": "Project multi-year storage cost for security logs under compliance retention rules.",
      "formula": "Total stored volume = daily ingestion (GB) × retention days. Hot cost = hot-tier volume × hot rate/GB/month × 12. Cold cost = cold-tier volume × cold rate/GB/month × 12.",
      "inputs": [
        {
          "id": "dailyIngestionGb",
          "label": "Daily log ingestion (GB)",
          "kind": "number"
        },
        {
          "id": "hotRetentionDays",
          "label": "Hot/searchable retention (days)",
          "kind": "number"
        },
        {
          "id": "coldRetentionDays",
          "label": "Cold/archive retention beyond hot (days)",
          "kind": "number"
        },
        {
          "id": "hotRatePerGb",
          "label": "Hot storage cost ($/GB/month)",
          "kind": "number"
        },
        {
          "id": "coldRatePerGb",
          "label": "Cold/archive storage cost ($/GB/month)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalAnnualCost",
          "label": "Total annual storage cost"
        },
        {
          "id": "hotAnnualCost",
          "label": "Hot/searchable tier cost"
        },
        {
          "id": "coldAnnualCost",
          "label": "Cold/archive tier cost"
        },
        {
          "id": "totalVolumeGb",
          "label": "Total volume under retention (GB)"
        },
        {
          "id": "hotVolumeGb",
          "label": "Hot tier volume (GB)"
        }
      ]
    },
    {
      "slug": "key-rotation-downtime-cost",
      "url": "https://www.revenuelab.fyi/toolbox/key-rotation-downtime-cost",
      "title": "Key Rotation Downtime Cost Calculator",
      "category": "financial",
      "summary": "Estimate the cost of scheduled key/certificate rotation across your service fleet.",
      "formula": "Planned rotation cost = (engineering hours × loaded rate) + (affected services × avg downtime minutes × revenue per minute) + validation cost. Emergency cost applies a multiplier for compressed timelines and broader scope.",
      "inputs": [
        {
          "id": "affectedServices",
          "label": "Services/systems using the key or cert",
          "kind": "number"
        },
        {
          "id": "engineeringHours",
          "label": "Engineering hours for planned rotation",
          "kind": "number"
        },
        {
          "id": "loadedRate",
          "label": "Loaded engineering hourly rate",
          "kind": "number"
        },
        {
          "id": "avgDowntimeMinutes",
          "label": "Avg downtime minutes per affected service",
          "kind": "number"
        },
        {
          "id": "revenuePerMinute",
          "label": "Revenue at risk per minute of downtime",
          "kind": "number"
        },
        {
          "id": "emergencyMultiplier",
          "label": "Emergency rotation cost multiplier",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "plannedTotal",
          "label": "Planned rotation total cost"
        },
        {
          "id": "emergencyTotal",
          "label": "Emergency (compromise-forced) rotation cost"
        },
        {
          "id": "laborCost",
          "label": "Engineering labor cost"
        },
        {
          "id": "downtimeCost",
          "label": "Downtime cost across affected services"
        },
        {
          "id": "costPerService",
          "label": "Cost per affected service"
        }
      ]
    },
    {
      "slug": "third-party-saas-sprawl-risk",
      "url": "https://www.revenuelab.fyi/toolbox/third-party-saas-sprawl-risk",
      "title": "Third-Party SaaS Sprawl Risk Cost Calculator",
      "category": "financial",
      "summary": "Estimate exposure and cleanup cost from unmanaged, unreviewed SaaS applications.",
      "formula": "Annual sprawl risk exposure = shadow app count × avg data sensitivity risk cost per app × (1 − % on SSO/reviewed). Cleanup cost = shadow app count × per-app review/remediation hours × loaded rate.",
      "inputs": [
        {
          "id": "totalSaasApps",
          "label": "Total SaaS apps in active use (est. or discovered)",
          "kind": "number"
        },
        {
          "id": "shadowSharePct",
          "label": "Share unmanaged/unreviewed (shadow IT) (%)",
          "kind": "number"
        },
        {
          "id": "riskCostPerApp",
          "label": "Avg annual risk cost per unmanaged app",
          "kind": "number"
        },
        {
          "id": "ssoIntegratedPct",
          "label": "Of shadow apps, share already on SSO/MFA (%)",
          "kind": "number"
        },
        {
          "id": "reviewHoursPerApp",
          "label": "Hours to review/remediate each shadow app",
          "kind": "number"
        },
        {
          "id": "loadedRate",
          "label": "Loaded hourly rate for review work",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualExposure",
          "label": "Annual sprawl risk exposure"
        },
        {
          "id": "cleanupCost",
          "label": "One-time cleanup/remediation cost"
        },
        {
          "id": "shadowApps",
          "label": "Estimated shadow/unmanaged apps"
        },
        {
          "id": "unmitigatedShadowApps",
          "label": "Shadow apps with no SSO/MFA coverage"
        },
        {
          "id": "paybackYears",
          "label": "Cleanup cost payback period (years)"
        }
      ]
    },
    {
      "slug": "red-team-exercise-roi",
      "url": "https://www.revenuelab.fyi/toolbox/red-team-exercise-roi",
      "title": "Red Team Exercise ROI Calculator",
      "category": "financial",
      "summary": "Weigh red-team engagement cost against the value of findings it's likely to surface.",
      "formula": "Expected value = P(critical finding found) × P(would've been exploited before next assessment) × avg cost of resulting incident − engagement cost.",
      "inputs": [
        {
          "id": "engagementCost",
          "label": "Red team engagement cost",
          "kind": "number"
        },
        {
          "id": "probCriticalFinding",
          "label": "Probability of finding ≥1 exploitable critical gap (%)",
          "kind": "number"
        },
        {
          "id": "probWouldBeExploited",
          "label": "Probability that gap gets exploited before next assessment (%)",
          "kind": "number"
        },
        {
          "id": "avgIncidentCost",
          "label": "Avg cost of resulting incident if exploited",
          "kind": "number"
        },
        {
          "id": "remediationCost",
          "label": "Estimated remediation cost for findings",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netExpectedValue",
          "label": "Net expected value of engagement"
        },
        {
          "id": "expectedAvoidedLoss",
          "label": "Expected loss avoided"
        },
        {
          "id": "totalProgramCost",
          "label": "Total program cost (engagement + remediation)"
        },
        {
          "id": "roiPct",
          "label": "Expected ROI"
        },
        {
          "id": "engagementCost",
          "label": "Red team engagement cost"
        }
      ]
    },
    {
      "slug": "ab-test-sample-size-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/ab-test-sample-size-calculator",
      "title": "A/B Test Sample Size Calculator",
      "category": "math",
      "summary": "How many visitors per variant you need before you look at results.",
      "formula": "n per group = (Zα/2 + Zβ)² × [p1(1−p1) + p2(1−p2)] ÷ (p2 − p1)², where p2 = p1 × (1 + MDE).",
      "inputs": [
        {
          "id": "baseline",
          "label": "Baseline conversion rate",
          "kind": "number"
        },
        {
          "id": "mde",
          "label": "Minimum detectable relative lift",
          "kind": "number"
        },
        {
          "id": "confidence",
          "label": "Confidence level",
          "kind": "select"
        },
        {
          "id": "power",
          "label": "Statistical power",
          "kind": "select"
        },
        {
          "id": "variants",
          "label": "Number of variants (incl. control)",
          "kind": "number"
        },
        {
          "id": "dailyTraffic",
          "label": "Total daily traffic to the test",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "nPerGroup",
          "label": "Visitors needed per variant"
        },
        {
          "id": "total",
          "label": "Total visitors across variants"
        },
        {
          "id": "days",
          "label": "Days to reach sample size"
        },
        {
          "id": "weeks",
          "label": "Weeks to reach sample size"
        },
        {
          "id": "p2pct",
          "label": "Target variant conversion rate"
        }
      ]
    },
    {
      "slug": "incrementality-lift-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/incrementality-lift-calculator",
      "title": "Incrementality & Lift Test Calculator",
      "category": "financial",
      "summary": "Convert a holdout or geo test result into true incremental revenue and iROAS.",
      "formula": "Lift = (test rate − control rate) ÷ control rate; incremental conversions = lift × control rate × test group size; iROAS = incremental revenue ÷ spend.",
      "inputs": [
        {
          "id": "testSize",
          "label": "Test (exposed) group size",
          "kind": "number"
        },
        {
          "id": "testConv",
          "label": "Conversions in test group",
          "kind": "number"
        },
        {
          "id": "controlSize",
          "label": "Control (holdout) group size",
          "kind": "number"
        },
        {
          "id": "controlConv",
          "label": "Conversions in control group",
          "kind": "number"
        },
        {
          "id": "aov",
          "label": "Average order value",
          "kind": "number"
        },
        {
          "id": "spend",
          "label": "Media spend on test group",
          "kind": "number"
        },
        {
          "id": "reportedConv",
          "label": "Platform-attributed conversions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "liftPct",
          "label": "Relative lift from exposure"
        },
        {
          "id": "incrementalConversions",
          "label": "Incremental conversions"
        },
        {
          "id": "incrementalRevenue",
          "label": "Incremental revenue"
        },
        {
          "id": "iroas",
          "label": "Incremental ROAS (iROAS)"
        },
        {
          "id": "incFactor",
          "label": "Incrementality factor vs. platform-reported"
        }
      ]
    },
    {
      "slug": "paid-vs-blended-cac-decomposition",
      "url": "https://www.revenuelab.fyi/toolbox/paid-vs-blended-cac-decomposition",
      "title": "Paid vs. Blended CAC Decomposition Calculator",
      "category": "financial",
      "summary": "See how much organic and referral traffic is masking your real paid acquisition cost.",
      "formula": "Paid CAC = paid spend ÷ paid-attributed customers; Blended CAC = paid spend ÷ (paid + organic customers); Dependency ratio = Paid CAC ÷ Blended CAC.",
      "inputs": [
        {
          "id": "spend",
          "label": "Total paid marketing spend",
          "kind": "number"
        },
        {
          "id": "paidCustomers",
          "label": "New customers attributed to paid",
          "kind": "number"
        },
        {
          "id": "organicCustomers",
          "label": "New customers from organic/referral/direct",
          "kind": "number"
        },
        {
          "id": "ltv",
          "label": "Average customer lifetime value",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paidCac",
          "label": "Paid-only CAC"
        },
        {
          "id": "blendedCac",
          "label": "Blended CAC"
        },
        {
          "id": "ratio",
          "label": "Paid ÷ blended dependency ratio"
        },
        {
          "id": "paidLtvCac",
          "label": "LTV:CAC on paid alone"
        },
        {
          "id": "blendedLtvCac",
          "label": "LTV:CAC blended"
        }
      ]
    },
    {
      "slug": "mer-roas-breakeven-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/mer-roas-breakeven-calculator",
      "title": "MER & Blended ROAS Breakeven Calculator",
      "category": "financial",
      "summary": "Find the marketing efficiency ratio where ad spend stops being profitable.",
      "formula": "Breakeven MER = 1 ÷ gross margin; Target MER = (fixed cost allocation + target profit + COGS) ÷ revenue, solved as 1 ÷ (margin − fixed% − profit%).",
      "inputs": [
        {
          "id": "grossMargin",
          "label": "Gross margin",
          "kind": "number"
        },
        {
          "id": "fixedPctRevenue",
          "label": "Non-marketing fixed costs as % of revenue",
          "kind": "number"
        },
        {
          "id": "targetProfitPct",
          "label": "Target profit margin",
          "kind": "number"
        },
        {
          "id": "currentRevenue",
          "label": "Current monthly revenue",
          "kind": "number"
        },
        {
          "id": "currentSpend",
          "label": "Current monthly marketing spend",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "targetMer",
          "label": "Target MER for your profit goal"
        },
        {
          "id": "currentMer",
          "label": "Current MER"
        },
        {
          "id": "breakEvenMer",
          "label": "Pure breakeven MER (margin only)"
        },
        {
          "id": "gapPct",
          "label": "Current vs. target gap"
        },
        {
          "id": "maxSpendAtTarget",
          "label": "Max monthly spend to hit target MER"
        }
      ]
    },
    {
      "slug": "attribution-window-shift-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/attribution-window-shift-calculator",
      "title": "Attribution Window Shift Calculator",
      "category": "financial",
      "summary": "See how much your reported CAC and ROAS change when you shorten or lengthen the attribution window.",
      "formula": "Conversions(window) ≈ total × (1 − e^(−decay × days)); shifted CAC = spend ÷ conversions(new window).",
      "inputs": [
        {
          "id": "spend",
          "label": "Campaign spend",
          "kind": "number"
        },
        {
          "id": "currentWindowDays",
          "label": "Current attribution window",
          "kind": "number"
        },
        {
          "id": "currentConversions",
          "label": "Conversions reported at current window",
          "kind": "number"
        },
        {
          "id": "newWindowDays",
          "label": "New attribution window to compare",
          "kind": "number"
        },
        {
          "id": "aov",
          "label": "Average order value",
          "kind": "number"
        },
        {
          "id": "decayRate",
          "label": "Conversion decay rate (higher = faster front-loading)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "newConversions",
          "label": "Estimated conversions at new window"
        },
        {
          "id": "newCac",
          "label": "CAC at new window"
        },
        {
          "id": "newRoas",
          "label": "ROAS at new window"
        },
        {
          "id": "currentRoas",
          "label": "ROAS at current window"
        },
        {
          "id": "cacShiftPct",
          "label": "CAC change moving to new window"
        }
      ]
    },
    {
      "slug": "email-subscriber-lifetime-value-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/email-subscriber-lifetime-value-calculator",
      "title": "Email Subscriber Lifetime Value Calculator",
      "category": "financial",
      "summary": "What a new email signup is worth over its full life on your list, not just this month.",
      "formula": "Expected lifespan (months) = 1 ÷ monthly churn rate; LTV = monthly revenue per subscriber × expected lifespan × margin.",
      "inputs": [
        {
          "id": "monthlyRevPerSub",
          "label": "Monthly revenue per active subscriber",
          "kind": "number"
        },
        {
          "id": "monthlyChurn",
          "label": "Monthly list churn (unsub + inactive)",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Contribution margin on that revenue",
          "kind": "number"
        },
        {
          "id": "targetCacRatio",
          "label": "Target LTV:CAC ratio for signups",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ltv",
          "label": "Subscriber lifetime value"
        },
        {
          "id": "lifespanMonths",
          "label": "Expected subscriber lifespan"
        },
        {
          "id": "maxCac",
          "label": "Max sustainable cost per new subscriber"
        },
        {
          "id": "annualValue",
          "label": "Contribution value per subscriber per year"
        }
      ]
    },
    {
      "slug": "seo-traffic-value-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/seo-traffic-value-calculator",
      "title": "SEO Traffic Value Calculator",
      "category": "financial",
      "summary": "What your organic search traffic would cost to replace with paid ads.",
      "formula": "Traffic value = organic sessions × average CPC for equivalent terms; effective CAC = traffic value ÷ conversions from that traffic.",
      "inputs": [
        {
          "id": "sessions",
          "label": "Monthly organic sessions",
          "kind": "number"
        },
        {
          "id": "avgCpc",
          "label": "Average CPC for equivalent keywords",
          "kind": "number"
        },
        {
          "id": "conversionRate",
          "label": "Conversion rate of organic traffic",
          "kind": "number"
        },
        {
          "id": "aov",
          "label": "Average order value",
          "kind": "number"
        },
        {
          "id": "contentCost",
          "label": "Monthly SEO/content investment",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "trafficValue",
          "label": "Monthly paid-media replacement value"
        },
        {
          "id": "revenue",
          "label": "Estimated revenue from organic traffic"
        },
        {
          "id": "roi",
          "label": "SEO investment ROI"
        },
        {
          "id": "effectiveCac",
          "label": "Effective CAC of SEO-driven customers"
        },
        {
          "id": "conversions",
          "label": "Monthly conversions from organic"
        }
      ]
    },
    {
      "slug": "share-of-voice-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/share-of-voice-calculator",
      "title": "Share of Voice vs. Share of Market Calculator",
      "category": "math",
      "summary": "Compare your advertising share of voice against your market share to find excess SOV.",
      "formula": "SOV = your spend ÷ total category spend; ESOV = SOV − SOM; projected annual share change ≈ ESOV × 0.05 (typical historical multiplier).",
      "inputs": [
        {
          "id": "yourSpend",
          "label": "Your annual advertising spend",
          "kind": "number"
        },
        {
          "id": "categorySpend",
          "label": "Total category advertising spend",
          "kind": "number"
        },
        {
          "id": "yourShareOfMarket",
          "label": "Your current market share",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "sov",
          "label": "Your share of voice"
        },
        {
          "id": "esov",
          "label": "Excess share of voice (SOV − SOM)"
        },
        {
          "id": "projectedAnnualChange",
          "label": "Projected annual share change (points)"
        },
        {
          "id": "fiveYearProjectedShare",
          "label": "Projected market share in 5 years"
        }
      ]
    },
    {
      "slug": "frequency-capping-waste-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/frequency-capping-waste-calculator",
      "title": "Ad Frequency Capping Waste Calculator",
      "category": "financial",
      "summary": "Quantify how much you're spending on impressions beyond the point where they still help.",
      "formula": "Wasted impression share = max(0, (avgFrequency − effectiveCap) ÷ avgFrequency); wasted spend = total spend × wasted impression share.",
      "inputs": [
        {
          "id": "impressions",
          "label": "Total monthly impressions",
          "kind": "number"
        },
        {
          "id": "reach",
          "label": "Unique people reached",
          "kind": "number"
        },
        {
          "id": "effectiveCap",
          "label": "Effective frequency threshold",
          "kind": "number"
        },
        {
          "id": "cpm",
          "label": "CPM",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "wastedSpend",
          "label": "Estimated wasted monthly spend"
        },
        {
          "id": "avgFreq",
          "label": "Current average frequency"
        },
        {
          "id": "wastedShare",
          "label": "Share of spend beyond effective cap"
        },
        {
          "id": "additionalReachPossible",
          "label": "Additional people reachable if reallocated"
        },
        {
          "id": "totalSpend",
          "label": "Total monthly spend"
        }
      ]
    },
    {
      "slug": "landing-page-conversion-lift-value",
      "url": "https://www.revenuelab.fyi/toolbox/landing-page-conversion-lift-value",
      "title": "Landing Page Conversion Lift Value Calculator",
      "category": "financial",
      "summary": "Turn a winning A/B test result into an annualized dollar value.",
      "formula": "Incremental conversions/month = traffic × (winning rate − baseline rate); annual value = incremental conversions × 12 × AOV × margin.",
      "inputs": [
        {
          "id": "traffic",
          "label": "Monthly traffic to the page",
          "kind": "number"
        },
        {
          "id": "baselineRate",
          "label": "Baseline conversion rate",
          "kind": "number"
        },
        {
          "id": "winningRate",
          "label": "Winning variant conversion rate",
          "kind": "number"
        },
        {
          "id": "aov",
          "label": "Average order value",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Contribution margin",
          "kind": "number"
        },
        {
          "id": "implementationCost",
          "label": "One-time implementation cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualValue",
          "label": "Annualized profit value of the win"
        },
        {
          "id": "monthlyValue",
          "label": "Monthly profit value"
        },
        {
          "id": "incrConvMonth",
          "label": "Incremental conversions per month"
        },
        {
          "id": "paybackDays",
          "label": "Days to pay back implementation cost"
        }
      ]
    },
    {
      "slug": "marketing-budget-payback-allocator",
      "url": "https://www.revenuelab.fyi/toolbox/marketing-budget-payback-allocator",
      "title": "Marketing Budget Allocation by Payback Calculator",
      "category": "financial",
      "summary": "Rank channels by CAC payback period and see where the next marketing dollar should go.",
      "formula": "Payback (months) = CAC ÷ monthly gross profit per customer; blended payback = total budget ÷ Σ(new customers per channel × monthly gross profit).",
      "inputs": [
        {
          "id": "spendA",
          "label": "Channel A monthly spend",
          "kind": "number"
        },
        {
          "id": "cacA",
          "label": "Channel A CAC",
          "kind": "number"
        },
        {
          "id": "spendB",
          "label": "Channel B monthly spend",
          "kind": "number"
        },
        {
          "id": "cacB",
          "label": "Channel B CAC",
          "kind": "number"
        },
        {
          "id": "monthlyGrossProfit",
          "label": "Monthly gross profit per customer (both channels)",
          "kind": "number"
        },
        {
          "id": "shiftAmount",
          "label": "Budget to shift from slower to faster channel",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "newBlendedPayback",
          "label": "Blended payback after shift"
        },
        {
          "id": "blendedPayback",
          "label": "Current blended payback (months)"
        },
        {
          "id": "paybackA",
          "label": "Channel A payback (months)"
        },
        {
          "id": "paybackB",
          "label": "Channel B payback (months)"
        },
        {
          "id": "extraCustomers",
          "label": "Extra customers per month after shift"
        }
      ]
    },
    {
      "slug": "webinar-cost-per-sql-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/webinar-cost-per-sql-calculator",
      "title": "Webinar Cost Per SQL Calculator",
      "category": "financial",
      "summary": "Turn webinar registrations into a real cost-per-sales-qualified-lead number.",
      "formula": "Attendees = registrations × show rate; MQLs = attendees × MQL rate; SQLs = MQLs × SQL acceptance rate; cost per SQL = total program cost ÷ SQLs.",
      "inputs": [
        {
          "id": "registrations",
          "label": "Registrations",
          "kind": "number"
        },
        {
          "id": "showRate",
          "label": "Live show-up rate",
          "kind": "number"
        },
        {
          "id": "mqlRate",
          "label": "Attendee to MQL rate",
          "kind": "number"
        },
        {
          "id": "sqlRate",
          "label": "MQL to SQL acceptance rate",
          "kind": "number"
        },
        {
          "id": "programCost",
          "label": "Total fully loaded program cost",
          "kind": "number"
        },
        {
          "id": "avgDealSize",
          "label": "Average closed-won deal size",
          "kind": "number"
        },
        {
          "id": "sqlToWinRate",
          "label": "SQL to closed-won rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerSql",
          "label": "Cost per SQL"
        },
        {
          "id": "sqls",
          "label": "SQLs generated"
        },
        {
          "id": "costPerMql",
          "label": "Cost per MQL"
        },
        {
          "id": "wins",
          "label": "Expected closed-won deals"
        },
        {
          "id": "roi",
          "label": "Program ROI from expected closed revenue"
        }
      ]
    },
    {
      "slug": "brand-lift-survey-sample-size",
      "url": "https://www.revenuelab.fyi/toolbox/brand-lift-survey-sample-size",
      "title": "Brand Lift Survey Sample Size Calculator",
      "category": "math",
      "summary": "How many exposed and control survey respondents you need to detect a real brand lift.",
      "formula": "n per group (completed) = (Zα/2 + Zβ)² × [p1(1−p1) + p2(1−p2)] ÷ (p2 − p1)²; invites needed = n ÷ expected response rate.",
      "inputs": [
        {
          "id": "baselineMetric",
          "label": "Baseline metric (e.g. aided awareness)",
          "kind": "number"
        },
        {
          "id": "targetLiftPoints",
          "label": "Target lift in percentage points",
          "kind": "number"
        },
        {
          "id": "confidence",
          "label": "Confidence level",
          "kind": "select"
        },
        {
          "id": "responseRate",
          "label": "Expected survey response rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "invitesPerGroup",
          "label": "People to invite per group"
        },
        {
          "id": "nPerGroup",
          "label": "Completed responses needed per group"
        },
        {
          "id": "totalInvites",
          "label": "Total invites needed (both groups)"
        },
        {
          "id": "p2pct",
          "label": "Target metric after lift"
        }
      ]
    },
    {
      "slug": "multi-touch-attribution-credit-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/multi-touch-attribution-credit-calculator",
      "title": "Multi-Touch Attribution Credit Calculator",
      "category": "financial",
      "summary": "Split conversion credit across touchpoints with linear, time-decay, or U-shaped models.",
      "formula": "Linear = revenue ÷ touches. Time-decay weight_i = 0.5^((n−i)/halfLife), normalized to sum to 1. U-shaped = 40% first + 40% last + 20% ÷ (touches−2) each middle touch.",
      "inputs": [
        {
          "id": "touches",
          "label": "Touchpoints in the converting path",
          "kind": "number"
        },
        {
          "id": "revenue",
          "label": "Revenue from the conversion",
          "kind": "number"
        },
        {
          "id": "halfLife",
          "label": "Time-decay half-life (touches)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "decayLast",
          "label": "Time-decay credit to last touch"
        },
        {
          "id": "linearEach",
          "label": "Linear credit per touch"
        },
        {
          "id": "decayFirst",
          "label": "Time-decay credit to first touch"
        },
        {
          "id": "uFirst",
          "label": "U-shaped credit to first touch"
        },
        {
          "id": "uLast",
          "label": "U-shaped credit to last touch"
        },
        {
          "id": "uMiddleEach",
          "label": "U-shaped credit per middle touch"
        }
      ]
    },
    {
      "slug": "promo-code-cannibalization-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/promo-code-cannibalization-calculator",
      "title": "Promo Code Cannibalization Calculator",
      "category": "financial",
      "summary": "Find out how much discount revenue would have happened anyway at full price.",
      "formula": "Incremental orders = redemptions × incrementality rate; Cannibalized orders = redemptions × (1 − incrementality rate); Net margin impact = incremental orders × discounted margin − cannibalized orders × discount amount.",
      "inputs": [
        {
          "id": "redemptions",
          "label": "Promo code redemptions",
          "kind": "number"
        },
        {
          "id": "aov",
          "label": "Average order value",
          "kind": "number"
        },
        {
          "id": "discountPct",
          "label": "Discount percentage",
          "kind": "number"
        },
        {
          "id": "grossMargin",
          "label": "Gross margin at full price",
          "kind": "number"
        },
        {
          "id": "incrementalityRate",
          "label": "Estimated incrementality rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netMarginImpact",
          "label": "Net margin impact of promo"
        },
        {
          "id": "incrementalOrders",
          "label": "Truly incremental orders"
        },
        {
          "id": "cannibalizedOrders",
          "label": "Cannibalized (would've bought anyway)"
        },
        {
          "id": "breakEvenIncRatePct",
          "label": "Break-even incrementality rate needed"
        },
        {
          "id": "discountedMarginPerOrder",
          "label": "Margin per discounted order"
        }
      ]
    },
    {
      "slug": "retargeting-audience-value-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/retargeting-audience-value-calculator",
      "title": "Retargeting Audience Value Calculator",
      "category": "financial",
      "summary": "Estimate the profitable spend ceiling for a retargeting pool before it decays.",
      "formula": "Expected incremental conversions = audience size × conversion rate × incrementality rate; Max profitable CPC = (AOV × margin × conversion rate × incrementality rate) ÷ desired ROAS multiple.",
      "inputs": [
        {
          "id": "audienceSize",
          "label": "Retargeting audience size",
          "kind": "number"
        },
        {
          "id": "conversionRate",
          "label": "Expected conversion rate for this recency window",
          "kind": "number"
        },
        {
          "id": "aov",
          "label": "Average order value",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Gross margin",
          "kind": "number"
        },
        {
          "id": "incrementalityRate",
          "label": "Incrementality rate for retargeting",
          "kind": "number"
        },
        {
          "id": "targetRoas",
          "label": "Target incremental ROAS",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "maxProfitableSpend",
          "label": "Max profitable spend on this pool"
        },
        {
          "id": "incrementalConversions",
          "label": "Expected incremental conversions"
        },
        {
          "id": "incrementalRevenue",
          "label": "Expected incremental revenue"
        },
        {
          "id": "maxCpc",
          "label": "Max profitable CPC (assumes 2% CTR)"
        },
        {
          "id": "recommendedCap",
          "label": "Recommended weekly spend cap"
        }
      ]
    },
    {
      "slug": "dark-social-traffic-estimate-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/dark-social-traffic-estimate-calculator",
      "title": "Dark Social Traffic Estimate Calculator",
      "category": "math",
      "summary": "Estimate how much of your 'direct' traffic is really untracked social sharing.",
      "formula": "Dark social sessions = direct sessions × dark social share; Dark social revenue = dark social sessions × conversion rate × AOV.",
      "inputs": [
        {
          "id": "directSessions",
          "label": "Reported 'direct' sessions (monthly)",
          "kind": "number"
        },
        {
          "id": "darkSocialShare",
          "label": "Estimated dark social share of direct",
          "kind": "number"
        },
        {
          "id": "conversionRate",
          "label": "Site-wide conversion rate",
          "kind": "number"
        },
        {
          "id": "aov",
          "label": "Average order value",
          "kind": "number"
        },
        {
          "id": "totalSessions",
          "label": "Total monthly site sessions",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "darkSocialSessions",
          "label": "Estimated dark social sessions"
        },
        {
          "id": "darkSocialRevenue",
          "label": "Estimated dark social revenue"
        },
        {
          "id": "trueDirectSessions",
          "label": "True direct sessions (bookmarks, typed URL)"
        },
        {
          "id": "darkSocialPctOfTotal",
          "label": "Dark social as % of total site traffic"
        }
      ]
    },
    {
      "slug": "influencer-cpm-cpe-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/influencer-cpm-cpe-calculator",
      "title": "Influencer CPM & CPE Calculator",
      "category": "financial",
      "summary": "Compare influencer deals on cost per thousand reach and cost per engagement.",
      "formula": "CPM = (fee ÷ reach) × 1000; CPE = fee ÷ total engagements; Engagement rate = total engagements ÷ reach.",
      "inputs": [
        {
          "id": "fee",
          "label": "Flat fee for the deal",
          "kind": "number"
        },
        {
          "id": "reach",
          "label": "Estimated reach / impressions",
          "kind": "number"
        },
        {
          "id": "engagements",
          "label": "Total engagements (likes+comments+saves+shares)",
          "kind": "number"
        },
        {
          "id": "clicks",
          "label": "Estimated link clicks (optional)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cpm",
          "label": "Cost per thousand reach (CPM)"
        },
        {
          "id": "cpe",
          "label": "Cost per engagement (CPE)"
        },
        {
          "id": "engagementRate",
          "label": "Engagement rate"
        },
        {
          "id": "cpc",
          "label": "Estimated cost per click"
        }
      ]
    },
    {
      "slug": "marketing-mix-modeling-lite-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/marketing-mix-modeling-lite-calculator",
      "title": "Marketing Mix Modeling Lite Calculator",
      "category": "financial",
      "summary": "Apply simple diminishing-returns saturation curves to compare channel spend efficiency.",
      "formula": "Revenue = baseline efficiency × spend^(1 − saturation strength); marginal ROAS = derivative of that curve at current spend, i.e. (1 − saturation) × revenue ÷ spend.",
      "inputs": [
        {
          "id": "currentSpend",
          "label": "Current monthly spend",
          "kind": "number"
        },
        {
          "id": "currentRoas",
          "label": "Current reported ROAS",
          "kind": "number"
        },
        {
          "id": "saturation",
          "label": "Diminishing returns strength (0 = linear, 0.8 = heavily saturated)",
          "kind": "number"
        },
        {
          "id": "proposedSpendChangePct",
          "label": "Proposed spend change",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "incrementalRevenue",
          "label": "Estimated incremental revenue from change"
        },
        {
          "id": "newRevenue",
          "label": "Estimated revenue at new spend level"
        },
        {
          "id": "newRoas",
          "label": "Estimated ROAS at new spend level"
        },
        {
          "id": "marginalRoas",
          "label": "Marginal ROAS of next dollar (current level)"
        },
        {
          "id": "currentRevenue",
          "label": "Current implied revenue"
        }
      ]
    },
    {
      "slug": "churn-winback-roi-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/churn-winback-roi-calculator",
      "title": "Churn Win-Back Campaign ROI Calculator",
      "category": "financial",
      "summary": "Decide if a win-back campaign to lapsed customers pays for itself.",
      "formula": "Reactivated customers = list size × win-back rate; Revenue = reactivated customers × AOV × retention margin; ROI = (revenue − campaign cost) ÷ campaign cost; Break-even rate = campaign cost ÷ (list size × AOV × margin).",
      "inputs": [
        {
          "id": "listSize",
          "label": "Lapsed customer list size",
          "kind": "number"
        },
        {
          "id": "winbackRate",
          "label": "Expected win-back (reactivation) rate",
          "kind": "number"
        },
        {
          "id": "aov",
          "label": "Average order value of reactivated customer",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Gross margin",
          "kind": "number"
        },
        {
          "id": "campaignCost",
          "label": "Total campaign cost (creative + send + incentive)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "roi",
          "label": "Campaign ROI"
        },
        {
          "id": "reactivated",
          "label": "Reactivated customers"
        },
        {
          "id": "revenue",
          "label": "Revenue generated"
        },
        {
          "id": "costPerReactivated",
          "label": "Cost per reactivated customer"
        },
        {
          "id": "breakEvenRate",
          "label": "Break-even win-back rate needed"
        }
      ]
    },
    {
      "slug": "paid-search-impression-share-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/paid-search-impression-share-calculator",
      "title": "Paid Search Impression Share & Lost IS Calculator",
      "category": "math",
      "summary": "See how much traffic you're losing to budget caps versus rank, and what it'd cost to fix.",
      "formula": "Eligible impressions = current impressions ÷ impression share; Missed impressions from budget = eligible impressions × lost IS (budget)%; Additional clicks ≈ missed impressions × current CTR; Additional budget needed ≈ additional clicks × current CPC.",
      "inputs": [
        {
          "id": "impressionShare",
          "label": "Current impression share",
          "kind": "number"
        },
        {
          "id": "lostIsBudget",
          "label": "Lost IS (budget)",
          "kind": "number"
        },
        {
          "id": "lostIsRank",
          "label": "Lost IS (rank)",
          "kind": "number"
        },
        {
          "id": "currentImpressions",
          "label": "Current monthly impressions",
          "kind": "number"
        },
        {
          "id": "clicks",
          "label": "Current monthly clicks",
          "kind": "number"
        },
        {
          "id": "spend",
          "label": "Current monthly spend",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "additionalBudgetNeeded",
          "label": "Extra monthly budget to capture lost-budget IS"
        },
        {
          "id": "additionalClicks",
          "label": "Additional clicks available"
        },
        {
          "id": "missedFromBudget",
          "label": "Impressions missed due to budget"
        },
        {
          "id": "eligibleImpressions",
          "label": "Total eligible impressions (full auction)"
        },
        {
          "id": "potentialImpressionShare",
          "label": "Impression share if budget unconstrained"
        }
      ]
    },
    {
      "slug": "content-marketing-payback-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/content-marketing-payback-calculator",
      "title": "Content Marketing Payback Calculator",
      "category": "financial",
      "summary": "Find out how long a piece of content takes to pay back its production cost.",
      "formula": "Monthly value = monthly sessions × conversion rate × value per conversion; Payback months = production cost ÷ monthly value (month 1); 24-month value = sum of monthly sessions × (1 − decay)^month × conversion rate × value per conversion.",
      "inputs": [
        {
          "id": "productionCost",
          "label": "Production cost (writing, design, promotion)",
          "kind": "number"
        },
        {
          "id": "monthlySessions",
          "label": "Expected steady-state monthly organic sessions",
          "kind": "number"
        },
        {
          "id": "conversionRate",
          "label": "Session-to-conversion rate",
          "kind": "number"
        },
        {
          "id": "valuePerConversion",
          "label": "Value per conversion (lead value or order value × margin)",
          "kind": "number"
        },
        {
          "id": "monthlyDecay",
          "label": "Monthly traffic decay rate after peak",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paybackMonths",
          "label": "Payback period"
        },
        {
          "id": "monthlyValue",
          "label": "Monthly value at steady state"
        },
        {
          "id": "total24",
          "label": "24-month cumulative value"
        },
        {
          "id": "netValue24",
          "label": "24-month net value after cost"
        },
        {
          "id": "roi24",
          "label": "24-month ROI"
        }
      ]
    },
    {
      "slug": "new-vs-returning-revenue-mix-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/new-vs-returning-revenue-mix-calculator",
      "title": "New vs. Returning Customer Revenue Mix Calculator",
      "category": "financial",
      "summary": "See how dependent your revenue is on new acquisition versus repeat customers.",
      "formula": "New revenue share = new customer revenue ÷ total revenue; Returning AOV = returning revenue ÷ returning orders; Dependency ratio = new revenue share ÷ returning revenue share.",
      "inputs": [
        {
          "id": "newRevenue",
          "label": "Revenue from new customers",
          "kind": "number"
        },
        {
          "id": "newOrders",
          "label": "Orders from new customers",
          "kind": "number"
        },
        {
          "id": "returningRevenue",
          "label": "Revenue from returning customers",
          "kind": "number"
        },
        {
          "id": "returningOrders",
          "label": "Orders from returning customers",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "retShare",
          "label": "Returning-customer revenue share"
        },
        {
          "id": "newShare",
          "label": "New-customer revenue share"
        },
        {
          "id": "newAov",
          "label": "New customer AOV"
        },
        {
          "id": "retAov",
          "label": "Returning customer AOV"
        },
        {
          "id": "dependencyRatio",
          "label": "New-vs-returning dependency ratio"
        }
      ]
    },
    {
      "slug": "ad-fatigue-frequency-threshold-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/ad-fatigue-frequency-threshold-calculator",
      "title": "Ad Fatigue Frequency Threshold Calculator",
      "category": "math",
      "summary": "Find the frequency level where your ad's performance starts declining.",
      "formula": "CTR at frequency f = baseline CTR × (1 − decay rate)^(f − 1); Fatigue threshold = frequency where CTR falls below (threshold % × baseline CTR); Wasted spend = impressions beyond threshold × CPM ÷ 1000.",
      "inputs": [
        {
          "id": "baselineCtr",
          "label": "CTR at frequency 1",
          "kind": "number"
        },
        {
          "id": "decayRate",
          "label": "CTR decay per additional impression",
          "kind": "number"
        },
        {
          "id": "thresholdPct",
          "label": "Fatigue threshold (% of baseline CTR)",
          "kind": "number"
        },
        {
          "id": "currentFrequency",
          "label": "Current average frequency",
          "kind": "number"
        },
        {
          "id": "impressionsPastThreshold",
          "label": "Monthly impressions delivered above threshold frequency",
          "kind": "number"
        },
        {
          "id": "cpm",
          "label": "CPM",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "thresholdFreq",
          "label": "Fatigue threshold frequency"
        },
        {
          "id": "ctrAtCurrent",
          "label": "Estimated CTR at current frequency"
        },
        {
          "id": "currentFreqPctOfBaseline",
          "label": "Current CTR as % of baseline"
        },
        {
          "id": "wastedSpend",
          "label": "Estimated wasted spend above threshold"
        }
      ]
    },
    {
      "slug": "cost-per-lead-to-sql-funnel-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/cost-per-lead-to-sql-funnel-calculator",
      "title": "Cost Per Lead to SQL Funnel Calculator",
      "category": "financial",
      "summary": "Translate raw lead cost into real cost per sales-qualified lead and opportunity.",
      "formula": "Cost per SQL = spend ÷ (leads × MQL rate × SQL rate); Cost per opportunity = cost per SQL ÷ opportunity rate; Blended conversion = MQL rate × SQL rate × opportunity rate.",
      "inputs": [
        {
          "id": "spend",
          "label": "Total campaign spend",
          "kind": "number"
        },
        {
          "id": "leads",
          "label": "Raw leads generated",
          "kind": "number"
        },
        {
          "id": "mqlRate",
          "label": "Lead-to-MQL rate",
          "kind": "number"
        },
        {
          "id": "sqlRate",
          "label": "MQL-to-SQL rate",
          "kind": "number"
        },
        {
          "id": "oppRate",
          "label": "SQL-to-opportunity rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerSql",
          "label": "True cost per SQL"
        },
        {
          "id": "costPerOpp",
          "label": "Cost per opportunity"
        },
        {
          "id": "costPerLead",
          "label": "Cost per raw lead"
        },
        {
          "id": "costPerMql",
          "label": "Cost per MQL"
        },
        {
          "id": "blendedConversion",
          "label": "Blended lead-to-opportunity rate"
        },
        {
          "id": "opps",
          "label": "Opportunities generated"
        }
      ]
    },
    {
      "slug": "hotel-revpar-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/hotel-revpar-calculator",
      "title": "Hotel RevPAR Calculator",
      "category": "financial",
      "summary": "Revenue per available room from occupancy and ADR, or from room revenue directly.",
      "formula": "RevPAR = Occupancy % × ADR = Total Room Revenue ÷ Rooms Available (rooms × nights).",
      "inputs": [
        {
          "id": "rooms",
          "label": "Total rooms",
          "kind": "number"
        },
        {
          "id": "nights",
          "label": "Days in period",
          "kind": "number"
        },
        {
          "id": "occupancy",
          "label": "Occupancy",
          "kind": "number"
        },
        {
          "id": "adr",
          "label": "Average daily rate (ADR)",
          "kind": "number"
        },
        {
          "id": "compRevpar",
          "label": "Comp set RevPAR (optional)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "revpar",
          "label": "RevPAR"
        },
        {
          "id": "roomRevenue",
          "label": "Total room revenue for period"
        },
        {
          "id": "available",
          "label": "Room-nights available"
        },
        {
          "id": "index",
          "label": "RevPAR index vs comp set"
        }
      ]
    },
    {
      "slug": "hotel-adr-occupancy-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/hotel-adr-occupancy-calculator",
      "title": "Hotel ADR & Occupancy Calculator",
      "category": "financial",
      "summary": "Back into average daily rate and occupancy from rooms sold and revenue.",
      "formula": "ADR = Room Revenue ÷ Rooms Sold. Occupancy = Rooms Sold ÷ Rooms Available.",
      "inputs": [
        {
          "id": "roomsAvailable",
          "label": "Rooms available (rooms × nights)",
          "kind": "number"
        },
        {
          "id": "roomsSold",
          "label": "Rooms sold",
          "kind": "number"
        },
        {
          "id": "roomRevenue",
          "label": "Total room revenue",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "adr",
          "label": "Average daily rate (ADR)"
        },
        {
          "id": "occupancy",
          "label": "Occupancy"
        },
        {
          "id": "revpar",
          "label": "RevPAR"
        },
        {
          "id": "sold",
          "label": "Rooms sold"
        }
      ]
    },
    {
      "slug": "hotel-goppar-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/hotel-goppar-calculator",
      "title": "Hotel GOPPAR Calculator",
      "category": "financial",
      "summary": "Gross operating profit per available room — the profitability answer RevPAR can't give.",
      "formula": "GOPPAR = (Total Revenue − Total Operating Expenses) ÷ Available Rooms.",
      "inputs": [
        {
          "id": "roomRevenue",
          "label": "Room revenue",
          "kind": "number"
        },
        {
          "id": "otherRevenue",
          "label": "F&B and other revenue",
          "kind": "number"
        },
        {
          "id": "opex",
          "label": "Total operating expenses",
          "kind": "number"
        },
        {
          "id": "rooms",
          "label": "Total rooms",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Days in period",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "goppar",
          "label": "GOPPAR"
        },
        {
          "id": "gop",
          "label": "Gross operating profit"
        },
        {
          "id": "margin",
          "label": "GOP margin"
        },
        {
          "id": "totalRevenue",
          "label": "Total revenue"
        }
      ]
    },
    {
      "slug": "str-cleaning-fee-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/str-cleaning-fee-breakeven",
      "title": "Short-Term Rental Cleaning Fee Breakeven Calculator",
      "category": "financial",
      "summary": "Find the minimum cleaning fee that covers turnover cost without killing bookings.",
      "formula": "True cost = cleaner pay + supplies + laundry + host time × hourly value. Gap = fee charged − true cost.",
      "inputs": [
        {
          "id": "cleanerPay",
          "label": "Cleaner pay per turnover",
          "kind": "number"
        },
        {
          "id": "supplies",
          "label": "Supplies per turnover",
          "kind": "number"
        },
        {
          "id": "laundry",
          "label": "Laundry service per turnover",
          "kind": "number"
        },
        {
          "id": "hostMinutes",
          "label": "Host coordination time",
          "kind": "number"
        },
        {
          "id": "hostRate",
          "label": "Host time value",
          "kind": "number"
        },
        {
          "id": "feeCharged",
          "label": "Cleaning fee charged to guest",
          "kind": "number"
        },
        {
          "id": "turnoversMonth",
          "label": "Turnovers per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenFee",
          "label": "Breakeven cleaning fee"
        },
        {
          "id": "trueCost",
          "label": "True cost per turnover"
        },
        {
          "id": "gap",
          "label": "Surplus / (shortfall) vs charged fee"
        },
        {
          "id": "monthlyImpact",
          "label": "Monthly surplus / (shortfall)"
        }
      ]
    },
    {
      "slug": "hotel-breakeven-occupancy",
      "url": "https://www.revenuelab.fyi/toolbox/hotel-breakeven-occupancy",
      "title": "Hotel Breakeven Occupancy Calculator",
      "category": "financial",
      "summary": "The occupancy percentage where room revenue covers fixed and variable costs.",
      "formula": "Breakeven Occupancy % = Fixed Costs ÷ (Rooms Available × (ADR − Variable Cost per Room)).",
      "inputs": [
        {
          "id": "fixedCosts",
          "label": "Monthly fixed costs",
          "kind": "number"
        },
        {
          "id": "rooms",
          "label": "Total rooms",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Days in month",
          "kind": "number"
        },
        {
          "id": "adr",
          "label": "ADR",
          "kind": "number"
        },
        {
          "id": "variableCost",
          "label": "Variable cost per occupied room",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenOcc",
          "label": "Breakeven occupancy"
        },
        {
          "id": "breakevenRooms",
          "label": "Breakeven room-nights"
        },
        {
          "id": "contribution",
          "label": "Contribution margin per room"
        },
        {
          "id": "marginOfSafety",
          "label": "Margin of safety at 100% occupancy"
        }
      ]
    },
    {
      "slug": "ota-commission-vs-direct-booking",
      "url": "https://www.revenuelab.fyi/toolbox/ota-commission-vs-direct-booking",
      "title": "OTA Commission vs Direct Booking Calculator",
      "category": "financial",
      "summary": "See what an OTA booking really nets you versus a direct reservation.",
      "formula": "OTA net = Rate × (1 − commission %) − payment fee. Direct net = Rate × (1 − direct discount %) × (1 − processing %) − marketing cost per booking.",
      "inputs": [
        {
          "id": "rate",
          "label": "Booking rate (per stay)",
          "kind": "number"
        },
        {
          "id": "otaCommission",
          "label": "OTA commission",
          "kind": "number"
        },
        {
          "id": "otaProcessing",
          "label": "OTA payment processing fee",
          "kind": "number"
        },
        {
          "id": "directDiscount",
          "label": "Direct-booking discount offered",
          "kind": "number"
        },
        {
          "id": "directProcessing",
          "label": "Direct payment processing fee",
          "kind": "number"
        },
        {
          "id": "marketingCost",
          "label": "Marketing cost per direct booking",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "directNet",
          "label": "Net revenue — direct booking"
        },
        {
          "id": "otaNet",
          "label": "Net revenue — OTA booking"
        },
        {
          "id": "advantage",
          "label": "Direct booking advantage"
        },
        {
          "id": "advantagePct",
          "label": "Advantage as % of OTA net"
        }
      ]
    },
    {
      "slug": "housekeeping-labor-cost-per-room",
      "url": "https://www.revenuelab.fyi/toolbox/housekeeping-labor-cost-per-room",
      "title": "Housekeeping Labor Cost Per Room Calculator",
      "category": "financial",
      "summary": "Staffing hours and labor cost needed to clean rooms at your target productivity.",
      "formula": "Attendants needed = Rooms to clean ÷ Rooms per shift. Labor cost per room = (Hourly wage × Burden %) × (8 hrs ÷ Rooms per shift).",
      "inputs": [
        {
          "id": "roomsToClean",
          "label": "Rooms to clean today",
          "kind": "number"
        },
        {
          "id": "roomsPerShift",
          "label": "Rooms per 8-hr shift (productivity)",
          "kind": "number"
        },
        {
          "id": "wage",
          "label": "Hourly wage",
          "kind": "number"
        },
        {
          "id": "burden",
          "label": "Payroll burden (taxes, benefits)",
          "kind": "number"
        },
        {
          "id": "shiftHours",
          "label": "Shift length",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "costPerRoom",
          "label": "Labor cost per occupied room"
        },
        {
          "id": "attendants",
          "label": "Room attendants needed"
        },
        {
          "id": "totalLaborCost",
          "label": "Total daily labor cost"
        },
        {
          "id": "hoursPerRoom",
          "label": "Labor hours per room"
        }
      ]
    },
    {
      "slug": "campground-site-revenue-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/campground-site-revenue-calculator",
      "title": "Campground Site Revenue Calculator",
      "category": "financial",
      "summary": "Model revenue across RV, tent, and cabin sites at different occupancy and rate mixes.",
      "formula": "Revenue per site type = Sites × Occupancy % × Nights × Rate. Total = sum across types. Blended RevPAS = Total Revenue ÷ Total Available Site-Nights.",
      "inputs": [
        {
          "id": "rvSites",
          "label": "RV sites",
          "kind": "number"
        },
        {
          "id": "rvOcc",
          "label": "RV site occupancy",
          "kind": "number"
        },
        {
          "id": "rvRate",
          "label": "RV site nightly rate",
          "kind": "number"
        },
        {
          "id": "tentSites",
          "label": "Tent sites",
          "kind": "number"
        },
        {
          "id": "tentOcc",
          "label": "Tent site occupancy",
          "kind": "number"
        },
        {
          "id": "tentRate",
          "label": "Tent site nightly rate",
          "kind": "number"
        },
        {
          "id": "days",
          "label": "Days in period",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalRevenue",
          "label": "Total site revenue"
        },
        {
          "id": "rvRevenue",
          "label": "RV site revenue"
        },
        {
          "id": "tentRevenue",
          "label": "Tent site revenue"
        },
        {
          "id": "revpas",
          "label": "Blended revenue per available site"
        }
      ]
    },
    {
      "slug": "venue-rental-profit-per-event",
      "url": "https://www.revenuelab.fyi/toolbox/venue-rental-profit-per-event",
      "title": "Venue Rental Profit Per Event Calculator",
      "category": "financial",
      "summary": "Net profit per booking after staffing, cleanup, and venue overhead allocation.",
      "formula": "Profit = Rental Fee + Add-on Revenue − Staffing Cost − Cleanup Cost − Overhead Allocation per Event.",
      "inputs": [
        {
          "id": "rentalFee",
          "label": "Venue rental fee",
          "kind": "number"
        },
        {
          "id": "addonRevenue",
          "label": "Add-on revenue (bar, catering commission)",
          "kind": "number"
        },
        {
          "id": "staffHours",
          "label": "Staff hours for event",
          "kind": "number"
        },
        {
          "id": "staffRate",
          "label": "Blended staff wage",
          "kind": "number"
        },
        {
          "id": "cleanupCost",
          "label": "Cleanup / turnover cost",
          "kind": "number"
        },
        {
          "id": "monthlyOverhead",
          "label": "Monthly fixed overhead",
          "kind": "number"
        },
        {
          "id": "eventsMonth",
          "label": "Events booked per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "profit",
          "label": "Net profit per event"
        },
        {
          "id": "margin",
          "label": "Profit margin"
        },
        {
          "id": "totalCost",
          "label": "Total cost per event"
        },
        {
          "id": "overheadPerEvent",
          "label": "Overhead allocated per event"
        }
      ]
    },
    {
      "slug": "seasonal-pricing-uplift-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/seasonal-pricing-uplift-calculator",
      "title": "Seasonal Pricing Uplift Calculator",
      "category": "financial",
      "summary": "Revenue impact of raising or lowering rate for peak and off-peak seasons.",
      "formula": "Seasonal revenue = Σ(units × occupancy × nights × rate) per season. Uplift = Seasonal Revenue − Flat-Rate Revenue at blended occupancy.",
      "inputs": [
        {
          "id": "units",
          "label": "Rentable units",
          "kind": "number"
        },
        {
          "id": "peakDays",
          "label": "Peak season days",
          "kind": "number"
        },
        {
          "id": "peakOcc",
          "label": "Peak occupancy",
          "kind": "number"
        },
        {
          "id": "peakRate",
          "label": "Peak nightly rate",
          "kind": "number"
        },
        {
          "id": "offDays",
          "label": "Off-season days",
          "kind": "number"
        },
        {
          "id": "offOcc",
          "label": "Off-season occupancy",
          "kind": "number"
        },
        {
          "id": "offRate",
          "label": "Off-season nightly rate",
          "kind": "number"
        },
        {
          "id": "flatRate",
          "label": "Comparison flat year-round rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "uplift",
          "label": "Revenue uplift from seasonal pricing"
        },
        {
          "id": "seasonalRevenue",
          "label": "Total seasonal-rate revenue"
        },
        {
          "id": "flatRevenue",
          "label": "Total flat-rate revenue (comparison)"
        },
        {
          "id": "upliftPct",
          "label": "Uplift as % of flat-rate revenue"
        }
      ]
    },
    {
      "slug": "length-of-stay-discount-impact",
      "url": "https://www.revenuelab.fyi/toolbox/length-of-stay-discount-impact",
      "title": "Length-of-Stay Discount Impact Calculator",
      "category": "financial",
      "summary": "See whether a weekly or monthly stay discount actually nets more revenue per available night.",
      "formula": "Net revenue = (Nights × Rate × (1 − discount %)) − (Number of Stays × Turnover Cost). Compare short-stay vs long-stay scenarios over equal total nights.",
      "inputs": [
        {
          "id": "totalNights",
          "label": "Total available nights to fill",
          "kind": "number"
        },
        {
          "id": "baseRate",
          "label": "Nightly rate (short stays)",
          "kind": "number"
        },
        {
          "id": "shortStayLength",
          "label": "Average short-stay length",
          "kind": "number"
        },
        {
          "id": "longStayLength",
          "label": "Discounted stay length",
          "kind": "number"
        },
        {
          "id": "discount",
          "label": "Length-of-stay discount",
          "kind": "number"
        },
        {
          "id": "turnoverCost",
          "label": "Turnover cost per stay",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "longNet",
          "label": "Net revenue — discounted long stay"
        },
        {
          "id": "shortNet",
          "label": "Net revenue — short stays at full rate"
        },
        {
          "id": "netDifference",
          "label": "Net advantage of long-stay discount"
        },
        {
          "id": "discountedRate",
          "label": "Effective discounted nightly rate"
        }
      ]
    },
    {
      "slug": "hotel-renovation-payback",
      "url": "https://www.revenuelab.fyi/toolbox/hotel-renovation-payback",
      "title": "Hotel Renovation Payback Calculator",
      "category": "financial",
      "summary": "Years to recover a renovation's cost from the incremental RevPAR it generates.",
      "formula": "Annual Incremental Profit = (RevPAR After − RevPAR Before) × Rooms × 365 × Margin %. Payback (years) = Renovation Cost ÷ Annual Incremental Profit.",
      "inputs": [
        {
          "id": "cost",
          "label": "Renovation cost",
          "kind": "number"
        },
        {
          "id": "rooms",
          "label": "Total rooms",
          "kind": "number"
        },
        {
          "id": "revparBefore",
          "label": "RevPAR before renovation",
          "kind": "number"
        },
        {
          "id": "revparAfter",
          "label": "Expected RevPAR after renovation",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Flow-through margin on incremental revenue",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paybackYears",
          "label": "Payback period"
        },
        {
          "id": "annualIncrementalProfit",
          "label": "Annual incremental profit"
        },
        {
          "id": "annualIncrementalRevenue",
          "label": "Annual incremental revenue"
        },
        {
          "id": "fiveYearReturn",
          "label": "Net return over 5 years"
        }
      ]
    },
    {
      "slug": "group-block-attrition-cost",
      "url": "https://www.revenuelab.fyi/toolbox/group-block-attrition-cost",
      "title": "Group Block Attrition Cost Calculator",
      "category": "financial",
      "summary": "What a group's room-block pickup shortfall costs — and what attrition fees recover.",
      "formula": "Attrition Rooms = max(0, Threshold Rooms − Actual Pickup). Attrition Fee Owed = Attrition Rooms × Group Rate × (1 − Cost Offset %).",
      "inputs": [
        {
          "id": "blockSize",
          "label": "Contracted room block",
          "kind": "number"
        },
        {
          "id": "threshold",
          "label": "Attrition threshold",
          "kind": "number"
        },
        {
          "id": "actualPickup",
          "label": "Actual rooms picked up",
          "kind": "number"
        },
        {
          "id": "groupRate",
          "label": "Contracted group rate",
          "kind": "number"
        },
        {
          "id": "costOffset",
          "label": "Avoided-cost offset (housekeeping etc.)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "feeOwed",
          "label": "Attrition fee owed by group"
        },
        {
          "id": "attritionRooms",
          "label": "Rooms short of threshold"
        },
        {
          "id": "totalRecovered",
          "label": "Total hotel revenue recovered"
        },
        {
          "id": "shortfallVsFull",
          "label": "Shortfall vs full block pickup"
        }
      ]
    },
    {
      "slug": "vacation-rental-nightly-rate-optimizer",
      "url": "https://www.revenuelab.fyi/toolbox/vacation-rental-nightly-rate-optimizer",
      "title": "Vacation Rental Nightly Rate Optimizer",
      "category": "financial",
      "summary": "Set a base nightly rate that covers costs and hits your target monthly profit.",
      "formula": "Required Rate = (Fixed Costs + Target Profit) ÷ (Nights Available × Occupancy %) + Variable Cost per Night.",
      "inputs": [
        {
          "id": "fixedCosts",
          "label": "Fixed monthly costs",
          "kind": "number"
        },
        {
          "id": "variableCost",
          "label": "Variable cost per booked night",
          "kind": "number"
        },
        {
          "id": "occupancy",
          "label": "Expected occupancy",
          "kind": "number"
        },
        {
          "id": "daysMonth",
          "label": "Days in month",
          "kind": "number"
        },
        {
          "id": "targetProfit",
          "label": "Target monthly profit",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "requiredRate",
          "label": "Required nightly rate"
        },
        {
          "id": "monthlyRevenue",
          "label": "Projected monthly revenue"
        },
        {
          "id": "bookedNights",
          "label": "Booked nights at this occupancy"
        },
        {
          "id": "profitCheck",
          "label": "Resulting monthly profit"
        }
      ]
    },
    {
      "slug": "hotel-star-report-penetration-index",
      "url": "https://www.revenuelab.fyi/toolbox/hotel-star-report-penetration-index",
      "title": "Hotel Market Penetration Index Calculator",
      "category": "financial",
      "summary": "Compare your occupancy and RevPAR performance against your STR comp set.",
      "formula": "MPI = (Your Occupancy ÷ Comp Set Occupancy) × 100. ARI = (Your ADR ÷ Comp Set ADR) × 100. RGI = (Your RevPAR ÷ Comp Set RevPAR) × 100.",
      "inputs": [
        {
          "id": "yourOcc",
          "label": "Your occupancy",
          "kind": "number"
        },
        {
          "id": "compOcc",
          "label": "Comp set occupancy",
          "kind": "number"
        },
        {
          "id": "yourAdr",
          "label": "Your ADR",
          "kind": "number"
        },
        {
          "id": "compAdr",
          "label": "Comp set ADR",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rgi",
          "label": "Revenue Generation Index (RGI)"
        },
        {
          "id": "mpi",
          "label": "Market Penetration Index (MPI)"
        },
        {
          "id": "ari",
          "label": "Average Rate Index (ARI)"
        },
        {
          "id": "yourRevpar",
          "label": "Your RevPAR"
        }
      ]
    },
    {
      "slug": "hotel-cost-per-occupied-room",
      "url": "https://www.revenuelab.fyi/toolbox/hotel-cost-per-occupied-room",
      "title": "Cost Per Occupied Room (CPOR) Calculator",
      "category": "financial",
      "summary": "Total departmental cost divided by rooms sold — the housekeeping and rooms-division efficiency number.",
      "formula": "CPOR = Total Rooms Department Expense ÷ Rooms Sold. Rooms Profit per Room = ADR − CPOR.",
      "inputs": [
        {
          "id": "roomsExpense",
          "label": "Total rooms department expense",
          "kind": "number"
        },
        {
          "id": "roomsSold",
          "label": "Rooms sold in period",
          "kind": "number"
        },
        {
          "id": "adr",
          "label": "ADR for the period",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cpor",
          "label": "Cost per occupied room (CPOR)"
        },
        {
          "id": "profitPerRoom",
          "label": "Rooms division profit per room"
        },
        {
          "id": "profitMargin",
          "label": "Rooms division margin"
        },
        {
          "id": "roomsSold",
          "label": "Rooms sold"
        }
      ]
    },
    {
      "slug": "resort-fee-revenue-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/resort-fee-revenue-calculator",
      "title": "Resort Fee Revenue Calculator",
      "category": "financial",
      "summary": "Annual revenue and guest cost impact from a mandatory resort or amenity fee.",
      "formula": "Annual Fee Revenue = Occupied Room-Nights × Nightly Resort Fee. Fee Profit ≈ Revenue − Marginal Amenity Cost per Room-Night.",
      "inputs": [
        {
          "id": "rooms",
          "label": "Total rooms",
          "kind": "number"
        },
        {
          "id": "occupancy",
          "label": "Annual average occupancy",
          "kind": "number"
        },
        {
          "id": "resortFee",
          "label": "Resort fee per night",
          "kind": "number"
        },
        {
          "id": "marginalCost",
          "label": "Marginal amenity cost per occupied night",
          "kind": "number"
        },
        {
          "id": "adr",
          "label": "ADR (for effective rate comparison)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "revenue",
          "label": "Annual resort fee revenue"
        },
        {
          "id": "profit",
          "label": "Estimated annual fee profit"
        },
        {
          "id": "occupiedNights",
          "label": "Occupied room-nights per year"
        },
        {
          "id": "effectiveRateIncrease",
          "label": "Effective rate increase to guest"
        }
      ]
    },
    {
      "slug": "glamping-cabin-roi-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/glamping-cabin-roi-calculator",
      "title": "Glamping / Cabin Unit ROI Calculator",
      "category": "financial",
      "summary": "Annual return on investment for adding a glamping tent or cabin unit to your property.",
      "formula": "Annual Net Income = (Rate × Occupancy % × 365) − Annual Operating Cost. ROI % = Annual Net Income ÷ Total Investment.",
      "inputs": [
        {
          "id": "investment",
          "label": "Total unit investment (unit + site prep)",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Nightly rate",
          "kind": "number"
        },
        {
          "id": "occupancy",
          "label": "Annual average occupancy",
          "kind": "number"
        },
        {
          "id": "operatingCost",
          "label": "Annual operating cost (cleaning, utilities, maintenance)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "roi",
          "label": "Annual ROI"
        },
        {
          "id": "netIncome",
          "label": "Annual net income"
        },
        {
          "id": "grossRevenue",
          "label": "Annual gross revenue"
        },
        {
          "id": "paybackYears",
          "label": "Simple payback period"
        }
      ]
    },
    {
      "slug": "hotel-loyalty-program-cost-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/hotel-loyalty-program-cost-calculator",
      "title": "Hotel Loyalty Program Cost Calculator",
      "category": "financial",
      "summary": "True cost per point-earning stay versus the direct-booking value it generates.",
      "formula": "Program Cost per Stay = Points Cost + Brand Program Fee. Net Benefit = OTA Commission Avoided − Program Cost per Stay.",
      "inputs": [
        {
          "id": "rate",
          "label": "Average rate per stay",
          "kind": "number"
        },
        {
          "id": "pointsCostPct",
          "label": "Points liability cost",
          "kind": "number"
        },
        {
          "id": "brandFeePct",
          "label": "Brand loyalty program fee",
          "kind": "number"
        },
        {
          "id": "otaCommissionAvoided",
          "label": "OTA commission avoided (this would've been an OTA booking)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netBenefit",
          "label": "Net benefit per direct loyalty stay"
        },
        {
          "id": "programCost",
          "label": "Total loyalty program cost per stay"
        },
        {
          "id": "commissionAvoided",
          "label": "OTA commission avoided"
        },
        {
          "id": "netBenefitPct",
          "label": "Net benefit as % of rate"
        }
      ]
    },
    {
      "slug": "banquet-catering-cost-per-cover",
      "url": "https://www.revenuelab.fyi/toolbox/banquet-catering-cost-per-cover",
      "title": "Banquet Catering Cost Per Cover Calculator",
      "category": "financial",
      "summary": "Food, labor, and overhead cost per guest for a banquet or catered event.",
      "formula": "Cost per Cover = Food Cost + (Labor Cost ÷ Covers) + (Equipment Cost ÷ Covers). Menu Price = Cost per Cover ÷ Target Cost %.",
      "inputs": [
        {
          "id": "covers",
          "label": "Guest count (covers)",
          "kind": "number"
        },
        {
          "id": "foodCostPerCover",
          "label": "Food cost per cover",
          "kind": "number"
        },
        {
          "id": "laborHours",
          "label": "Total staff hours for event",
          "kind": "number"
        },
        {
          "id": "laborRate",
          "label": "Blended labor rate",
          "kind": "number"
        },
        {
          "id": "equipmentCost",
          "label": "Equipment / rental cost",
          "kind": "number"
        },
        {
          "id": "targetCostPct",
          "label": "Target total cost as % of menu price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "menuPrice",
          "label": "Menu price per cover to hit target"
        },
        {
          "id": "costPerCover",
          "label": "Total cost per cover"
        },
        {
          "id": "totalEventCost",
          "label": "Total event cost"
        },
        {
          "id": "laborCost",
          "label": "Total labor cost"
        }
      ]
    },
    {
      "slug": "hotel-labor-cost-percentage",
      "url": "https://www.revenuelab.fyi/toolbox/hotel-labor-cost-percentage",
      "title": "Hotel Labor Cost Percentage Calculator",
      "category": "financial",
      "summary": "Total payroll and benefits as a percentage of total revenue, benchmarked by property type.",
      "formula": "Labor Cost % = (Total Wages + Payroll Taxes + Benefits) ÷ Total Revenue × 100.",
      "inputs": [
        {
          "id": "wages",
          "label": "Total wages",
          "kind": "number"
        },
        {
          "id": "payrollTaxes",
          "label": "Payroll taxes",
          "kind": "number"
        },
        {
          "id": "benefits",
          "label": "Benefits cost",
          "kind": "number"
        },
        {
          "id": "totalRevenue",
          "label": "Total revenue for period",
          "kind": "number"
        },
        {
          "id": "benchmark",
          "label": "Target labor cost benchmark",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "laborPct",
          "label": "Labor cost as % of revenue"
        },
        {
          "id": "variance",
          "label": "Variance vs benchmark (percentage points)"
        },
        {
          "id": "dollarGap",
          "label": "Dollar gap vs benchmark"
        },
        {
          "id": "totalLabor",
          "label": "Total labor cost"
        }
      ]
    },
    {
      "slug": "event-venue-breakeven-attendance",
      "url": "https://www.revenuelab.fyi/toolbox/event-venue-breakeven-attendance",
      "title": "Event Venue Breakeven Attendance Calculator",
      "category": "financial",
      "summary": "Minimum ticket sales or attendees needed to cover a ticketed event's fixed costs.",
      "formula": "Breakeven Attendees = Fixed Costs ÷ (Ticket Price − Variable Cost per Attendee).",
      "inputs": [
        {
          "id": "fixedCosts",
          "label": "Fixed event costs",
          "kind": "number"
        },
        {
          "id": "ticketPrice",
          "label": "Average ticket price",
          "kind": "number"
        },
        {
          "id": "variableCost",
          "label": "Variable cost per attendee",
          "kind": "number"
        },
        {
          "id": "expectedAttendance",
          "label": "Expected attendance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakeven",
          "label": "Breakeven attendance"
        },
        {
          "id": "profitAtExpected",
          "label": "Profit at expected attendance"
        },
        {
          "id": "contribution",
          "label": "Contribution margin per attendee"
        },
        {
          "id": "marginOfSafety",
          "label": "Margin of safety"
        }
      ]
    },
    {
      "slug": "hotel-early-checkin-late-checkout-fee",
      "url": "https://www.revenuelab.fyi/toolbox/hotel-early-checkin-late-checkout-fee",
      "title": "Early Check-In / Late Checkout Fee Calculator",
      "category": "financial",
      "summary": "Price an early arrival or late departure fee against the housekeeping and occupancy cost it creates.",
      "formula": "True Cost = (Occupancy % × Opportunity Cost per Hour Held) + Overtime Risk Cost. Compare to Fee Charged.",
      "inputs": [
        {
          "id": "adr",
          "label": "ADR",
          "kind": "number"
        },
        {
          "id": "hoursHeld",
          "label": "Extra hours room is held",
          "kind": "number"
        },
        {
          "id": "occupancy",
          "label": "Today's occupancy",
          "kind": "number"
        },
        {
          "id": "overtimeRisk",
          "label": "Housekeeping overtime cost risk",
          "kind": "number"
        },
        {
          "id": "feeCharged",
          "label": "Fee currently charged",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "trueCost",
          "label": "True cost of holding the room"
        },
        {
          "id": "opportunityCost",
          "label": "Occupancy-weighted opportunity cost"
        },
        {
          "id": "gap",
          "label": "Surplus / (shortfall) vs fee charged"
        },
        {
          "id": "feeCharged",
          "label": "Fee currently charged"
        }
      ]
    },
    {
      "slug": "vacation-rental-channel-mix-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/vacation-rental-channel-mix-calculator",
      "title": "Vacation Rental Channel Mix Calculator",
      "category": "financial",
      "summary": "Blended net revenue across Airbnb, Vrbo, and direct booking channels at different commission rates.",
      "formula": "Net Revenue per Channel = Gross Bookings × (1 − Commission %). Blended Commission % = Total Commission Paid ÷ Total Gross Bookings.",
      "inputs": [
        {
          "id": "airbnbGross",
          "label": "Airbnb gross bookings",
          "kind": "number"
        },
        {
          "id": "airbnbCommission",
          "label": "Airbnb commission",
          "kind": "number"
        },
        {
          "id": "vrboGross",
          "label": "Vrbo gross bookings",
          "kind": "number"
        },
        {
          "id": "vrboCommission",
          "label": "Vrbo commission",
          "kind": "number"
        },
        {
          "id": "directGross",
          "label": "Direct booking gross bookings",
          "kind": "number"
        },
        {
          "id": "directCommission",
          "label": "Direct booking fee (processing only)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalNet",
          "label": "Blended net revenue"
        },
        {
          "id": "blendedRate",
          "label": "Blended effective commission rate"
        },
        {
          "id": "totalCommission",
          "label": "Total commission paid"
        },
        {
          "id": "totalGross",
          "label": "Total gross bookings"
        }
      ]
    },
    {
      "slug": "str-pet-fee-damage-waiver-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/str-pet-fee-damage-waiver-calculator",
      "title": "STR Pet Fee & Damage Waiver Economics Calculator",
      "category": "financial",
      "summary": "Compare a flat pet fee against a per-stay damage waiver to see which actually covers your risk.",
      "formula": "Pet fee net = Pet fee × pet stays − Actual pet damage cost. Waiver net = Waiver fee × total stays − Claims paid (capped at coverage limit per claim). Breakeven claim rate = Waiver fee revenue ÷ Avg claim cost.",
      "inputs": [
        {
          "id": "totalStays",
          "label": "Total stays per year",
          "kind": "number"
        },
        {
          "id": "petStayShare",
          "label": "Share of stays with pets",
          "kind": "number"
        },
        {
          "id": "petFee",
          "label": "Flat pet fee charged",
          "kind": "number"
        },
        {
          "id": "annualPetDamage",
          "label": "Actual annual pet-related damage cost",
          "kind": "number"
        },
        {
          "id": "waiverFee",
          "label": "Damage waiver fee (all stays)",
          "kind": "number"
        },
        {
          "id": "coverageLimit",
          "label": "Waiver coverage limit per claim",
          "kind": "number"
        },
        {
          "id": "claimsPerYear",
          "label": "Expected claims filed per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "waiverNet",
          "label": "Net result: damage waiver"
        },
        {
          "id": "petFeeNet",
          "label": "Net result: flat pet fee"
        },
        {
          "id": "uncoveredExposure",
          "label": "Uncovered exposure above waiver limit"
        },
        {
          "id": "breakevenClaimRate",
          "label": "Breakeven claims needed vs waiver revenue"
        },
        {
          "id": "betterOption",
          "label": "Better option at current volume"
        }
      ]
    },
    {
      "slug": "umbrella-policy-sizing",
      "url": "https://www.revenuelab.fyi/toolbox/umbrella-policy-sizing",
      "title": "Umbrella Insurance Sizing Calculator",
      "category": "financial",
      "summary": "Figure out how much personal umbrella liability coverage you actually need.",
      "formula": "Need = net worth + (income × exposure years) + (risk factors × $250k per factor); umbrella required = round up to nearest $1M − underlying liability already carried.",
      "inputs": [
        {
          "id": "netWorth",
          "label": "Net worth",
          "kind": "number"
        },
        {
          "id": "income",
          "label": "Annual household income",
          "kind": "number"
        },
        {
          "id": "exposureYears",
          "label": "Years of future earnings to protect",
          "kind": "number"
        },
        {
          "id": "riskFactors",
          "label": "Risk factors (pool, teen driver, dog breed, rental, boat)",
          "kind": "number"
        },
        {
          "id": "underlyingLiability",
          "label": "Existing auto + home liability limits (combined)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "umbrellaToBuy",
          "label": "Umbrella coverage to buy"
        },
        {
          "id": "rawNeed",
          "label": "Raw liability need"
        },
        {
          "id": "rounded",
          "label": "Rounded to $1M increment"
        },
        {
          "id": "gap",
          "label": "Gap above underlying limits"
        },
        {
          "id": "estAnnualCost",
          "label": "Estimated annual premium"
        }
      ]
    },
    {
      "slug": "workers-comp-premium-by-class-code",
      "url": "https://www.revenuelab.fyi/toolbox/workers-comp-premium-by-class-code",
      "title": "Workers' Comp Premium Calculator (Class Code & Mod)",
      "category": "financial",
      "summary": "Estimate annual workers' comp premium from payroll, class rate, and experience mod.",
      "formula": "Manual premium = (payroll ÷ 100) × class rate; modified premium = manual premium × e-mod; final premium = modified premium × (1 − schedule credit) + expense constant.",
      "inputs": [
        {
          "id": "payroll",
          "label": "Annual payroll for this class code",
          "kind": "number"
        },
        {
          "id": "classRate",
          "label": "Class code rate per $100 payroll",
          "kind": "number"
        },
        {
          "id": "emod",
          "label": "Experience modification factor",
          "kind": "number"
        },
        {
          "id": "scheduleCredit",
          "label": "Schedule credit for safety programs",
          "kind": "number"
        },
        {
          "id": "expenseConstant",
          "label": "Expense constant / policy fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "finalPremium",
          "label": "Estimated annual premium"
        },
        {
          "id": "manualPremium",
          "label": "Manual premium (before mod)"
        },
        {
          "id": "modifiedPremium",
          "label": "Premium after e-mod"
        },
        {
          "id": "emodSavings",
          "label": "Dollar impact of e-mod"
        },
        {
          "id": "perEmployeeEst",
          "label": "Rough cost per employee"
        }
      ]
    },
    {
      "slug": "commercial-general-liability-rate",
      "url": "https://www.revenuelab.fyi/toolbox/commercial-general-liability-rate",
      "title": "Commercial General Liability (CGL) Premium Calculator",
      "category": "financial",
      "summary": "Estimate CGL premium from revenue or payroll exposure basis and class rate.",
      "formula": "Base premium = (exposure ÷ unit) × class rate; adjusted premium = base premium × loss factor × increased-limits factor.",
      "inputs": [
        {
          "id": "exposure",
          "label": "Annual exposure (revenue or payroll)",
          "kind": "number"
        },
        {
          "id": "unit",
          "label": "Rating unit",
          "kind": "number"
        },
        {
          "id": "classRate",
          "label": "Class rate per unit",
          "kind": "number"
        },
        {
          "id": "lossFactor",
          "label": "Loss history / experience factor",
          "kind": "number"
        },
        {
          "id": "increasedLimitsFactor",
          "label": "Increased limits factor",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "finalPremium",
          "label": "Estimated annual CGL premium"
        },
        {
          "id": "basePremium",
          "label": "Base premium (rate × exposure)"
        },
        {
          "id": "withLoss",
          "label": "After loss history adjustment"
        },
        {
          "id": "perThousandRevenue",
          "label": "Effective cost per $1,000 exposure"
        }
      ]
    },
    {
      "slug": "business-interruption-coverage",
      "url": "https://www.revenuelab.fyi/toolbox/business-interruption-coverage",
      "title": "Business Interruption Coverage Calculator",
      "category": "financial",
      "summary": "Size the coverage limit you need to survive a shutdown until you reopen.",
      "formula": "Coverage need = (monthly net income + monthly continuing fixed expenses) × restoration months × (1 + contingency %).",
      "inputs": [
        {
          "id": "monthlyNetIncome",
          "label": "Average monthly net income",
          "kind": "number"
        },
        {
          "id": "fixedExpenses",
          "label": "Monthly continuing fixed expenses",
          "kind": "number"
        },
        {
          "id": "restorationMonths",
          "label": "Expected restoration period",
          "kind": "number"
        },
        {
          "id": "contingency",
          "label": "Contingency buffer",
          "kind": "number"
        },
        {
          "id": "extraExpense",
          "label": "Extra expense (temp location, rush costs)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalNeed",
          "label": "Recommended BI coverage limit"
        },
        {
          "id": "baseNeed",
          "label": "Base need (no buffer)"
        },
        {
          "id": "monthlyLoss",
          "label": "Total monthly loss exposure"
        },
        {
          "id": "dailyLoss",
          "label": "Daily loss exposure"
        }
      ]
    },
    {
      "slug": "cyber-liability-limit-sizing",
      "url": "https://www.revenuelab.fyi/toolbox/cyber-liability-limit-sizing",
      "title": "Cyber Liability Limit Sizing Calculator",
      "category": "financial",
      "summary": "Size cyber liability limits from records held, breach cost benchmarks, and business interruption.",
      "formula": "Breach cost = records × cost per record; total exposure = breach cost + ransom exposure + downtime cost + regulatory exposure; gap = total exposure − chosen limit.",
      "inputs": [
        {
          "id": "records",
          "label": "Sensitive records held",
          "kind": "number"
        },
        {
          "id": "costPerRecord",
          "label": "Cost per record (notification, credit monitoring, legal)",
          "kind": "number"
        },
        {
          "id": "ransomExposure",
          "label": "Ransomware extortion exposure",
          "kind": "number"
        },
        {
          "id": "downtimeDays",
          "label": "Expected downtime from an incident",
          "kind": "number"
        },
        {
          "id": "dailyRevenueLoss",
          "label": "Daily revenue loss during downtime",
          "kind": "number"
        },
        {
          "id": "regulatoryExposure",
          "label": "Regulatory fine exposure (HIPAA, PCI, state law)",
          "kind": "number"
        },
        {
          "id": "chosenLimit",
          "label": "Cyber policy limit you're considering",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalExposure",
          "label": "Total estimated breach exposure"
        },
        {
          "id": "breachCost",
          "label": "Notification & remediation cost"
        },
        {
          "id": "downtime",
          "label": "Business interruption from downtime"
        },
        {
          "id": "gap",
          "label": "Coverage gap vs. chosen limit"
        },
        {
          "id": "coverageRatio",
          "label": "Limit as % of total exposure"
        }
      ]
    },
    {
      "slug": "pet-insurance-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/pet-insurance-breakeven",
      "title": "Pet Insurance Breakeven Calculator",
      "category": "financial",
      "summary": "Find the annual vet spend where pet insurance starts paying for itself.",
      "formula": "With insurance: cost = premium + deductible + (bill − deductible) × (1 − reimbursement %), capped at annual limit. Breakeven bill solves cost = bill.",
      "inputs": [
        {
          "id": "annualPremium",
          "label": "Annual premium",
          "kind": "number"
        },
        {
          "id": "deductible",
          "label": "Annual deductible",
          "kind": "number"
        },
        {
          "id": "reimbursement",
          "label": "Reimbursement percentage",
          "kind": "number"
        },
        {
          "id": "annualCap",
          "label": "Annual payout cap",
          "kind": "number"
        },
        {
          "id": "testBill",
          "label": "Vet bill scenario to test",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakeven",
          "label": "Breakeven annual vet bill"
        },
        {
          "id": "costAtTest",
          "label": "Your cost with insurance at test bill"
        },
        {
          "id": "savingsAtTest",
          "label": "Savings (or loss) vs. paying cash"
        },
        {
          "id": "premium",
          "label": "Annual premium paid regardless"
        }
      ]
    },
    {
      "slug": "long-term-care-cost-projection",
      "url": "https://www.revenuelab.fyi/toolbox/long-term-care-cost-projection",
      "title": "Long-Term Care Cost Projection Calculator",
      "category": "financial",
      "summary": "Project future nursing home, assisted living, or home care costs with inflation.",
      "formula": "Future annual cost = current annual cost × (1 + inflation)^years until care; total cost = future annual cost × years of care needed (compounding within the care period).",
      "inputs": [
        {
          "id": "currentAnnualCost",
          "label": "Current annual cost of care in your area",
          "kind": "number"
        },
        {
          "id": "yearsUntilCare",
          "label": "Years until care is likely needed",
          "kind": "number"
        },
        {
          "id": "inflationRate",
          "label": "Long-term care cost inflation rate",
          "kind": "number"
        },
        {
          "id": "careDuration",
          "label": "Expected duration of care needed",
          "kind": "number"
        },
        {
          "id": "existingIncome",
          "label": "Income/benefits available toward care per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalCost",
          "label": "Total projected long-term care cost"
        },
        {
          "id": "futureAnnualCost",
          "label": "Annual cost at start of care"
        },
        {
          "id": "fundingGap",
          "label": "Funding gap after income/benefits"
        },
        {
          "id": "totalIncomeOffset",
          "label": "Total income/benefits over care period"
        }
      ]
    },
    {
      "slug": "disability-benefit-gap",
      "url": "https://www.revenuelab.fyi/toolbox/disability-benefit-gap",
      "title": "Disability Insurance Benefit Gap Calculator",
      "category": "financial",
      "summary": "See how much monthly income you'd lose if you became disabled tomorrow.",
      "formula": "Expected benefit = min(monthly income × group replacement %, monthly benefit cap); after-tax benefit = expected benefit × (1 − tax rate if taxable); gap = income need − after-tax benefit.",
      "inputs": [
        {
          "id": "monthlyIncome",
          "label": "Current gross monthly income",
          "kind": "number"
        },
        {
          "id": "incomeNeedPct",
          "label": "% of income you'd need if disabled",
          "kind": "number"
        },
        {
          "id": "groupReplacementPct",
          "label": "Group LTD replacement percentage",
          "kind": "number"
        },
        {
          "id": "monthlyBenefitCap",
          "label": "Monthly benefit cap",
          "kind": "number"
        },
        {
          "id": "benefitTaxable",
          "label": "Is the group benefit taxable?",
          "kind": "select"
        },
        {
          "id": "taxRate",
          "label": "Marginal tax rate (if taxable)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "gap",
          "label": "Monthly disability income gap"
        },
        {
          "id": "need",
          "label": "Monthly income you'd need"
        },
        {
          "id": "afterTaxBenefit",
          "label": "After-tax benefit you'd receive"
        },
        {
          "id": "annualGap",
          "label": "Annual income gap"
        }
      ]
    },
    {
      "slug": "replacement-cost-vs-acv",
      "url": "https://www.revenuelab.fyi/toolbox/replacement-cost-vs-acv",
      "title": "Replacement Cost vs. Actual Cash Value Calculator",
      "category": "financial",
      "summary": "See the real dollar difference between an ACV payout and a replacement cost payout.",
      "formula": "Depreciation = replacement cost × (age ÷ useful life), capped at 100%; ACV payout = replacement cost − depreciation; RCV payout = replacement cost (minus deductible); holdback = RCV payout − ACV payout.",
      "inputs": [
        {
          "id": "replacementCost",
          "label": "Cost to replace with new equivalent",
          "kind": "number"
        },
        {
          "id": "itemAge",
          "label": "Age of item",
          "kind": "number"
        },
        {
          "id": "usefulLife",
          "label": "Expected useful life",
          "kind": "number"
        },
        {
          "id": "deductible",
          "label": "Policy deductible",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "holdback",
          "label": "Depreciation holdback (RCV advantage)"
        },
        {
          "id": "acvPayout",
          "label": "ACV payout"
        },
        {
          "id": "rcvPayout",
          "label": "RCV payout"
        },
        {
          "id": "depreciationPct",
          "label": "Depreciation applied"
        }
      ]
    },
    {
      "slug": "deductible-buy-down-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/deductible-buy-down-breakeven",
      "title": "Deductible Buy-Down Breakeven Calculator",
      "category": "financial",
      "summary": "Find out how many years it takes a lower deductible to pay for itself in premium.",
      "formula": "Deductible savings per claim = higher deductible − lower deductible; breakeven years = deductible savings ÷ extra annual premium; expected value = (claims per year × deductible savings) − extra annual premium, summed over horizon.",
      "inputs": [
        {
          "id": "highDeductible",
          "label": "Higher deductible option",
          "kind": "number"
        },
        {
          "id": "lowDeductible",
          "label": "Lower deductible option",
          "kind": "number"
        },
        {
          "id": "extraPremium",
          "label": "Extra annual premium for lower deductible",
          "kind": "number"
        },
        {
          "id": "claimsPerYear",
          "label": "Expected claims per year (frequency)",
          "kind": "number"
        },
        {
          "id": "horizon",
          "label": "Years you'll hold this policy",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netExpectedValue",
          "label": "Net expected value of lower deductible"
        },
        {
          "id": "breakevenClaimsNeeded",
          "label": "Claims needed over horizon to break even"
        },
        {
          "id": "totalExtraPremiumPaid",
          "label": "Total extra premium over horizon"
        },
        {
          "id": "expectedDeductibleSavings",
          "label": "Expected deductible savings over horizon"
        }
      ]
    },
    {
      "slug": "claim-vs-pay-out-of-pocket",
      "url": "https://www.revenuelab.fyi/toolbox/claim-vs-pay-out-of-pocket",
      "title": "File a Claim vs. Pay Out of Pocket Calculator",
      "category": "financial",
      "summary": "Weigh a claim payout against future premium surcharges before you file.",
      "formula": "Net claim benefit = repair cost − deductible; total surcharge cost = annual surcharge × years surcharge applies; file if net claim benefit > total surcharge cost.",
      "inputs": [
        {
          "id": "repairCost",
          "label": "Estimated repair cost",
          "kind": "number"
        },
        {
          "id": "deductible",
          "label": "Your deductible",
          "kind": "number"
        },
        {
          "id": "annualSurcharge",
          "label": "Estimated annual premium surcharge if you file",
          "kind": "number"
        },
        {
          "id": "surchargeYears",
          "label": "Years the surcharge typically applies",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "recommendation",
          "label": "Recommendation"
        },
        {
          "id": "netAdvantage",
          "label": "Net financial advantage of filing"
        },
        {
          "id": "breakevenRepairCost",
          "label": "Repair cost where filing breaks even"
        },
        {
          "id": "netClaimBenefit",
          "label": "What insurance would actually pay you"
        },
        {
          "id": "totalSurchargeCost",
          "label": "Total surcharge cost over the years it applies"
        }
      ]
    },
    {
      "slug": "life-insurance-ladder-sizing",
      "url": "https://www.revenuelab.fyi/toolbox/life-insurance-ladder-sizing",
      "title": "Life Insurance Ladder Sizing Calculator",
      "category": "financial",
      "summary": "Split term life coverage into layered policies that expire as obligations shrink.",
      "formula": "Layer coverage = obligation amount for each horizon; ladder premium ≈ sum of each layer's coverage × term-specific rate per $1,000; flat premium = total coverage × longest-term rate per $1,000.",
      "inputs": [
        {
          "id": "mortgageBalance",
          "label": "Remaining mortgage balance",
          "kind": "number"
        },
        {
          "id": "mortgageYears",
          "label": "Years left on mortgage",
          "kind": "number"
        },
        {
          "id": "childRearingNeed",
          "label": "Coverage needed until kids are independent",
          "kind": "number"
        },
        {
          "id": "childRearingYears",
          "label": "Years until kids are independent",
          "kind": "number"
        },
        {
          "id": "incomeReplacementNeed",
          "label": "Long-term income replacement coverage",
          "kind": "number"
        },
        {
          "id": "incomeReplacementYears",
          "label": "Years of long-term coverage",
          "kind": "number"
        },
        {
          "id": "ratePerThousand",
          "label": "Base rate per $1,000 coverage (10-yr term equivalent)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalLadderPremium",
          "label": "Estimated annual ladder premium"
        },
        {
          "id": "flatPremium",
          "label": "Flat single-term policy premium (comparison)"
        },
        {
          "id": "savings",
          "label": "Estimated annual savings from laddering"
        },
        {
          "id": "totalCoverage",
          "label": "Total coverage across all layers"
        }
      ]
    },
    {
      "slug": "flood-zone-premium-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/flood-zone-premium-estimate",
      "title": "Flood Insurance Premium Estimator",
      "category": "financial",
      "summary": "Estimate NFIP flood premium from flood zone, elevation, and coverage amount.",
      "formula": "Premium = (building coverage ÷ 100 × zone rate × elevation factor) + (contents coverage ÷ 100 × zone rate × 0.7) + fees.",
      "inputs": [
        {
          "id": "buildingCoverage",
          "label": "Building coverage amount",
          "kind": "number"
        },
        {
          "id": "contentsCoverage",
          "label": "Contents coverage amount",
          "kind": "number"
        },
        {
          "id": "zoneRate",
          "label": "Zone base rate per $100 coverage",
          "kind": "number"
        },
        {
          "id": "elevationDiff",
          "label": "Elevation vs base flood elevation (BFE)",
          "kind": "number"
        },
        {
          "id": "fees",
          "label": "Federal policy fee & surcharges",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalPremium",
          "label": "Estimated annual flood premium"
        },
        {
          "id": "buildingPremium",
          "label": "Building coverage premium"
        },
        {
          "id": "contentsPremium",
          "label": "Contents coverage premium"
        },
        {
          "id": "monthlyEquivalent",
          "label": "Monthly equivalent cost"
        },
        {
          "id": "elevationFactor",
          "label": "Elevation risk multiplier"
        }
      ]
    },
    {
      "slug": "earthquake-deductible-cost",
      "url": "https://www.revenuelab.fyi/toolbox/earthquake-deductible-cost",
      "title": "Earthquake Insurance Deductible Cost Calculator",
      "category": "financial",
      "summary": "See your actual out-of-pocket cost under an earthquake policy's percentage deductible.",
      "formula": "Deductible amount = dwelling coverage × deductible %; insurer payout = max(0, estimated damage − deductible amount), capped at dwelling coverage.",
      "inputs": [
        {
          "id": "dwellingCoverage",
          "label": "Dwelling coverage amount",
          "kind": "number"
        },
        {
          "id": "deductiblePct",
          "label": "Deductible percentage",
          "kind": "number"
        },
        {
          "id": "estimatedDamage",
          "label": "Estimated damage scenario",
          "kind": "number"
        },
        {
          "id": "annualPremium",
          "label": "Annual premium at this deductible",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "deductibleAmount",
          "label": "Your dollar deductible"
        },
        {
          "id": "outOfPocket",
          "label": "Your total out-of-pocket on this scenario"
        },
        {
          "id": "insurerPayout",
          "label": "Insurer payout on this scenario"
        },
        {
          "id": "yearsOfPremiumEqualToDeductible",
          "label": "Years of premium equal to deductible"
        }
      ]
    },
    {
      "slug": "renters-coverage-sizing",
      "url": "https://www.revenuelab.fyi/toolbox/renters-coverage-sizing",
      "title": "Renters Insurance Coverage Sizing Calculator",
      "category": "financial",
      "summary": "Estimate the personal property and liability limits your renters policy should carry.",
      "formula": "Personal property need = sum of category values × replacement cost multiplier; recommended liability = max(300000, 2 × property value) rounded to nearest 100k.",
      "inputs": [
        {
          "id": "furnitureValue",
          "label": "Furniture & appliances value",
          "kind": "number"
        },
        {
          "id": "electronicsValue",
          "label": "Electronics value",
          "kind": "number"
        },
        {
          "id": "clothingValue",
          "label": "Clothing & misc value",
          "kind": "number"
        },
        {
          "id": "valuablesValue",
          "label": "Jewelry & valuables value",
          "kind": "number"
        },
        {
          "id": "replacementCost",
          "label": "Replacement cost coverage (vs actual cash value)",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "recommendedPersonalProperty",
          "label": "Recommended personal property coverage"
        },
        {
          "id": "recommendedLiability",
          "label": "Recommended liability limit"
        },
        {
          "id": "rawTotal",
          "label": "Raw inventory total"
        },
        {
          "id": "estMonthlyPremium",
          "label": "Estimated monthly premium"
        }
      ]
    },
    {
      "slug": "auto-liability-limit-adequacy",
      "url": "https://www.revenuelab.fyi/toolbox/auto-liability-limit-adequacy",
      "title": "Auto Liability Limit Adequacy Calculator",
      "category": "financial",
      "summary": "Check whether your bodily injury and property damage limits actually protect your assets.",
      "formula": "Exposure need = net worth + (1 year income) + (severe injury benchmark × passengers at risk); gap = need − current per-occurrence limit.",
      "inputs": [
        {
          "id": "currentPerPersonLimit",
          "label": "Current per-person BI limit",
          "kind": "number"
        },
        {
          "id": "currentPerOccurrenceLimit",
          "label": "Current per-occurrence BI limit",
          "kind": "number"
        },
        {
          "id": "netWorth",
          "label": "Net worth",
          "kind": "number"
        },
        {
          "id": "income",
          "label": "Annual income",
          "kind": "number"
        },
        {
          "id": "typicalPassengers",
          "label": "Typical passengers at risk per trip",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "recommendedLimit",
          "label": "Recommended per-occurrence limit"
        },
        {
          "id": "exposureNeed",
          "label": "Estimated worst-case exposure"
        },
        {
          "id": "occurrenceGap",
          "label": "Gap vs current per-occurrence limit"
        },
        {
          "id": "perPersonAdequate",
          "label": "Per-person limit adequate (1=yes, 0=no)"
        }
      ]
    },
    {
      "slug": "gap-insurance-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/gap-insurance-breakeven",
      "title": "GAP Insurance Breakeven Calculator",
      "category": "financial",
      "summary": "Find out if GAP coverage is worth it given your loan balance and car's depreciation.",
      "formula": "Loan balance(t) via amortization; vehicle value(t) = price × (1 − depreciation year1)^(applicable years); gap exists while loan balance(t) > vehicle value(t).",
      "inputs": [
        {
          "id": "vehiclePrice",
          "label": "Vehicle purchase price",
          "kind": "number"
        },
        {
          "id": "downPayment",
          "label": "Down payment",
          "kind": "number"
        },
        {
          "id": "loanTermMonths",
          "label": "Loan term",
          "kind": "number"
        },
        {
          "id": "apr",
          "label": "APR",
          "kind": "number"
        },
        {
          "id": "annualDepreciation",
          "label": "Annual depreciation rate",
          "kind": "number"
        },
        {
          "id": "gapCost",
          "label": "GAP insurance cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "maxGapAmount",
          "label": "Maximum negative equity exposure"
        },
        {
          "id": "crossoverMonth",
          "label": "Month you reach positive equity"
        },
        {
          "id": "monthlyPayment",
          "label": "Monthly loan payment"
        },
        {
          "id": "worthIt",
          "label": "GAP cost worth it vs exposure (1=yes, 0=no)"
        }
      ]
    },
    {
      "slug": "hdhp-vs-ppo-total-cost",
      "url": "https://www.revenuelab.fyi/toolbox/hdhp-vs-ppo-total-cost",
      "title": "HDHP vs PPO Total Cost Calculator",
      "category": "financial",
      "summary": "Compare projected total annual cost between an HDHP+HSA and a traditional PPO plan.",
      "formula": "Total cost = annual premium + min(expected medical spend, deductible) × coinsurance adjustment + spend beyond deductible up to OOP max − HSA tax savings (HDHP only).",
      "inputs": [
        {
          "id": "hdhpPremium",
          "label": "HDHP annual premium",
          "kind": "number"
        },
        {
          "id": "hdhpDeductible",
          "label": "HDHP deductible",
          "kind": "number"
        },
        {
          "id": "ppoPremium",
          "label": "PPO annual premium",
          "kind": "number"
        },
        {
          "id": "ppoDeductible",
          "label": "PPO deductible",
          "kind": "number"
        },
        {
          "id": "expectedMedicalSpend",
          "label": "Expected annual medical spend (billed)",
          "kind": "number"
        },
        {
          "id": "hsaContribution",
          "label": "HSA contribution (HDHP only)",
          "kind": "number"
        },
        {
          "id": "marginalTaxRate",
          "label": "Marginal tax rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "hdhpTotal",
          "label": "HDHP total annual cost"
        },
        {
          "id": "ppoTotal",
          "label": "PPO total annual cost"
        },
        {
          "id": "difference",
          "label": "PPO cost minus HDHP cost"
        },
        {
          "id": "hsaTaxSavings",
          "label": "HSA contribution tax savings"
        }
      ]
    },
    {
      "slug": "cobra-vs-aca-marketplace-cost",
      "url": "https://www.revenuelab.fyi/toolbox/cobra-vs-aca-marketplace-cost",
      "title": "COBRA vs Marketplace Insurance Cost Calculator",
      "category": "financial",
      "summary": "Compare total cost of COBRA continuation coverage against an ACA marketplace plan.",
      "formula": "COBRA total = (employee premium + employer premium share) × 1.02 × months; marketplace total = (marketplace premium − monthly subsidy) × months + deductible difference adjustment.",
      "inputs": [
        {
          "id": "employeePremiumShare",
          "label": "Your prior monthly premium share",
          "kind": "number"
        },
        {
          "id": "employerPremiumShare",
          "label": "Employer's prior monthly premium share",
          "kind": "number"
        },
        {
          "id": "marketplacePremium",
          "label": "Marketplace plan monthly premium",
          "kind": "number"
        },
        {
          "id": "monthlySubsidy",
          "label": "Estimated monthly premium tax credit",
          "kind": "number"
        },
        {
          "id": "coverageMonths",
          "label": "Months of coverage needed",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "marketTotal",
          "label": "Marketplace total cost"
        },
        {
          "id": "cobraTotal",
          "label": "COBRA total cost"
        },
        {
          "id": "savings",
          "label": "Savings choosing marketplace over COBRA"
        },
        {
          "id": "cobraMonthly",
          "label": "COBRA monthly premium (with 2% fee)"
        }
      ]
    },
    {
      "slug": "medigap-plan-cost-compare",
      "url": "https://www.revenuelab.fyi/toolbox/medigap-plan-cost-compare",
      "title": "Medigap Plan Cost Comparison Calculator",
      "category": "financial",
      "summary": "Compare total annual cost across Medigap Plan G, N, and high-deductible G options.",
      "formula": "Total cost = annual premium + Part B deductible (if not covered) + estimated copays × visit frequency + excess charges.",
      "inputs": [
        {
          "id": "planGPremium",
          "label": "Plan G annual premium",
          "kind": "number"
        },
        {
          "id": "planNPremium",
          "label": "Plan N annual premium",
          "kind": "number"
        },
        {
          "id": "hdgPremium",
          "label": "High-Deductible Plan G annual premium",
          "kind": "number"
        },
        {
          "id": "hdgDeductible",
          "label": "High-Deductible Plan G deductible",
          "kind": "number"
        },
        {
          "id": "officeVisitsPerYear",
          "label": "Expected office/ER visits per year",
          "kind": "number"
        },
        {
          "id": "partBDeductible",
          "label": "Part B deductible",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cheapest",
          "label": "Cheapest option total cost"
        },
        {
          "id": "gTotal",
          "label": "Plan G total annual cost"
        },
        {
          "id": "nTotal",
          "label": "Plan N total annual cost"
        },
        {
          "id": "hdgTotal",
          "label": "High-Deductible Plan G total cost"
        }
      ]
    },
    {
      "slug": "title-insurance-cost-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/title-insurance-cost-estimate",
      "title": "Title Insurance Cost Estimator",
      "category": "financial",
      "summary": "Estimate owner's and lender's title insurance premiums for a home purchase.",
      "formula": "Owner's premium = tiered rate × purchase price; lender's premium = simultaneous-issue rate × loan amount; total = owner's + lender's + search/settlement fees.",
      "inputs": [
        {
          "id": "purchasePrice",
          "label": "Home purchase price",
          "kind": "number"
        },
        {
          "id": "loanAmount",
          "label": "Loan amount",
          "kind": "number"
        },
        {
          "id": "ownerRate",
          "label": "Owner's policy rate",
          "kind": "number"
        },
        {
          "id": "simultaneousRate",
          "label": "Simultaneous-issue lender's rate",
          "kind": "number"
        },
        {
          "id": "searchSettlementFee",
          "label": "Title search & settlement fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalTitleCost",
          "label": "Total estimated title insurance cost"
        },
        {
          "id": "ownerPremium",
          "label": "Owner's policy premium"
        },
        {
          "id": "lenderPremium",
          "label": "Lender's policy premium (simultaneous issue)"
        },
        {
          "id": "pctOfPrice",
          "label": "Total cost as % of purchase price"
        }
      ]
    },
    {
      "slug": "event-wedding-insurance-cost",
      "url": "https://www.revenuelab.fyi/toolbox/event-wedding-insurance-cost",
      "title": "Event & Wedding Insurance Cost Calculator",
      "category": "financial",
      "summary": "Estimate premium for event liability and cancellation coverage based on budget and guest count.",
      "formula": "Cancellation premium = event budget × cancellation rate; liability premium = base liability rate + (guest count × per-guest factor) + liquor surcharge if applicable.",
      "inputs": [
        {
          "id": "eventBudget",
          "label": "Total event budget at risk",
          "kind": "number"
        },
        {
          "id": "cancellationRate",
          "label": "Cancellation coverage rate",
          "kind": "number"
        },
        {
          "id": "guestCount",
          "label": "Guest count",
          "kind": "number"
        },
        {
          "id": "servingAlcohol",
          "label": "Serving alcohol",
          "kind": "select"
        },
        {
          "id": "liabilityLimit",
          "label": "Liability limit requested",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalPremium",
          "label": "Total estimated premium"
        },
        {
          "id": "cancellationPremium",
          "label": "Cancellation coverage premium"
        },
        {
          "id": "liabilityPremium",
          "label": "Liability coverage premium"
        },
        {
          "id": "liquorSurcharge",
          "label": "Liquor liability surcharge"
        }
      ]
    },
    {
      "slug": "contractor-bond-premium-estimate",
      "url": "https://www.revenuelab.fyi/toolbox/contractor-bond-premium-estimate",
      "title": "Contractor Surety Bond Premium Estimator",
      "category": "financial",
      "summary": "Estimate surety bond premium from bond amount and your credit/financial strength tier.",
      "formula": "Premium = bond amount × credit-tier rate, with a minimum premium floor typically applied by most sureties.",
      "inputs": [
        {
          "id": "bondAmount",
          "label": "Required bond amount (penal sum)",
          "kind": "number"
        },
        {
          "id": "creditTier",
          "label": "Credit tier",
          "kind": "select"
        },
        {
          "id": "minPremium",
          "label": "Surety's minimum premium",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "premium",
          "label": "Estimated annual bond premium"
        },
        {
          "id": "rateUsed",
          "label": "Rate applied for this tier"
        },
        {
          "id": "rawPremium",
          "label": "Raw premium before minimum floor"
        },
        {
          "id": "effectiveRate",
          "label": "Effective rate after minimum floor"
        }
      ]
    },
    {
      "slug": "professional-liability-limit-sizing",
      "url": "https://www.revenuelab.fyi/toolbox/professional-liability-limit-sizing",
      "title": "Professional Liability (E&O) Limit Sizing Calculator",
      "category": "financial",
      "summary": "Size your errors & omissions coverage limit based on contract values and client exposure.",
      "formula": "Recommended limit = max(largest contract value × liability multiplier, contractual minimum required) rounded up to nearest $250k tier.",
      "inputs": [
        {
          "id": "largestContractValue",
          "label": "Largest single client contract value",
          "kind": "number"
        },
        {
          "id": "liabilityMultiplier",
          "label": "Liability multiplier (damages vs fees)",
          "kind": "number"
        },
        {
          "id": "contractualMinimum",
          "label": "Contractually required minimum limit",
          "kind": "number"
        },
        {
          "id": "currentLimit",
          "label": "Current E&O limit carried",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "recommendedLimit",
          "label": "Recommended E&O limit"
        },
        {
          "id": "exposureBased",
          "label": "Exposure-based need (contract × multiplier)"
        },
        {
          "id": "gap",
          "label": "Gap vs current limit carried"
        },
        {
          "id": "contractualMin",
          "label": "Contractual minimum requirement"
        }
      ]
    },
    {
      "slug": "self-insured-retention-analysis",
      "url": "https://www.revenuelab.fyi/toolbox/self-insured-retention-analysis",
      "title": "Self-Insured Retention (SIR) Analysis Calculator",
      "category": "financial",
      "summary": "Compare total cost of carrying a higher SIR against the premium savings it generates.",
      "formula": "Total cost = premium + min(expected claims × avg severity, SIR × expected claims count) approximated as expected annual retained losses capped per-claim at the SIR.",
      "inputs": [
        {
          "id": "lowSirAmount",
          "label": "Low SIR option amount",
          "kind": "number"
        },
        {
          "id": "lowSirPremium",
          "label": "Low SIR annual premium",
          "kind": "number"
        },
        {
          "id": "highSirAmount",
          "label": "High SIR option amount",
          "kind": "number"
        },
        {
          "id": "highSirPremium",
          "label": "High SIR annual premium",
          "kind": "number"
        },
        {
          "id": "expectedClaimsPerYear",
          "label": "Expected claims per year",
          "kind": "number"
        },
        {
          "id": "avgClaimSeverity",
          "label": "Average claim severity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "highTotal",
          "label": "High SIR total expected cost"
        },
        {
          "id": "lowTotal",
          "label": "Low SIR total expected cost"
        },
        {
          "id": "savings",
          "label": "Savings choosing high SIR"
        },
        {
          "id": "breakEvenClaims",
          "label": "Breakeven claims count per year"
        }
      ]
    },
    {
      "slug": "aircraft-ownership-cost-per-hour",
      "url": "https://www.revenuelab.fyi/toolbox/aircraft-ownership-cost-per-hour",
      "title": "Aircraft Ownership Cost Per Hour Calculator",
      "category": "financial",
      "summary": "True cost per flight hour once fixed and variable costs are combined.",
      "formula": "Hourly cost = (annual fixed costs ÷ annual hours flown) + variable cost per hour, where variable cost per hour = fuel burn × fuel price + oil + maintenance reserve + engine/prop reserve.",
      "inputs": [
        {
          "id": "fixedAnnual",
          "label": "Annual fixed costs",
          "kind": "number"
        },
        {
          "id": "hoursYear",
          "label": "Hours flown per year",
          "kind": "number"
        },
        {
          "id": "fuelBurn",
          "label": "Fuel burn",
          "kind": "number"
        },
        {
          "id": "fuelPrice",
          "label": "Fuel price",
          "kind": "number"
        },
        {
          "id": "engineReserve",
          "label": "Engine/prop overhaul reserve",
          "kind": "number"
        },
        {
          "id": "maintReserve",
          "label": "Routine maintenance reserve",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalPerHour",
          "label": "All-in cost per hour"
        },
        {
          "id": "fixedPerHour",
          "label": "Fixed cost per hour"
        },
        {
          "id": "variablePerHour",
          "label": "Variable cost per hour"
        },
        {
          "id": "fuelCost",
          "label": "Fuel cost per hour"
        },
        {
          "id": "annualTotal",
          "label": "Total annual cost"
        }
      ]
    },
    {
      "slug": "wet-dry-rental-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/wet-dry-rental-breakeven",
      "title": "Wet vs Dry Rental Breakeven Calculator",
      "category": "financial",
      "summary": "Find the annual hours where wet rental beats dry, or vice versa.",
      "formula": "Wet cost = wet rate × hours. Dry cost = dry rate × hours + fuel burn × price × hours + membership dues. Breakeven hours = dues ÷ (wet rate − dry rate − fuel burn × price).",
      "inputs": [
        {
          "id": "wetRate",
          "label": "Wet rental rate",
          "kind": "number"
        },
        {
          "id": "dryRate",
          "label": "Dry rental rate",
          "kind": "number"
        },
        {
          "id": "fuelBurn",
          "label": "Fuel burn",
          "kind": "number"
        },
        {
          "id": "fuelPrice",
          "label": "Fuel price",
          "kind": "number"
        },
        {
          "id": "dues",
          "label": "Club dues (dry option only)",
          "kind": "number"
        },
        {
          "id": "hoursYear",
          "label": "Hours you plan to fly per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cheaper",
          "label": "Cheaper option at your hours"
        },
        {
          "id": "savings",
          "label": "Annual savings with cheaper option"
        },
        {
          "id": "wetTotal",
          "label": "Wet rental annual total"
        },
        {
          "id": "dryTotal",
          "label": "Dry rental annual total (incl. dues)"
        },
        {
          "id": "breakevenHours",
          "label": "Breakeven hours per year"
        }
      ]
    },
    {
      "slug": "flight-school-ppl-total-cost",
      "url": "https://www.revenuelab.fyi/toolbox/flight-school-ppl-total-cost",
      "title": "Flight School Total Cost to PPL Calculator",
      "category": "financial",
      "summary": "Realistic total spend to earn a Private Pilot Certificate.",
      "formula": "Total cost = (aircraft hours × rental rate) + (instructor hours × instructor rate) + ground school + materials + written test fee + checkride fee + medical exam.",
      "inputs": [
        {
          "id": "totalHours",
          "label": "Expected total flight hours",
          "kind": "number"
        },
        {
          "id": "rentalRate",
          "label": "Aircraft rental rate",
          "kind": "number"
        },
        {
          "id": "cfiRatio",
          "label": "Share of hours with instructor onboard",
          "kind": "number"
        },
        {
          "id": "cfiRate",
          "label": "Instructor rate",
          "kind": "number"
        },
        {
          "id": "groundSchool",
          "label": "Ground school / online course",
          "kind": "number"
        },
        {
          "id": "checkride",
          "label": "Checkride + written + medical",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total cost to PPL"
        },
        {
          "id": "rentalTotal",
          "label": "Aircraft rental total"
        },
        {
          "id": "cfiTotal",
          "label": "Instructor total"
        },
        {
          "id": "fixedTotal",
          "label": "Ground school, exams, checkride"
        },
        {
          "id": "costPerHour",
          "label": "Average cost per flight hour"
        }
      ]
    },
    {
      "slug": "fuel-endurance-range",
      "url": "https://www.revenuelab.fyi/toolbox/fuel-endurance-range",
      "title": "Fuel Endurance & Range Calculator",
      "category": "other",
      "summary": "Max flight time and still-air range from usable fuel and burn rate.",
      "formula": "Usable fuel time = (usable gallons ÷ burn rate) − reserve time. Range = usable fuel time × true airspeed.",
      "inputs": [
        {
          "id": "usableFuel",
          "label": "Usable fuel",
          "kind": "number"
        },
        {
          "id": "burnRate",
          "label": "Fuel burn rate",
          "kind": "number"
        },
        {
          "id": "tas",
          "label": "True airspeed",
          "kind": "number"
        },
        {
          "id": "windComponent",
          "label": "Headwind (negative for tailwind)",
          "kind": "number"
        },
        {
          "id": "reserveMin",
          "label": "Required reserve",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "usableEnduranceHr",
          "label": "Usable endurance (after reserve)"
        },
        {
          "id": "range",
          "label": "Still-air range at that endurance"
        },
        {
          "id": "totalEnduranceHr",
          "label": "Total endurance (no reserve)"
        },
        {
          "id": "groundspeed",
          "label": "Groundspeed used"
        },
        {
          "id": "reserveGal",
          "label": "Fuel held for reserve"
        }
      ]
    },
    {
      "slug": "weight-balance-cg-margin",
      "url": "https://www.revenuelab.fyi/toolbox/weight-balance-cg-margin",
      "title": "Weight and Balance CG Margin Calculator",
      "category": "other",
      "summary": "How much margin you have to forward and aft CG limits, not just pass/fail.",
      "formula": "CG = total moment ÷ total weight, where moment = weight × arm for each station. Margin = CG − forward limit, and aft limit − CG.",
      "inputs": [
        {
          "id": "emptyWeight",
          "label": "Empty weight",
          "kind": "number"
        },
        {
          "id": "emptyArm",
          "label": "Empty weight arm",
          "kind": "number"
        },
        {
          "id": "frontWeight",
          "label": "Front seats total weight",
          "kind": "number"
        },
        {
          "id": "frontArm",
          "label": "Front seats arm",
          "kind": "number"
        },
        {
          "id": "fuelGal",
          "label": "Fuel weight",
          "kind": "number"
        },
        {
          "id": "fuelArm",
          "label": "Fuel arm",
          "kind": "number"
        },
        {
          "id": "baggage",
          "label": "Baggage weight",
          "kind": "number"
        },
        {
          "id": "baggageArm",
          "label": "Baggage arm",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cg",
          "label": "Computed CG"
        },
        {
          "id": "totalWeight",
          "label": "Total weight"
        },
        {
          "id": "marginFwd",
          "label": "Margin to forward limit (in)"
        },
        {
          "id": "marginAft",
          "label": "Margin to aft limit (in)"
        },
        {
          "id": "overGross",
          "label": "Lb over max gross (negative = under)"
        }
      ]
    },
    {
      "slug": "density-altitude-takeoff-penalty",
      "url": "https://www.revenuelab.fyi/toolbox/density-altitude-takeoff-penalty",
      "title": "Density Altitude Takeoff Distance Calculator",
      "category": "other",
      "summary": "Estimate how much hot, high, and humid conditions stretch your takeoff roll.",
      "formula": "Pressure altitude ≈ field elevation + (29.92 − altimeter) × 1000. Density altitude ≈ pressure altitude + 120 × (OAT − ISA temp at that altitude). Distance factor ≈ (1.10)^(DA ÷ 1000).",
      "inputs": [
        {
          "id": "fieldElev",
          "label": "Field elevation",
          "kind": "number"
        },
        {
          "id": "temp",
          "label": "Outside air temperature",
          "kind": "number"
        },
        {
          "id": "altimeter",
          "label": "Altimeter setting",
          "kind": "number"
        },
        {
          "id": "baseDistance",
          "label": "Standard-day takeoff ground roll (POH)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "adjustedDistance",
          "label": "Estimated takeoff ground roll"
        },
        {
          "id": "densityAlt",
          "label": "Density altitude"
        },
        {
          "id": "pressureAlt",
          "label": "Pressure altitude"
        },
        {
          "id": "factor",
          "label": "Distance multiplier vs standard day"
        },
        {
          "id": "extraDistance",
          "label": "Extra distance vs POH baseline"
        }
      ]
    },
    {
      "slug": "wind-correction-angle",
      "url": "https://www.revenuelab.fyi/toolbox/wind-correction-angle",
      "title": "Wind Correction Angle Calculator",
      "category": "other",
      "summary": "How many degrees to crab into the wind to hold your desired ground track.",
      "formula": "WCA = arcsin((wind speed × sin(wind angle)) ÷ true airspeed). Groundspeed = TAS × cos(WCA) − wind speed × cos(wind angle).",
      "inputs": [
        {
          "id": "tas",
          "label": "True airspeed",
          "kind": "number"
        },
        {
          "id": "windSpeed",
          "label": "Wind speed",
          "kind": "number"
        },
        {
          "id": "windAngle",
          "label": "Angle between wind and course",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "wcaDeg",
          "label": "Wind correction angle"
        },
        {
          "id": "groundspeed",
          "label": "Resulting groundspeed"
        },
        {
          "id": "crosswindComp",
          "label": "Crosswind component"
        },
        {
          "id": "headTailComp",
          "label": "Head/tailwind component"
        }
      ]
    },
    {
      "slug": "block-time-vs-flight-time-cost",
      "url": "https://www.revenuelab.fyi/toolbox/block-time-vs-flight-time-cost",
      "title": "Block Time vs Flight Time Cost Calculator",
      "category": "financial",
      "summary": "See how much taxi and ground time inflates your real hourly billing.",
      "formula": "Block time = flight time + taxi/ground time. Effective rate per flight hour = (rate per block hour × block hours) ÷ flight hours.",
      "inputs": [
        {
          "id": "rate",
          "label": "Billed rate",
          "kind": "number"
        },
        {
          "id": "flightMin",
          "label": "Typical flight time in the air",
          "kind": "number"
        },
        {
          "id": "taxiMin",
          "label": "Typical taxi + runup time",
          "kind": "number"
        },
        {
          "id": "flightsMonth",
          "label": "Flights per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "effectiveFlightRate",
          "label": "Effective rate per flight hour"
        },
        {
          "id": "blockCost",
          "label": "Cost per flight (block billed)"
        },
        {
          "id": "premium",
          "label": "Premium over quoted rate"
        },
        {
          "id": "premiumPct",
          "label": "Premium as % of quoted rate"
        },
        {
          "id": "monthlyExtra",
          "label": "Extra cost per month vs flight-time billing"
        }
      ]
    },
    {
      "slug": "aircraft-partnership-cost-share",
      "url": "https://www.revenuelab.fyi/toolbox/aircraft-partnership-cost-share",
      "title": "Aircraft Partnership Cost Share Calculator",
      "category": "financial",
      "summary": "Split fixed and variable ownership costs fairly across partners.",
      "formula": "Each partner's fixed share = total fixed costs ÷ number of partners. Each partner's variable cost = their hours × variable cost per hour. Total per partner = fixed share + variable cost.",
      "inputs": [
        {
          "id": "partners",
          "label": "Number of partners",
          "kind": "number"
        },
        {
          "id": "fixedAnnual",
          "label": "Total annual fixed costs",
          "kind": "number"
        },
        {
          "id": "variableRate",
          "label": "Variable cost per hour (fuel + reserves)",
          "kind": "number"
        },
        {
          "id": "myHours",
          "label": "Your hours flown per year",
          "kind": "number"
        },
        {
          "id": "totalHours",
          "label": "Total hours flown by all partners",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "myTotal",
          "label": "Your annual cost"
        },
        {
          "id": "fixedShare",
          "label": "Your fixed cost share"
        },
        {
          "id": "myVariable",
          "label": "Your variable (usage) cost"
        },
        {
          "id": "myHourlyCost",
          "label": "Your effective cost per hour"
        },
        {
          "id": "savingsVsSole",
          "label": "Savings per hour vs sole ownership"
        }
      ]
    },
    {
      "slug": "aircraft-leaseback-roi",
      "url": "https://www.revenuelab.fyi/toolbox/aircraft-leaseback-roi",
      "title": "Aircraft Leaseback ROI Calculator",
      "category": "financial",
      "summary": "Whether renting your plane through a flight school actually pays for itself.",
      "formula": "Revenue = hours rented × hourly rate × your revenue share %. Net cash flow = revenue − fixed costs − (hours rented × variable cost per hour) − wear reserve.",
      "inputs": [
        {
          "id": "hoursRented",
          "label": "Hours rented per year",
          "kind": "number"
        },
        {
          "id": "rentalRate",
          "label": "Rental rate charged to renters",
          "kind": "number"
        },
        {
          "id": "revenueShare",
          "label": "Your revenue share",
          "kind": "number"
        },
        {
          "id": "fixedAnnual",
          "label": "Your annual fixed costs",
          "kind": "number"
        },
        {
          "id": "variableRate",
          "label": "Variable cost per hour at heavy use",
          "kind": "number"
        },
        {
          "id": "wearReserve",
          "label": "Extra accelerated-wear reserve",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netCashFlow",
          "label": "Net annual cash flow to you"
        },
        {
          "id": "revenue",
          "label": "Your revenue share"
        },
        {
          "id": "variableTotal",
          "label": "Variable cost at this utilization"
        },
        {
          "id": "wearTotal",
          "label": "Accelerated wear reserve set aside"
        },
        {
          "id": "breakevenHours",
          "label": "Breakeven hours rented per year"
        }
      ]
    },
    {
      "slug": "hangar-vs-tiedown-cost",
      "url": "https://www.revenuelab.fyi/toolbox/hangar-vs-tiedown-cost",
      "title": "Hangar vs Tiedown Cost Calculator",
      "category": "financial",
      "summary": "Compare monthly hangar rent against tiedown fees plus weather-related wear costs.",
      "formula": "Tiedown effective annual cost = tiedown fee × 12 + insurance premium delta + estimated annual wear cost. Hangar effective annual cost = hangar rent × 12 + insurance premium.",
      "inputs": [
        {
          "id": "hangarRent",
          "label": "Hangar rent",
          "kind": "number"
        },
        {
          "id": "tiedownFee",
          "label": "Tiedown fee",
          "kind": "number"
        },
        {
          "id": "insuranceDelta",
          "label": "Extra annual insurance for outdoor storage",
          "kind": "number"
        },
        {
          "id": "wearCost",
          "label": "Estimated annual extra wear (paint, interior, corrosion)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cheaper",
          "label": "Lower true annual cost"
        },
        {
          "id": "hangarAnnual",
          "label": "Hangar true annual cost"
        },
        {
          "id": "tiedownAnnual",
          "label": "Tiedown true annual cost (incl. wear)"
        },
        {
          "id": "diff",
          "label": "Annual difference"
        },
        {
          "id": "monthlyDiff",
          "label": "Monthly equivalent difference"
        }
      ]
    },
    {
      "slug": "ifr-currency-cost",
      "url": "https://www.revenuelab.fyi/toolbox/ifr-currency-cost",
      "title": "IFR Currency Cost Calculator",
      "category": "financial",
      "summary": "Annual cost of staying instrument current with a safety pilot or CFII.",
      "formula": "Annual cost = sessions per year × (aircraft rental hours per session × rental rate + safety pilot/CFII cost per session).",
      "inputs": [
        {
          "id": "sessionsYear",
          "label": "Practice sessions per year",
          "kind": "number"
        },
        {
          "id": "hoursSession",
          "label": "Aircraft hours per session",
          "kind": "number"
        },
        {
          "id": "rentalRate",
          "label": "Aircraft rental rate",
          "kind": "number"
        },
        {
          "id": "useCFII",
          "label": "Safety pilot or CFII?",
          "kind": "select"
        },
        {
          "id": "cfiiRate",
          "label": "CFII rate (if used)",
          "kind": "number"
        },
        {
          "id": "safetyPilotCost",
          "label": "Safety pilot cost per session (if used)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualTotal",
          "label": "Annual IFR currency cost"
        },
        {
          "id": "costPerSession",
          "label": "Cost per practice session"
        },
        {
          "id": "aircraftCostPerSession",
          "label": "Aircraft cost per session"
        },
        {
          "id": "helperCostPerSession",
          "label": "CFII/safety pilot cost per session"
        }
      ]
    },
    {
      "slug": "part135-charter-rate",
      "url": "https://www.revenuelab.fyi/toolbox/part135-charter-rate",
      "title": "Part 135 Charter Hourly Rate Calculator",
      "category": "financial",
      "summary": "Build a defensible charter rate from direct operating cost, overhead, and margin.",
      "formula": "Direct cost/hr = fuel + maintenance reserve + crew cost/hr. Rate = (direct cost/hr + overhead/hr) ÷ (1 − target margin %).",
      "inputs": [
        {
          "id": "fuelCost",
          "label": "Fuel cost per hour",
          "kind": "number"
        },
        {
          "id": "maintReserve",
          "label": "Maintenance/engine reserve",
          "kind": "number"
        },
        {
          "id": "crewCost",
          "label": "Crew cost per flight hour",
          "kind": "number"
        },
        {
          "id": "annualOverhead",
          "label": "Annual fixed overhead",
          "kind": "number"
        },
        {
          "id": "annualHours",
          "label": "Expected annual flight hours",
          "kind": "number"
        },
        {
          "id": "targetMargin",
          "label": "Target profit margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rate",
          "label": "Charter rate to quote"
        },
        {
          "id": "directCost",
          "label": "Direct operating cost per hour"
        },
        {
          "id": "overheadPerHour",
          "label": "Overhead allocated per hour"
        },
        {
          "id": "costPerHour",
          "label": "Total cost per hour"
        },
        {
          "id": "profitPerHour",
          "label": "Profit per hour at this rate"
        }
      ]
    },
    {
      "slug": "instrument-rating-cost",
      "url": "https://www.revenuelab.fyi/toolbox/instrument-rating-cost",
      "title": "Instrument Rating Total Cost Calculator",
      "category": "financial",
      "summary": "Realistic total spend to add an instrument rating after your PPL.",
      "formula": "Total cost = (aircraft hours × rental rate) + (sim hours × sim rate) + (CFII hours × CFII rate) + written + checkride fees.",
      "inputs": [
        {
          "id": "aircraftHours",
          "label": "Real aircraft hours",
          "kind": "number"
        },
        {
          "id": "simHours",
          "label": "Simulator/AATD hours",
          "kind": "number"
        },
        {
          "id": "rentalRate",
          "label": "Aircraft rental rate",
          "kind": "number"
        },
        {
          "id": "simRate",
          "label": "Simulator rate",
          "kind": "number"
        },
        {
          "id": "cfiiRate",
          "label": "CFII rate",
          "kind": "number"
        },
        {
          "id": "examFees",
          "label": "Written exam + checkride fees",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total cost to instrument rating"
        },
        {
          "id": "aircraftCost",
          "label": "Aircraft rental total"
        },
        {
          "id": "simCost",
          "label": "Simulator total"
        },
        {
          "id": "cfiiCost",
          "label": "CFII instruction total"
        },
        {
          "id": "costPerHour",
          "label": "Average cost per training hour"
        }
      ]
    },
    {
      "slug": "commercial-pilot-cost",
      "url": "https://www.revenuelab.fyi/toolbox/commercial-pilot-cost",
      "title": "Commercial Pilot Certificate Cost Calculator",
      "category": "financial",
      "summary": "Budget the hours and dollars from PPL to a commercial certificate.",
      "formula": "Incremental cost = (additional hours needed × blended rental+CFI rate) + complex aircraft checkout fee + checkride fees.",
      "inputs": [
        {
          "id": "currentHours",
          "label": "Total hours you currently have",
          "kind": "number"
        },
        {
          "id": "targetHours",
          "label": "Hours required (250 Part 61 / 190 Part 141)",
          "kind": "number"
        },
        {
          "id": "blendedRate",
          "label": "Blended aircraft + instructor rate",
          "kind": "number"
        },
        {
          "id": "complexCheckout",
          "label": "Complex/high-performance checkout cost",
          "kind": "number"
        },
        {
          "id": "checkrideFees",
          "label": "Written + checkride fees",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated incremental cost"
        },
        {
          "id": "additionalHours",
          "label": "Additional hours needed"
        },
        {
          "id": "flyingCost",
          "label": "Flying cost portion"
        },
        {
          "id": "fixedCosts",
          "label": "Checkout + checkride fixed costs"
        }
      ]
    },
    {
      "slug": "atp-minimums-timeline",
      "url": "https://www.revenuelab.fyi/toolbox/atp-minimums-timeline",
      "title": "ATP Minimums Timeline Calculator",
      "category": "other",
      "summary": "Estimate months to reach 1,500 hours for an Airline Transport Pilot certificate.",
      "formula": "Months needed = (target hours − current hours) ÷ average hours flown per month.",
      "inputs": [
        {
          "id": "currentHours",
          "label": "Current total hours",
          "kind": "number"
        },
        {
          "id": "targetHours",
          "label": "ATP hour requirement",
          "kind": "number"
        },
        {
          "id": "hoursMonth",
          "label": "Expected average hours flown per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "months",
          "label": "Months to reach requirement"
        },
        {
          "id": "years",
          "label": "Approx. years"
        },
        {
          "id": "remaining",
          "label": "Hours remaining"
        }
      ]
    },
    {
      "slug": "annual-inspection-cost-share",
      "url": "https://www.revenuelab.fyi/toolbox/annual-inspection-cost-share",
      "title": "Annual Inspection Cost Estimator",
      "category": "financial",
      "summary": "Estimate this year's annual inspection bill from labor rate and squawk history.",
      "formula": "Estimated cost = inspection labor hours × shop rate + expected squawk allowance + parts markup.",
      "inputs": [
        {
          "id": "laborHours",
          "label": "Estimated inspection labor hours",
          "kind": "number"
        },
        {
          "id": "shopRate",
          "label": "Shop labor rate",
          "kind": "number"
        },
        {
          "id": "squawkAllowance",
          "label": "Expected squawk parts + labor",
          "kind": "number"
        },
        {
          "id": "aircraftAge",
          "label": "Aircraft age/complexity",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated annual cost"
        },
        {
          "id": "laborCost",
          "label": "Base inspection labor"
        },
        {
          "id": "squawkCost",
          "label": "Expected squawk cost"
        },
        {
          "id": "lowEstimate",
          "label": "Low-end range"
        },
        {
          "id": "highEstimate",
          "label": "High-end range (bad year)"
        }
      ]
    },
    {
      "slug": "engine-reserve-fund",
      "url": "https://www.revenuelab.fyi/toolbox/engine-reserve-fund",
      "title": "Engine Reserve Fund Calculator",
      "category": "financial",
      "summary": "How much to set aside per flight hour to fund the next overhaul.",
      "formula": "Reserve rate per hour = overhaul cost ÷ hours remaining to TBO. Fund balance after n hours = reserve rate × hours flown.",
      "inputs": [
        {
          "id": "overhaulCost",
          "label": "Expected overhaul cost",
          "kind": "number"
        },
        {
          "id": "currentHours",
          "label": "Current hours since last overhaul",
          "kind": "number"
        },
        {
          "id": "tbo",
          "label": "TBO (hours)",
          "kind": "number"
        },
        {
          "id": "hoursYear",
          "label": "Hours flown per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "reservePerHour",
          "label": "Reserve to set aside per hour"
        },
        {
          "id": "annualReserve",
          "label": "Annual reserve amount"
        },
        {
          "id": "remaining",
          "label": "Hours remaining to TBO"
        },
        {
          "id": "yearsToTBO",
          "label": "Years to reach TBO at this pace"
        }
      ]
    },
    {
      "slug": "avgas-vs-mogas-savings",
      "url": "https://www.revenuelab.fyi/toolbox/avgas-vs-mogas-savings",
      "title": "Avgas vs Mogas Savings Calculator",
      "category": "financial",
      "summary": "Annual fuel savings from an autogas STC versus 100LL, net of any premium.",
      "formula": "Annual savings = annual gallons burned × (avgas price − mogas price) − any extra hauling/storage cost.",
      "inputs": [
        {
          "id": "hoursYear",
          "label": "Hours flown per year",
          "kind": "number"
        },
        {
          "id": "burnRate",
          "label": "Fuel burn",
          "kind": "number"
        },
        {
          "id": "avgasPrice",
          "label": "100LL price",
          "kind": "number"
        },
        {
          "id": "mogasPrice",
          "label": "Ethanol-free mogas price",
          "kind": "number"
        },
        {
          "id": "extraCost",
          "label": "Extra hauling/storage cost per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netSavings",
          "label": "Net annual savings switching to mogas"
        },
        {
          "id": "grossSavings",
          "label": "Gross fuel savings before extra costs"
        },
        {
          "id": "gallons",
          "label": "Annual gallons burned"
        },
        {
          "id": "perHourSavings",
          "label": "Net savings per flight hour"
        }
      ]
    },
    {
      "slug": "flight-review-cost",
      "url": "https://www.revenuelab.fyi/toolbox/flight-review-cost",
      "title": "Flight Review (BFR) Cost Calculator",
      "category": "financial",
      "summary": "Budget the ground and flight time for your required 2-year flight review.",
      "formula": "Total cost = (flight hours × rental rate) + (flight hours + ground hours) × CFI rate.",
      "inputs": [
        {
          "id": "flightHours",
          "label": "Expected flight hours",
          "kind": "number"
        },
        {
          "id": "groundHours",
          "label": "Expected ground instruction hours",
          "kind": "number"
        },
        {
          "id": "rentalRate",
          "label": "Aircraft rental rate",
          "kind": "number"
        },
        {
          "id": "cfiRate",
          "label": "CFI rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated flight review cost"
        },
        {
          "id": "aircraftCost",
          "label": "Aircraft rental cost"
        },
        {
          "id": "cfiCost",
          "label": "CFI cost (ground + flight)"
        },
        {
          "id": "totalCFIHours",
          "label": "Total CFI billed hours"
        }
      ]
    },
    {
      "slug": "tailwheel-endorsement-cost",
      "url": "https://www.revenuelab.fyi/toolbox/tailwheel-endorsement-cost",
      "title": "Tailwheel Endorsement Cost Calculator",
      "category": "financial",
      "summary": "Budget the hours and dollars to earn a tailwheel endorsement.",
      "formula": "Total cost = hours needed × (tailwheel rental rate + CFI rate).",
      "inputs": [
        {
          "id": "hoursNeeded",
          "label": "Expected hours needed",
          "kind": "number"
        },
        {
          "id": "rentalRate",
          "label": "Tailwheel aircraft rental rate",
          "kind": "number"
        },
        {
          "id": "cfiRate",
          "label": "CFI rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated total cost"
        },
        {
          "id": "costPerHour",
          "label": "Combined cost per hour"
        },
        {
          "id": "hours",
          "label": "Hours budgeted"
        }
      ]
    },
    {
      "slug": "aircraft-depreciation",
      "url": "https://www.revenuelab.fyi/toolbox/aircraft-depreciation",
      "title": "Aircraft Depreciation Calculator",
      "category": "financial",
      "summary": "Estimate annual value loss and future resale value for a piston aircraft.",
      "formula": "Value after n years = purchase price × (1 − annual rate)^n, floored at a minimum residual percentage of original price.",
      "inputs": [
        {
          "id": "purchasePrice",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "annualRate",
          "label": "Estimated annual depreciation rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Years held",
          "kind": "number"
        },
        {
          "id": "floorPct",
          "label": "Residual value floor",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "value",
          "label": "Estimated value after holding period"
        },
        {
          "id": "totalLoss",
          "label": "Total value lost"
        },
        {
          "id": "annualLossAvg",
          "label": "Average annual loss"
        },
        {
          "id": "pctRetained",
          "label": "% of original value retained"
        }
      ]
    },
    {
      "slug": "pilot-medical-cost",
      "url": "https://www.revenuelab.fyi/toolbox/pilot-medical-cost",
      "title": "Pilot Medical Certificate Cost Calculator",
      "category": "financial",
      "summary": "Compare cost and renewal frequency across medical certificate options.",
      "formula": "Total cost over period = (period years ÷ renewal interval years) × exam fee + special issuance allowance.",
      "inputs": [
        {
          "id": "medicalType",
          "label": "Medical pathway",
          "kind": "select"
        },
        {
          "id": "examFee",
          "label": "Exam / physician fee",
          "kind": "number"
        },
        {
          "id": "periodYears",
          "label": "Period to project",
          "kind": "number"
        },
        {
          "id": "specialIssuance",
          "label": "Extra special-issuance testing cost (if any)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total cost over period"
        },
        {
          "id": "renewals",
          "label": "Number of renewals in period"
        },
        {
          "id": "baseCost",
          "label": "Base exam cost"
        },
        {
          "id": "specialTotal",
          "label": "Special issuance costs"
        },
        {
          "id": "avgAnnualCost",
          "label": "Average annual cost"
        }
      ]
    },
    {
      "slug": "glide-ratio-distance",
      "url": "https://www.revenuelab.fyi/toolbox/glide-ratio-distance",
      "title": "Glide Ratio Distance Calculator",
      "category": "other",
      "summary": "How far you can glide from a given altitude after engine failure.",
      "formula": "Still-air glide distance = altitude above terrain (ft) ÷ 5280 × glide ratio. Wind-adjusted distance = still-air distance × (groundspeed ÷ best glide airspeed).",
      "inputs": [
        {
          "id": "altitude",
          "label": "Altitude above terrain",
          "kind": "number"
        },
        {
          "id": "glideRatio",
          "label": "Best glide ratio (distance:altitude)",
          "kind": "number"
        },
        {
          "id": "bestGlideSpeed",
          "label": "Best glide airspeed",
          "kind": "number"
        },
        {
          "id": "windComponent",
          "label": "Headwind during glide (negative = tailwind)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "windAdjustedDistanceNm",
          "label": "Wind-adjusted glide distance"
        },
        {
          "id": "stillAirDistanceNm",
          "label": "Still-air glide distance (nm)"
        },
        {
          "id": "groundspeed",
          "label": "Estimated glide groundspeed"
        },
        {
          "id": "radiusMiles",
          "label": "Equivalent distance in statute miles"
        }
      ]
    },
    {
      "slug": "climb-performance-fuel",
      "url": "https://www.revenuelab.fyi/toolbox/climb-performance-fuel",
      "title": "Climb Performance Time and Fuel Calculator",
      "category": "other",
      "summary": "Estimate minutes, fuel burned, and ground distance covered during climb to altitude.",
      "formula": "Climb time (min) = altitude to climb ÷ rate of climb. Climb fuel = climb time × climb fuel burn rate. Climb distance = climb time × climb groundspeed.",
      "inputs": [
        {
          "id": "altToClimb",
          "label": "Altitude to climb",
          "kind": "number"
        },
        {
          "id": "rateOfClimb",
          "label": "Average rate of climb",
          "kind": "number"
        },
        {
          "id": "climbBurn",
          "label": "Fuel burn during climb",
          "kind": "number"
        },
        {
          "id": "climbSpeed",
          "label": "Climb speed (indicated)",
          "kind": "number"
        },
        {
          "id": "windComponent",
          "label": "Headwind during climb",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "climbTimeMin",
          "label": "Time to reach altitude"
        },
        {
          "id": "fuelUsed",
          "label": "Fuel used during climb"
        },
        {
          "id": "distanceNm",
          "label": "Ground distance covered during climb"
        },
        {
          "id": "climbTimeHr",
          "label": "Climb time (hours)"
        }
      ]
    },
    {
      "slug": "screen-print-cost-per-shirt",
      "url": "https://www.revenuelab.fyi/toolbox/screen-print-cost-per-shirt",
      "title": "Screen Print Cost Per Shirt Calculator",
      "category": "financial",
      "summary": "Blank, ink, screens, and labor spread across a real run length.",
      "formula": "Setup total = colors × screen cost; ink cost = colors × ink per color; unit cost = blank + ink cost + (setup total + run labor) ÷ quantity; margin = price − unit cost.",
      "inputs": [
        {
          "id": "quantity",
          "label": "Order quantity",
          "kind": "number"
        },
        {
          "id": "blank",
          "label": "Blank shirt cost",
          "kind": "number"
        },
        {
          "id": "colors",
          "label": "Number of ink colors",
          "kind": "number"
        },
        {
          "id": "screenCost",
          "label": "Screen cost per color (burn + film)",
          "kind": "number"
        },
        {
          "id": "inkPerColor",
          "label": "Ink cost per color per shirt",
          "kind": "number"
        },
        {
          "id": "runLabor",
          "label": "Press setup + run labor (flat)",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Price charged per shirt",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "unitCost",
          "label": "Cost per shirt"
        },
        {
          "id": "setupPerShirt",
          "label": "Setup cost spread per shirt"
        },
        {
          "id": "totalCost",
          "label": "Total job cost"
        },
        {
          "id": "margin",
          "label": "Margin per shirt"
        },
        {
          "id": "marginPct",
          "label": "Margin %"
        },
        {
          "id": "totalProfit",
          "label": "Total job profit"
        }
      ]
    },
    {
      "slug": "dtg-vs-screen-print-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/dtg-vs-screen-print-breakeven",
      "title": "DTG vs Screen Print Breakeven Calculator",
      "category": "financial",
      "summary": "Find the quantity where screen printing beats direct-to-garment.",
      "formula": "Breakeven qty = screen setup cost ÷ (DTG cost per shirt − screen marginal cost per shirt).",
      "inputs": [
        {
          "id": "dtgCost",
          "label": "DTG cost per shirt",
          "kind": "number"
        },
        {
          "id": "screenSetup",
          "label": "Screen print setup cost (screens + labor)",
          "kind": "number"
        },
        {
          "id": "screenMarginal",
          "label": "Screen print marginal cost per shirt",
          "kind": "number"
        },
        {
          "id": "quantity",
          "label": "Your actual order quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakeven",
          "label": "Breakeven quantity"
        },
        {
          "id": "cheaper",
          "label": "Cheaper method at your quantity"
        },
        {
          "id": "dtgTotal",
          "label": "Total DTG cost at your quantity"
        },
        {
          "id": "screenTotal",
          "label": "Total screen print cost at your quantity"
        },
        {
          "id": "savings",
          "label": "Savings by choosing cheaper method"
        }
      ]
    },
    {
      "slug": "embroidery-stitch-count-price",
      "url": "https://www.revenuelab.fyi/toolbox/embroidery-stitch-count-price",
      "title": "Embroidery Stitch Count Pricing Calculator",
      "category": "financial",
      "summary": "Price embroidery jobs by stitch count, thread, and digitizing cost.",
      "formula": "Run minutes = stitches ÷ effective SPM; machine cost = run minutes × cost per minute; unit price = machine cost + thread cost + labor + digitizing ÷ quantity.",
      "inputs": [
        {
          "id": "stitches",
          "label": "Stitch count",
          "kind": "number"
        },
        {
          "id": "spm",
          "label": "Effective stitches per minute",
          "kind": "number"
        },
        {
          "id": "machineCostMin",
          "label": "Machine + overhead cost per minute",
          "kind": "number"
        },
        {
          "id": "threadCost",
          "label": "Thread + bobbin cost per piece",
          "kind": "number"
        },
        {
          "id": "laborPerPiece",
          "label": "Hooping/trimming labor per piece",
          "kind": "number"
        },
        {
          "id": "digitizing",
          "label": "One-time digitizing fee",
          "kind": "number"
        },
        {
          "id": "quantity",
          "label": "Quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "unitCost",
          "label": "Cost per piece"
        },
        {
          "id": "runMin",
          "label": "Machine run time per piece"
        },
        {
          "id": "machineCost",
          "label": "Machine cost per piece"
        },
        {
          "id": "digitizingPer",
          "label": "Digitizing cost per piece"
        },
        {
          "id": "totalCost",
          "label": "Total job cost"
        }
      ]
    },
    {
      "slug": "vinyl-wide-format-sqft-price",
      "url": "https://www.revenuelab.fyi/toolbox/vinyl-wide-format-sqft-price",
      "title": "Vinyl & Wide-Format Square-Foot Pricing Calculator",
      "category": "financial",
      "summary": "Price banners, decals, and wraps by square foot with material and labor.",
      "formula": "Area (sqft) = width × height ÷ 144 (if inches); cost = area × (material + ink + laminate per sqft) + setup; price = cost × (1 + markup%).",
      "inputs": [
        {
          "id": "widthIn",
          "label": "Width",
          "kind": "number"
        },
        {
          "id": "heightIn",
          "label": "Height",
          "kind": "number"
        },
        {
          "id": "materialCost",
          "label": "Material cost per sq ft",
          "kind": "number"
        },
        {
          "id": "inkCost",
          "label": "Ink/print cost per sq ft",
          "kind": "number"
        },
        {
          "id": "laminateCost",
          "label": "Lamination cost per sq ft",
          "kind": "number"
        },
        {
          "id": "setupFee",
          "label": "Design/setup flat fee",
          "kind": "number"
        },
        {
          "id": "markup",
          "label": "Target markup",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Sell price"
        },
        {
          "id": "sqft",
          "label": "Square footage"
        },
        {
          "id": "pricePerSqft",
          "label": "Effective price per sq ft"
        },
        {
          "id": "cost",
          "label": "Total cost incl. waste"
        },
        {
          "id": "profit",
          "label": "Gross profit"
        }
      ]
    },
    {
      "slug": "sublimation-print-cost",
      "url": "https://www.revenuelab.fyi/toolbox/sublimation-print-cost",
      "title": "Sublimation Print Cost Calculator",
      "category": "financial",
      "summary": "Ink, paper, blank, and press time cost per sublimated item.",
      "formula": "Ink cost = mL used × cost per mL; unit cost = ink + paper + blank + (press seconds ÷ 3600 × press labor rate).",
      "inputs": [
        {
          "id": "inkMl",
          "label": "Ink used per item",
          "kind": "number"
        },
        {
          "id": "inkCostMl",
          "label": "Ink cost per mL",
          "kind": "number"
        },
        {
          "id": "paperCost",
          "label": "Transfer paper cost per item",
          "kind": "number"
        },
        {
          "id": "blankCost",
          "label": "Blank substrate cost",
          "kind": "number"
        },
        {
          "id": "pressSec",
          "label": "Heat press time",
          "kind": "number"
        },
        {
          "id": "laborRate",
          "label": "Labor + press overhead rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "unitCost",
          "label": "Cost per item"
        },
        {
          "id": "inkCost",
          "label": "Ink cost per item"
        },
        {
          "id": "pressCost",
          "label": "Press time cost per item"
        },
        {
          "id": "perHourCapacity",
          "label": "Max items per hour (press-limited)"
        }
      ]
    },
    {
      "slug": "laser-engraving-time-cost",
      "url": "https://www.revenuelab.fyi/toolbox/laser-engraving-time-cost",
      "title": "Laser Engraving Time & Cost Calculator",
      "category": "financial",
      "summary": "Estimate engrave time and price from area, speed, and passes.",
      "formula": "Engrave minutes = (area ÷ effective sqin-per-minute) × passes; cost = engrave minutes × machine rate + material + setup; price = cost × (1 + markup%).",
      "inputs": [
        {
          "id": "area",
          "label": "Engrave area",
          "kind": "number"
        },
        {
          "id": "sqinPerMin",
          "label": "Effective coverage speed",
          "kind": "number"
        },
        {
          "id": "passes",
          "label": "Number of passes",
          "kind": "number"
        },
        {
          "id": "machineRate",
          "label": "Machine + overhead rate",
          "kind": "number"
        },
        {
          "id": "material",
          "label": "Material/blank cost",
          "kind": "number"
        },
        {
          "id": "setupFee",
          "label": "Setup/design fee",
          "kind": "number"
        },
        {
          "id": "markup",
          "label": "Markup",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Suggested price"
        },
        {
          "id": "minutes",
          "label": "Engrave time"
        },
        {
          "id": "machineCost",
          "label": "Machine time cost"
        },
        {
          "id": "cost",
          "label": "Total cost"
        },
        {
          "id": "profit",
          "label": "Profit"
        }
      ]
    },
    {
      "slug": "uv-printer-ink-cost",
      "url": "https://www.revenuelab.fyi/toolbox/uv-printer-ink-cost",
      "title": "UV Printer Ink Cost Calculator",
      "category": "financial",
      "summary": "Ink cost per print job from coverage, drop size, and ink price.",
      "formula": "mL used = area × coverage% × density factor × layers; ink cost = mL used × cost per mL.",
      "inputs": [
        {
          "id": "area",
          "label": "Print area",
          "kind": "number"
        },
        {
          "id": "coverage",
          "label": "Average ink coverage",
          "kind": "number"
        },
        {
          "id": "density",
          "label": "Ink density factor",
          "kind": "number"
        },
        {
          "id": "layers",
          "label": "Effective layers (white+color+clear)",
          "kind": "number"
        },
        {
          "id": "inkCostL",
          "label": "Ink cost per liter",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "inkCost",
          "label": "Ink cost per print"
        },
        {
          "id": "mlUsed",
          "label": "Ink used per print"
        },
        {
          "id": "per100",
          "label": "Ink cost for 100 prints"
        }
      ]
    },
    {
      "slug": "banner-sign-install-labor",
      "url": "https://www.revenuelab.fyi/toolbox/banner-sign-install-labor",
      "title": "Banner & Sign Install Labor Cost Calculator",
      "category": "financial",
      "summary": "Crew time, lift rental, and travel rolled into an install quote.",
      "formula": "Labor cost = crew size × hourly rate × (base hours × difficulty + travel hours); total = labor + lift rental − minimum charge floor applied.",
      "inputs": [
        {
          "id": "baseHours",
          "label": "Base install time",
          "kind": "number"
        },
        {
          "id": "difficulty",
          "label": "Difficulty multiplier (1=easy, 2=lift needed)",
          "kind": "number"
        },
        {
          "id": "crewSize",
          "label": "Crew size",
          "kind": "number"
        },
        {
          "id": "hourlyRate",
          "label": "Loaded labor rate per person",
          "kind": "number"
        },
        {
          "id": "travelHours",
          "label": "Round-trip travel time",
          "kind": "number"
        },
        {
          "id": "liftRental",
          "label": "Lift/equipment rental",
          "kind": "number"
        },
        {
          "id": "minCharge",
          "label": "Minimum trip charge",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "finalPrice",
          "label": "Install price to quote"
        },
        {
          "id": "workHours",
          "label": "Effective work hours (with difficulty)"
        },
        {
          "id": "laborCost",
          "label": "Crew labor cost"
        },
        {
          "id": "total",
          "label": "Total cost before minimum floor"
        }
      ]
    },
    {
      "slug": "business-card-offset-vs-digital-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/business-card-offset-vs-digital-breakeven",
      "title": "Business Card Offset vs Digital Print Breakeven Calculator",
      "category": "financial",
      "summary": "Find the quantity where offset printing beats digital press cost.",
      "formula": "Breakeven (thousands) = offset setup ÷ (digital cost/1000 − offset marginal cost/1000).",
      "inputs": [
        {
          "id": "offsetSetup",
          "label": "Offset setup cost (plates, makeready)",
          "kind": "number"
        },
        {
          "id": "offsetPer1000",
          "label": "Offset marginal cost per 1,000",
          "kind": "number"
        },
        {
          "id": "digitalPer1000",
          "label": "Digital cost per 1,000",
          "kind": "number"
        },
        {
          "id": "quantity",
          "label": "Your order quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenQty",
          "label": "Breakeven quantity"
        },
        {
          "id": "cheaper",
          "label": "Cheaper method at your quantity"
        },
        {
          "id": "offsetTotal",
          "label": "Total offset cost"
        },
        {
          "id": "digitalTotal",
          "label": "Total digital cost"
        },
        {
          "id": "savings",
          "label": "Savings choosing cheaper method"
        }
      ]
    },
    {
      "slug": "promo-product-markup",
      "url": "https://www.revenuelab.fyi/toolbox/promo-product-markup",
      "title": "Promotional Product Markup Calculator",
      "category": "financial",
      "summary": "Distributor cost, decoration, freight, and margin to a sell price.",
      "formula": "Landed cost = (unit cost + imprint cost + setup ÷ qty) + freight per unit; price = landed cost × markup multiple.",
      "inputs": [
        {
          "id": "unitCost",
          "label": "Supplier net cost per unit",
          "kind": "number"
        },
        {
          "id": "imprintCost",
          "label": "Imprint cost per unit",
          "kind": "number"
        },
        {
          "id": "setupFee",
          "label": "One-time setup/screen fee",
          "kind": "number"
        },
        {
          "id": "quantity",
          "label": "Order quantity",
          "kind": "number"
        },
        {
          "id": "freightTotal",
          "label": "Total inbound freight",
          "kind": "number"
        },
        {
          "id": "markup",
          "label": "Markup multiple",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Resale price per unit"
        },
        {
          "id": "landedUnit",
          "label": "Landed cost per unit"
        },
        {
          "id": "totalRevenue",
          "label": "Total order revenue"
        },
        {
          "id": "totalProfit",
          "label": "Total gross profit"
        },
        {
          "id": "marginPct",
          "label": "Gross margin %"
        }
      ]
    },
    {
      "slug": "print-waste-overrun",
      "url": "https://www.revenuelab.fyi/toolbox/print-waste-overrun",
      "title": "Print Waste & Overrun Calculator",
      "category": "financial",
      "summary": "Budget makeready waste and decide how many overrun copies to print.",
      "formula": "Production run = order qty ÷ (1 − waste%); overrun units = production run − order qty; overrun cost = overrun units × unit cost.",
      "inputs": [
        {
          "id": "orderQty",
          "label": "Order quantity needed",
          "kind": "number"
        },
        {
          "id": "wastePct",
          "label": "Expected waste/spoilage rate",
          "kind": "number"
        },
        {
          "id": "unitCost",
          "label": "Unit production cost",
          "kind": "number"
        },
        {
          "id": "safetyBuffer",
          "label": "Additional safety buffer",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "productionRun",
          "label": "Units to actually produce"
        },
        {
          "id": "overrunUnits",
          "label": "Extra units for waste + buffer"
        },
        {
          "id": "overrunCost",
          "label": "Cost of overrun units"
        },
        {
          "id": "totalCost",
          "label": "Total production cost"
        }
      ]
    },
    {
      "slug": "heat-press-throughput",
      "url": "https://www.revenuelab.fyi/toolbox/heat-press-throughput",
      "title": "Heat Press Throughput Calculator",
      "category": "financial",
      "summary": "Items per hour and daily capacity from press cycle time.",
      "formula": "Cycle seconds = press time + handling time; pieces/hour = 3600 ÷ cycle seconds × efficiency%; daily capacity = pieces/hour × shift hours.",
      "inputs": [
        {
          "id": "pressSec",
          "label": "Press time per piece",
          "kind": "number"
        },
        {
          "id": "handlingSec",
          "label": "Load/unload/position time",
          "kind": "number"
        },
        {
          "id": "efficiency",
          "label": "Realistic efficiency",
          "kind": "number"
        },
        {
          "id": "shiftHours",
          "label": "Shift length",
          "kind": "number"
        },
        {
          "id": "presses",
          "label": "Number of presses/operators running",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "dailyCapacity",
          "label": "Daily capacity (all presses)"
        },
        {
          "id": "perHour",
          "label": "Pieces per hour (all presses)"
        },
        {
          "id": "perHourOnePress",
          "label": "Pieces per hour (per press)"
        },
        {
          "id": "cycleSec",
          "label": "Total cycle time per piece"
        }
      ]
    },
    {
      "slug": "garment-blank-margin",
      "url": "https://www.revenuelab.fyi/toolbox/garment-blank-margin",
      "title": "Garment Blank Margin Calculator",
      "category": "financial",
      "summary": "Margin on undecorated apparel before any decoration cost.",
      "formula": "Blank landed cost = wholesale + shipping-in per unit + size upcharge; margin = blank price component − landed cost.",
      "inputs": [
        {
          "id": "wholesale",
          "label": "Wholesale blank cost (standard size)",
          "kind": "number"
        },
        {
          "id": "shippingIn",
          "label": "Inbound shipping per unit",
          "kind": "number"
        },
        {
          "id": "sizeUpcharge",
          "label": "Average size upcharge (2XL+ blend)",
          "kind": "number"
        },
        {
          "id": "blankPriceComponent",
          "label": "Blank-only portion of your sell price",
          "kind": "number"
        },
        {
          "id": "quantity",
          "label": "Units in order",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "margin",
          "label": "Margin per blank"
        },
        {
          "id": "marginPct",
          "label": "Margin %"
        },
        {
          "id": "landed",
          "label": "Landed blank cost"
        },
        {
          "id": "totalMarginProfit",
          "label": "Total blank margin for order"
        }
      ]
    },
    {
      "slug": "signage-permit-cost",
      "url": "https://www.revenuelab.fyi/toolbox/signage-permit-cost",
      "title": "Signage Permit Cost Estimator",
      "category": "financial",
      "summary": "Estimate municipal permit fees and total permitted-sign project cost.",
      "formula": "Total permit cost = base fee + (sign sqft × per-sqft fee) + electrical permit (if illuminated) + engineering review + expedite fee.",
      "inputs": [
        {
          "id": "baseFee",
          "label": "Base municipal permit fee",
          "kind": "number"
        },
        {
          "id": "sqft",
          "label": "Sign area",
          "kind": "number"
        },
        {
          "id": "perSqftFee",
          "label": "Per-sq-ft fee",
          "kind": "number"
        },
        {
          "id": "illuminated",
          "label": "Illuminated sign?",
          "kind": "select"
        },
        {
          "id": "electricalFee",
          "label": "Electrical permit fee (if illuminated)",
          "kind": "number"
        },
        {
          "id": "engineering",
          "label": "Engineering/stamped drawing cost",
          "kind": "number"
        },
        {
          "id": "expedite",
          "label": "Rush/expedite fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated total permit cost"
        },
        {
          "id": "areaFee",
          "label": "Sign-area based fee"
        },
        {
          "id": "electrical",
          "label": "Electrical permit fee"
        }
      ]
    },
    {
      "slug": "screen-print-color-setup-cost",
      "url": "https://www.revenuelab.fyi/toolbox/screen-print-color-setup-cost",
      "title": "Screen Print Color & Setup Cost Calculator",
      "category": "financial",
      "summary": "See exactly how each added color raises setup cost and unit price.",
      "formula": "Added setup cost = added colors × (screen cost + burn labor); added press time per shirt = added colors × seconds per color; total marginal cost = setup ÷ qty + press time cost.",
      "inputs": [
        {
          "id": "baseColors",
          "label": "Base color count",
          "kind": "number"
        },
        {
          "id": "newColors",
          "label": "New color count",
          "kind": "number"
        },
        {
          "id": "screenCost",
          "label": "Screen + burn cost per color",
          "kind": "number"
        },
        {
          "id": "secPerColor",
          "label": "Added press seconds per color",
          "kind": "number"
        },
        {
          "id": "pressRateHr",
          "label": "Press labor rate",
          "kind": "number"
        },
        {
          "id": "quantity",
          "label": "Order quantity",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalMarginalPerShirt",
          "label": "Added cost per shirt"
        },
        {
          "id": "setupDelta",
          "label": "Added one-time setup cost"
        },
        {
          "id": "pressTimeDeltaPerShirt",
          "label": "Added press-time cost per shirt"
        },
        {
          "id": "totalJobDelta",
          "label": "Total added cost for full job"
        }
      ]
    },
    {
      "slug": "dtf-transfer-cost",
      "url": "https://www.revenuelab.fyi/toolbox/dtf-transfer-cost",
      "title": "DTF Transfer Cost Calculator",
      "category": "financial",
      "summary": "Film, ink, powder, and press cost per DTF transfer.",
      "formula": "Transfer cost = area (sqin) × cost per sqin (film+ink+powder); shirt cost = transfer cost + blank cost + press labor.",
      "inputs": [
        {
          "id": "widthIn",
          "label": "Design width",
          "kind": "number"
        },
        {
          "id": "heightIn",
          "label": "Design height",
          "kind": "number"
        },
        {
          "id": "costPerSqin",
          "label": "Film+ink+powder cost per sq in",
          "kind": "number"
        },
        {
          "id": "blankCost",
          "label": "Blank garment cost",
          "kind": "number"
        },
        {
          "id": "pressLabor",
          "label": "Press labor cost per shirt",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "shirtCost",
          "label": "Total finished shirt cost"
        },
        {
          "id": "transferCost",
          "label": "DTF transfer cost only"
        },
        {
          "id": "area",
          "label": "Design area"
        }
      ]
    },
    {
      "slug": "channel-letter-sign-cost",
      "url": "https://www.revenuelab.fyi/toolbox/channel-letter-sign-cost",
      "title": "Channel Letter Sign Cost Calculator",
      "category": "financial",
      "summary": "Estimate illuminated channel letter cost from letter count and size.",
      "formula": "Fabrication cost = letters × height (in) × cost per inch; total = fabrication + LED/driver cost + raceway + install − any discount for identical repeated letters.",
      "inputs": [
        {
          "id": "letterCount",
          "label": "Number of letters",
          "kind": "number"
        },
        {
          "id": "heightIn",
          "label": "Letter height",
          "kind": "number"
        },
        {
          "id": "costPerInch",
          "label": "Fabrication cost per inch of height, per letter",
          "kind": "number"
        },
        {
          "id": "ledDriverCost",
          "label": "LED + power supply cost (total)",
          "kind": "number"
        },
        {
          "id": "raceway",
          "label": "Raceway/mounting hardware cost",
          "kind": "number"
        },
        {
          "id": "installLabor",
          "label": "Installation labor",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated project total"
        },
        {
          "id": "fab",
          "label": "Fabrication cost (letters only)"
        },
        {
          "id": "perLetter",
          "label": "Average fabrication cost per letter"
        }
      ]
    },
    {
      "slug": "vehicle-wrap-cost",
      "url": "https://www.revenuelab.fyi/toolbox/vehicle-wrap-cost",
      "title": "Vehicle Wrap Cost Calculator",
      "category": "financial",
      "summary": "Estimate full or partial wrap cost from vehicle size and coverage.",
      "formula": "Effective sqft = vehicle base sqft × coverage%; material+print cost = sqft × cost/sqft; total = material cost + install labor + design fee.",
      "inputs": [
        {
          "id": "vehicleClass",
          "label": "Vehicle type",
          "kind": "select"
        },
        {
          "id": "coverage",
          "label": "Coverage percentage",
          "kind": "number"
        },
        {
          "id": "costPerSqft",
          "label": "Material + print cost per sq ft",
          "kind": "number"
        },
        {
          "id": "installLabor",
          "label": "Install labor",
          "kind": "number"
        },
        {
          "id": "designFee",
          "label": "Design fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Estimated wrap project cost"
        },
        {
          "id": "materialCost",
          "label": "Material + print cost"
        },
        {
          "id": "effSqft",
          "label": "Effective vinyl square footage"
        }
      ]
    },
    {
      "slug": "banner-stand-rental-roi",
      "url": "https://www.revenuelab.fyi/toolbox/banner-stand-rental-roi",
      "title": "Banner Stand & Display Rental ROI Calculator",
      "category": "financial",
      "summary": "Compare renting vs buying a banner stand or booth display.",
      "formula": "Rental total = events × rental cost per event; owned total = hardware cost + events × reprint cost per event; breakeven events = hardware cost ÷ (rental cost − reprint cost).",
      "inputs": [
        {
          "id": "rentalCost",
          "label": "Rental cost per event",
          "kind": "number"
        },
        {
          "id": "hardwareCost",
          "label": "Hardware purchase cost (one-time)",
          "kind": "number"
        },
        {
          "id": "reprintCost",
          "label": "Reprint/graphic-only cost per event",
          "kind": "number"
        },
        {
          "id": "eventsPerYear",
          "label": "Events per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenEvents",
          "label": "Breakeven number of events"
        },
        {
          "id": "rentalTotal",
          "label": "Annual cost if renting"
        },
        {
          "id": "ownedTotal",
          "label": "Annual cost if owning"
        },
        {
          "id": "savingsIfOwn",
          "label": "Annual savings if you own"
        }
      ]
    },
    {
      "slug": "apparel-decoration-quote",
      "url": "https://www.revenuelab.fyi/toolbox/apparel-decoration-quote",
      "title": "Apparel Decoration Quote Builder",
      "category": "financial",
      "summary": "Combine blank, decoration, and markup into one client-ready quote.",
      "formula": "Unit cost = blank + decoration cost + setup fee ÷ qty; price = unit cost ÷ (1 − target margin%).",
      "inputs": [
        {
          "id": "blank",
          "label": "Blank garment cost",
          "kind": "number"
        },
        {
          "id": "decorationCost",
          "label": "Decoration cost per piece",
          "kind": "number"
        },
        {
          "id": "setupFee",
          "label": "Flat setup fee",
          "kind": "number"
        },
        {
          "id": "quantity",
          "label": "Order quantity",
          "kind": "number"
        },
        {
          "id": "targetMargin",
          "label": "Target gross margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Price per piece"
        },
        {
          "id": "unitCost",
          "label": "Cost per piece"
        },
        {
          "id": "totalQuote",
          "label": "Total quote to client"
        },
        {
          "id": "totalProfit",
          "label": "Total gross profit"
        }
      ]
    },
    {
      "slug": "sign-shop-hourly-rate",
      "url": "https://www.revenuelab.fyi/toolbox/sign-shop-hourly-rate",
      "title": "Sign Shop Hourly Rate Calculator",
      "category": "financial",
      "summary": "Back into the hourly rate your shop needs to charge to hit targets.",
      "formula": "Breakeven rate = monthly overhead ÷ billable hours; target rate = (monthly overhead + target profit) ÷ billable hours.",
      "inputs": [
        {
          "id": "overhead",
          "label": "Monthly fixed overhead",
          "kind": "number"
        },
        {
          "id": "targetProfit",
          "label": "Target monthly owner profit",
          "kind": "number"
        },
        {
          "id": "staffHours",
          "label": "Total staff hours available per month",
          "kind": "number"
        },
        {
          "id": "billablePct",
          "label": "Billable utilization rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "targetRate",
          "label": "Hourly rate to hit profit target"
        },
        {
          "id": "breakevenRate",
          "label": "Breakeven hourly rate"
        },
        {
          "id": "billableHours",
          "label": "Billable hours per month"
        }
      ]
    },
    {
      "slug": "large-format-print-markup",
      "url": "https://www.revenuelab.fyi/toolbox/large-format-print-markup",
      "title": "Large Format Print Markup Calculator",
      "category": "financial",
      "summary": "Apply a defensible markup on posters, banners, and rigid signage.",
      "formula": "Unit cost = media + ink + machine depreciation allocation + labor; price = unit cost × markup multiple.",
      "inputs": [
        {
          "id": "mediaCost",
          "label": "Media cost for this print",
          "kind": "number"
        },
        {
          "id": "inkCost",
          "label": "Ink cost for this print",
          "kind": "number"
        },
        {
          "id": "machineAnnualCost",
          "label": "Annual machine cost (lease/depreciation)",
          "kind": "number"
        },
        {
          "id": "annualVolume",
          "label": "Expected annual print jobs at this size",
          "kind": "number"
        },
        {
          "id": "labor",
          "label": "Labor for print/trim/finish",
          "kind": "number"
        },
        {
          "id": "markup",
          "label": "Markup multiple",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Sell price"
        },
        {
          "id": "unitCost",
          "label": "Total unit cost"
        },
        {
          "id": "depreciation",
          "label": "Machine cost allocated to this print"
        },
        {
          "id": "marginPct",
          "label": "Gross margin %"
        }
      ]
    },
    {
      "slug": "promo-product-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/promo-product-breakeven",
      "title": "Promotional Product Order Breakeven Calculator",
      "category": "financial",
      "summary": "Find the order quantity where your promo product quote turns a profit.",
      "formula": "Breakeven qty = setup fee ÷ (price per unit implied by budget − landed cost per unit); profit at actual qty = (unit price − landed cost) × qty − setup fee.",
      "inputs": [
        {
          "id": "landedCost",
          "label": "Landed cost per unit",
          "kind": "number"
        },
        {
          "id": "setupFee",
          "label": "One-time setup/imprint fee",
          "kind": "number"
        },
        {
          "id": "clientBudget",
          "label": "Client's total budget",
          "kind": "number"
        },
        {
          "id": "requestedQty",
          "label": "Quantity client wants",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalProfit",
          "label": "Profit at requested quantity"
        },
        {
          "id": "isProfitable",
          "label": "Profitable at this quantity?"
        },
        {
          "id": "impliedUnitPrice",
          "label": "Implied price per unit from budget"
        },
        {
          "id": "breakevenQty",
          "label": "Minimum breakeven quantity"
        }
      ]
    },
    {
      "slug": "embroidery-digitizing-cost",
      "url": "https://www.revenuelab.fyi/toolbox/embroidery-digitizing-cost",
      "title": "Embroidery Digitizing Cost Calculator",
      "category": "financial",
      "summary": "Price digitizing by complexity and decide how to bill it to clients.",
      "formula": "Digitizing price = base rate × complexity multiplier + (stitch count ÷ 1000 × per-thousand-stitch rate).",
      "inputs": [
        {
          "id": "baseRate",
          "label": "Base digitizing rate",
          "kind": "number"
        },
        {
          "id": "complexity",
          "label": "Design complexity",
          "kind": "select"
        },
        {
          "id": "stitches",
          "label": "Estimated stitch count",
          "kind": "number"
        },
        {
          "id": "perThousandRate",
          "label": "Additional rate per 1,000 stitches",
          "kind": "number"
        },
        {
          "id": "waiveForOrder",
          "label": "Waive/discount if apparel order attached?",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Digitizing charge"
        },
        {
          "id": "base",
          "label": "Base charge (complexity-adjusted)"
        },
        {
          "id": "stitchAdd",
          "label": "Stitch-count addition"
        }
      ]
    },
    {
      "slug": "wide-format-media-yield",
      "url": "https://www.revenuelab.fyi/toolbox/wide-format-media-yield",
      "title": "Wide-Format Media Roll Yield Calculator",
      "category": "math",
      "summary": "How many prints and jobs you can get from a roll of media.",
      "formula": "Prints across width = floor(roll width ÷ print width); prints along length = floor((roll length − end waste) ÷ (print height + gap)); total prints = across × along; cost per print = roll cost ÷ total prints.",
      "inputs": [
        {
          "id": "rollWidthIn",
          "label": "Roll width",
          "kind": "number"
        },
        {
          "id": "rollLengthFt",
          "label": "Roll length",
          "kind": "number"
        },
        {
          "id": "printWidthIn",
          "label": "Print width",
          "kind": "number"
        },
        {
          "id": "printHeightIn",
          "label": "Print height",
          "kind": "number"
        },
        {
          "id": "gapIn",
          "label": "Gap between prints",
          "kind": "number"
        },
        {
          "id": "endWasteFt",
          "label": "End-of-roll waste allowance",
          "kind": "number"
        },
        {
          "id": "rollCost",
          "label": "Roll purchase cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalPrints",
          "label": "Total usable prints per roll"
        },
        {
          "id": "across",
          "label": "Prints across roll width"
        },
        {
          "id": "along",
          "label": "Prints along roll length"
        },
        {
          "id": "costPerPrint",
          "label": "Media cost per print"
        }
      ]
    },
    {
      "slug": "pm-fee-vs-self-manage",
      "url": "https://www.revenuelab.fyi/toolbox/pm-fee-vs-self-manage",
      "title": "Property Management Fee vs Self-Managing Calculator",
      "category": "financial",
      "summary": "What a property manager actually costs you vs the hours you'd spend doing it yourself.",
      "formula": "PM cost = (rent × mgmt% × 12) + (rent × leasing fee%) + (maintenance markup × repair spend). Self-manage cost = hours/month × your hourly value × 12. Breakeven hourly rate = PM cost ÷ annual hours you'd spend.",
      "inputs": [
        {
          "id": "rent",
          "label": "Monthly rent",
          "kind": "number"
        },
        {
          "id": "mgmtPct",
          "label": "Management fee",
          "kind": "number"
        },
        {
          "id": "leasingFeePct",
          "label": "Leasing fee (per new lease)",
          "kind": "number"
        },
        {
          "id": "turnoverYears",
          "label": "Average years per tenant",
          "kind": "number"
        },
        {
          "id": "hoursMonth",
          "label": "Hours you'd spend self-managing",
          "kind": "number"
        },
        {
          "id": "hourlyValue",
          "label": "Your time value",
          "kind": "number"
        },
        {
          "id": "repairMarkup",
          "label": "Annual repair spend a manager marks up 10%",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "diff",
          "label": "PM cost minus self-manage cost"
        },
        {
          "id": "pmCost",
          "label": "Annual cost of hiring a manager"
        },
        {
          "id": "selfCost",
          "label": "Annual cost of your own time"
        },
        {
          "id": "breakevenRate",
          "label": "Breakeven hourly rate"
        },
        {
          "id": "mgmtAnnual",
          "label": "Annual management fee"
        },
        {
          "id": "leasingAnnual",
          "label": "Amortized annual leasing fee"
        }
      ]
    },
    {
      "slug": "tenant-turnover-cost",
      "url": "https://www.revenuelab.fyi/toolbox/tenant-turnover-cost",
      "title": "Tenant Turnover Cost Calculator",
      "category": "financial",
      "summary": "Total cost of a tenant leaving — vacancy, make-ready, and leasing, in one number.",
      "formula": "Total turnover cost = (vacancy days ÷ 30 × monthly rent) + make-ready cost + marketing cost + leasing fee.",
      "inputs": [
        {
          "id": "rent",
          "label": "Monthly rent",
          "kind": "number"
        },
        {
          "id": "vacancyDays",
          "label": "Expected vacancy",
          "kind": "number"
        },
        {
          "id": "makeReady",
          "label": "Make-ready cost (paint, clean, repairs)",
          "kind": "number"
        },
        {
          "id": "marketing",
          "label": "Marketing / listing cost",
          "kind": "number"
        },
        {
          "id": "leasingFee",
          "label": "Leasing fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total turnover cost"
        },
        {
          "id": "vacancyCost",
          "label": "Lost rent during vacancy"
        },
        {
          "id": "monthlyEquivalent",
          "label": "Spread across 12 months"
        },
        {
          "id": "pctOfAnnualRent",
          "label": "Cost as % of annual rent"
        }
      ]
    },
    {
      "slug": "vacancy-loss-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/vacancy-loss-calculator",
      "title": "Rental Vacancy Loss Calculator",
      "category": "financial",
      "summary": "Convert vacancy rate or vacant days into dollars lost across your portfolio.",
      "formula": "Vacancy loss = potential gross rent × vacancy rate. Annualized loss = units × avg rent × 12 × vacancy%.",
      "inputs": [
        {
          "id": "units",
          "label": "Number of units",
          "kind": "number"
        },
        {
          "id": "avgRent",
          "label": "Average monthly rent per unit",
          "kind": "number"
        },
        {
          "id": "vacancyPct",
          "label": "Vacancy rate",
          "kind": "number"
        },
        {
          "id": "targetVacancyPct",
          "label": "Market / target vacancy rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "vacancyLoss",
          "label": "Annual vacancy loss"
        },
        {
          "id": "pgr",
          "label": "Potential gross rent (100% occupied)"
        },
        {
          "id": "collectedRent",
          "label": "Expected collected rent"
        },
        {
          "id": "excessLoss",
          "label": "Loss above market vacancy assumption"
        }
      ]
    },
    {
      "slug": "rent-escalation-schedule",
      "url": "https://www.revenuelab.fyi/toolbox/rent-escalation-schedule",
      "title": "Rent Escalation Schedule Calculator",
      "category": "financial",
      "summary": "Project rent across a multi-year lease with fixed or CPI-linked increases.",
      "formula": "Year N rent = Year 1 rent × (1 + escalation%)^(N-1). Total paid = sum of all year rents × 12.",
      "inputs": [
        {
          "id": "startRent",
          "label": "Year 1 monthly rent",
          "kind": "number"
        },
        {
          "id": "escalation",
          "label": "Annual escalation",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Lease term",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total rent over full term"
        },
        {
          "id": "finalRent",
          "label": "Final year monthly rent"
        },
        {
          "id": "avgMonthly",
          "label": "Average monthly rent over term"
        },
        {
          "id": "increasePct",
          "label": "Total increase from year 1 to final year"
        }
      ]
    },
    {
      "slug": "security-deposit-interest",
      "url": "https://www.revenuelab.fyi/toolbox/security-deposit-interest",
      "title": "Security Deposit Interest Calculator",
      "category": "financial",
      "summary": "Interest owed to a tenant where state or local law requires it.",
      "formula": "Simple interest = deposit × annual rate × (months held ÷ 12). Compound interest = deposit × ((1 + rate/12)^months − 1).",
      "inputs": [
        {
          "id": "deposit",
          "label": "Security deposit amount",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Statutory annual interest rate",
          "kind": "number"
        },
        {
          "id": "months",
          "label": "Months held",
          "kind": "number"
        },
        {
          "id": "method",
          "label": "Interest method",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "interestOwed",
          "label": "Interest owed to tenant"
        },
        {
          "id": "totalRefund",
          "label": "Total refund due (deposit + interest)"
        },
        {
          "id": "annualEquivalent",
          "label": "Annualized interest amount"
        },
        {
          "id": "simple",
          "label": "Simple interest alternative"
        },
        {
          "id": "compound",
          "label": "Compound interest alternative"
        }
      ]
    },
    {
      "slug": "late-fee-revenue-projection",
      "url": "https://www.revenuelab.fyi/toolbox/late-fee-revenue-projection",
      "title": "Late Fee Policy Revenue Calculator",
      "category": "financial",
      "summary": "Estimate collected late fee revenue and check it against state legal caps.",
      "formula": "Fee per late payment = flat fee + (daily fee × days late) or (rent × fee%). Annual revenue = fee per late payment × late payments per year across units.",
      "inputs": [
        {
          "id": "units",
          "label": "Number of units",
          "kind": "number"
        },
        {
          "id": "rent",
          "label": "Average monthly rent",
          "kind": "number"
        },
        {
          "id": "lateRatePct",
          "label": "Share of tenants paying late each month",
          "kind": "number"
        },
        {
          "id": "flatFee",
          "label": "Flat late fee",
          "kind": "number"
        },
        {
          "id": "dailyFee",
          "label": "Additional daily fee",
          "kind": "number"
        },
        {
          "id": "avgDaysLate",
          "label": "Average days late when it happens",
          "kind": "number"
        },
        {
          "id": "capPct",
          "label": "State cap on late fee (% of rent, if any)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualRevenue",
          "label": "Projected annual late fee revenue"
        },
        {
          "id": "monthlyRevenue",
          "label": "Monthly late fee revenue"
        },
        {
          "id": "feePerEvent",
          "label": "Typical fee per late payment"
        },
        {
          "id": "capAmount",
          "label": "State cap amount (if applicable)"
        },
        {
          "id": "overCapBy",
          "label": "Amount your fee exceeds the cap"
        }
      ]
    },
    {
      "slug": "eviction-cost-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/eviction-cost-calculator",
      "title": "Eviction Cost Calculator",
      "category": "financial",
      "summary": "Court costs, lost rent, legal fees, and turnover cost of an eviction, totaled.",
      "formula": "Total eviction cost = unpaid rent during process + court/filing/attorney fees + lockout fee + make-ready + re-lease vacancy and marketing.",
      "inputs": [
        {
          "id": "rent",
          "label": "Monthly rent",
          "kind": "number"
        },
        {
          "id": "processMonths",
          "label": "Months from filing to possession",
          "kind": "number"
        },
        {
          "id": "legalFees",
          "label": "Court filing + attorney fees",
          "kind": "number"
        },
        {
          "id": "lockoutFee",
          "label": "Sheriff / lockout fee",
          "kind": "number"
        },
        {
          "id": "makeReady",
          "label": "Make-ready after unit left in poor condition",
          "kind": "number"
        },
        {
          "id": "releaseVacancyDays",
          "label": "Vacancy after eviction before re-lease",
          "kind": "number"
        },
        {
          "id": "recoveryPct",
          "label": "Chance of recovering back rent via judgment",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netCost",
          "label": "Net eviction cost"
        },
        {
          "id": "grossCost",
          "label": "Gross cost before recovery"
        },
        {
          "id": "expectedRecovery",
          "label": "Expected judgment recovery"
        },
        {
          "id": "unpaidRent",
          "label": "Unpaid rent during process"
        },
        {
          "id": "cashForKeysBreakeven",
          "label": "Cash-for-keys still cheaper below this"
        }
      ]
    },
    {
      "slug": "capex-reserve-per-door",
      "url": "https://www.revenuelab.fyi/toolbox/capex-reserve-per-door",
      "title": "CapEx Reserve Per Door Calculator",
      "category": "financial",
      "summary": "How much to set aside per unit per month for roofs, HVAC, and big-ticket replacements.",
      "formula": "Annual reserve per system = replacement cost ÷ remaining useful life (years). Per-door monthly reserve = sum of annual reserves ÷ units ÷ 12.",
      "inputs": [
        {
          "id": "units",
          "label": "Number of units",
          "kind": "number"
        },
        {
          "id": "roofCost",
          "label": "Roof replacement cost",
          "kind": "number"
        },
        {
          "id": "roofLife",
          "label": "Roof remaining useful life",
          "kind": "number"
        },
        {
          "id": "hvacCost",
          "label": "HVAC replacement cost (total, all units)",
          "kind": "number"
        },
        {
          "id": "hvacLife",
          "label": "HVAC remaining useful life",
          "kind": "number"
        },
        {
          "id": "otherCost",
          "label": "Other systems (parking, siding, appliances) total cost",
          "kind": "number"
        },
        {
          "id": "otherLife",
          "label": "Other systems avg remaining life",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perDoorMonthly",
          "label": "Recommended reserve per door"
        },
        {
          "id": "perDoorAnnual",
          "label": "Per door, annualized"
        },
        {
          "id": "totalAnnual",
          "label": "Total annual reserve needed"
        },
        {
          "id": "roofAnnual",
          "label": "Roof component of reserve"
        },
        {
          "id": "hvacAnnual",
          "label": "HVAC component of reserve"
        }
      ]
    },
    {
      "slug": "section-8-vs-market-rent",
      "url": "https://www.revenuelab.fyi/toolbox/section-8-vs-market-rent",
      "title": "Section 8 vs Market Rent Calculator",
      "category": "financial",
      "summary": "Compare net income from a Housing Choice Voucher tenant against a market-rate tenant.",
      "formula": "Net annual income = (rent × 12 × (1 − vacancy%)) − (turnover cost × turnovers/year) − (rent × 12 × default%).",
      "inputs": [
        {
          "id": "section8Rent",
          "label": "Section 8 monthly rent (contract rent)",
          "kind": "number"
        },
        {
          "id": "marketRent",
          "label": "Market monthly rent",
          "kind": "number"
        },
        {
          "id": "s8VacancyPct",
          "label": "Section 8 vacancy rate",
          "kind": "number"
        },
        {
          "id": "marketVacancyPct",
          "label": "Market tenant vacancy rate",
          "kind": "number"
        },
        {
          "id": "s8TurnoverYears",
          "label": "Avg years per Section 8 tenant",
          "kind": "number"
        },
        {
          "id": "marketTurnoverYears",
          "label": "Avg years per market tenant",
          "kind": "number"
        },
        {
          "id": "turnoverCost",
          "label": "Typical turnover cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "diff",
          "label": "Section 8 net advantage over market"
        },
        {
          "id": "s8Net",
          "label": "Section 8 net annual income"
        },
        {
          "id": "mktNet",
          "label": "Market tenant net annual income"
        },
        {
          "id": "s8Gross",
          "label": "Section 8 gross collected"
        },
        {
          "id": "mktGross",
          "label": "Market gross collected"
        }
      ]
    },
    {
      "slug": "rent-roll-grm",
      "url": "https://www.revenuelab.fyi/toolbox/rent-roll-grm",
      "title": "Rent Roll Gross Rent Multiplier Calculator",
      "category": "financial",
      "summary": "Value a multi-unit property off its actual rent roll, not a single average unit.",
      "formula": "GRM = purchase price ÷ annual gross rent. Implied value = target GRM × annual gross rent from the rent roll.",
      "inputs": [
        {
          "id": "unitsA",
          "label": "Unit type A: count",
          "kind": "number"
        },
        {
          "id": "rentA",
          "label": "Unit type A: monthly rent each",
          "kind": "number"
        },
        {
          "id": "unitsB",
          "label": "Unit type B: count",
          "kind": "number"
        },
        {
          "id": "rentB",
          "label": "Unit type B: monthly rent each",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "targetGrm",
          "label": "Target / market GRM",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "grm",
          "label": "Gross rent multiplier at asking price"
        },
        {
          "id": "impliedValue",
          "label": "Implied value at target GRM"
        },
        {
          "id": "annualGross",
          "label": "Actual annual gross rent from roll"
        },
        {
          "id": "priceDiff",
          "label": "Asking price above/below implied value"
        },
        {
          "id": "avgRentPerUnit",
          "label": "Blended average rent per unit"
        }
      ]
    },
    {
      "slug": "lease-up-marketing-cost",
      "url": "https://www.revenuelab.fyi/toolbox/lease-up-marketing-cost",
      "title": "Lease-Up Marketing Cost Per Lease Calculator",
      "category": "financial",
      "summary": "What it actually costs to fill a vacant unit across listing sites, signage, and leasing staff time.",
      "formula": "Cost per lease = (listing fees + photography + signage + referral incentives + staff hours × hourly rate) ÷ leases signed.",
      "inputs": [
        {
          "id": "listingFees",
          "label": "Listing site fees (monthly)",
          "kind": "number"
        },
        {
          "id": "photography",
          "label": "Photography / tour cost (monthly)",
          "kind": "number"
        },
        {
          "id": "signage",
          "label": "Signage / flyers (monthly)",
          "kind": "number"
        },
        {
          "id": "referralPayout",
          "label": "Total referral incentives paid",
          "kind": "number"
        },
        {
          "id": "staffHours",
          "label": "Leasing staff hours spent",
          "kind": "number"
        },
        {
          "id": "staffRate",
          "label": "Leasing staff hourly cost",
          "kind": "number"
        },
        {
          "id": "leasesSigned",
          "label": "Leases signed in the period",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perLease",
          "label": "Marketing cost per signed lease"
        },
        {
          "id": "totalCost",
          "label": "Total marketing spend"
        },
        {
          "id": "staffCost",
          "label": "Leasing staff time cost"
        },
        {
          "id": "leases",
          "label": "Leases signed"
        }
      ]
    },
    {
      "slug": "maintenance-cost-per-unit",
      "url": "https://www.revenuelab.fyi/toolbox/maintenance-cost-per-unit",
      "title": "Maintenance Cost Per Unit Calculator",
      "category": "financial",
      "summary": "Benchmark your annual repair spend per door against portfolio norms.",
      "formula": "Maintenance cost per unit = (routine repairs + make-ready + contract services + emergency calls) ÷ units.",
      "inputs": [
        {
          "id": "units",
          "label": "Number of units",
          "kind": "number"
        },
        {
          "id": "routine",
          "label": "Routine repairs (annual)",
          "kind": "number"
        },
        {
          "id": "makeReady",
          "label": "Make-ready costs (annual)",
          "kind": "number"
        },
        {
          "id": "contracts",
          "label": "Contract services (landscaping, pest, HVAC service)",
          "kind": "number"
        },
        {
          "id": "emergency",
          "label": "Emergency / after-hours calls (annual)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perUnit",
          "label": "Annual maintenance cost per unit"
        },
        {
          "id": "total",
          "label": "Total annual maintenance spend"
        },
        {
          "id": "perUnitMonthly",
          "label": "Per unit, monthly"
        },
        {
          "id": "emergencyShare",
          "label": "Share of spend from emergency calls"
        }
      ]
    },
    {
      "slug": "rubs-utility-allocation",
      "url": "https://www.revenuelab.fyi/toolbox/rubs-utility-allocation",
      "title": "Submetering / RUBS Utility Allocation Calculator",
      "category": "financial",
      "summary": "Allocate a master water, sewer, or trash bill across units fairly and see the revenue recovered.",
      "formula": "Unit share (sq ft method) = unit sq ft ÷ total building sq ft × master bill. Unit share (occupant method) = unit occupants ÷ total occupants × master bill.",
      "inputs": [
        {
          "id": "masterBill",
          "label": "Master utility bill (monthly)",
          "kind": "number"
        },
        {
          "id": "totalUnits",
          "label": "Total units in building",
          "kind": "number"
        },
        {
          "id": "unitSqFt",
          "label": "This unit's square footage",
          "kind": "number"
        },
        {
          "id": "totalSqFt",
          "label": "Total building square footage",
          "kind": "number"
        },
        {
          "id": "unitOccupants",
          "label": "This unit's occupant count",
          "kind": "number"
        },
        {
          "id": "totalOccupants",
          "label": "Total building occupant count",
          "kind": "number"
        },
        {
          "id": "adminFee",
          "label": "RUBS admin fee per unit",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalBillSqFt",
          "label": "This unit's bill (sq ft method + admin fee)"
        },
        {
          "id": "sqFtShare",
          "label": "Sq ft allocation method"
        },
        {
          "id": "occupantShare",
          "label": "Occupant count allocation method"
        },
        {
          "id": "equalShare",
          "label": "Equal per-unit split"
        },
        {
          "id": "totalRecoveryAnnual",
          "label": "Estimated annual recovery, all units"
        }
      ]
    },
    {
      "slug": "hoa-reserve-study-funding",
      "url": "https://www.revenuelab.fyi/toolbox/hoa-reserve-study-funding",
      "title": "HOA Reserve Study Funding Calculator",
      "category": "financial",
      "summary": "Check whether your HOA's reserve contributions keep pace with future replacement costs.",
      "formula": "Required annual funding = (sum of future replacement costs ÷ remaining life) − (annual investment return on current reserve balance). Percent funded = current reserve balance ÷ ideal accumulated reserve.",
      "inputs": [
        {
          "id": "units",
          "label": "Number of units in association",
          "kind": "number"
        },
        {
          "id": "futureCosts",
          "label": "Total future replacement costs (all components)",
          "kind": "number"
        },
        {
          "id": "avgRemainingLife",
          "label": "Weighted average remaining life",
          "kind": "number"
        },
        {
          "id": "currentBalance",
          "label": "Current reserve fund balance",
          "kind": "number"
        },
        {
          "id": "currentAnnualContribution",
          "label": "Current annual reserve contribution",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "shortfallAnnual",
          "label": "Annual funding shortfall"
        },
        {
          "id": "requiredAnnual",
          "label": "Required annual reserve contribution"
        },
        {
          "id": "pctFunded",
          "label": "Approximate percent funded"
        },
        {
          "id": "perUnitMonthlyNeeded",
          "label": "Needed monthly reserve dues per unit"
        },
        {
          "id": "perUnitMonthlyCurrent",
          "label": "Current monthly reserve dues per unit"
        }
      ]
    },
    {
      "slug": "str-vs-ltr-conversion",
      "url": "https://www.revenuelab.fyi/toolbox/str-vs-ltr-conversion",
      "title": "Short-Term vs Long-Term Rental Switch Calculator",
      "category": "financial",
      "summary": "Compare net income from switching a unit between short-term and long-term rental.",
      "formula": "STR net = (nightly rate × occupancy% × 365) − platform fees − cleaning costs − furnished utilities − STR-specific insurance. LTR net = (monthly rent × 12 × (1 − vacancy%)) − standard operating costs.",
      "inputs": [
        {
          "id": "nightlyRate",
          "label": "STR average nightly rate",
          "kind": "number"
        },
        {
          "id": "strOccupancyPct",
          "label": "STR occupancy rate",
          "kind": "number"
        },
        {
          "id": "platformFeePct",
          "label": "Platform fee",
          "kind": "number"
        },
        {
          "id": "cleaningPerTurn",
          "label": "Cleaning cost per stay",
          "kind": "number"
        },
        {
          "id": "avgStayNights",
          "label": "Average stay length",
          "kind": "number"
        },
        {
          "id": "strExtraCosts",
          "label": "STR furnished utilities + extra insurance (annual)",
          "kind": "number"
        },
        {
          "id": "ltrRent",
          "label": "Long-term monthly rent",
          "kind": "number"
        },
        {
          "id": "ltrVacancyPct",
          "label": "LTR vacancy rate",
          "kind": "number"
        },
        {
          "id": "ltrCostsAnnual",
          "label": "LTR operating costs (annual)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "diff",
          "label": "STR net advantage over LTR"
        },
        {
          "id": "strNet",
          "label": "STR annual net income"
        },
        {
          "id": "ltrNet",
          "label": "LTR annual net income"
        },
        {
          "id": "grossStr",
          "label": "STR gross booking revenue"
        },
        {
          "id": "cleaningTotal",
          "label": "Annual cleaning cost (STR)"
        }
      ]
    },
    {
      "slug": "insurance-deductible-choice-rental",
      "url": "https://www.revenuelab.fyi/toolbox/insurance-deductible-choice-rental",
      "title": "Landlord Insurance Deductible Choice Calculator",
      "category": "financial",
      "summary": "Compare premium savings from a higher deductible against your realistic claim risk.",
      "formula": "Breakeven claims = premium savings over period ÷ (higher deductible − lower deductible). Net savings = premium savings − (extra deductible × expected claims).",
      "inputs": [
        {
          "id": "lowDeductible",
          "label": "Lower deductible option",
          "kind": "number"
        },
        {
          "id": "lowPremium",
          "label": "Annual premium at lower deductible",
          "kind": "number"
        },
        {
          "id": "highDeductible",
          "label": "Higher deductible option",
          "kind": "number"
        },
        {
          "id": "highPremium",
          "label": "Annual premium at higher deductible",
          "kind": "number"
        },
        {
          "id": "expectedClaims",
          "label": "Expected claims over 10 years",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Time horizon",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netSavings",
          "label": "Net savings choosing higher deductible"
        },
        {
          "id": "totalPremiumSavings",
          "label": "Total premium savings over horizon"
        },
        {
          "id": "breakevenClaims",
          "label": "Breakeven number of claims"
        },
        {
          "id": "premiumSavingsAnnual",
          "label": "Annual premium savings"
        },
        {
          "id": "expectedExtraCost",
          "label": "Expected extra out-of-pocket cost"
        }
      ]
    },
    {
      "slug": "property-tax-appeal-roi",
      "url": "https://www.revenuelab.fyi/toolbox/property-tax-appeal-roi",
      "title": "Property Tax Appeal ROI Calculator",
      "category": "financial",
      "summary": "Weigh appeal costs against likely tax savings before filing a rental property assessment appeal.",
      "formula": "Annual tax savings = (current assessment − target assessment) × tax rate. ROI over holding years = (annual savings × years − appeal cost) ÷ appeal cost.",
      "inputs": [
        {
          "id": "currentAssessment",
          "label": "Current assessed value",
          "kind": "number"
        },
        {
          "id": "targetAssessment",
          "label": "Target assessed value after appeal",
          "kind": "number"
        },
        {
          "id": "taxRate",
          "label": "Effective property tax rate",
          "kind": "number"
        },
        {
          "id": "appealCost",
          "label": "Appeal cost (filing + appraisal/attorney)",
          "kind": "number"
        },
        {
          "id": "successPct",
          "label": "Estimated chance of success",
          "kind": "number"
        },
        {
          "id": "yearsHeld",
          "label": "Years until next reassessment",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "expectedNet",
          "label": "Expected net benefit (probability-weighted)"
        },
        {
          "id": "annualSavings",
          "label": "Annual tax savings if successful"
        },
        {
          "id": "paybackYears",
          "label": "Payback period on appeal cost"
        },
        {
          "id": "roiPct",
          "label": "Expected ROI on appeal cost"
        },
        {
          "id": "totalSavingsIfWon",
          "label": "Total savings over the period, if won"
        }
      ]
    },
    {
      "slug": "two-percent-rule-check",
      "url": "https://www.revenuelab.fyi/toolbox/two-percent-rule-check",
      "title": "2% Rule Portfolio Screening Calculator",
      "category": "financial",
      "summary": "Screen a batch of rental candidates against the 2% rule and see how far off each one lands.",
      "formula": "2% ratio = monthly rent ÷ purchase price × 100. Rent needed to hit 2% = purchase price × 0.02.",
      "inputs": [
        {
          "id": "price1",
          "label": "Property 1 price",
          "kind": "number"
        },
        {
          "id": "rent1",
          "label": "Property 1 monthly rent",
          "kind": "number"
        },
        {
          "id": "price2",
          "label": "Property 2 price",
          "kind": "number"
        },
        {
          "id": "rent2",
          "label": "Property 2 monthly rent",
          "kind": "number"
        },
        {
          "id": "price3",
          "label": "Property 3 price",
          "kind": "number"
        },
        {
          "id": "rent3",
          "label": "Property 3 monthly rent",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "passCount",
          "label": "Properties passing the 2% rule"
        },
        {
          "id": "ratio1",
          "label": "Property 1: rent-to-price ratio"
        },
        {
          "id": "ratio2",
          "label": "Property 2: rent-to-price ratio"
        },
        {
          "id": "ratio3",
          "label": "Property 3: rent-to-price ratio"
        },
        {
          "id": "rentNeeded1",
          "label": "Property 1: rent needed to hit 2%"
        }
      ]
    },
    {
      "slug": "lease-renewal-vs-turnover-cost",
      "url": "https://www.revenuelab.fyi/toolbox/lease-renewal-vs-turnover-cost",
      "title": "Lease Renewal vs Turnover Cost Calculator",
      "category": "financial",
      "summary": "Compare a renewal incentive's cost against letting a tenant leave and re-leasing the unit.",
      "formula": "Turnover cost = vacancy + make-ready + marketing + leasing fee. Renewal cost = incentive value + (foregone rent increase × 12). Compare the two directly.",
      "inputs": [
        {
          "id": "currentRent",
          "label": "Current monthly rent",
          "kind": "number"
        },
        {
          "id": "marketRent",
          "label": "Market rent for this unit",
          "kind": "number"
        },
        {
          "id": "renewalIncrease",
          "label": "Rent increase you'd offer at renewal",
          "kind": "number"
        },
        {
          "id": "incentiveValue",
          "label": "Renewal incentive cost (gift card, discount month)",
          "kind": "number"
        },
        {
          "id": "turnoverCost",
          "label": "Estimated full turnover cost if they leave",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "savings",
          "label": "Savings from renewing vs turnover"
        },
        {
          "id": "renewalCost",
          "label": "Total cost of offering the renewal"
        },
        {
          "id": "turnoverCost",
          "label": "Estimated turnover cost if they leave"
        },
        {
          "id": "foregoneAnnual",
          "label": "Annual rent foregone vs full market"
        },
        {
          "id": "renewalRent",
          "label": "Proposed renewal rent"
        }
      ]
    },
    {
      "slug": "pet-rent-revenue-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/pet-rent-revenue-calculator",
      "title": "Pet Rent Revenue Calculator",
      "category": "financial",
      "summary": "Project annual pet rent and fee income against the added cleaning and damage risk.",
      "formula": "Annual pet revenue = (pet-owning units × monthly pet rent × 12) + (one-time fees × annual pet-unit turnovers). Net = revenue − extra damage cost per turnover.",
      "inputs": [
        {
          "id": "units",
          "label": "Total units",
          "kind": "number"
        },
        {
          "id": "petOwnerPct",
          "label": "Share of units with pets",
          "kind": "number"
        },
        {
          "id": "petRent",
          "label": "Monthly pet rent per unit",
          "kind": "number"
        },
        {
          "id": "petFee",
          "label": "One-time non-refundable pet fee",
          "kind": "number"
        },
        {
          "id": "turnoverYears",
          "label": "Average years per tenant",
          "kind": "number"
        },
        {
          "id": "extraDamage",
          "label": "Extra damage/cleaning cost per pet-unit turnover",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netRevenue",
          "label": "Net annual pet program revenue"
        },
        {
          "id": "totalRevenue",
          "label": "Gross pet rent + fee revenue"
        },
        {
          "id": "annualRentRevenue",
          "label": "Pet rent revenue"
        },
        {
          "id": "annualFeeRevenue",
          "label": "One-time pet fee revenue"
        },
        {
          "id": "annualDamageCost",
          "label": "Estimated extra damage/cleaning cost"
        }
      ]
    },
    {
      "slug": "rent-collection-loss-rate",
      "url": "https://www.revenuelab.fyi/toolbox/rent-collection-loss-rate",
      "title": "Rent Collection Loss Rate Calculator",
      "category": "financial",
      "summary": "Track how much billed rent you're actually collecting and where it's leaking.",
      "formula": "Collection rate = rent collected ÷ rent billed × 100. Collection loss = rent billed − rent collected.",
      "inputs": [
        {
          "id": "rentBilled",
          "label": "Total rent billed (monthly, occupied units)",
          "kind": "number"
        },
        {
          "id": "rentCollected",
          "label": "Total rent actually collected (monthly)",
          "kind": "number"
        },
        {
          "id": "writeOffs",
          "label": "Additional write-offs from past move-outs (monthly avg)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "collectionRate",
          "label": "Collection rate"
        },
        {
          "id": "lossRate",
          "label": "Collection loss rate"
        },
        {
          "id": "monthlyLoss",
          "label": "Monthly collection loss"
        },
        {
          "id": "annualLoss",
          "label": "Annualized collection loss"
        }
      ]
    },
    {
      "slug": "pm-commission-tier-comparison",
      "url": "https://www.revenuelab.fyi/toolbox/pm-commission-tier-comparison",
      "title": "Property Manager Commission Tier Comparison Calculator",
      "category": "financial",
      "summary": "Compare flat-fee, percentage, and tiered property management pricing structures.",
      "formula": "Percentage model = units × avg rent × mgmt% × 12. Flat fee model = units × flat monthly fee × 12. Tiered model = (units within tier 1 × rate1 + units within tier 2 × rate2) × avg rent × 12.",
      "inputs": [
        {
          "id": "units",
          "label": "Number of units managed",
          "kind": "number"
        },
        {
          "id": "avgRent",
          "label": "Average monthly rent",
          "kind": "number"
        },
        {
          "id": "pctRate",
          "label": "Percentage model rate",
          "kind": "number"
        },
        {
          "id": "flatFee",
          "label": "Flat fee model, per door per month",
          "kind": "number"
        },
        {
          "id": "tier1Units",
          "label": "Tiered model: units at tier 1 rate",
          "kind": "number"
        },
        {
          "id": "tier1Rate",
          "label": "Tier 1 rate",
          "kind": "number"
        },
        {
          "id": "tier2Rate",
          "label": "Tier 2 rate (units beyond tier 1)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cheapest",
          "label": "Lowest annual cost"
        },
        {
          "id": "cheapestLabel",
          "label": "Cheapest pricing structure"
        },
        {
          "id": "pctModel",
          "label": "Percentage model annual cost"
        },
        {
          "id": "flatModel",
          "label": "Flat fee model annual cost"
        },
        {
          "id": "tieredModel",
          "label": "Tiered model annual cost"
        }
      ]
    },
    {
      "slug": "portfolio-door-scaling-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/portfolio-door-scaling-breakeven",
      "title": "Portfolio Door Scaling Breakeven Calculator",
      "category": "financial",
      "summary": "Find how many doors you need before hiring in-house management beats outsourcing.",
      "formula": "External cost = units × avg rent × mgmt% × 12. In-house cost = fully-loaded salary + benefits + overhead (fixed, roughly independent of unit count within a role's capacity). Breakeven units = in-house annual cost ÷ (avg rent × mgmt% × 12).",
      "inputs": [
        {
          "id": "avgRent",
          "label": "Average monthly rent per unit",
          "kind": "number"
        },
        {
          "id": "mgmtPct",
          "label": "External management fee",
          "kind": "number"
        },
        {
          "id": "salary",
          "label": "In-house PM fully-loaded annual cost",
          "kind": "number"
        },
        {
          "id": "capacityUnits",
          "label": "Units one in-house PM can handle",
          "kind": "number"
        },
        {
          "id": "currentUnits",
          "label": "Your current unit count",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenUnits",
          "label": "Breakeven unit count"
        },
        {
          "id": "savingsAtCurrentScale",
          "label": "Savings at your current unit count"
        },
        {
          "id": "currentExternalCost",
          "label": "Estimated external management cost"
        },
        {
          "id": "currentInHouseCost",
          "label": "In-house PM fully-loaded cost"
        },
        {
          "id": "utilizationPct",
          "label": "In-house PM capacity utilization"
        }
      ]
    },
    {
      "slug": "lease-renewal-increase-tradeoff",
      "url": "https://www.revenuelab.fyi/toolbox/lease-renewal-increase-tradeoff",
      "title": "Lease Renewal Rent Increase Tradeoff Calculator",
      "category": "financial",
      "summary": "Find the rent increase that maximizes expected value once move-out risk is factored in.",
      "formula": "Expected value = (probability of staying × (current rent + increase) × 12) − ((1 − probability of staying) × turnover cost) − ((1 − probability of staying) × foregone rent during vacancy).",
      "inputs": [
        {
          "id": "currentRent",
          "label": "Current monthly rent",
          "kind": "number"
        },
        {
          "id": "increaseOption",
          "label": "Proposed rent increase",
          "kind": "number"
        },
        {
          "id": "stayProbabilityPct",
          "label": "Estimated probability tenant stays at this increase",
          "kind": "number"
        },
        {
          "id": "turnoverCost",
          "label": "Turnover cost if they leave",
          "kind": "number"
        },
        {
          "id": "vacancyMonths",
          "label": "Expected vacancy if they leave",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "expectedValue",
          "label": "Expected annual value of this increase"
        },
        {
          "id": "gainVsNoIncrease",
          "label": "Expected gain vs no increase"
        },
        {
          "id": "annualIfStays",
          "label": "Annual rent if tenant stays"
        },
        {
          "id": "costIfLeaves",
          "label": "Total cost if tenant leaves"
        },
        {
          "id": "newRent",
          "label": "Proposed new monthly rent"
        }
      ]
    },
    {
      "slug": "move-in-move-out-inspection-cost",
      "url": "https://www.revenuelab.fyi/toolbox/move-in-move-out-inspection-cost",
      "title": "Move-In/Move-Out Inspection & Deposit Deduction Calculator",
      "category": "financial",
      "summary": "Apply depreciation for normal wear and tear to itemize a fair security deposit deduction.",
      "formula": "Remaining value = replacement cost × (1 − (age ÷ useful life)), floored at zero. Fair deduction = remaining value, not full replacement cost.",
      "inputs": [
        {
          "id": "replacementCost",
          "label": "Full replacement cost of item",
          "kind": "number"
        },
        {
          "id": "usefulLife",
          "label": "Typical useful life",
          "kind": "number"
        },
        {
          "id": "ageAtDamage",
          "label": "Age of item when damaged",
          "kind": "number"
        },
        {
          "id": "otherDamageCharges",
          "label": "Other legitimate damage charges (non-depreciable)",
          "kind": "number"
        },
        {
          "id": "depositHeld",
          "label": "Security deposit held",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "fairDeduction",
          "label": "Fair, depreciation-adjusted deduction"
        },
        {
          "id": "remainingValue",
          "label": "Remaining value of the damaged item"
        },
        {
          "id": "refundDue",
          "label": "Refund due to tenant"
        },
        {
          "id": "overchargeIfFullCost",
          "label": "Overcharge if billed at full replacement cost"
        },
        {
          "id": "depreciatedPct",
          "label": "Item's depreciated percentage"
        }
      ]
    },
    {
      "slug": "self-storage-facility-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/self-storage-facility-revenue",
      "title": "Self-Storage Facility Revenue Calculator",
      "category": "financial",
      "summary": "Model gross potential rent, economic occupancy, and net operating income for a storage property.",
      "formula": "GPR = rentable sq ft × rate per sq ft/yr. EGI = GPR × economic occupancy + ancillary income. NOI = EGI × (1 − expense ratio). Value = NOI ÷ cap rate.",
      "inputs": [
        {
          "id": "sqft",
          "label": "Net rentable square feet",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Average rent per sq ft/year",
          "kind": "number"
        },
        {
          "id": "occupancy",
          "label": "Economic occupancy",
          "kind": "number"
        },
        {
          "id": "ancillaryPct",
          "label": "Ancillary income (% of rent)",
          "kind": "number"
        },
        {
          "id": "expenseRatio",
          "label": "Operating expense ratio",
          "kind": "number"
        },
        {
          "id": "capRate",
          "label": "Market cap rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "noi",
          "label": "Annual net operating income"
        },
        {
          "id": "gpr",
          "label": "Gross potential rent"
        },
        {
          "id": "egi",
          "label": "Effective gross income"
        },
        {
          "id": "value",
          "label": "Implied property value"
        },
        {
          "id": "noiPerSqft",
          "label": "NOI per sq ft"
        }
      ]
    },
    {
      "slug": "self-storage-unit-mix-optimizer",
      "url": "https://www.revenuelab.fyi/toolbox/self-storage-unit-mix-optimizer",
      "title": "Self-Storage Unit Mix Revenue Calculator",
      "category": "financial",
      "summary": "Compare revenue across small, medium, and large unit allocations for the same building footprint.",
      "formula": "Revenue per tier = sq ft in tier × occupancy × rate per sq ft/yr. Total = sum of tiers. Blended rate = total revenue ÷ total sq ft.",
      "inputs": [
        {
          "id": "smallSqft",
          "label": "Small units — total sq ft",
          "kind": "number"
        },
        {
          "id": "smallRate",
          "label": "Small unit rate",
          "kind": "number"
        },
        {
          "id": "medSqft",
          "label": "Medium units — total sq ft",
          "kind": "number"
        },
        {
          "id": "medRate",
          "label": "Medium unit rate",
          "kind": "number"
        },
        {
          "id": "largeSqft",
          "label": "Large units — total sq ft",
          "kind": "number"
        },
        {
          "id": "largeRate",
          "label": "Large unit rate",
          "kind": "number"
        },
        {
          "id": "occupancy",
          "label": "Economic occupancy",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total annual revenue"
        },
        {
          "id": "small",
          "label": "Small unit revenue"
        },
        {
          "id": "med",
          "label": "Medium unit revenue"
        },
        {
          "id": "large",
          "label": "Large unit revenue"
        },
        {
          "id": "blendedRate",
          "label": "Blended rate per occupied sq ft"
        }
      ]
    },
    {
      "slug": "self-storage-occupancy-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/self-storage-occupancy-breakeven",
      "title": "Self-Storage Occupancy Breakeven Calculator",
      "category": "financial",
      "summary": "Find the occupancy percentage where rent revenue covers fixed and debt costs.",
      "formula": "Breakeven occupancy = (fixed costs + debt service) ÷ (rentable sq ft × rate/sqft × (1 − variable cost %)).",
      "inputs": [
        {
          "id": "sqft",
          "label": "Net rentable square feet",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Average rent per sq ft/yr",
          "kind": "number"
        },
        {
          "id": "variablePct",
          "label": "Variable cost % of rent (marketing, fees, bad debt)",
          "kind": "number"
        },
        {
          "id": "fixedCosts",
          "label": "Annual fixed operating costs",
          "kind": "number"
        },
        {
          "id": "debtService",
          "label": "Annual debt service",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakeven",
          "label": "Breakeven economic occupancy"
        },
        {
          "id": "fullRevenue",
          "label": "100% occupancy revenue (gross)"
        },
        {
          "id": "totalFixed",
          "label": "Fixed cost + debt service"
        },
        {
          "id": "marginAt85",
          "label": "Cushion at 85% occupancy"
        }
      ]
    },
    {
      "slug": "self-storage-rent-per-sqft",
      "url": "https://www.revenuelab.fyi/toolbox/self-storage-rent-per-sqft",
      "title": "Self-Storage Rent Per Square Foot Calculator",
      "category": "financial",
      "summary": "Convert a monthly unit price into an annualized rate per square foot to compare units and competitors fairly.",
      "formula": "Sq ft = length × width. Rate/sqft/yr = (monthly rent × 12) ÷ sq ft. Variance = (your rate − market rate) ÷ market rate.",
      "inputs": [
        {
          "id": "length",
          "label": "Unit length",
          "kind": "number"
        },
        {
          "id": "width",
          "label": "Unit width",
          "kind": "number"
        },
        {
          "id": "monthlyRent",
          "label": "Monthly rent",
          "kind": "number"
        },
        {
          "id": "marketRate",
          "label": "Market benchmark rate per sq ft/yr",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ratePerSqft",
          "label": "Rate per sq ft / year"
        },
        {
          "id": "sqft",
          "label": "Unit square footage"
        },
        {
          "id": "annualRent",
          "label": "Annual rent for this unit"
        },
        {
          "id": "variance",
          "label": "Variance vs. market benchmark"
        }
      ]
    },
    {
      "slug": "laundromat-turns-per-day",
      "url": "https://www.revenuelab.fyi/toolbox/laundromat-turns-per-day",
      "title": "Laundromat Turns Per Day Calculator",
      "category": "financial",
      "summary": "Estimate daily washer turns and revenue based on operating hours and cycle time.",
      "formula": "Turns per machine per day = operating hours ÷ (cycle minutes ÷ 60) × utilization rate. Daily revenue = turns × machines × price per turn.",
      "inputs": [
        {
          "id": "hours",
          "label": "Operating hours per day",
          "kind": "number"
        },
        {
          "id": "cycleMin",
          "label": "Average cycle time",
          "kind": "number"
        },
        {
          "id": "utilization",
          "label": "Average utilization rate",
          "kind": "number"
        },
        {
          "id": "machines",
          "label": "Number of washers",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Average price per wash",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "turnsPerMachine",
          "label": "Turns per machine per day"
        },
        {
          "id": "dailyRevenue",
          "label": "Daily wash revenue"
        },
        {
          "id": "monthlyRevenue",
          "label": "Monthly wash revenue"
        },
        {
          "id": "cyclesPossible",
          "label": "Max possible cycles if 100% utilized"
        }
      ]
    },
    {
      "slug": "laundromat-machine-payback",
      "url": "https://www.revenuelab.fyi/toolbox/laundromat-machine-payback",
      "title": "Laundromat Machine Payback Calculator",
      "category": "financial",
      "summary": "Find how long it takes a washer or dryer to pay back its purchase and install cost.",
      "formula": "Net profit per turn = price per turn − cost per turn. Daily profit = turns/day × net profit per turn. Payback months = machine cost ÷ (daily profit × 30.4).",
      "inputs": [
        {
          "id": "machineCost",
          "label": "Machine cost + installation",
          "kind": "number"
        },
        {
          "id": "pricePerTurn",
          "label": "Average price per turn",
          "kind": "number"
        },
        {
          "id": "costPerTurn",
          "label": "Utility + maintenance cost per turn",
          "kind": "number"
        },
        {
          "id": "turnsPerDay",
          "label": "Turns per day",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paybackMonths",
          "label": "Payback period"
        },
        {
          "id": "monthlyProfit",
          "label": "Monthly profit from this machine"
        },
        {
          "id": "annualProfit",
          "label": "Annual profit from this machine"
        },
        {
          "id": "netPerTurn",
          "label": "Net profit per turn"
        }
      ]
    },
    {
      "slug": "laundromat-utility-cost-per-load",
      "url": "https://www.revenuelab.fyi/toolbox/laundromat-utility-cost-per-load",
      "title": "Laundromat Utility Cost Per Load Calculator",
      "category": "financial",
      "summary": "Break down water, sewer, gas, and electric cost for a single wash-dry cycle.",
      "formula": "Water+sewer cost = gallons × (water rate + sewer rate). Gas cost = therms used × rate. Electric cost = kWh × rate. Total = sum of all three.",
      "inputs": [
        {
          "id": "gallons",
          "label": "Gallons per wash load",
          "kind": "number"
        },
        {
          "id": "waterRate",
          "label": "Water rate",
          "kind": "number"
        },
        {
          "id": "sewerRate",
          "label": "Sewer rate",
          "kind": "number"
        },
        {
          "id": "therms",
          "label": "Gas therms per wash+dry cycle",
          "kind": "number"
        },
        {
          "id": "gasRate",
          "label": "Gas rate",
          "kind": "number"
        },
        {
          "id": "kwh",
          "label": "Electric kWh per cycle",
          "kind": "number"
        },
        {
          "id": "elecRate",
          "label": "Electric rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total utility cost per load"
        },
        {
          "id": "waterCost",
          "label": "Water + sewer cost"
        },
        {
          "id": "gasCost",
          "label": "Gas cost"
        },
        {
          "id": "elecCost",
          "label": "Electric cost"
        }
      ]
    },
    {
      "slug": "laundromat-revenue-projection",
      "url": "https://www.revenuelab.fyi/toolbox/laundromat-revenue-projection",
      "title": "Laundromat Monthly Revenue Projection Calculator",
      "category": "financial",
      "summary": "Project monthly revenue, expenses, and net profit for a coin or card laundromat.",
      "formula": "Revenue = wash revenue + dry revenue + ancillary. Total cost = utilities + rent + labor + other fixed. Net profit = revenue − total cost. Margin = net profit ÷ revenue.",
      "inputs": [
        {
          "id": "washRevenue",
          "label": "Monthly wash revenue",
          "kind": "number"
        },
        {
          "id": "dryRevenue",
          "label": "Monthly dry revenue",
          "kind": "number"
        },
        {
          "id": "ancillary",
          "label": "Monthly vending + WDF revenue",
          "kind": "number"
        },
        {
          "id": "utilities",
          "label": "Monthly utilities",
          "kind": "number"
        },
        {
          "id": "rent",
          "label": "Monthly rent",
          "kind": "number"
        },
        {
          "id": "labor",
          "label": "Monthly labor",
          "kind": "number"
        },
        {
          "id": "otherFixed",
          "label": "Other fixed costs (insurance, supplies, etc.)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netProfit",
          "label": "Monthly net profit"
        },
        {
          "id": "revenue",
          "label": "Total monthly revenue"
        },
        {
          "id": "cost",
          "label": "Total monthly cost"
        },
        {
          "id": "margin",
          "label": "Net margin"
        },
        {
          "id": "annualProfit",
          "label": "Annualized net profit"
        }
      ]
    },
    {
      "slug": "car-wash-tunnel-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/car-wash-tunnel-revenue",
      "title": "Car Wash Tunnel Revenue Calculator",
      "category": "financial",
      "summary": "Project daily and monthly revenue for a conveyor tunnel wash from cars-per-hour throughput.",
      "formula": "Cars per day = tunnel capacity/hr × hours open × utilization. Revenue = (retail cars × retail price) + (member washes × allocated membership value).",
      "inputs": [
        {
          "id": "capacity",
          "label": "Tunnel capacity",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Operating hours per day",
          "kind": "number"
        },
        {
          "id": "utilization",
          "label": "Average utilization",
          "kind": "number"
        },
        {
          "id": "memberShare",
          "label": "Share of washes from members",
          "kind": "number"
        },
        {
          "id": "retailPrice",
          "label": "Average retail ticket",
          "kind": "number"
        },
        {
          "id": "memberValue",
          "label": "Revenue value per member wash",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "revenue",
          "label": "Daily revenue"
        },
        {
          "id": "carsPerDay",
          "label": "Cars washed per day"
        },
        {
          "id": "monthlyRevenue",
          "label": "Monthly revenue"
        },
        {
          "id": "retailCars",
          "label": "Retail (non-member) cars/day"
        },
        {
          "id": "memberCars",
          "label": "Member cars/day"
        }
      ]
    },
    {
      "slug": "car-wash-iba-membership-value",
      "url": "https://www.revenuelab.fyi/toolbox/car-wash-iba-membership-value",
      "title": "Car Wash IBA (In-Bay Automatic) Membership Value Calculator",
      "category": "financial",
      "summary": "Compare in-bay automatic single-wash economics against unlimited membership breakeven visits.",
      "formula": "Breakeven visits = membership price ÷ per-wash price. Bay-hours needed = cars/day × minutes per wash ÷ 60. Revenue per bay-hour = daily revenue ÷ bay-hours operated.",
      "inputs": [
        {
          "id": "perWashPrice",
          "label": "Single wash price",
          "kind": "number"
        },
        {
          "id": "membershipPrice",
          "label": "Unlimited membership price",
          "kind": "number"
        },
        {
          "id": "carsPerDay",
          "label": "Cars washed per day (this bay)",
          "kind": "number"
        },
        {
          "id": "washMinutes",
          "label": "Minutes per wash cycle incl. entry/exit",
          "kind": "number"
        },
        {
          "id": "bayHoursOpen",
          "label": "Bay hours open per day",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenVisits",
          "label": "Visits/month for membership to break even"
        },
        {
          "id": "bayHoursNeeded",
          "label": "Bay-hours needed per day"
        },
        {
          "id": "capacityUsed",
          "label": "Bay capacity utilized"
        },
        {
          "id": "revenuePerBayHour",
          "label": "Revenue per bay-hour"
        }
      ]
    },
    {
      "slug": "car-wash-chemical-cost-per-car",
      "url": "https://www.revenuelab.fyi/toolbox/car-wash-chemical-cost-per-car",
      "title": "Car Wash Chemical Cost Per Car Calculator",
      "category": "financial",
      "summary": "Break down soap, wax, and drying agent cost per vehicle to true up wash package margins.",
      "formula": "Diluted cost per oz = concentrate cost per gallon ÷ (128 × dilution ratio + 1). Cost per car for a chemical = oz used × diluted cost per oz. Total = sum across chemicals.",
      "inputs": [
        {
          "id": "presoakCost",
          "label": "Pre-soak concentrate cost",
          "kind": "number"
        },
        {
          "id": "presoakDilution",
          "label": "Pre-soak dilution ratio (parts water : 1 part chemical)",
          "kind": "number"
        },
        {
          "id": "presoakOz",
          "label": "Pre-soak oz used per car (diluted)",
          "kind": "number"
        },
        {
          "id": "soapCost",
          "label": "Soap concentrate cost",
          "kind": "number"
        },
        {
          "id": "soapDilution",
          "label": "Soap dilution ratio",
          "kind": "number"
        },
        {
          "id": "soapOz",
          "label": "Soap oz used per car (diluted)",
          "kind": "number"
        },
        {
          "id": "waxCost",
          "label": "Wax/sealant concentrate cost",
          "kind": "number"
        },
        {
          "id": "waxOz",
          "label": "Wax oz used per car (diluted)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total chemical cost per car"
        },
        {
          "id": "presoakPerCar",
          "label": "Pre-soak cost per car"
        },
        {
          "id": "soapPerCar",
          "label": "Soap cost per car"
        },
        {
          "id": "waxPerCar",
          "label": "Wax/sealant cost per car"
        }
      ]
    },
    {
      "slug": "car-wash-membership-churn-value",
      "url": "https://www.revenuelab.fyi/toolbox/car-wash-membership-churn-value",
      "title": "Car Wash Membership Churn & Lifetime Value Calculator",
      "category": "financial",
      "summary": "Turn monthly churn rate and membership price into customer lifetime value and payback on signup cost.",
      "formula": "Average lifetime (months) = 1 ÷ monthly churn rate. LTV = lifetime × price × margin %. Payback months = acquisition cost ÷ (price × margin %).",
      "inputs": [
        {
          "id": "monthlyChurn",
          "label": "Monthly churn rate",
          "kind": "number"
        },
        {
          "id": "price",
          "label": "Membership price",
          "kind": "number"
        },
        {
          "id": "marginPct",
          "label": "Gross margin after wash cost",
          "kind": "number"
        },
        {
          "id": "acquisitionCost",
          "label": "Cost to acquire one member",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ltv",
          "label": "Lifetime gross profit per member"
        },
        {
          "id": "lifetimeMonths",
          "label": "Average member lifetime"
        },
        {
          "id": "monthlyProfit",
          "label": "Gross profit per member per month"
        },
        {
          "id": "paybackMonths",
          "label": "Months to recover acquisition cost"
        }
      ]
    },
    {
      "slug": "vending-machine-route-profit",
      "url": "https://www.revenuelab.fyi/toolbox/vending-machine-route-profit",
      "title": "Vending Machine Route Profit Calculator",
      "category": "financial",
      "summary": "Roll up per-machine sales, commission, and restocking cost across a route into monthly profit.",
      "formula": "Gross sales = machines × avg weekly sales × 4.33. Product cost = gross × cost %. Commission = gross × commission %. Service cost = machines × visits/month × cost per visit. Net profit = gross − product − commission − service − fixed.",
      "inputs": [
        {
          "id": "machines",
          "label": "Number of machines",
          "kind": "number"
        },
        {
          "id": "weeklySales",
          "label": "Average weekly sales per machine",
          "kind": "number"
        },
        {
          "id": "productCostPct",
          "label": "Product cost (% of sales)",
          "kind": "number"
        },
        {
          "id": "commissionPct",
          "label": "Location commission (% of sales)",
          "kind": "number"
        },
        {
          "id": "visitsPerMonth",
          "label": "Restock visits per machine per month",
          "kind": "number"
        },
        {
          "id": "costPerVisit",
          "label": "Labor + mileage cost per visit",
          "kind": "number"
        },
        {
          "id": "fixedMonthly",
          "label": "Other fixed monthly costs (insurance, card fees)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netProfit",
          "label": "Monthly net profit"
        },
        {
          "id": "grossSales",
          "label": "Monthly gross sales"
        },
        {
          "id": "productCost",
          "label": "Product cost"
        },
        {
          "id": "commission",
          "label": "Location commission paid"
        },
        {
          "id": "serviceCost",
          "label": "Route service cost"
        }
      ]
    },
    {
      "slug": "vending-machine-slot-velocity",
      "url": "https://www.revenuelab.fyi/toolbox/vending-machine-slot-velocity",
      "title": "Vending Machine Slot Velocity Calculator",
      "category": "financial",
      "summary": "Find units sold per slot per week and identify dead inventory tying up machine space.",
      "formula": "Average velocity = total weekly units ÷ slot count. Minimum viable = restock interval coverage ÷ days between visits. Underperforming slots = velocity below threshold.",
      "inputs": [
        {
          "id": "weeklyUnits",
          "label": "Total units sold per week",
          "kind": "number"
        },
        {
          "id": "slotCount",
          "label": "Number of slots in machine",
          "kind": "number"
        },
        {
          "id": "restockDays",
          "label": "Days between restocking visits",
          "kind": "number"
        },
        {
          "id": "minUnitsPerVisit",
          "label": "Minimum units per slot per visit to justify the slot",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "avgVelocity",
          "label": "Average units per slot per week"
        },
        {
          "id": "minWeeklyVelocity",
          "label": "Minimum viable velocity threshold"
        },
        {
          "id": "velocityGap",
          "label": "Cushion above/below threshold"
        },
        {
          "id": "annualUnitsPerSlot",
          "label": "Annual units per slot (avg)"
        }
      ]
    },
    {
      "slug": "vending-machine-shrink-loss",
      "url": "https://www.revenuelab.fyi/toolbox/vending-machine-shrink-loss",
      "title": "Vending Machine Shrink Loss Calculator",
      "category": "financial",
      "summary": "Quantify product loss from theft, jams, and spoilage as a percentage of revenue.",
      "formula": "Shrink units = units loaded − units sold − units remaining. Shrink cost = shrink units × unit cost. Shrink % of revenue = shrink cost ÷ (units sold × price).",
      "inputs": [
        {
          "id": "unitsLoaded",
          "label": "Units loaded this cycle",
          "kind": "number"
        },
        {
          "id": "unitsSold",
          "label": "Units sold (per machine vend count)",
          "kind": "number"
        },
        {
          "id": "unitsRemaining",
          "label": "Units remaining at next restock",
          "kind": "number"
        },
        {
          "id": "unitCost",
          "label": "Average cost per unit",
          "kind": "number"
        },
        {
          "id": "unitPrice",
          "label": "Average sale price per unit",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "shrinkCost",
          "label": "Shrink cost this cycle"
        },
        {
          "id": "shrinkUnits",
          "label": "Shrink units"
        },
        {
          "id": "shrinkPct",
          "label": "Shrink as % of revenue"
        },
        {
          "id": "shrinkUnitPct",
          "label": "Shrink as % of units loaded"
        }
      ]
    },
    {
      "slug": "vending-machine-roi",
      "url": "https://www.revenuelab.fyi/toolbox/vending-machine-roi",
      "title": "Vending Machine ROI Calculator",
      "category": "financial",
      "summary": "Compute payback period and annual return on a new or used vending machine purchase.",
      "formula": "Monthly net cash flow = sales × (1 − product cost % − commission %) − service cost. Payback months = machine cost ÷ net cash flow. Annual ROI = (net cash flow × 12) ÷ machine cost.",
      "inputs": [
        {
          "id": "machineCost",
          "label": "Machine purchase + first stock cost",
          "kind": "number"
        },
        {
          "id": "monthlySales",
          "label": "Expected monthly gross sales",
          "kind": "number"
        },
        {
          "id": "productCostPct",
          "label": "Product cost (% of sales)",
          "kind": "number"
        },
        {
          "id": "commissionPct",
          "label": "Location commission (% of sales)",
          "kind": "number"
        },
        {
          "id": "serviceCost",
          "label": "Monthly service cost (labor, fees)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paybackMonths",
          "label": "Payback period"
        },
        {
          "id": "netCashFlow",
          "label": "Monthly net cash flow"
        },
        {
          "id": "annualRoi",
          "label": "Annual ROI"
        },
        {
          "id": "annualProfit",
          "label": "Annual net profit"
        }
      ]
    },
    {
      "slug": "atm-placement-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/atm-placement-revenue",
      "title": "ATM Placement Revenue Calculator",
      "category": "financial",
      "summary": "Project monthly surcharge income and net profit for a placed ATM based on transaction volume.",
      "formula": "Gross surcharge revenue = transactions/month × surcharge fee. Net revenue = gross − location commission − processing cost − cash logistics cost.",
      "inputs": [
        {
          "id": "transactions",
          "label": "Transactions per month",
          "kind": "number"
        },
        {
          "id": "surcharge",
          "label": "Surcharge fee per transaction",
          "kind": "number"
        },
        {
          "id": "locationCommission",
          "label": "Commission paid to location per transaction",
          "kind": "number"
        },
        {
          "id": "processingCost",
          "label": "Network/processing cost per transaction",
          "kind": "number"
        },
        {
          "id": "cashLogisticsCost",
          "label": "Monthly cash loading/armored service cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netProfit",
          "label": "Monthly net profit"
        },
        {
          "id": "grossRevenue",
          "label": "Gross surcharge revenue"
        },
        {
          "id": "commissionCost",
          "label": "Location commission paid"
        },
        {
          "id": "annualProfit",
          "label": "Annualized net profit"
        }
      ]
    },
    {
      "slug": "atm-cash-load-cost",
      "url": "https://www.revenuelab.fyi/toolbox/atm-cash-load-cost",
      "title": "ATM Cash Load & Vault Cash Cost Calculator",
      "category": "financial",
      "summary": "Estimate opportunity cost and logistics cost of the cash you keep loaded in an ATM.",
      "formula": "Opportunity/vault cost = average cash balance × annual rate ÷ 12. Logistics cost = loads per month × cost per load. Total = opportunity cost + logistics cost.",
      "inputs": [
        {
          "id": "avgBalance",
          "label": "Average cash balance held",
          "kind": "number"
        },
        {
          "id": "annualRate",
          "label": "Opportunity cost / vault-cash rate",
          "kind": "number"
        },
        {
          "id": "loadsPerMonth",
          "label": "Cash loads per month",
          "kind": "number"
        },
        {
          "id": "costPerLoad",
          "label": "Cost per load trip (labor/armored service)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total monthly cash cost"
        },
        {
          "id": "carryingCost",
          "label": "Opportunity/vault carrying cost"
        },
        {
          "id": "logisticsCost",
          "label": "Loading logistics cost"
        },
        {
          "id": "annualCost",
          "label": "Annualized total cost"
        }
      ]
    },
    {
      "slug": "billboard-lease-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/billboard-lease-revenue",
      "title": "Billboard Lease Revenue Calculator",
      "category": "financial",
      "summary": "Project net income from leasing billboard faces after land rent and maintenance.",
      "formula": "Gross revenue = faces × monthly rate × 12 × occupancy %. Net income = gross revenue − annual land rent − annual maintenance.",
      "inputs": [
        {
          "id": "faces",
          "label": "Number of ad faces",
          "kind": "number"
        },
        {
          "id": "monthlyRate",
          "label": "Monthly lease rate per face",
          "kind": "number"
        },
        {
          "id": "occupancy",
          "label": "Average occupancy across the year",
          "kind": "number"
        },
        {
          "id": "landRent",
          "label": "Annual ground lease / land cost",
          "kind": "number"
        },
        {
          "id": "maintenance",
          "label": "Annual maintenance + insurance",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netIncome",
          "label": "Annual net income"
        },
        {
          "id": "grossRevenue",
          "label": "Annual gross lease revenue"
        },
        {
          "id": "netMargin",
          "label": "Net margin"
        }
      ]
    },
    {
      "slug": "billboard-cpm-value",
      "url": "https://www.revenuelab.fyi/toolbox/billboard-cpm-value",
      "title": "Billboard CPM (Cost Per Thousand Impressions) Value Calculator",
      "category": "financial",
      "summary": "Convert billboard lease price and traffic count into cost-per-thousand-impressions for advertiser comparison.",
      "formula": "Monthly impressions = daily traffic × audience factor × 30.4. CPM = (monthly lease rate ÷ monthly impressions) × 1000.",
      "inputs": [
        {
          "id": "dailyTraffic",
          "label": "Average daily traffic count",
          "kind": "number"
        },
        {
          "id": "audienceFactor",
          "label": "Audience/visibility adjustment factor",
          "kind": "number"
        },
        {
          "id": "monthlyRate",
          "label": "Monthly lease rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cpm",
          "label": "Cost per thousand impressions"
        },
        {
          "id": "monthlyImpressions",
          "label": "Estimated monthly impressions"
        },
        {
          "id": "dailyImpressions",
          "label": "Estimated daily impressions"
        }
      ]
    },
    {
      "slug": "parking-lot-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/parking-lot-revenue",
      "title": "Parking Lot Revenue Calculator",
      "category": "financial",
      "summary": "Project daily and annual revenue from a surface parking lot based on spaces, turnover, and rate.",
      "formula": "Transient revenue = spaces × turns/day × rate/turn × 30.4 × occupancy %. Permit revenue = permit spaces × monthly permit rate. Net income = total revenue × (1 − expense ratio).",
      "inputs": [
        {
          "id": "transientSpaces",
          "label": "Transient (pay-per-visit) spaces",
          "kind": "number"
        },
        {
          "id": "turnsPerDay",
          "label": "Turns per space per day",
          "kind": "number"
        },
        {
          "id": "ratePerTurn",
          "label": "Average rate per turn/visit",
          "kind": "number"
        },
        {
          "id": "occupancy",
          "label": "Average occupancy",
          "kind": "number"
        },
        {
          "id": "permitSpaces",
          "label": "Monthly permit spaces",
          "kind": "number"
        },
        {
          "id": "permitRate",
          "label": "Monthly permit rate per space",
          "kind": "number"
        },
        {
          "id": "expenseRatio",
          "label": "Operating expense ratio",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netIncome",
          "label": "Monthly net operating income"
        },
        {
          "id": "totalRevenue",
          "label": "Monthly gross revenue"
        },
        {
          "id": "transientRevenue",
          "label": "Transient revenue"
        },
        {
          "id": "permitRevenue",
          "label": "Permit revenue"
        },
        {
          "id": "annualNet",
          "label": "Annualized net income"
        }
      ]
    },
    {
      "slug": "parking-garage-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/parking-garage-breakeven",
      "title": "Parking Garage Breakeven Calculator",
      "category": "financial",
      "summary": "Find the occupancy or rate combination a structured parking facility needs to cover fixed costs.",
      "formula": "Breakeven occupancy = (fixed costs + debt service) ÷ (spaces × daily rate × 30.4 × (1 − variable cost %)).",
      "inputs": [
        {
          "id": "spaces",
          "label": "Total garage spaces",
          "kind": "number"
        },
        {
          "id": "dailyRate",
          "label": "Average revenue per space per day",
          "kind": "number"
        },
        {
          "id": "variablePct",
          "label": "Variable cost % of revenue",
          "kind": "number"
        },
        {
          "id": "fixedCosts",
          "label": "Annual fixed operating cost",
          "kind": "number"
        },
        {
          "id": "debtService",
          "label": "Annual debt service",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakeven",
          "label": "Breakeven occupancy"
        },
        {
          "id": "fullRevenue",
          "label": "100% occupancy annual revenue"
        },
        {
          "id": "totalFixed",
          "label": "Fixed cost + debt service"
        }
      ]
    },
    {
      "slug": "ev-charger-station-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/ev-charger-station-revenue",
      "title": "EV Charger Station Revenue Calculator",
      "category": "financial",
      "summary": "Project monthly revenue from a DC fast or Level 2 charging station based on sessions and kWh dispensed.",
      "formula": "Gross revenue = sessions/day × kWh/session × price/kWh × 30.4. Electricity cost = sessions/day × kWh/session × wholesale rate × 30.4. Net profit = gross revenue − electricity cost − fixed monthly fees.",
      "inputs": [
        {
          "id": "sessionsPerDay",
          "label": "Charging sessions per day",
          "kind": "number"
        },
        {
          "id": "kwhPerSession",
          "label": "Average kWh dispensed per session",
          "kind": "number"
        },
        {
          "id": "priceKwh",
          "label": "Price charged per kWh",
          "kind": "number"
        },
        {
          "id": "wholesaleKwh",
          "label": "Utility electricity cost per kWh",
          "kind": "number"
        },
        {
          "id": "fixedFees",
          "label": "Monthly network/software/demand charge fees",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netProfit",
          "label": "Monthly net profit per charger"
        },
        {
          "id": "grossRevenue",
          "label": "Monthly gross revenue"
        },
        {
          "id": "electricityCost",
          "label": "Monthly electricity cost"
        },
        {
          "id": "monthlyKwh",
          "label": "Monthly kWh dispensed"
        },
        {
          "id": "annualProfit",
          "label": "Annualized net profit"
        }
      ]
    },
    {
      "slug": "ev-charger-payback-period",
      "url": "https://www.revenuelab.fyi/toolbox/ev-charger-payback-period",
      "title": "EV Charger Payback Period Calculator",
      "category": "financial",
      "summary": "Calculate how many months it takes an EV charger to pay back hardware, installation, and permitting cost.",
      "formula": "Net installed cost = total cost − incentives/rebates. Payback months = net installed cost ÷ monthly net profit. Annual ROI = (monthly net profit × 12) ÷ net installed cost.",
      "inputs": [
        {
          "id": "installedCost",
          "label": "Total installed cost (hardware + install + permits)",
          "kind": "number"
        },
        {
          "id": "incentives",
          "label": "Rebates / incentives received",
          "kind": "number"
        },
        {
          "id": "monthlyProfit",
          "label": "Expected monthly net profit per charger",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paybackMonths",
          "label": "Payback period"
        },
        {
          "id": "netCost",
          "label": "Net installed cost after incentives"
        },
        {
          "id": "annualRoi",
          "label": "Annual ROI"
        },
        {
          "id": "annualProfit",
          "label": "Annual net profit per charger"
        }
      ]
    },
    {
      "slug": "kiosk-franchise-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/kiosk-franchise-revenue",
      "title": "Kiosk Franchise Revenue Calculator",
      "category": "financial",
      "summary": "Project daily sales, royalty, and net profit for a retail kiosk or cart franchise unit.",
      "formula": "Daily sales = traffic × conversion % × avg transaction. Rent = base + (gross sales × % rent). Net profit = gross sales − royalty − rent − staffing − supplies.",
      "inputs": [
        {
          "id": "dailyTraffic",
          "label": "Daily foot traffic passing kiosk",
          "kind": "number"
        },
        {
          "id": "conversionPct",
          "label": "Conversion rate",
          "kind": "number"
        },
        {
          "id": "avgTransaction",
          "label": "Average transaction value",
          "kind": "number"
        },
        {
          "id": "royaltyPct",
          "label": "Franchise royalty (% of gross sales)",
          "kind": "number"
        },
        {
          "id": "rentBase",
          "label": "Monthly base rent",
          "kind": "number"
        },
        {
          "id": "rentPctSales",
          "label": "Percentage rent (% of gross sales)",
          "kind": "number"
        },
        {
          "id": "monthlyStaffing",
          "label": "Monthly staffing + other costs",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netProfit",
          "label": "Monthly net profit"
        },
        {
          "id": "monthlySales",
          "label": "Monthly gross sales"
        },
        {
          "id": "royalty",
          "label": "Franchise royalty paid"
        },
        {
          "id": "rent",
          "label": "Total monthly rent"
        },
        {
          "id": "dailySales",
          "label": "Average daily sales"
        }
      ]
    },
    {
      "slug": "vet-revenue-per-dvm",
      "url": "https://www.revenuelab.fyi/toolbox/vet-revenue-per-dvm",
      "title": "Veterinarian Revenue Per DVM Calculator",
      "category": "financial",
      "summary": "Annual production per full-time veterinarian against benchmark ranges.",
      "formula": "Revenue per DVM = total annual revenue ÷ FTE doctors; revenue per visit = revenue per DVM ÷ annual visits per DVM.",
      "inputs": [
        {
          "id": "revenue",
          "label": "Total annual clinic revenue",
          "kind": "number"
        },
        {
          "id": "fteDvms",
          "label": "Full-time-equivalent DVMs",
          "kind": "number"
        },
        {
          "id": "visitsPerDvm",
          "label": "Annual visits per DVM",
          "kind": "number"
        },
        {
          "id": "benchmark",
          "label": "Benchmark revenue per DVM",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perDvm",
          "label": "Revenue per DVM"
        },
        {
          "id": "perVisit",
          "label": "Average revenue per visit"
        },
        {
          "id": "gap",
          "label": "Gap vs. benchmark"
        },
        {
          "id": "gapPct",
          "label": "Gap vs. benchmark"
        },
        {
          "id": "totalVisits",
          "label": "Total annual visits"
        }
      ]
    },
    {
      "slug": "exam-room-utilization",
      "url": "https://www.revenuelab.fyi/toolbox/exam-room-utilization",
      "title": "Exam Room Utilization Calculator",
      "category": "financial",
      "summary": "How much of your available exam room hours are actually booked.",
      "formula": "Utilization = booked exam-room hours ÷ (rooms × operating hours per day × days open) × 100.",
      "inputs": [
        {
          "id": "rooms",
          "label": "Exam rooms",
          "kind": "number"
        },
        {
          "id": "hoursDay",
          "label": "Operating hours per day",
          "kind": "number"
        },
        {
          "id": "daysWeek",
          "label": "Days open per week",
          "kind": "number"
        },
        {
          "id": "avgVisitMin",
          "label": "Average visit length",
          "kind": "number"
        },
        {
          "id": "visitsWeek",
          "label": "Actual visits per week",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "utilization",
          "label": "Exam room utilization"
        },
        {
          "id": "bookedHours",
          "label": "Booked hours per week"
        },
        {
          "id": "capacityHours",
          "label": "Available hours per week"
        },
        {
          "id": "capacityVisits",
          "label": "Max visits per week at this pace"
        },
        {
          "id": "headroomVisits",
          "label": "Remaining weekly visit capacity"
        }
      ]
    },
    {
      "slug": "dental-chair-production",
      "url": "https://www.revenuelab.fyi/toolbox/dental-chair-production",
      "title": "Dental Chair Hourly Production Calculator",
      "category": "financial",
      "summary": "Revenue generated per chair-hour after adjustments and lab costs.",
      "formula": "Net production/hour = (gross production − adjustments − lab fees) ÷ chair-hours worked.",
      "inputs": [
        {
          "id": "grossProduction",
          "label": "Gross production",
          "kind": "number"
        },
        {
          "id": "adjustments",
          "label": "Insurance write-offs & discounts",
          "kind": "number"
        },
        {
          "id": "labFees",
          "label": "Outsourced lab fees",
          "kind": "number"
        },
        {
          "id": "chairHours",
          "label": "Chair-hours worked in period",
          "kind": "number"
        },
        {
          "id": "chairs",
          "label": "Number of chairs measured",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perHour",
          "label": "Net production per chair-hour"
        },
        {
          "id": "net",
          "label": "Net production for period"
        },
        {
          "id": "perChair",
          "label": "Per-chair hourly rate"
        },
        {
          "id": "adjustmentRate",
          "label": "Adjustment rate of gross"
        },
        {
          "id": "annualized",
          "label": "Annualized value at 1,800 hrs/yr"
        }
      ]
    },
    {
      "slug": "hygiene-department-profit",
      "url": "https://www.revenuelab.fyi/toolbox/hygiene-department-profit",
      "title": "Hygiene Department Profitability Calculator",
      "category": "financial",
      "summary": "Net margin of your hygiene program after wages, supplies, and lab costs.",
      "formula": "Hygiene net margin = (hygiene production − hygienist wages − supplies − lab/outsourced costs) ÷ hygiene production.",
      "inputs": [
        {
          "id": "production",
          "label": "Monthly hygiene production",
          "kind": "number"
        },
        {
          "id": "wages",
          "label": "Hygienist wages (incl. payroll tax)",
          "kind": "number"
        },
        {
          "id": "supplies",
          "label": "Supplies & disposables",
          "kind": "number"
        },
        {
          "id": "outsourced",
          "label": "Outsourced/lab costs",
          "kind": "number"
        },
        {
          "id": "hygieneHours",
          "label": "Hygiene hours worked",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netProfit",
          "label": "Monthly hygiene net profit"
        },
        {
          "id": "margin",
          "label": "Net margin"
        },
        {
          "id": "perHour",
          "label": "Production per hygiene hour"
        },
        {
          "id": "wageRatio",
          "label": "Wages as % of production"
        }
      ]
    },
    {
      "slug": "vet-practice-valuation-multiple",
      "url": "https://www.revenuelab.fyi/toolbox/vet-practice-valuation-multiple",
      "title": "Veterinary Practice Valuation Calculator",
      "category": "financial",
      "summary": "Estimate practice value from EBITDA and current market multiples.",
      "formula": "Adjusted EBITDA = net income + owner comp above market + interest + taxes + D&A − market-rate replacement doctor cost; Value = adjusted EBITDA × multiple.",
      "inputs": [
        {
          "id": "revenue",
          "label": "Annual revenue",
          "kind": "number"
        },
        {
          "id": "netIncome",
          "label": "Reported net income",
          "kind": "number"
        },
        {
          "id": "ownerComp",
          "label": "Owner compensation paid",
          "kind": "number"
        },
        {
          "id": "marketDoctorPay",
          "label": "Fair-market replacement doctor pay",
          "kind": "number"
        },
        {
          "id": "addbacks",
          "label": "Other add-backs (interest, D&A, discretionary)",
          "kind": "number"
        },
        {
          "id": "multiple",
          "label": "EBITDA multiple",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "value",
          "label": "Estimated practice value"
        },
        {
          "id": "ebitda",
          "label": "Adjusted EBITDA"
        },
        {
          "id": "ebitdaMargin",
          "label": "EBITDA margin"
        },
        {
          "id": "revenueMultipleImplied",
          "label": "Implied revenue multiple"
        }
      ]
    },
    {
      "slug": "associate-buy-in",
      "url": "https://www.revenuelab.fyi/toolbox/associate-buy-in",
      "title": "Associate Veterinarian Buy-In Calculator",
      "category": "financial",
      "summary": "Price an ownership stake and monthly payment for an incoming partner.",
      "formula": "Buy-in price = practice value × ownership %; monthly payment via standard amortization at the given rate and term.",
      "inputs": [
        {
          "id": "practiceValue",
          "label": "Practice value (from valuation)",
          "kind": "number"
        },
        {
          "id": "ownershipPct",
          "label": "Ownership stake purchased",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Note interest rate",
          "kind": "number"
        },
        {
          "id": "years",
          "label": "Note term",
          "kind": "number"
        },
        {
          "id": "annualDistribution",
          "label": "Expected annual owner distribution at this stake",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Buy-in price"
        },
        {
          "id": "payment",
          "label": "Monthly note payment"
        },
        {
          "id": "totalInterest",
          "label": "Total interest over term"
        },
        {
          "id": "netMonthlyCashFlow",
          "label": "Net monthly cash flow (distribution − payment)"
        }
      ]
    },
    {
      "slug": "imaging-equipment-lease-vs-buy",
      "url": "https://www.revenuelab.fyi/toolbox/imaging-equipment-lease-vs-buy",
      "title": "Dental/Veterinary Imaging Equipment Lease vs Buy Calculator",
      "category": "financial",
      "summary": "Compare total cost of leasing versus purchasing digital X-ray or CBCT gear.",
      "formula": "Buy net cost = purchase price + finance interest − resale value at horizon; Lease net cost = monthly lease payment × months − any buyout avoided.",
      "inputs": [
        {
          "id": "price",
          "label": "Equipment purchase price",
          "kind": "number"
        },
        {
          "id": "downPayment",
          "label": "Down payment if buying",
          "kind": "number"
        },
        {
          "id": "loanRate",
          "label": "Purchase loan interest rate",
          "kind": "number"
        },
        {
          "id": "loanYears",
          "label": "Loan term",
          "kind": "number"
        },
        {
          "id": "leasePayment",
          "label": "Monthly lease payment",
          "kind": "number"
        },
        {
          "id": "leaseMonths",
          "label": "Lease term",
          "kind": "number"
        },
        {
          "id": "resalePct",
          "label": "Estimated resale value at horizon (% of price)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "difference",
          "label": "Buying saves vs. leasing (negative = leasing cheaper)"
        },
        {
          "id": "buyNetCost",
          "label": "Net cost to buy (after resale)"
        },
        {
          "id": "leaseTotal",
          "label": "Total lease payments"
        },
        {
          "id": "loanPayment",
          "label": "Monthly loan payment if financed"
        }
      ]
    },
    {
      "slug": "dental-no-show-cost",
      "url": "https://www.revenuelab.fyi/toolbox/dental-no-show-cost",
      "title": "Dental/Vet No-Show Cost Calculator",
      "category": "financial",
      "summary": "Annual revenue lost to missed and last-minute-canceled appointments.",
      "formula": "Annual loss = no-shows/week × avg. production per slot × unfilled probability × weeks open per year.",
      "inputs": [
        {
          "id": "noShowsWeek",
          "label": "No-shows / late cancels per week",
          "kind": "number"
        },
        {
          "id": "avgProduction",
          "label": "Average production per appointment slot",
          "kind": "number"
        },
        {
          "id": "unfilledPct",
          "label": "% of slots that go unfilled after a no-show",
          "kind": "number"
        },
        {
          "id": "weeksOpen",
          "label": "Weeks open per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualLoss",
          "label": "Estimated annual revenue lost"
        },
        {
          "id": "monthlyLoss",
          "label": "Estimated monthly loss"
        },
        {
          "id": "weeklyLoss",
          "label": "Estimated weekly loss"
        },
        {
          "id": "perNoShow",
          "label": "Effective cost per no-show"
        }
      ]
    },
    {
      "slug": "insurance-write-off-adjustment",
      "url": "https://www.revenuelab.fyi/toolbox/insurance-write-off-adjustment",
      "title": "Insurance Write-Off Adjustment Calculator",
      "category": "financial",
      "summary": "See the true collection rate after dental/vet insurance contractual adjustments.",
      "formula": "Net collection % = (billed charges − contractual write-offs − other adjustments) ÷ billed charges × 100.",
      "inputs": [
        {
          "id": "billed",
          "label": "Total charges billed",
          "kind": "number"
        },
        {
          "id": "contractualWriteoff",
          "label": "Contractual/insurance write-offs",
          "kind": "number"
        },
        {
          "id": "otherAdj",
          "label": "Other adjustments (courtesy, bad debt)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netCollectionPct",
          "label": "Net collection rate"
        },
        {
          "id": "netCollected",
          "label": "Net collectible revenue"
        },
        {
          "id": "writeoffPct",
          "label": "Contractual write-off rate"
        },
        {
          "id": "totalAdjustments",
          "label": "Total adjustments"
        }
      ]
    },
    {
      "slug": "lab-fee-margin",
      "url": "https://www.revenuelab.fyi/toolbox/lab-fee-margin",
      "title": "Dental/Vet Lab Fee Margin Calculator",
      "category": "financial",
      "summary": "True margin on crowns, dentures, and other outsourced lab cases.",
      "formula": "Net margin = fee − lab cost − (remake rate × lab cost); margin per hour = net margin ÷ chair hours used.",
      "inputs": [
        {
          "id": "fee",
          "label": "Patient fee for procedure",
          "kind": "number"
        },
        {
          "id": "labCost",
          "label": "Lab invoice cost",
          "kind": "number"
        },
        {
          "id": "remakeRate",
          "label": "Historical remake/redo rate",
          "kind": "number"
        },
        {
          "id": "chairHours",
          "label": "Chair time for procedure",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netMargin",
          "label": "Net margin per case"
        },
        {
          "id": "marginPct",
          "label": "Margin as % of fee"
        },
        {
          "id": "marginPerHour",
          "label": "Margin per chair-hour"
        },
        {
          "id": "remakeReserve",
          "label": "Remake reserve applied"
        }
      ]
    },
    {
      "slug": "surgery-block-profitability",
      "url": "https://www.revenuelab.fyi/toolbox/surgery-block-profitability",
      "title": "Surgery Block Profitability Calculator",
      "category": "financial",
      "summary": "Revenue, direct cost, and margin for a scheduled surgical block.",
      "formula": "Block margin = total case revenue − variable supply cost − dedicated staff labor for the block.",
      "inputs": [
        {
          "id": "cases",
          "label": "Cases booked in block",
          "kind": "number"
        },
        {
          "id": "avgRevenue",
          "label": "Average revenue per case",
          "kind": "number"
        },
        {
          "id": "avgVariableCost",
          "label": "Average variable cost per case (drugs, consumables)",
          "kind": "number"
        },
        {
          "id": "staffLabor",
          "label": "Dedicated staff labor for the block day",
          "kind": "number"
        },
        {
          "id": "blockHours",
          "label": "Block length",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netMargin",
          "label": "Net block margin"
        },
        {
          "id": "marginPerCase",
          "label": "Margin per case"
        },
        {
          "id": "marginPerHour",
          "label": "Margin per block-hour"
        },
        {
          "id": "marginPct",
          "label": "Margin as % of revenue"
        }
      ]
    },
    {
      "slug": "vet-staff-provider-ratio-cost",
      "url": "https://www.revenuelab.fyi/toolbox/vet-staff-provider-ratio-cost",
      "title": "Staff-to-Provider Ratio Cost Calculator",
      "category": "financial",
      "summary": "Support staff headcount and payroll cost benchmarked per doctor.",
      "formula": "Staff ratio = support FTE ÷ provider FTE; staff cost % of revenue = total support payroll ÷ revenue × 100.",
      "inputs": [
        {
          "id": "supportFte",
          "label": "Support staff FTE (non-doctor)",
          "kind": "number"
        },
        {
          "id": "providerFte",
          "label": "Doctor/provider FTE",
          "kind": "number"
        },
        {
          "id": "supportPayroll",
          "label": "Annual support staff payroll (fully loaded)",
          "kind": "number"
        },
        {
          "id": "revenue",
          "label": "Annual practice revenue",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "ratio",
          "label": "Support staff per doctor"
        },
        {
          "id": "staffCostPct",
          "label": "Support payroll as % of revenue"
        },
        {
          "id": "payrollPerProvider",
          "label": "Support payroll per doctor"
        },
        {
          "id": "staffPerFte",
          "label": "Staff FTE per provider FTE"
        }
      ]
    },
    {
      "slug": "dental-membership-plan-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/dental-membership-plan-pricing",
      "title": "Dental/Vet Membership Plan Pricing Calculator",
      "category": "financial",
      "summary": "Price an in-house wellness or membership plan so it stays profitable.",
      "formula": "Plan price = bundled retail value × (1 − discount%); margin = plan price − direct cost to deliver bundled services.",
      "inputs": [
        {
          "id": "examValue",
          "label": "Retail value of included exams/cleanings",
          "kind": "number"
        },
        {
          "id": "diagnosticsValue",
          "label": "Retail value of included diagnostics (x-rays, bloodwork)",
          "kind": "number"
        },
        {
          "id": "discountPct",
          "label": "Discount off retail bundled value",
          "kind": "number"
        },
        {
          "id": "directCost",
          "label": "Direct cost to deliver included services",
          "kind": "number"
        },
        {
          "id": "members",
          "label": "Expected enrolled members",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "planPrice",
          "label": "Annual plan price"
        },
        {
          "id": "monthlyPrice",
          "label": "Monthly price option"
        },
        {
          "id": "marginPerMember",
          "label": "Margin per member per year"
        },
        {
          "id": "marginPct",
          "label": "Margin percentage"
        },
        {
          "id": "totalAnnualMargin",
          "label": "Total annual plan margin"
        }
      ]
    },
    {
      "slug": "boarding-kennel-occupancy",
      "url": "https://www.revenuelab.fyi/toolbox/boarding-kennel-occupancy",
      "title": "Boarding/Kennel Occupancy Calculator",
      "category": "financial",
      "summary": "Occupancy rate, revenue, and profit for a boarding or kennel operation.",
      "formula": "Occupancy % = occupied run-nights ÷ (runs × days) × 100; profit = revenue − variable cost − fixed cost.",
      "inputs": [
        {
          "id": "runs",
          "label": "Boarding runs/kennels",
          "kind": "number"
        },
        {
          "id": "occupancyPct",
          "label": "Average occupancy",
          "kind": "number"
        },
        {
          "id": "nightlyRate",
          "label": "Nightly boarding rate",
          "kind": "number"
        },
        {
          "id": "addonPerNight",
          "label": "Add-on revenue per occupied night",
          "kind": "number"
        },
        {
          "id": "variableCostPerNight",
          "label": "Variable cost per occupied night",
          "kind": "number"
        },
        {
          "id": "monthlyFixed",
          "label": "Monthly fixed cost (labor, facility)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "profit",
          "label": "Monthly profit"
        },
        {
          "id": "revenue",
          "label": "Monthly revenue"
        },
        {
          "id": "occNights",
          "label": "Occupied run-nights per month"
        },
        {
          "id": "breakEvenOccPct",
          "label": "Break-even occupancy rate"
        }
      ]
    },
    {
      "slug": "vet-appointment-capacity",
      "url": "https://www.revenuelab.fyi/toolbox/vet-appointment-capacity",
      "title": "Veterinary Appointment Capacity Calculator",
      "category": "financial",
      "summary": "Maximum sustainable visit volume for your current schedule template.",
      "formula": "Max annual visits = doctors × (hours/day ÷ avg. visit hours) × days/week × weeks/year; headroom = max − actual.",
      "inputs": [
        {
          "id": "doctors",
          "label": "Doctors seeing appointments",
          "kind": "number"
        },
        {
          "id": "hoursDay",
          "label": "Clinical hours per doctor per day",
          "kind": "number"
        },
        {
          "id": "avgVisitMin",
          "label": "Average visit length",
          "kind": "number"
        },
        {
          "id": "daysWeek",
          "label": "Days worked per week",
          "kind": "number"
        },
        {
          "id": "weeksYear",
          "label": "Weeks worked per year",
          "kind": "number"
        },
        {
          "id": "actualVisits",
          "label": "Actual annual visits",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "maxAnnual",
          "label": "Max annual visit capacity"
        },
        {
          "id": "utilizationPct",
          "label": "Current capacity utilization"
        },
        {
          "id": "headroom",
          "label": "Remaining annual visit capacity"
        },
        {
          "id": "slotsPerDay",
          "label": "Slots per doctor per day"
        }
      ]
    },
    {
      "slug": "dental-hygienist-productivity",
      "url": "https://www.revenuelab.fyi/toolbox/dental-hygienist-productivity",
      "title": "Dental Hygienist Productivity Calculator",
      "category": "financial",
      "summary": "Production per scheduled hour and per patient for a hygienist's day.",
      "formula": "Production per hour = daily production ÷ scheduled hours; production per patient = daily production ÷ patients seen.",
      "inputs": [
        {
          "id": "dailyProduction",
          "label": "Daily production",
          "kind": "number"
        },
        {
          "id": "scheduledHours",
          "label": "Scheduled hours",
          "kind": "number"
        },
        {
          "id": "patientsSeen",
          "label": "Patients seen",
          "kind": "number"
        },
        {
          "id": "benchmarkPerHour",
          "label": "Benchmark production per hour",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "perHour",
          "label": "Production per scheduled hour"
        },
        {
          "id": "perPatient",
          "label": "Production per patient"
        },
        {
          "id": "vsBenchmarkPct",
          "label": "vs. benchmark per hour"
        },
        {
          "id": "annualProjection",
          "label": "Annualized projection (4 days/wk, 48 wks)"
        }
      ]
    },
    {
      "slug": "practice-overhead-ratio",
      "url": "https://www.revenuelab.fyi/toolbox/practice-overhead-ratio",
      "title": "Veterinary/Dental Practice Overhead Ratio Calculator",
      "category": "financial",
      "summary": "Fixed and variable overhead as a share of revenue against benchmarks.",
      "formula": "Overhead ratio = (staff wages + facility + supplies/lab + marketing + other fixed costs) ÷ revenue × 100.",
      "inputs": [
        {
          "id": "revenue",
          "label": "Annual revenue",
          "kind": "number"
        },
        {
          "id": "staffWages",
          "label": "Support staff wages (non-doctor)",
          "kind": "number"
        },
        {
          "id": "facility",
          "label": "Rent, utilities, facility costs",
          "kind": "number"
        },
        {
          "id": "suppliesLab",
          "label": "Medical/dental supplies + lab",
          "kind": "number"
        },
        {
          "id": "marketing",
          "label": "Marketing",
          "kind": "number"
        },
        {
          "id": "otherFixed",
          "label": "Other fixed costs (insurance, admin, tech)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "overheadRatio",
          "label": "Overhead ratio (before doctor pay)"
        },
        {
          "id": "totalOverhead",
          "label": "Total overhead"
        },
        {
          "id": "marginBeforeDoctorPay",
          "label": "Margin available for doctor pay & profit"
        },
        {
          "id": "marginPct",
          "label": "Margin percentage"
        }
      ]
    },
    {
      "slug": "new-client-acquisition-cost-vet",
      "url": "https://www.revenuelab.fyi/toolbox/new-client-acquisition-cost-vet",
      "title": "New Client Acquisition Cost Calculator",
      "category": "financial",
      "summary": "Marketing spend divided by new clients gained, with lifetime value payback.",
      "formula": "CAC = total marketing spend ÷ new clients gained; payback months = CAC ÷ (average monthly revenue per client).",
      "inputs": [
        {
          "id": "marketingSpend",
          "label": "Marketing/promotion spend for period",
          "kind": "number"
        },
        {
          "id": "newClients",
          "label": "New active clients gained",
          "kind": "number"
        },
        {
          "id": "avgAnnualClientRevenue",
          "label": "Average annual revenue per client",
          "kind": "number"
        },
        {
          "id": "avgClientLifespanYears",
          "label": "Average client relationship length",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "cac",
          "label": "Cost per new client acquired"
        },
        {
          "id": "lifetimeValue",
          "label": "Estimated client lifetime value"
        },
        {
          "id": "valueRatio",
          "label": "Lifetime value to CAC ratio"
        },
        {
          "id": "paybackMonths",
          "label": "Payback period"
        }
      ]
    },
    {
      "slug": "recall-compliance-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/recall-compliance-revenue",
      "title": "Recall/Reminder Compliance Revenue Calculator",
      "category": "financial",
      "summary": "Revenue left on the table from patients overdue for scheduled recall visits.",
      "formula": "Captured revenue = active patients × compliance% × visits/year × avg. visit value; opportunity = same at target compliance − captured.",
      "inputs": [
        {
          "id": "activePatients",
          "label": "Active patients/clients due for recall annually",
          "kind": "number"
        },
        {
          "id": "currentCompliancePct",
          "label": "Current recall compliance rate",
          "kind": "number"
        },
        {
          "id": "targetCompliancePct",
          "label": "Target recall compliance rate",
          "kind": "number"
        },
        {
          "id": "avgVisitValue",
          "label": "Average value of a recall visit",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "opportunity",
          "label": "Additional annual revenue if target hit"
        },
        {
          "id": "capturedRevenue",
          "label": "Currently captured recall revenue"
        },
        {
          "id": "targetRevenue",
          "label": "Revenue at target compliance"
        },
        {
          "id": "additionalVisits",
          "label": "Additional visits needed"
        }
      ]
    },
    {
      "slug": "dental-case-acceptance-rate",
      "url": "https://www.revenuelab.fyi/toolbox/dental-case-acceptance-rate",
      "title": "Dental Case Acceptance Rate Calculator",
      "category": "financial",
      "summary": "Treatment plan acceptance rate and the revenue left unaccepted.",
      "formula": "Case acceptance % = accepted treatment value ÷ total diagnosed treatment value × 100; unaccepted value = diagnosed − accepted.",
      "inputs": [
        {
          "id": "diagnosedValue",
          "label": "Total diagnosed treatment value (period)",
          "kind": "number"
        },
        {
          "id": "acceptedValue",
          "label": "Accepted/scheduled treatment value",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "acceptanceRate",
          "label": "Case acceptance rate"
        },
        {
          "id": "unacceptedValue",
          "label": "Diagnosed but unaccepted (period)"
        },
        {
          "id": "annualizedUnaccepted",
          "label": "Annualized unaccepted value (×4 quarters)"
        },
        {
          "id": "accepted",
          "label": "Accepted treatment value"
        }
      ]
    },
    {
      "slug": "vet-inventory-turnover",
      "url": "https://www.revenuelab.fyi/toolbox/vet-inventory-turnover",
      "title": "Veterinary Inventory Turnover Calculator",
      "category": "financial",
      "summary": "How efficiently drug, supply, and retail inventory converts to revenue.",
      "formula": "Turnover = annual COGS ÷ average inventory value; days on hand = 365 ÷ turnover.",
      "inputs": [
        {
          "id": "annualCogs",
          "label": "Annual cost of goods sold (drugs, supplies, retail)",
          "kind": "number"
        },
        {
          "id": "avgInventoryValue",
          "label": "Average inventory value on hand",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "turnover",
          "label": "Inventory turns per year"
        },
        {
          "id": "daysOnHand",
          "label": "Days of supply on hand"
        },
        {
          "id": "inventoryAsPctCogs",
          "label": "Inventory as % of annual COGS"
        }
      ]
    },
    {
      "slug": "associate-compensation-model",
      "url": "https://www.revenuelab.fyi/toolbox/associate-compensation-model",
      "title": "Associate Compensation Model Calculator",
      "category": "financial",
      "summary": "Compare straight production percentage pay to a guaranteed base plus production.",
      "formula": "Pro-sal pay = max(guaranteed base, production × pay%); breakeven production = guaranteed base ÷ pay%.",
      "inputs": [
        {
          "id": "monthlyProduction",
          "label": "Associate's monthly production",
          "kind": "number"
        },
        {
          "id": "payPct",
          "label": "Production percentage",
          "kind": "number"
        },
        {
          "id": "monthlyBase",
          "label": "Guaranteed monthly base",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "actualPay",
          "label": "Associate's monthly pay"
        },
        {
          "id": "productionPay",
          "label": "Pure production-percentage pay"
        },
        {
          "id": "breakevenProduction",
          "label": "Production needed to exceed base"
        },
        {
          "id": "annualPay",
          "label": "Annualized pay at this pace"
        }
      ]
    },
    {
      "slug": "dental-office-break-even",
      "url": "https://www.revenuelab.fyi/toolbox/dental-office-break-even",
      "title": "Dental/Vet Office Break-Even Calculator",
      "category": "financial",
      "summary": "Monthly production needed to cover fixed and variable costs.",
      "formula": "Break-even revenue = fixed costs ÷ (1 − variable cost rate); margin of safety = (actual revenue − break-even) ÷ actual revenue.",
      "inputs": [
        {
          "id": "fixedCosts",
          "label": "Total monthly fixed costs",
          "kind": "number"
        },
        {
          "id": "variableCostPct",
          "label": "Variable costs as % of production (lab, supplies, commission)",
          "kind": "number"
        },
        {
          "id": "currentRevenue",
          "label": "Current monthly production/revenue",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakEvenRevenue",
          "label": "Monthly break-even revenue"
        },
        {
          "id": "marginOfSafety",
          "label": "Margin of safety at current revenue"
        },
        {
          "id": "dailyBreakEven",
          "label": "Daily break-even (≈21.7 working days/mo)"
        }
      ]
    },
    {
      "slug": "pet-dental-treatment-plan-cost",
      "url": "https://www.revenuelab.fyi/toolbox/pet-dental-treatment-plan-cost",
      "title": "Pet Dental Treatment Plan Cost Calculator",
      "category": "financial",
      "summary": "Estimate total cost of a veterinary dental cleaning and treatment plan.",
      "formula": "Total estimate = pre-anesthetic workup + anesthesia/monitoring + base cleaning & radiographs + (extractions × avg. cost per extraction).",
      "inputs": [
        {
          "id": "preAnesthetic",
          "label": "Pre-anesthetic bloodwork/exam",
          "kind": "number"
        },
        {
          "id": "anesthesiaMonitoring",
          "label": "Anesthesia & monitoring",
          "kind": "number"
        },
        {
          "id": "baseCleanRadiographs",
          "label": "Base cleaning + full-mouth radiographs",
          "kind": "number"
        },
        {
          "id": "estimatedExtractions",
          "label": "Estimated teeth needing extraction",
          "kind": "number"
        },
        {
          "id": "costPerExtraction",
          "label": "Average cost per extraction",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Mid-point estimated total"
        },
        {
          "id": "lowEstimate",
          "label": "Low end of range"
        },
        {
          "id": "highEstimate",
          "label": "High end (if more work found)"
        },
        {
          "id": "extractionsCost",
          "label": "Extraction cost portion"
        }
      ]
    },
    {
      "slug": "practice-transition-timeline-value",
      "url": "https://www.revenuelab.fyi/toolbox/practice-transition-timeline-value",
      "title": "Practice Transition Timeline & Value Calculator",
      "category": "financial",
      "summary": "Estimate how earn-out timing affects the seller's real proceeds.",
      "formula": "Present value of deal = upfront cash + Σ (deferred payment ÷ (1+discount rate)^year).",
      "inputs": [
        {
          "id": "totalValue",
          "label": "Total agreed sale value",
          "kind": "number"
        },
        {
          "id": "upfrontPct",
          "label": "Upfront cash at closing",
          "kind": "number"
        },
        {
          "id": "deferredYears",
          "label": "Years over which deferred portion is paid",
          "kind": "number"
        },
        {
          "id": "discountRate",
          "label": "Discount rate (risk/time value)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "presentValue",
          "label": "Present value of total deal"
        },
        {
          "id": "upfront",
          "label": "Upfront cash at closing"
        },
        {
          "id": "pvDeferred",
          "label": "Present value of deferred payments"
        },
        {
          "id": "discountLoss",
          "label": "Value lost to timing/risk discount"
        }
      ]
    },
    {
      "slug": "crew-hour-job-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/crew-hour-job-pricing",
      "title": "Crew Hour Job Pricing Calculator",
      "category": "financial",
      "summary": "Price a job from crew size, hours, and target margin — not guesswork.",
      "formula": "Total cost = (crew size × loaded hourly rate × job hours) + drive time cost + materials. Price = total cost ÷ (1 − target margin).",
      "inputs": [
        {
          "id": "crewSize",
          "label": "Crew size",
          "kind": "number"
        },
        {
          "id": "loadedRate",
          "label": "Loaded hourly rate per worker",
          "kind": "number"
        },
        {
          "id": "jobHours",
          "label": "Estimated job hours",
          "kind": "number"
        },
        {
          "id": "driveHours",
          "label": "Drive time (round trip)",
          "kind": "number"
        },
        {
          "id": "materials",
          "label": "Materials / disposal cost",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Target gross margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Quote price"
        },
        {
          "id": "totalCost",
          "label": "Total job cost"
        },
        {
          "id": "laborCost",
          "label": "Labor cost"
        },
        {
          "id": "profit",
          "label": "Gross profit"
        },
        {
          "id": "pricePerHour",
          "label": "Effective price per crew-hour"
        }
      ]
    },
    {
      "slug": "route-density-profit",
      "url": "https://www.revenuelab.fyi/toolbox/route-density-profit",
      "title": "Route Density Profit Calculator",
      "category": "financial",
      "summary": "See how tighter routes turn drive time into billable time and real profit.",
      "formula": "Drive hours = stops × avg miles between stops ÷ avg speed. Available service hours = shift hours − drive hours. Stops served = service hours ÷ avg service time. Profit = (stops served × revenue per stop) − (shift hours × crew cost) − fuel cost.",
      "inputs": [
        {
          "id": "shiftHours",
          "label": "Shift length",
          "kind": "number"
        },
        {
          "id": "avgMiles",
          "label": "Average miles between stops",
          "kind": "number"
        },
        {
          "id": "avgSpeed",
          "label": "Average driving speed",
          "kind": "number"
        },
        {
          "id": "serviceMin",
          "label": "Average service time per stop",
          "kind": "number"
        },
        {
          "id": "revenuePerStop",
          "label": "Revenue per stop",
          "kind": "number"
        },
        {
          "id": "crewCostHour",
          "label": "Crew cost per hour",
          "kind": "number"
        },
        {
          "id": "mpg",
          "label": "Vehicle MPG",
          "kind": "number"
        },
        {
          "id": "fuelPrice",
          "label": "Fuel price per gallon",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "stops",
          "label": "Stops per shift"
        },
        {
          "id": "revenue",
          "label": "Route revenue"
        },
        {
          "id": "profit",
          "label": "Route profit"
        },
        {
          "id": "totalMiles",
          "label": "Total miles driven"
        },
        {
          "id": "profitPerStop",
          "label": "Profit per stop"
        }
      ]
    },
    {
      "slug": "dump-fee-cubic-yard",
      "url": "https://www.revenuelab.fyi/toolbox/dump-fee-cubic-yard",
      "title": "Cubic Yard Dump Fee Pricing Calculator",
      "category": "financial",
      "summary": "Price a junk removal job by truck load fraction, weight, and disposal cost.",
      "formula": "Load volume = truck capacity (yd³) × load fraction. Disposal cost = load volume × disposal rate per yard (or weight × rate per ton). Price = (load volume × price per yard) + disposal cost markup buffer.",
      "inputs": [
        {
          "id": "truckCapacity",
          "label": "Truck capacity",
          "kind": "number"
        },
        {
          "id": "loadFraction",
          "label": "Load size (fraction of truck)",
          "kind": "number"
        },
        {
          "id": "pricePerYard",
          "label": "Your price per cubic yard",
          "kind": "number"
        },
        {
          "id": "dumpRate",
          "label": "Landfill/transfer fee per ton",
          "kind": "number"
        },
        {
          "id": "avgDensity",
          "label": "Estimated weight per yard",
          "kind": "number"
        },
        {
          "id": "laborHours",
          "label": "Labor hours (load + drive + dump)",
          "kind": "number"
        },
        {
          "id": "crewCostHour",
          "label": "Crew cost per hour",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Job price"
        },
        {
          "id": "loadYd",
          "label": "Load size"
        },
        {
          "id": "dumpCost",
          "label": "Estimated dump fee"
        },
        {
          "id": "totalCost",
          "label": "Total job cost (labor + dump)"
        },
        {
          "id": "profit",
          "label": "Gross profit"
        }
      ]
    },
    {
      "slug": "cleaning-square-foot-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/cleaning-square-foot-pricing",
      "title": "Cleaning Square Foot Pricing Calculator",
      "category": "financial",
      "summary": "Turn square footage, room count, and condition into a defensible cleaning bid.",
      "formula": "Base price = sq ft × rate per sq ft. Room adder = bathrooms × bath rate + kitchens × kitchen rate. Price = (base + adder) × condition multiplier.",
      "inputs": [
        {
          "id": "sqft",
          "label": "Home square footage",
          "kind": "number"
        },
        {
          "id": "rate",
          "label": "Base rate per sq ft",
          "kind": "number"
        },
        {
          "id": "bathrooms",
          "label": "Bathrooms",
          "kind": "number"
        },
        {
          "id": "bathRate",
          "label": "Price per bathroom",
          "kind": "number"
        },
        {
          "id": "kitchens",
          "label": "Kitchens",
          "kind": "number"
        },
        {
          "id": "kitchenRate",
          "label": "Price per kitchen",
          "kind": "number"
        },
        {
          "id": "condition",
          "label": "Job type",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Cleaning price"
        },
        {
          "id": "base",
          "label": "Base square-footage price"
        },
        {
          "id": "adder",
          "label": "Room adders"
        },
        {
          "id": "perSqft",
          "label": "Effective price per sq ft"
        }
      ]
    },
    {
      "slug": "lawn-route-stops-per-day",
      "url": "https://www.revenuelab.fyi/toolbox/lawn-route-stops-per-day",
      "title": "Lawn Route Stops Per Day Calculator",
      "category": "financial",
      "summary": "Find how many yards a crew can realistically mow and still turn a profit.",
      "formula": "Time per stop = (lot size ÷ mowing rate) + trim/blow time + drive time + load buffer. Stops per day = shift hours ÷ time per stop. Revenue = stops × price per stop.",
      "inputs": [
        {
          "id": "shiftHours",
          "label": "Shift length",
          "kind": "number"
        },
        {
          "id": "avgLotSize",
          "label": "Average lot size",
          "kind": "number"
        },
        {
          "id": "mowRate",
          "label": "Mowing rate (zero-turn)",
          "kind": "number"
        },
        {
          "id": "trimBlow",
          "label": "Trim + edge + blow time",
          "kind": "number"
        },
        {
          "id": "driveMin",
          "label": "Average drive time between stops",
          "kind": "number"
        },
        {
          "id": "pricePerStop",
          "label": "Price per stop",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "stops",
          "label": "Stops per crew per day"
        },
        {
          "id": "revenue",
          "label": "Daily route revenue"
        },
        {
          "id": "perStopMin",
          "label": "Minutes per stop"
        },
        {
          "id": "revenuePerHour",
          "label": "Revenue per crew-hour"
        }
      ]
    },
    {
      "slug": "recurring-vs-onetime-ltv",
      "url": "https://www.revenuelab.fyi/toolbox/recurring-vs-onetime-ltv",
      "title": "Recurring vs One-Time Customer LTV Calculator",
      "category": "financial",
      "summary": "Compare lifetime value of a recurring contract against a one-off job.",
      "formula": "Recurring LTV = (avg ticket × visits per year × expected years) − acquisition cost, adjusted by annual churn. One-time LTV = avg ticket − acquisition cost + referral value.",
      "inputs": [
        {
          "id": "ticket",
          "label": "Average ticket (recurring visit)",
          "kind": "number"
        },
        {
          "id": "visitsYear",
          "label": "Visits per year (recurring)",
          "kind": "number"
        },
        {
          "id": "churn",
          "label": "Annual churn rate",
          "kind": "number"
        },
        {
          "id": "acqCost",
          "label": "Customer acquisition cost",
          "kind": "number"
        },
        {
          "id": "oneTimeTicket",
          "label": "One-time job average ticket",
          "kind": "number"
        },
        {
          "id": "referralRate",
          "label": "One-time job referral rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "recurringLtv",
          "label": "Recurring customer LTV"
        },
        {
          "id": "oneTimeLtv",
          "label": "One-time customer LTV"
        },
        {
          "id": "expectedYears",
          "label": "Expected customer lifespan (yrs)"
        },
        {
          "id": "annualRevenue",
          "label": "Annual recurring revenue per customer"
        },
        {
          "id": "difference",
          "label": "LTV advantage of recurring"
        }
      ]
    },
    {
      "slug": "pool-chemical-cost",
      "url": "https://www.revenuelab.fyi/toolbox/pool-chemical-cost",
      "title": "Pool Chemical Cost Calculator",
      "category": "financial",
      "summary": "Estimate monthly chemical cost per pool by size, type, and season.",
      "formula": "Chlorine cost = (gallons ÷ 10,000) × base chlorine cost per 10k gal × season factor. Total chemical cost = chlorine + algaecide + balancers, summed monthly.",
      "inputs": [
        {
          "id": "gallons",
          "label": "Pool volume",
          "kind": "number"
        },
        {
          "id": "chlorineCost10k",
          "label": "Chlorine cost per 10,000 gal/month",
          "kind": "number"
        },
        {
          "id": "season",
          "label": "Season",
          "kind": "select"
        },
        {
          "id": "algaecide",
          "label": "Algaecide + shock cost per month",
          "kind": "number"
        },
        {
          "id": "balancers",
          "label": "pH/alkalinity balancer cost per month",
          "kind": "number"
        },
        {
          "id": "serviceFee",
          "label": "Your monthly service fee (this pool)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalChem",
          "label": "Monthly chemical cost"
        },
        {
          "id": "chlorine",
          "label": "Chlorine portion"
        },
        {
          "id": "netAfterChem",
          "label": "Revenue left after chemicals"
        },
        {
          "id": "margin",
          "label": "Margin after chemical cost"
        }
      ]
    },
    {
      "slug": "snow-contract-seasonal-vs-per-push",
      "url": "https://www.revenuelab.fyi/toolbox/snow-contract-seasonal-vs-per-push",
      "title": "Snow Contract Seasonal vs Per-Push Calculator",
      "category": "financial",
      "summary": "Compare seasonal flat-rate contracts against per-push billing for a snow account.",
      "formula": "Per-push revenue = expected pushes × price per push. Breakeven pushes = seasonal price ÷ price per push. Seasonal wins above breakeven pushes; per-push wins below it.",
      "inputs": [
        {
          "id": "seasonalPrice",
          "label": "Seasonal flat contract price",
          "kind": "number"
        },
        {
          "id": "pricePerPush",
          "label": "Price per push",
          "kind": "number"
        },
        {
          "id": "avgPushes",
          "label": "Historical average pushes per season",
          "kind": "number"
        },
        {
          "id": "worstPushes",
          "label": "Worst-case (heavy winter) pushes",
          "kind": "number"
        },
        {
          "id": "bestPushes",
          "label": "Best-case (light winter) pushes",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakeven",
          "label": "Breakeven pushes"
        },
        {
          "id": "avgRevenuePerPush",
          "label": "Per-push revenue (avg winter)"
        },
        {
          "id": "worstRevenuePerPush",
          "label": "Per-push revenue (heavy winter)"
        },
        {
          "id": "bestRevenuePerPush",
          "label": "Per-push revenue (light winter)"
        },
        {
          "id": "seasonalAdvantage",
          "label": "Seasonal gain in heavy winter"
        }
      ]
    },
    {
      "slug": "franchise-royalty-impact",
      "url": "https://www.revenuelab.fyi/toolbox/franchise-royalty-impact",
      "title": "Franchise Royalty Impact Calculator",
      "category": "financial",
      "summary": "See how royalty and marketing fund fees eat into franchise unit profit.",
      "formula": "Royalty fee = revenue × royalty %. Marketing fee = revenue × marketing %. Net margin = (revenue − operating costs − royalty − marketing) ÷ revenue.",
      "inputs": [
        {
          "id": "revenue",
          "label": "Monthly gross revenue",
          "kind": "number"
        },
        {
          "id": "royaltyPct",
          "label": "Royalty fee",
          "kind": "number"
        },
        {
          "id": "marketingPct",
          "label": "Marketing/ad fund fee",
          "kind": "number"
        },
        {
          "id": "operatingCostPct",
          "label": "Operating costs (labor, supplies, vehicles)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalFees",
          "label": "Total monthly franchise fees"
        },
        {
          "id": "royalty",
          "label": "Royalty fee"
        },
        {
          "id": "marketing",
          "label": "Marketing fund fee"
        },
        {
          "id": "netProfit",
          "label": "Net monthly profit"
        },
        {
          "id": "netMargin",
          "label": "Net margin"
        }
      ]
    },
    {
      "slug": "crew-loaded-labor-cost",
      "url": "https://www.revenuelab.fyi/toolbox/crew-loaded-labor-cost",
      "title": "Crew Loaded Labor Cost Calculator",
      "category": "financial",
      "summary": "Find your real hourly cost per worker including taxes, comp, and burden.",
      "formula": "Loaded rate = base wage × (1 + payroll tax rate + workers' comp rate + benefits rate) + fixed per-hour overhead allocation.",
      "inputs": [
        {
          "id": "wage",
          "label": "Base hourly wage",
          "kind": "number"
        },
        {
          "id": "payrollTax",
          "label": "Payroll tax burden (FICA + FUTA/SUTA)",
          "kind": "number"
        },
        {
          "id": "workersComp",
          "label": "Workers' comp rate",
          "kind": "number"
        },
        {
          "id": "benefits",
          "label": "Benefits load (health, PTO, etc.)",
          "kind": "number"
        },
        {
          "id": "overheadHour",
          "label": "Overhead allocation per hour",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "loaded",
          "label": "Total loaded hourly rate"
        },
        {
          "id": "burdenAmount",
          "label": "Burden cost per hour"
        },
        {
          "id": "loadedBeforeOverhead",
          "label": "Loaded rate before overhead"
        },
        {
          "id": "loadPct",
          "label": "Total load over base wage"
        }
      ]
    },
    {
      "slug": "equipment-replacement-reserve",
      "url": "https://www.revenuelab.fyi/toolbox/equipment-replacement-reserve",
      "title": "Equipment Replacement Reserve Calculator",
      "category": "financial",
      "summary": "Set aside the right monthly reserve so equipment failure never becomes a cash crisis.",
      "formula": "Depreciable amount = replacement cost − salvage value. Monthly reserve = depreciable amount ÷ (useful life years × 12).",
      "inputs": [
        {
          "id": "replacementCost",
          "label": "Expected replacement cost",
          "kind": "number"
        },
        {
          "id": "salvageValue",
          "label": "Expected trade-in/salvage value",
          "kind": "number"
        },
        {
          "id": "usefulLife",
          "label": "Useful life",
          "kind": "number"
        },
        {
          "id": "unitsOwned",
          "label": "Units owned (fleet count)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "monthlyReserve",
          "label": "Monthly reserve per unit"
        },
        {
          "id": "fleetMonthly",
          "label": "Total monthly reserve (fleet)"
        },
        {
          "id": "annualReserve",
          "label": "Annual reserve needed"
        },
        {
          "id": "depreciable",
          "label": "Depreciable amount"
        }
      ]
    },
    {
      "slug": "quote-close-rate-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/quote-close-rate-revenue",
      "title": "Quote Close Rate Revenue Calculator",
      "category": "financial",
      "summary": "See how small changes in close rate move monthly revenue and lead cost.",
      "formula": "Jobs won = leads × close rate. Revenue = jobs won × average job value. Cost per acquired job = marketing spend ÷ jobs won.",
      "inputs": [
        {
          "id": "leads",
          "label": "Monthly leads / quote requests",
          "kind": "number"
        },
        {
          "id": "closeRate",
          "label": "Current close rate",
          "kind": "number"
        },
        {
          "id": "avgJobValue",
          "label": "Average job value",
          "kind": "number"
        },
        {
          "id": "marketingSpend",
          "label": "Monthly marketing spend",
          "kind": "number"
        },
        {
          "id": "targetCloseRate",
          "label": "Target close rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "revenue",
          "label": "Current monthly revenue"
        },
        {
          "id": "jobsWon",
          "label": "Jobs won per month"
        },
        {
          "id": "cpa",
          "label": "Cost per acquired job"
        },
        {
          "id": "targetRevenue",
          "label": "Revenue at target close rate"
        },
        {
          "id": "revenueLift",
          "label": "Revenue gain from improving close rate"
        }
      ]
    },
    {
      "slug": "fuel-surcharge-local-route",
      "url": "https://www.revenuelab.fyi/toolbox/fuel-surcharge-local-route",
      "title": "Fuel Surcharge for Local Routes Calculator",
      "category": "financial",
      "summary": "Build a fair fuel surcharge that adjusts automatically as gas prices move.",
      "formula": "Surcharge % = ((current fuel price − baseline fuel price) ÷ baseline fuel price) × sensitivity factor. Surcharge $ = base job price × surcharge %.",
      "inputs": [
        {
          "id": "baselinePrice",
          "label": "Baseline fuel price (built into your rates)",
          "kind": "number"
        },
        {
          "id": "currentPrice",
          "label": "Current fuel price",
          "kind": "number"
        },
        {
          "id": "sensitivity",
          "label": "Fuel cost sensitivity of your routes",
          "kind": "number"
        },
        {
          "id": "jobPrice",
          "label": "Average job / stop price",
          "kind": "number"
        },
        {
          "id": "monthlyStops",
          "label": "Monthly stops (whole route)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "surchargePct",
          "label": "Recommended surcharge"
        },
        {
          "id": "surchargePerStop",
          "label": "Surcharge per stop"
        },
        {
          "id": "monthlyRecovery",
          "label": "Monthly surcharge revenue recovered"
        }
      ]
    },
    {
      "slug": "damage-claim-reserve",
      "url": "https://www.revenuelab.fyi/toolbox/damage-claim-reserve",
      "title": "Damage Claim Reserve Calculator",
      "category": "financial",
      "summary": "Budget the right monthly reserve for property damage claims before they happen.",
      "formula": "Expected monthly claim cost = (claims per month × average claim cost below deductible) + (deductible × claims requiring insurance ÷ 12). Reserve = expected cost × safety margin.",
      "inputs": [
        {
          "id": "jobsMonth",
          "label": "Jobs completed per month",
          "kind": "number"
        },
        {
          "id": "claimRate",
          "label": "Claim rate (claims per 100 jobs)",
          "kind": "number"
        },
        {
          "id": "avgClaimCost",
          "label": "Average claim cost (below deductible)",
          "kind": "number"
        },
        {
          "id": "deductible",
          "label": "Insurance deductible",
          "kind": "number"
        },
        {
          "id": "bigClaimsYear",
          "label": "Estimated big claims (over deductible) per year",
          "kind": "number"
        },
        {
          "id": "safetyMargin",
          "label": "Safety margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "reserve",
          "label": "Monthly damage reserve"
        },
        {
          "id": "expectedMonthly",
          "label": "Expected claim cost (no margin)"
        },
        {
          "id": "perJob",
          "label": "Reserve cost per job"
        },
        {
          "id": "annualReserve",
          "label": "Annual reserve total"
        }
      ]
    },
    {
      "slug": "junk-removal-load-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/junk-removal-load-pricing",
      "title": "Junk Removal Load Pricing Calculator",
      "category": "financial",
      "summary": "Price a junk removal job end-to-end: labor, dump fee, drive time, and margin.",
      "formula": "Total cost = loading labor + drive labor + dump fee. Price = total cost ÷ (1 − target margin).",
      "inputs": [
        {
          "id": "loadFraction",
          "label": "Load size (fraction of 15yd truck)",
          "kind": "number"
        },
        {
          "id": "loadingMin",
          "label": "Loading time",
          "kind": "number"
        },
        {
          "id": "driveMin",
          "label": "Round-trip drive to dump",
          "kind": "number"
        },
        {
          "id": "crewCostHour",
          "label": "Crew cost per hour (2-person)",
          "kind": "number"
        },
        {
          "id": "dumpRatePerTon",
          "label": "Dump fee per ton",
          "kind": "number"
        },
        {
          "id": "avgDensity",
          "label": "Weight per yard",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Target margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Job price"
        },
        {
          "id": "totalCost",
          "label": "Total cost"
        },
        {
          "id": "dumpFee",
          "label": "Dump fee"
        },
        {
          "id": "laborCost",
          "label": "Labor cost"
        },
        {
          "id": "profit",
          "label": "Profit"
        }
      ]
    },
    {
      "slug": "moving-crew-truck-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/moving-crew-truck-pricing",
      "title": "Moving Crew and Truck Pricing Calculator",
      "category": "financial",
      "summary": "Price a local move from crew size, hours, truck cost, and materials.",
      "formula": "Labor cost = crew size × hourly rate × estimated hours. Price = labor cost + truck fee + materials, floored at minimum job charge.",
      "inputs": [
        {
          "id": "crewSize",
          "label": "Crew size",
          "kind": "number"
        },
        {
          "id": "hourlyRate",
          "label": "Rate per mover per hour",
          "kind": "number"
        },
        {
          "id": "estHours",
          "label": "Estimated hours (incl. drive)",
          "kind": "number"
        },
        {
          "id": "truckFee",
          "label": "Truck / fuel flat fee",
          "kind": "number"
        },
        {
          "id": "materials",
          "label": "Packing materials cost",
          "kind": "number"
        },
        {
          "id": "minimumHours",
          "label": "Minimum billable hours",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Estimated move price"
        },
        {
          "id": "laborCost",
          "label": "Labor cost"
        },
        {
          "id": "hours",
          "label": "Billable hours (after minimum)"
        },
        {
          "id": "pricePerHour",
          "label": "Effective price per hour"
        }
      ]
    },
    {
      "slug": "pressure-washing-square-foot",
      "url": "https://www.revenuelab.fyi/toolbox/pressure-washing-square-foot",
      "title": "Pressure Washing Square Foot Pricing Calculator",
      "category": "financial",
      "summary": "Price driveways, siding, and decks by square footage and surface difficulty.",
      "formula": "Price = max(minimum charge, sq ft × base rate × surface difficulty multiplier).",
      "inputs": [
        {
          "id": "sqft",
          "label": "Surface area",
          "kind": "number"
        },
        {
          "id": "baseRate",
          "label": "Base rate per sq ft",
          "kind": "number"
        },
        {
          "id": "surface",
          "label": "Surface type",
          "kind": "select"
        },
        {
          "id": "minimumCharge",
          "label": "Minimum job charge",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Job price"
        },
        {
          "id": "raw",
          "label": "Pre-minimum calculated price"
        },
        {
          "id": "perSqft",
          "label": "Effective price per sq ft"
        }
      ]
    },
    {
      "slug": "pest-control-route-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/pest-control-route-pricing",
      "title": "Pest Control Route Pricing Calculator",
      "category": "financial",
      "summary": "Price a recurring pest control plan by home size, service type, and route stop time.",
      "formula": "Initial price = base rate × sq ft multiplier. Recurring price = maintenance base × sq ft multiplier. Year 1 revenue = initial + (recurring × treatments per year).",
      "inputs": [
        {
          "id": "sqft",
          "label": "Home square footage",
          "kind": "number"
        },
        {
          "id": "initialBase",
          "label": "Initial treatment base price",
          "kind": "number"
        },
        {
          "id": "recurringBase",
          "label": "Recurring treatment base price",
          "kind": "number"
        },
        {
          "id": "sqftBreakpoint",
          "label": "Base square footage included",
          "kind": "number"
        },
        {
          "id": "sqftSurcharge",
          "label": "Surcharge per 500 sq ft over breakpoint",
          "kind": "number"
        },
        {
          "id": "treatmentsYear",
          "label": "Recurring treatments per year",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "year1Revenue",
          "label": "Year 1 total revenue per customer"
        },
        {
          "id": "initialPrice",
          "label": "Initial treatment price"
        },
        {
          "id": "recurringPrice",
          "label": "Recurring treatment price"
        },
        {
          "id": "avgPerStop",
          "label": "Average revenue per stop"
        }
      ]
    },
    {
      "slug": "lawn-mowing-crew-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/lawn-mowing-crew-pricing",
      "title": "Lawn Mowing Crew Pricing Calculator",
      "category": "financial",
      "summary": "Price a single mowing job from lot size, terrain, and target crew profit.",
      "formula": "Mow minutes = lot size ÷ base mow rate × terrain factor. Price = (mow minutes ÷ 60) × target hourly rate + add-ons.",
      "inputs": [
        {
          "id": "lotSize",
          "label": "Mowable lot size",
          "kind": "number"
        },
        {
          "id": "mowRate",
          "label": "Base mowing rate",
          "kind": "number"
        },
        {
          "id": "terrain",
          "label": "Terrain difficulty",
          "kind": "select"
        },
        {
          "id": "targetHourly",
          "label": "Target crew revenue per hour",
          "kind": "number"
        },
        {
          "id": "addons",
          "label": "Trim/edge/blow/bag add-on",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Mowing job price"
        },
        {
          "id": "mowMinutes",
          "label": "Estimated mowing time"
        },
        {
          "id": "pricePerHourEquiv",
          "label": "Effective hourly rate"
        }
      ]
    },
    {
      "slug": "window-cleaning-pane-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/window-cleaning-pane-pricing",
      "title": "Window Cleaning Pane Pricing Calculator",
      "category": "financial",
      "summary": "Price residential window cleaning by pane count, story height, and screens.",
      "formula": "Price = max(minimum, panes × base rate × story multiplier) + screens × screen rate + tracks × track rate.",
      "inputs": [
        {
          "id": "panes",
          "label": "Total panes (in + out)",
          "kind": "number"
        },
        {
          "id": "baseRate",
          "label": "Base price per pane",
          "kind": "number"
        },
        {
          "id": "stories",
          "label": "Highest story with windows",
          "kind": "select"
        },
        {
          "id": "screens",
          "label": "Screens to clean",
          "kind": "number"
        },
        {
          "id": "screenRate",
          "label": "Price per screen",
          "kind": "number"
        },
        {
          "id": "tracks",
          "label": "Tracks to detail",
          "kind": "number"
        },
        {
          "id": "trackRate",
          "label": "Price per track",
          "kind": "number"
        },
        {
          "id": "minimumCharge",
          "label": "Minimum job charge",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Job price"
        },
        {
          "id": "paneCost",
          "label": "Window pane cost"
        },
        {
          "id": "screenCost",
          "label": "Screen cleaning cost"
        },
        {
          "id": "trackCost",
          "label": "Track detailing cost"
        }
      ]
    },
    {
      "slug": "carpet-cleaning-room-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/carpet-cleaning-room-pricing",
      "title": "Carpet Cleaning Room Pricing Calculator",
      "category": "financial",
      "summary": "Price carpet cleaning by room count, size, and soil level with a minimum job floor.",
      "formula": "Price = max(minimum, rooms × base room rate × soil multiplier) + furniture moving fee.",
      "inputs": [
        {
          "id": "rooms",
          "label": "Rooms / areas to clean",
          "kind": "number"
        },
        {
          "id": "baseRoomRate",
          "label": "Base price per room",
          "kind": "number"
        },
        {
          "id": "soil",
          "label": "Soil level",
          "kind": "select"
        },
        {
          "id": "furnitureRooms",
          "label": "Rooms needing furniture moved",
          "kind": "number"
        },
        {
          "id": "furnitureFee",
          "label": "Furniture moving fee per room",
          "kind": "number"
        },
        {
          "id": "minimumCharge",
          "label": "Minimum job charge",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Job price"
        },
        {
          "id": "roomCost",
          "label": "Room cleaning cost"
        },
        {
          "id": "furniture",
          "label": "Furniture moving fee"
        },
        {
          "id": "pricePerRoom",
          "label": "Effective price per room"
        }
      ]
    },
    {
      "slug": "snow-removal-per-push-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/snow-removal-per-push-pricing",
      "title": "Snow Removal Per-Push Pricing Calculator",
      "category": "financial",
      "summary": "Price an individual snow push by lot size, snowfall depth, and equipment type.",
      "formula": "Clearing minutes = lot size ÷ (base clearing rate ÷ depth factor). Price = (clearing minutes ÷ 60) × target hourly rate + mobilization fee.",
      "inputs": [
        {
          "id": "lotSize",
          "label": "Area to clear",
          "kind": "number"
        },
        {
          "id": "clearRate",
          "label": "Base clearing rate (2in snow)",
          "kind": "number"
        },
        {
          "id": "depth",
          "label": "Snow depth",
          "kind": "number"
        },
        {
          "id": "targetHourly",
          "label": "Target hourly rate",
          "kind": "number"
        },
        {
          "id": "mobilizationFee",
          "label": "Mobilization / travel fee",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Per-push price"
        },
        {
          "id": "clearMinutes",
          "label": "Estimated clearing time"
        },
        {
          "id": "depthFactor",
          "label": "Depth difficulty factor"
        }
      ]
    },
    {
      "slug": "pool-opening-closing-cost",
      "url": "https://www.revenuelab.fyi/toolbox/pool-opening-closing-cost",
      "title": "Pool Opening and Closing Cost Calculator",
      "category": "financial",
      "summary": "Price seasonal pool opening and closing jobs with labor, chemicals, and parts.",
      "formula": "Total cost = labor hours × crew cost + chemical kit + parts allowance. Price = total cost ÷ (1 − target margin).",
      "inputs": [
        {
          "id": "laborHours",
          "label": "Labor hours (crew total)",
          "kind": "number"
        },
        {
          "id": "crewCostHour",
          "label": "Crew cost per hour",
          "kind": "number"
        },
        {
          "id": "chemicalKit",
          "label": "Chemical/shock kit cost",
          "kind": "number"
        },
        {
          "id": "partsAllowance",
          "label": "Parts allowance (plugs, gizzmos)",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Target margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Job price"
        },
        {
          "id": "totalCost",
          "label": "Total job cost"
        },
        {
          "id": "laborCost",
          "label": "Labor cost"
        },
        {
          "id": "profit",
          "label": "Profit"
        }
      ]
    },
    {
      "slug": "service-technician-utilization",
      "url": "https://www.revenuelab.fyi/toolbox/service-technician-utilization",
      "title": "Service Technician Utilization Calculator",
      "category": "financial",
      "summary": "See what share of paid hours are actually billable and where the gap goes.",
      "formula": "Utilization = billable hours ÷ paid hours. Revenue gap = (paid hours − billable hours) × effective billing rate.",
      "inputs": [
        {
          "id": "paidHours",
          "label": "Paid hours per week",
          "kind": "number"
        },
        {
          "id": "billableHours",
          "label": "Billable hours per week",
          "kind": "number"
        },
        {
          "id": "billingRate",
          "label": "Effective billing rate per hour",
          "kind": "number"
        },
        {
          "id": "techCostHour",
          "label": "Loaded tech cost per hour",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "utilization",
          "label": "Utilization rate"
        },
        {
          "id": "actualRevenue",
          "label": "Weekly billable revenue"
        },
        {
          "id": "revenueGap",
          "label": "Revenue lost to non-billable time"
        },
        {
          "id": "profit",
          "label": "Weekly profit (billed − paid labor)"
        }
      ]
    },
    {
      "slug": "maid-service-bid-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/maid-service-bid-pricing",
      "title": "Maid Service Bid Pricing Calculator",
      "category": "financial",
      "summary": "Build a competitive recurring cleaning bid that still covers cost and profit.",
      "formula": "Visit price = (team size × time hours × loaded rate) ÷ (1 − margin). Frequency discount adjusts time hours since more frequent cleans take less time per visit.",
      "inputs": [
        {
          "id": "sqft",
          "label": "Home square footage",
          "kind": "number"
        },
        {
          "id": "baseTimeHours",
          "label": "Base cleaning time (monthly frequency)",
          "kind": "number"
        },
        {
          "id": "teamSize",
          "label": "Team size",
          "kind": "number"
        },
        {
          "id": "loadedRate",
          "label": "Loaded rate per cleaner per hour",
          "kind": "number"
        },
        {
          "id": "margin",
          "label": "Target margin",
          "kind": "number"
        },
        {
          "id": "frequency",
          "label": "Cleaning frequency",
          "kind": "select"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Price per visit"
        },
        {
          "id": "monthlyRevenue",
          "label": "Monthly revenue (this account)"
        },
        {
          "id": "laborCost",
          "label": "Labor cost per visit"
        },
        {
          "id": "timeHours",
          "label": "Team-hours per visit"
        }
      ]
    },
    {
      "slug": "booth-rent-vs-commission",
      "url": "https://www.revenuelab.fyi/toolbox/booth-rent-vs-commission",
      "title": "Booth Rent vs Commission Calculator",
      "category": "financial",
      "summary": "Compare take-home pay under booth rent versus commission structures.",
      "formula": "Commission net = revenue × commission% − employee product cost. Booth net = revenue − (weekly rent × 4.33) − renter product% × revenue. Breakeven = weekly rent × 4.33 ÷ (commission% − (1 − renter product%)... solved numerically per inputs).",
      "inputs": [
        {
          "id": "revenue",
          "label": "Monthly service revenue",
          "kind": "number"
        },
        {
          "id": "commissionPct",
          "label": "Commission rate (employee)",
          "kind": "number"
        },
        {
          "id": "employeeProductPct",
          "label": "Salon-covered product cost",
          "kind": "number"
        },
        {
          "id": "weeklyRent",
          "label": "Weekly booth rent",
          "kind": "number"
        },
        {
          "id": "renterProductPct",
          "label": "Renter's own product cost",
          "kind": "number"
        },
        {
          "id": "otherRenterCosts",
          "label": "Renter's other monthly costs (insurance, supplies)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "boothNet",
          "label": "Booth rent net income/month"
        },
        {
          "id": "commissionNet",
          "label": "Commission net income/month"
        },
        {
          "id": "difference",
          "label": "Booth advantage (or disadvantage)"
        },
        {
          "id": "monthlyRent",
          "label": "Monthly rent cost"
        },
        {
          "id": "crossover",
          "label": "Revenue where booth beats commission"
        }
      ]
    },
    {
      "slug": "salon-stylist-hourly-productivity",
      "url": "https://www.revenuelab.fyi/toolbox/salon-stylist-hourly-productivity",
      "title": "Stylist Hourly Productivity Calculator",
      "category": "financial",
      "summary": "Turn your schedule and service mix into a true revenue-per-hour number.",
      "formula": "Booked hourly = weekly revenue ÷ hours with clients in chair. Worked hourly = weekly revenue ÷ total hours on schedule (including gaps).",
      "inputs": [
        {
          "id": "clients",
          "label": "Clients served per week",
          "kind": "number"
        },
        {
          "id": "avgTicket",
          "label": "Average ticket per client",
          "kind": "number"
        },
        {
          "id": "avgServiceMin",
          "label": "Average service length",
          "kind": "number"
        },
        {
          "id": "scheduledHours",
          "label": "Total hours scheduled per week",
          "kind": "number"
        },
        {
          "id": "gapMinPerDay",
          "label": "Unbooked gap time per day",
          "kind": "number"
        },
        {
          "id": "daysPerWeek",
          "label": "Days worked per week",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "workedHourly",
          "label": "Revenue per scheduled hour"
        },
        {
          "id": "bookedHourly",
          "label": "Revenue per booked hour"
        },
        {
          "id": "revenue",
          "label": "Weekly revenue"
        },
        {
          "id": "utilization",
          "label": "Chair utilization"
        },
        {
          "id": "gapHours",
          "label": "Unbooked hours per week"
        }
      ]
    },
    {
      "slug": "hair-color-cost-per-service",
      "url": "https://www.revenuelab.fyi/toolbox/hair-color-cost-per-service",
      "title": "Hair Color Cost Per Service Calculator",
      "category": "financial",
      "summary": "Find your true product cost per color service and the margin it leaves.",
      "formula": "Product cost = (color grams × cost per gram) + (developer oz × cost per oz) + toner cost + foil/bowl cost. Margin % = (price − product cost) ÷ price.",
      "inputs": [
        {
          "id": "colorGrams",
          "label": "Color tube used",
          "kind": "number"
        },
        {
          "id": "costPerGram",
          "label": "Cost per gram of color",
          "kind": "number"
        },
        {
          "id": "developerOz",
          "label": "Developer used",
          "kind": "number"
        },
        {
          "id": "costPerOzDev",
          "label": "Cost per oz developer",
          "kind": "number"
        },
        {
          "id": "tonerCost",
          "label": "Toner / gloss cost",
          "kind": "number"
        },
        {
          "id": "otherSupplies",
          "label": "Foils, bowls, gloves, other supplies",
          "kind": "number"
        },
        {
          "id": "servicePrice",
          "label": "Service price charged",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "total",
          "label": "Total product cost"
        },
        {
          "id": "margin",
          "label": "Gross margin per service"
        },
        {
          "id": "marginPct",
          "label": "Gross margin %"
        },
        {
          "id": "costPct",
          "label": "Product cost % of price"
        },
        {
          "id": "colorCost",
          "label": "Color tube cost"
        }
      ]
    },
    {
      "slug": "retail-attachment-rate",
      "url": "https://www.revenuelab.fyi/toolbox/retail-attachment-rate",
      "title": "Retail Attachment Rate Calculator",
      "category": "financial",
      "summary": "Measure what share of clients buy retail and what it's worth to you.",
      "formula": "Attachment rate = retail transactions ÷ service tickets. Retail revenue per ticket = total retail $ ÷ service tickets. Opportunity = (target rate − current rate) × tickets × avg retail sale.",
      "inputs": [
        {
          "id": "serviceTickets",
          "label": "Service tickets per month",
          "kind": "number"
        },
        {
          "id": "retailTransactions",
          "label": "Retail transactions per month",
          "kind": "number"
        },
        {
          "id": "avgRetailSale",
          "label": "Average retail sale",
          "kind": "number"
        },
        {
          "id": "targetRate",
          "label": "Target attachment rate",
          "kind": "number"
        },
        {
          "id": "retailMarginPct",
          "label": "Retail gross margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "attachRate",
          "label": "Current attachment rate"
        },
        {
          "id": "monthlyRetailRevenue",
          "label": "Current monthly retail revenue"
        },
        {
          "id": "additionalRevenue",
          "label": "Additional monthly revenue at target"
        },
        {
          "id": "additionalAnnualProfit",
          "label": "Additional annual gross profit at target"
        },
        {
          "id": "annualRetailRevenue",
          "label": "Current annual retail revenue"
        }
      ]
    },
    {
      "slug": "salon-service-pricing-target-hourly",
      "url": "https://www.revenuelab.fyi/toolbox/salon-service-pricing-target-hourly",
      "title": "Service Pricing from Target Hourly Rate",
      "category": "financial",
      "summary": "Price each service backward from the hourly rate you need to earn.",
      "formula": "Price = (target hourly ÷ 60 × total minutes including buffer) + product cost, then rounded to a market-friendly price point.",
      "inputs": [
        {
          "id": "targetHourly",
          "label": "Target hourly rate for the chair",
          "kind": "number"
        },
        {
          "id": "activeMin",
          "label": "Active service time",
          "kind": "number"
        },
        {
          "id": "processingMin",
          "label": "Processing / downtime (still occupies chair)",
          "kind": "number"
        },
        {
          "id": "cleanupMin",
          "label": "Consultation + cleanup buffer",
          "kind": "number"
        },
        {
          "id": "productCost",
          "label": "Product cost for this service",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "roundedPrice",
          "label": "Suggested service price"
        },
        {
          "id": "rawPrice",
          "label": "Exact calculated price"
        },
        {
          "id": "totalMin",
          "label": "Total chair-occupied minutes"
        },
        {
          "id": "laborValue",
          "label": "Labor/overhead value of time"
        },
        {
          "id": "impliedHourly",
          "label": "Implied hourly rate at raw price"
        }
      ]
    },
    {
      "slug": "salon-chair-utilization",
      "url": "https://www.revenuelab.fyi/toolbox/salon-chair-utilization",
      "title": "Chair Utilization Calculator",
      "category": "financial",
      "summary": "See what percent of available chair-hours are actually generating revenue.",
      "formula": "Utilization = booked chair-hours ÷ (chairs × hours open) × 100. Unused revenue potential = unused chair-hours × average revenue per chair-hour.",
      "inputs": [
        {
          "id": "chairs",
          "label": "Chairs / stations",
          "kind": "number"
        },
        {
          "id": "hoursOpenWeek",
          "label": "Hours open per week",
          "kind": "number"
        },
        {
          "id": "bookedChairHours",
          "label": "Booked chair-hours per week",
          "kind": "number"
        },
        {
          "id": "avgRevenuePerHour",
          "label": "Average revenue per booked chair-hour",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "utilization",
          "label": "Chair utilization"
        },
        {
          "id": "currentRevenue",
          "label": "Current weekly revenue"
        },
        {
          "id": "unusedHours",
          "label": "Unused chair-hours per week"
        },
        {
          "id": "unusedRevenuePotential",
          "label": "Weekly revenue potential left on table"
        },
        {
          "id": "availableHours",
          "label": "Total available chair-hours"
        }
      ]
    },
    {
      "slug": "rebooking-rate-revenue-impact",
      "url": "https://www.revenuelab.fyi/toolbox/rebooking-rate-revenue-impact",
      "title": "Rebooking Rate Revenue Impact Calculator",
      "category": "financial",
      "summary": "See what a higher pre-booking rate is worth in annual revenue.",
      "formula": "Retained clients = active clients × rebooking rate. Annual revenue = retained clients × visits/year × avg ticket. Impact = (target rate − current rate) × active clients × visits/year × avg ticket.",
      "inputs": [
        {
          "id": "activeClients",
          "label": "Active clients per month",
          "kind": "number"
        },
        {
          "id": "currentRate",
          "label": "Current rebooking rate",
          "kind": "number"
        },
        {
          "id": "targetRate",
          "label": "Target rebooking rate",
          "kind": "number"
        },
        {
          "id": "visitsPerYear",
          "label": "Visits per year for a rebooked client",
          "kind": "number"
        },
        {
          "id": "avgTicket",
          "label": "Average ticket",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "impact",
          "label": "Additional annual revenue at target rate"
        },
        {
          "id": "currentRevenue",
          "label": "Annual revenue at current rate"
        },
        {
          "id": "targetRevenue",
          "label": "Annual revenue at target rate"
        },
        {
          "id": "additionalRetained",
          "label": "Additional rebooked clients per month"
        }
      ]
    },
    {
      "slug": "medspa-injector-vial-roi",
      "url": "https://www.revenuelab.fyi/toolbox/medspa-injector-vial-roi",
      "title": "Med-Spa Injector Vial ROI Calculator",
      "category": "financial",
      "summary": "Calculate profit per vial of neuromodulator or filler after waste and cost.",
      "formula": "Usable units = total units × (1 − waste%). Revenue = usable units × price per unit. Profit = revenue − vial cost. Profit per injector hour = profit ÷ injection time in hours.",
      "inputs": [
        {
          "id": "vialCost",
          "label": "Vial / syringe cost",
          "kind": "number"
        },
        {
          "id": "totalUnits",
          "label": "Total units in vial",
          "kind": "number"
        },
        {
          "id": "pricePerUnit",
          "label": "Price charged per unit",
          "kind": "number"
        },
        {
          "id": "wastePct",
          "label": "Expected waste / unused",
          "kind": "number"
        },
        {
          "id": "injectorMinutes",
          "label": "Total injector time to use full vial",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "profit",
          "label": "Gross profit per vial"
        },
        {
          "id": "revenue",
          "label": "Revenue per vial (billable)"
        },
        {
          "id": "marginPct",
          "label": "Gross margin %"
        },
        {
          "id": "profitPerHour",
          "label": "Profit per injector hour"
        },
        {
          "id": "usableUnits",
          "label": "Usable units after waste"
        }
      ]
    },
    {
      "slug": "salon-membership-pricing",
      "url": "https://www.revenuelab.fyi/toolbox/salon-membership-pricing",
      "title": "Salon Membership Pricing Calculator",
      "category": "financial",
      "summary": "Price a monthly membership so it locks in revenue without cannibalizing margin.",
      "formula": "Annual membership revenue = monthly fee × 12. Annual pay-as-you-go revenue = regular price × visits without membership. Compare against retained-frequency assumption.",
      "inputs": [
        {
          "id": "regularPrice",
          "label": "Regular price per visit",
          "kind": "number"
        },
        {
          "id": "monthlyFee",
          "label": "Monthly membership fee",
          "kind": "number"
        },
        {
          "id": "visitsIncluded",
          "label": "Visits included per month",
          "kind": "number"
        },
        {
          "id": "nonMemberVisitsYear",
          "label": "Typical visits/year without membership",
          "kind": "number"
        },
        {
          "id": "memberVisitsYear",
          "label": "Typical visits/year as a member",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "annualMembershipRevenue",
          "label": "Annual revenue per member"
        },
        {
          "id": "effectivePricePerVisit",
          "label": "Effective price per visit"
        },
        {
          "id": "discountPct",
          "label": "Effective discount vs regular price"
        },
        {
          "id": "nonMemberAnnual",
          "label": "Projected annual revenue without membership"
        },
        {
          "id": "revenueLift",
          "label": "Revenue lift from membership"
        },
        {
          "id": "memberValueAnnual",
          "label": "Retail value of visits used by member"
        }
      ]
    },
    {
      "slug": "no-show-cancellation-policy-revenue",
      "url": "https://www.revenuelab.fyi/toolbox/no-show-cancellation-policy-revenue",
      "title": "No-Show & Cancellation Policy Revenue Calculator",
      "category": "financial",
      "summary": "Quantify what no-shows cost you and what a fee policy recovers.",
      "formula": "Monthly loss = appointments × no-show rate × avg ticket. Fee recovery = no-show count × fee amount. Reduced no-shows after policy = current rate × (1 − deterrence factor).",
      "inputs": [
        {
          "id": "appointments",
          "label": "Appointments per month",
          "kind": "number"
        },
        {
          "id": "noShowRate",
          "label": "Current no-show/late-cancel rate",
          "kind": "number"
        },
        {
          "id": "avgTicket",
          "label": "Average ticket value",
          "kind": "number"
        },
        {
          "id": "feeAmount",
          "label": "Proposed cancellation fee",
          "kind": "number"
        },
        {
          "id": "deterrenceFactor",
          "label": "Expected reduction in no-show rate from policy",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalMonthlyBenefit",
          "label": "Total monthly benefit of policy"
        },
        {
          "id": "currentLoss",
          "label": "Current monthly revenue lost"
        },
        {
          "id": "newLoss",
          "label": "Projected loss after policy"
        },
        {
          "id": "feeRevenue",
          "label": "Monthly fee revenue collected"
        },
        {
          "id": "noShowCount",
          "label": "Current monthly no-shows"
        }
      ]
    },
    {
      "slug": "tip-pooling-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/tip-pooling-calculator",
      "title": "Tip Pooling Calculator",
      "category": "financial",
      "summary": "Split pooled tips fairly by hours, role weight, or revenue contribution.",
      "formula": "Hours method: payout = total tips × (individual hours ÷ total hours). Weighted method: payout = total tips × (individual points ÷ total points), where points = hours × role weight.",
      "inputs": [
        {
          "id": "totalTips",
          "label": "Total pooled tips",
          "kind": "number"
        },
        {
          "id": "stylistHours",
          "label": "Lead stylist hours (this period)",
          "kind": "number"
        },
        {
          "id": "stylistWeight",
          "label": "Lead stylist role weight",
          "kind": "number"
        },
        {
          "id": "assistantHours",
          "label": "Assistant hours (this period)",
          "kind": "number"
        },
        {
          "id": "assistantWeight",
          "label": "Assistant role weight",
          "kind": "number"
        },
        {
          "id": "frontDeskHours",
          "label": "Front desk hours (this period)",
          "kind": "number"
        },
        {
          "id": "frontDeskWeight",
          "label": "Front desk role weight",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "stylistPayout",
          "label": "Lead stylist payout"
        },
        {
          "id": "assistantPayout",
          "label": "Assistant payout"
        },
        {
          "id": "frontDeskPayout",
          "label": "Front desk payout"
        },
        {
          "id": "totalPoints",
          "label": "Total weighted points in pool"
        }
      ]
    },
    {
      "slug": "apprentice-ramp-cost",
      "url": "https://www.revenuelab.fyi/toolbox/apprentice-ramp-cost",
      "title": "Apprentice / Assistant Ramp Cost Calculator",
      "category": "financial",
      "summary": "Estimate the real cost of training a new stylist to full productivity.",
      "formula": "Total ramp cost = (hourly wage × ramp weeks × hours/week) + (trainer opportunity cost) + product waste. Payback months = total ramp cost ÷ monthly profit once productive.",
      "inputs": [
        {
          "id": "hourlyWage",
          "label": "Apprentice hourly wage",
          "kind": "number"
        },
        {
          "id": "rampWeeks",
          "label": "Ramp period length",
          "kind": "number"
        },
        {
          "id": "hoursPerWeek",
          "label": "Hours per week during ramp",
          "kind": "number"
        },
        {
          "id": "trainerHoursPerWeek",
          "label": "Trainer hours diverted per week",
          "kind": "number"
        },
        {
          "id": "trainerHourlyValue",
          "label": "Trainer's revenue value per hour",
          "kind": "number"
        },
        {
          "id": "productWaste",
          "label": "Total product waste during training",
          "kind": "number"
        },
        {
          "id": "monthlyProfitOnceProductive",
          "label": "Monthly profit once fully productive",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalRampCost",
          "label": "Total ramp cost"
        },
        {
          "id": "paybackMonths",
          "label": "Payback period once productive"
        },
        {
          "id": "wageCost",
          "label": "Wages paid during ramp"
        },
        {
          "id": "trainerCost",
          "label": "Trainer opportunity cost"
        }
      ]
    },
    {
      "slug": "salon-product-inventory-turns",
      "url": "https://www.revenuelab.fyi/toolbox/salon-product-inventory-turns",
      "title": "Salon Product Inventory Turns Calculator",
      "category": "financial",
      "summary": "Measure how efficiently your retail inventory converts to cash.",
      "formula": "Inventory turns = annual COGS ÷ average inventory value (at cost). Days on hand = 365 ÷ turns.",
      "inputs": [
        {
          "id": "annualCOGS",
          "label": "Annual retail cost of goods sold",
          "kind": "number"
        },
        {
          "id": "avgInventoryValue",
          "label": "Average inventory value (at cost)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "turns",
          "label": "Inventory turns per year"
        },
        {
          "id": "daysOnHand",
          "label": "Days of inventory on hand"
        },
        {
          "id": "monthlyTurns",
          "label": "Turns per month"
        }
      ]
    },
    {
      "slug": "mobile-salon-vs-storefront-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/mobile-salon-vs-storefront-breakeven",
      "title": "Mobile vs Storefront Breakeven Calculator",
      "category": "financial",
      "summary": "Compare fixed costs and travel time to find which model breaks even faster.",
      "formula": "Storefront breakeven clients = fixed costs ÷ (ticket − variable cost). Mobile breakeven clients = fixed costs ÷ (ticket − variable cost − travel cost per client).",
      "inputs": [
        {
          "id": "avgTicket",
          "label": "Average ticket",
          "kind": "number"
        },
        {
          "id": "variableCostPerClient",
          "label": "Product/supply cost per client",
          "kind": "number"
        },
        {
          "id": "storefrontFixed",
          "label": "Storefront monthly fixed costs (rent, utilities)",
          "kind": "number"
        },
        {
          "id": "mobileFixed",
          "label": "Mobile monthly fixed costs (vehicle, insurance, equipment)",
          "kind": "number"
        },
        {
          "id": "travelMinPerClient",
          "label": "Average travel time per mobile client",
          "kind": "number"
        },
        {
          "id": "hourlyValue",
          "label": "Value of an hour of your time",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "crossoverClients",
          "label": "Crossover clients/month (storefront wins above)"
        },
        {
          "id": "storefrontBreakevenClients",
          "label": "Storefront breakeven clients/month"
        },
        {
          "id": "mobileBreakevenClients",
          "label": "Mobile breakeven clients/month"
        },
        {
          "id": "travelCost",
          "label": "Travel time cost per mobile client"
        },
        {
          "id": "mobileContribution",
          "label": "Mobile contribution margin per client"
        }
      ]
    },
    {
      "slug": "barbershop-chair-rent-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/barbershop-chair-rent-breakeven",
      "title": "Barbershop Chair Rent Breakeven Calculator",
      "category": "financial",
      "summary": "Find the number of cuts a barber needs to cover weekly chair rent.",
      "formula": "Breakeven cuts = weekly rent ÷ (avg ticket − supply cost per cut). Weekly profit = (cuts − breakeven) × (avg ticket − supply cost).",
      "inputs": [
        {
          "id": "weeklyRent",
          "label": "Weekly chair rent",
          "kind": "number"
        },
        {
          "id": "avgTicket",
          "label": "Average ticket per cut",
          "kind": "number"
        },
        {
          "id": "supplyCost",
          "label": "Supply cost per cut",
          "kind": "number"
        },
        {
          "id": "cutsPerWeek",
          "label": "Actual cuts per week",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenCuts",
          "label": "Cuts needed to cover rent"
        },
        {
          "id": "weeklyProfit",
          "label": "Weekly profit at current volume"
        },
        {
          "id": "cushionPct",
          "label": "Cushion above breakeven"
        },
        {
          "id": "margin",
          "label": "Profit margin per cut"
        }
      ]
    },
    {
      "slug": "nail-salon-service-margin",
      "url": "https://www.revenuelab.fyi/toolbox/nail-salon-service-margin",
      "title": "Nail Salon Service Margin Calculator",
      "category": "financial",
      "summary": "Break down product cost, labor, and true margin for manicure and pedicure services.",
      "formula": "Product cost = polish/powder + disposables. Labor cost = technician hourly rate × time hours. Margin = price − product cost − labor cost.",
      "inputs": [
        {
          "id": "servicePrice",
          "label": "Service price",
          "kind": "number"
        },
        {
          "id": "productCost",
          "label": "Polish / powder / gel product cost",
          "kind": "number"
        },
        {
          "id": "disposables",
          "label": "Disposables (files, liners, etc.)",
          "kind": "number"
        },
        {
          "id": "serviceMin",
          "label": "Service time",
          "kind": "number"
        },
        {
          "id": "techHourly",
          "label": "Technician effective hourly cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "margin",
          "label": "Net margin per service"
        },
        {
          "id": "marginPct",
          "label": "Net margin %"
        },
        {
          "id": "productCost",
          "label": "Total product/disposables cost"
        },
        {
          "id": "laborCost",
          "label": "Labor cost for the service"
        }
      ]
    },
    {
      "slug": "tattoo-shop-chair-rate",
      "url": "https://www.revenuelab.fyi/toolbox/tattoo-shop-chair-rate",
      "title": "Tattoo Shop Chair Rate Calculator",
      "category": "financial",
      "summary": "Compare shop percentage splits against flat chair rent for tattoo artists.",
      "formula": "Split net = revenue × artist% − shop-covered supply offset. Flat rent net = revenue − monthly rent − artist's own supply cost.",
      "inputs": [
        {
          "id": "monthlyRevenue",
          "label": "Monthly tattoo revenue",
          "kind": "number"
        },
        {
          "id": "splitPct",
          "label": "Artist's split percentage",
          "kind": "number"
        },
        {
          "id": "splitSupplyPct",
          "label": "Artist's supply cost under split (shop covers most)",
          "kind": "number"
        },
        {
          "id": "monthlyRent",
          "label": "Flat monthly chair rent",
          "kind": "number"
        },
        {
          "id": "rentSupplyPct",
          "label": "Artist's supply cost under flat rent",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "rentNet",
          "label": "Net income under flat rent"
        },
        {
          "id": "splitNet",
          "label": "Net income under percentage split"
        },
        {
          "id": "difference",
          "label": "Flat rent advantage (or disadvantage)"
        },
        {
          "id": "crossover",
          "label": "Revenue where flat rent beats split"
        }
      ]
    },
    {
      "slug": "spa-treatment-room-utilization",
      "url": "https://www.revenuelab.fyi/toolbox/spa-treatment-room-utilization",
      "title": "Spa Treatment Room Utilization Calculator",
      "category": "financial",
      "summary": "Measure how efficiently your treatment rooms convert open hours to revenue.",
      "formula": "Max services/day/room = hours open ÷ (service length + turnover time). Utilization = actual services ÷ (max services × rooms × days).",
      "inputs": [
        {
          "id": "rooms",
          "label": "Treatment rooms",
          "kind": "number"
        },
        {
          "id": "hoursOpenDay",
          "label": "Hours open per day",
          "kind": "number"
        },
        {
          "id": "serviceMin",
          "label": "Average service length",
          "kind": "number"
        },
        {
          "id": "turnoverMin",
          "label": "Turnover time between clients",
          "kind": "number"
        },
        {
          "id": "actualServicesDay",
          "label": "Actual services delivered per day (all rooms)",
          "kind": "number"
        },
        {
          "id": "avgPrice",
          "label": "Average service price",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "utilization",
          "label": "Room utilization"
        },
        {
          "id": "maxServicesDay",
          "label": "Max services per day (all rooms)"
        },
        {
          "id": "unusedServices",
          "label": "Unused service slots per day"
        },
        {
          "id": "dailyLostRevenue",
          "label": "Daily revenue potential unused"
        }
      ]
    },
    {
      "slug": "med-spa-membership-breakeven",
      "url": "https://www.revenuelab.fyi/toolbox/med-spa-membership-breakeven",
      "title": "Med-Spa Membership Breakeven Calculator",
      "category": "financial",
      "summary": "Find how many members you need to cover the treatments included in a plan.",
      "formula": "Margin per member = monthly fee − included treatment cost. Members needed to cover overhead = program overhead ÷ margin per member.",
      "inputs": [
        {
          "id": "monthlyFee",
          "label": "Monthly membership fee",
          "kind": "number"
        },
        {
          "id": "includedCost",
          "label": "Cost of included treatment(s) per member/month",
          "kind": "number"
        },
        {
          "id": "programOverhead",
          "label": "Monthly program overhead (coordinator, software)",
          "kind": "number"
        },
        {
          "id": "currentMembers",
          "label": "Current member count",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "membersNeeded",
          "label": "Members needed to cover overhead"
        },
        {
          "id": "marginPerMember",
          "label": "Gross margin per member/month"
        },
        {
          "id": "totalMargin",
          "label": "Total monthly margin at current members"
        },
        {
          "id": "netAfterOverhead",
          "label": "Net profit after program overhead"
        }
      ]
    },
    {
      "slug": "lash-extension-fill-economics",
      "url": "https://www.revenuelab.fyi/toolbox/lash-extension-fill-economics",
      "title": "Lash Extension Fill Economics Calculator",
      "category": "financial",
      "summary": "Compare full set and fill pricing to find your real revenue per lash hour.",
      "formula": "Revenue per hour = price ÷ service hours. Blended revenue per client-month = (full set revenue ÷ full set cycle weeks + fill revenue × fills per cycle) normalized to weeks.",
      "inputs": [
        {
          "id": "fullSetPrice",
          "label": "Full set price",
          "kind": "number"
        },
        {
          "id": "fullSetHours",
          "label": "Full set time",
          "kind": "number"
        },
        {
          "id": "fillPrice",
          "label": "Fill price",
          "kind": "number"
        },
        {
          "id": "fillHours",
          "label": "Fill time",
          "kind": "number"
        },
        {
          "id": "fillIntervalWeeks",
          "label": "Weeks between fills",
          "kind": "number"
        },
        {
          "id": "cycleWeeks",
          "label": "Weeks before a new full set is needed",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "blendedHourly",
          "label": "Blended revenue per hour (full cycle)"
        },
        {
          "id": "fullSetHourly",
          "label": "Full set revenue per hour"
        },
        {
          "id": "fillHourly",
          "label": "Fill revenue per hour"
        },
        {
          "id": "fillsPerCycle",
          "label": "Fills per full-set cycle"
        },
        {
          "id": "revenuePerWeek",
          "label": "Average revenue per client per week"
        }
      ]
    },
    {
      "slug": "salon-double-booking-capacity",
      "url": "https://www.revenuelab.fyi/toolbox/salon-double-booking-capacity",
      "title": "Salon Double-Booking Capacity Calculator",
      "category": "financial",
      "summary": "See how much extra revenue double-booking processing time can add.",
      "formula": "Additional clients/day = processing minutes available ÷ average active work minutes needed for a second client, capped by realistic sustainable ratio. Additional revenue = additional clients × avg ticket.",
      "inputs": [
        {
          "id": "activeMin",
          "label": "Active work time per client",
          "kind": "number"
        },
        {
          "id": "processingMin",
          "label": "Processing time per client",
          "kind": "number"
        },
        {
          "id": "hoursDay",
          "label": "Hours worked per day",
          "kind": "number"
        },
        {
          "id": "avgTicket",
          "label": "Average ticket",
          "kind": "number"
        },
        {
          "id": "sustainableRatio",
          "label": "Sustainable double-book ratio",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "additionalRevenue",
          "label": "Additional daily revenue from double-booking"
        },
        {
          "id": "additionalClients",
          "label": "Additional clients per day"
        },
        {
          "id": "doubleBookedClients",
          "label": "Total clients/day double-booked"
        },
        {
          "id": "singleBookedClients",
          "label": "Clients/day without double-booking"
        }
      ]
    },
    {
      "slug": "hair-extension-markup-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/hair-extension-markup-calculator",
      "title": "Hair Extension Markup Calculator",
      "category": "financial",
      "summary": "Price extension hair and installation labor separately for true margin.",
      "formula": "Hair price = wholesale cost × (1 + markup%). Labor price = install hours × hourly rate. Total price = hair price + labor price. Margins computed separately for each component.",
      "inputs": [
        {
          "id": "wholesaleCost",
          "label": "Wholesale hair cost (per set)",
          "kind": "number"
        },
        {
          "id": "hairMarkupPct",
          "label": "Markup on hair",
          "kind": "number"
        },
        {
          "id": "installHours",
          "label": "Installation time",
          "kind": "number"
        },
        {
          "id": "installHourlyRate",
          "label": "Installation labor rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalPrice",
          "label": "Total client price"
        },
        {
          "id": "hairPrice",
          "label": "Hair product price"
        },
        {
          "id": "hairMargin",
          "label": "Margin on hair product"
        },
        {
          "id": "hairMarginPct",
          "label": "Hair margin %"
        },
        {
          "id": "laborPrice",
          "label": "Installation labor price"
        }
      ]
    },
    {
      "slug": "esthetician-day-rate-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/esthetician-day-rate-calculator",
      "title": "Esthetician Day Rate Calculator",
      "category": "financial",
      "summary": "Find the minimum daily bookings an esthetician needs to justify a full day.",
      "formula": "Breakeven services/day = daily fixed cost ÷ (avg service price − product cost − commission). Daily profit = (actual services − breakeven) × contribution margin.",
      "inputs": [
        {
          "id": "dailyFixedCost",
          "label": "Daily fixed cost (room, base wage)",
          "kind": "number"
        },
        {
          "id": "avgServicePrice",
          "label": "Average service price",
          "kind": "number"
        },
        {
          "id": "productCostPerService",
          "label": "Product cost per service",
          "kind": "number"
        },
        {
          "id": "commissionPct",
          "label": "Commission paid on service",
          "kind": "number"
        },
        {
          "id": "actualServicesDay",
          "label": "Actual services booked per day",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenServices",
          "label": "Breakeven services per day"
        },
        {
          "id": "dailyProfit",
          "label": "Daily profit at current volume"
        },
        {
          "id": "contribution",
          "label": "Contribution margin per service"
        }
      ]
    },
    {
      "slug": "spa-package-pricing-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/spa-package-pricing-calculator",
      "title": "Spa Package Pricing Calculator",
      "category": "financial",
      "summary": "Bundle multiple services into a package price with the right discount.",
      "formula": "Sum of individual prices × (1 − discount%) = package price. Package margin = package price − sum of individual costs.",
      "inputs": [
        {
          "id": "service1Price",
          "label": "Service 1 price",
          "kind": "number"
        },
        {
          "id": "service2Price",
          "label": "Service 2 price",
          "kind": "number"
        },
        {
          "id": "service3Price",
          "label": "Service 3 price",
          "kind": "number"
        },
        {
          "id": "totalCost",
          "label": "Combined product + labor cost of all services",
          "kind": "number"
        },
        {
          "id": "discountPct",
          "label": "Package discount",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "packagePrice",
          "label": "Package price"
        },
        {
          "id": "savings",
          "label": "Client savings vs à la carte"
        },
        {
          "id": "margin",
          "label": "Package gross margin"
        },
        {
          "id": "marginPct",
          "label": "Package margin %"
        },
        {
          "id": "sum",
          "label": "Sum of individual service prices"
        }
      ]
    },
    {
      "slug": "salon-employee-vs-independent-contractor-cost",
      "url": "https://www.revenuelab.fyi/toolbox/salon-employee-vs-independent-contractor-cost",
      "title": "Employee vs Independent Contractor Cost Calculator",
      "category": "financial",
      "summary": "Compare the true cost of a W-2 stylist versus a 1099 booth renter.",
      "formula": "W-2 total cost = wage + payroll taxes (~7.65% FICA + unemployment) + workers' comp + benefits load. 1099 net to salon = booth rent income − any provided amenities.",
      "inputs": [
        {
          "id": "annualWage",
          "label": "Estimated annual W-2 wage/commission paid",
          "kind": "number"
        },
        {
          "id": "payrollTaxPct",
          "label": "Employer payroll tax rate",
          "kind": "number"
        },
        {
          "id": "workersCompPct",
          "label": "Workers' comp rate",
          "kind": "number"
        },
        {
          "id": "benefitsAnnual",
          "label": "Annual benefits cost (health, PTO, etc)",
          "kind": "number"
        },
        {
          "id": "annualBoothRent",
          "label": "Annual booth rent income (if 1099)",
          "kind": "number"
        },
        {
          "id": "amenitiesCost",
          "label": "Annual amenities provided to contractor",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalW2Cost",
          "label": "Total annual employer cost (W-2)"
        },
        {
          "id": "net1099Income",
          "label": "Net income to salon from booth rent (1099)"
        },
        {
          "id": "payrollTax",
          "label": "Employer payroll tax"
        },
        {
          "id": "workersComp",
          "label": "Workers' comp cost"
        },
        {
          "id": "difference",
          "label": "Total swing between models"
        }
      ]
    },
    {
      "slug": "photographer-package-pricing-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/photographer-package-pricing-calculator",
      "title": "Wedding Photographer Package Pricing Calculator",
      "category": "financial",
      "summary": "Price a wedding package so hours, editing, and travel actually pay your target wage.",
      "formula": "Package price = (shoot hrs + edit hrs) × target hourly rate × (1 + overhead %) + gear amortization + travel.",
      "inputs": [
        {
          "id": "shootHours",
          "label": "Shoot hours (coverage)",
          "kind": "number"
        },
        {
          "id": "editRatio",
          "label": "Editing hours per shoot hour",
          "kind": "number"
        },
        {
          "id": "targetHourly",
          "label": "Target hourly rate",
          "kind": "number"
        },
        {
          "id": "overhead",
          "label": "Business overhead",
          "kind": "number"
        },
        {
          "id": "gearAmort",
          "label": "Gear amortization per wedding",
          "kind": "number"
        },
        {
          "id": "travel",
          "label": "Travel cost",
          "kind": "number"
        },
        {
          "id": "images",
          "label": "Delivered images",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Package price to quote"
        },
        {
          "id": "totalHrs",
          "label": "Total hours (shoot + edit)"
        },
        {
          "id": "editHrs",
          "label": "Editing hours"
        },
        {
          "id": "effHourly",
          "label": "Effective hourly at this price"
        },
        {
          "id": "perImage",
          "label": "Cost per delivered image"
        }
      ]
    },
    {
      "slug": "dj-hourly-rate-builder",
      "url": "https://www.revenuelab.fyi/toolbox/dj-hourly-rate-builder",
      "title": "Wedding DJ & Band Hourly Rate Builder",
      "category": "financial",
      "summary": "Build an hourly rate from gear, setup time, and target take-home pay.",
      "formula": "Quote = (performance hrs × hourly rate) + (setup/teardown hrs × 50% rate) + gear amortization + extra-hour fee × extra hrs.",
      "inputs": [
        {
          "id": "perfHours",
          "label": "Performance hours (reception)",
          "kind": "number"
        },
        {
          "id": "hourlyRate",
          "label": "Target hourly rate",
          "kind": "number"
        },
        {
          "id": "setupHours",
          "label": "Setup + teardown hours",
          "kind": "number"
        },
        {
          "id": "gearAmort",
          "label": "Gear/vehicle amortization per event",
          "kind": "number"
        },
        {
          "id": "extraHourFee",
          "label": "Extra-hour fee",
          "kind": "number"
        },
        {
          "id": "extraHours",
          "label": "Extra hours requested",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "quote",
          "label": "Total quote"
        },
        {
          "id": "perfPay",
          "label": "Performance-hour pay"
        },
        {
          "id": "setupPay",
          "label": "Setup/teardown pay"
        },
        {
          "id": "totalHours",
          "label": "Total hours on site"
        },
        {
          "id": "effHourly",
          "label": "True effective hourly rate"
        }
      ]
    },
    {
      "slug": "florist-stem-markup-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/florist-stem-markup-calculator",
      "title": "Florist Stem Cost & Markup Calculator",
      "category": "financial",
      "summary": "Price arrangements from wholesale stem cost, labor, and target margin.",
      "formula": "Retail price = (stem cost × count + hard goods + labor cost) × markup multiplier.",
      "inputs": [
        {
          "id": "stemCost",
          "label": "Average wholesale cost per stem",
          "kind": "number"
        },
        {
          "id": "stemCount",
          "label": "Stems per arrangement",
          "kind": "number"
        },
        {
          "id": "hardGoods",
          "label": "Hard goods (vase, foam, ribbon)",
          "kind": "number"
        },
        {
          "id": "laborHours",
          "label": "Design labor",
          "kind": "number"
        },
        {
          "id": "laborRate",
          "label": "Design labor rate",
          "kind": "number"
        },
        {
          "id": "markup",
          "label": "Target markup multiplier",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Retail price per arrangement"
        },
        {
          "id": "flowerCost",
          "label": "Flower cost"
        },
        {
          "id": "laborCost",
          "label": "Labor cost"
        },
        {
          "id": "totalCost",
          "label": "Total hard + labor cost"
        },
        {
          "id": "margin",
          "label": "Gross margin"
        }
      ]
    },
    {
      "slug": "catering-per-head-cost-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/catering-per-head-cost-calculator",
      "title": "Wedding Catering Per-Head Cost Calculator",
      "category": "financial",
      "summary": "Turn food, labor, rentals, and service style into a defensible per-plate price.",
      "formula": "Price per head = (food cost + labor per head + rental per head) ÷ target food-cost %.",
      "inputs": [
        {
          "id": "foodCost",
          "label": "Raw food cost per guest",
          "kind": "number"
        },
        {
          "id": "guestCount",
          "label": "Guest count",
          "kind": "number"
        },
        {
          "id": "staffCount",
          "label": "Service staff on shift",
          "kind": "number"
        },
        {
          "id": "staffHours",
          "label": "Hours per staff member",
          "kind": "number"
        },
        {
          "id": "staffRate",
          "label": "Staff rate",
          "kind": "number"
        },
        {
          "id": "rentalPerHead",
          "label": "Rental items per head",
          "kind": "number"
        },
        {
          "id": "targetFoodPct",
          "label": "Target food-cost percentage",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pricePerHead",
          "label": "Price per head to quote"
        },
        {
          "id": "laborPerHead",
          "label": "Labor cost per head"
        },
        {
          "id": "costPerHead",
          "label": "Total cost per head"
        },
        {
          "id": "totalRevenue",
          "label": "Total event revenue"
        },
        {
          "id": "totalCost",
          "label": "Total event cost"
        }
      ]
    },
    {
      "slug": "venue-rental-breakeven-bookings",
      "url": "https://www.revenuelab.fyi/toolbox/venue-rental-breakeven-bookings",
      "title": "Wedding Venue Rental Breakeven Calculator",
      "category": "financial",
      "summary": "Find the number of bookings per month a venue needs to cover fixed costs.",
      "formula": "Breakeven bookings = fixed monthly cost ÷ (rental fee − variable cost per event).",
      "inputs": [
        {
          "id": "fixedCost",
          "label": "Fixed monthly cost (mortgage/lease, insurance, staff salaries)",
          "kind": "number"
        },
        {
          "id": "rentalFee",
          "label": "Average rental fee per booking",
          "kind": "number"
        },
        {
          "id": "variableCost",
          "label": "Variable cost per event (cleaning, utilities, day-of staff)",
          "kind": "number"
        },
        {
          "id": "actualBookings",
          "label": "Actual bookings per month",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakeven",
          "label": "Breakeven bookings per month"
        },
        {
          "id": "contribution",
          "label": "Contribution margin per booking"
        },
        {
          "id": "marginOfSafety",
          "label": "Bookings above/below breakeven"
        },
        {
          "id": "monthlyProfit",
          "label": "Monthly profit at actual bookings"
        }
      ]
    },
    {
      "slug": "wedding-planner-fee-model-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/wedding-planner-fee-model-calculator",
      "title": "Wedding Planner Fee Model Calculator",
      "category": "financial",
      "summary": "Compare flat-fee, hourly, and percentage-of-budget pricing side by side.",
      "formula": "Percentage fee = budget × fee %; hourly fee = estimated hours × rate; effective hourly = fee ÷ estimated hours.",
      "inputs": [
        {
          "id": "budget",
          "label": "Total wedding budget",
          "kind": "number"
        },
        {
          "id": "pctFee",
          "label": "Percentage-of-budget fee",
          "kind": "number"
        },
        {
          "id": "flatFee",
          "label": "Flat-fee package price",
          "kind": "number"
        },
        {
          "id": "hourlyRate",
          "label": "Hourly rate",
          "kind": "number"
        },
        {
          "id": "estimatedHours",
          "label": "Estimated hours (full planning)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pctAmount",
          "label": "Percentage-of-budget fee"
        },
        {
          "id": "flat",
          "label": "Flat-fee package price"
        },
        {
          "id": "hourlyTotal",
          "label": "Hourly-billed total"
        },
        {
          "id": "pctEffHourly",
          "label": "Effective hourly (% model)"
        },
        {
          "id": "flatEffHourly",
          "label": "Effective hourly (flat-fee model)"
        }
      ]
    },
    {
      "slug": "event-rental-inventory-roi-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/event-rental-inventory-roi-calculator",
      "title": "Event Rental Inventory ROI Calculator",
      "category": "financial",
      "summary": "See when a rental item (arch, linens, dance floor) pays for itself.",
      "formula": "Payback (rentals) = purchase price ÷ (rental rate − per-rental cost); ROI = (lifetime profit − purchase price) ÷ purchase price.",
      "inputs": [
        {
          "id": "purchasePrice",
          "label": "Purchase price",
          "kind": "number"
        },
        {
          "id": "rentalRate",
          "label": "Rental rate per event",
          "kind": "number"
        },
        {
          "id": "perRentalCost",
          "label": "Cost per rental (cleaning, transport, wear)",
          "kind": "number"
        },
        {
          "id": "rentalsPerYear",
          "label": "Expected rentals per year",
          "kind": "number"
        },
        {
          "id": "usefulLifeYears",
          "label": "Useful life",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paybackYears",
          "label": "Payback period"
        },
        {
          "id": "paybackRentals",
          "label": "Rentals needed to break even"
        },
        {
          "id": "lifetimeProfit",
          "label": "Lifetime profit (over useful life)"
        },
        {
          "id": "roiPct",
          "label": "Lifetime ROI"
        }
      ]
    },
    {
      "slug": "event-staffing-cost-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/event-staffing-cost-calculator",
      "title": "Event Staffing Cost Calculator",
      "category": "financial",
      "summary": "Total labor cost for servers, bartenders, and captains on an event, plus per-guest cost.",
      "formula": "Total labor cost = Σ(role count × hours × rate) × (1 + payroll load %).",
      "inputs": [
        {
          "id": "servers",
          "label": "Servers",
          "kind": "number"
        },
        {
          "id": "serverRate",
          "label": "Server rate",
          "kind": "number"
        },
        {
          "id": "bartenders",
          "label": "Bartenders",
          "kind": "number"
        },
        {
          "id": "bartenderRate",
          "label": "Bartender rate",
          "kind": "number"
        },
        {
          "id": "captains",
          "label": "Captains / leads",
          "kind": "number"
        },
        {
          "id": "captainRate",
          "label": "Captain rate",
          "kind": "number"
        },
        {
          "id": "hours",
          "label": "Hours per staff member",
          "kind": "number"
        },
        {
          "id": "payrollLoad",
          "label": "Payroll tax/benefits load",
          "kind": "number"
        },
        {
          "id": "guests",
          "label": "Guest count",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalCost",
          "label": "Total staffing cost"
        },
        {
          "id": "base",
          "label": "Gross wages before load"
        },
        {
          "id": "perGuest",
          "label": "Staffing cost per guest"
        },
        {
          "id": "staffRatio",
          "label": "Guests per staff member"
        }
      ]
    },
    {
      "slug": "photo-booth-utilization-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/photo-booth-utilization-calculator",
      "title": "Photo Booth Utilization & Revenue Calculator",
      "category": "financial",
      "summary": "See booking rate, revenue per booth, and monthly profit from your photo booth fleet.",
      "formula": "Utilization = actual bookings ÷ available weekend slots; profit = bookings × (rate − variable cost) − fixed cost.",
      "inputs": [
        {
          "id": "boothCount",
          "label": "Number of booths",
          "kind": "number"
        },
        {
          "id": "bookingsPerBooth",
          "label": "Bookings per booth per month",
          "kind": "number"
        },
        {
          "id": "availableSlots",
          "label": "Available weekend slots per booth per month",
          "kind": "number"
        },
        {
          "id": "rentalRate",
          "label": "Rental rate per event",
          "kind": "number"
        },
        {
          "id": "variableCost",
          "label": "Variable cost per event (attendant, prints, travel)",
          "kind": "number"
        },
        {
          "id": "fixedCost",
          "label": "Fixed monthly cost (storage, insurance, software)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "utilization",
          "label": "Fleet utilization rate"
        },
        {
          "id": "bookings",
          "label": "Total bookings per month"
        },
        {
          "id": "revenue",
          "label": "Monthly revenue"
        },
        {
          "id": "profit",
          "label": "Monthly profit"
        }
      ]
    },
    {
      "slug": "wedding-day-timeline-buffer-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/wedding-day-timeline-buffer-calculator",
      "title": "Wedding Day Timeline Buffer Calculator",
      "category": "other",
      "summary": "Add realistic buffer time to a wedding timeline so vendors and photos don't run late.",
      "formula": "Buffered time = scheduled time × (1 + buffer %); total day length = Σ buffered blocks + transition time.",
      "inputs": [
        {
          "id": "prepHours",
          "label": "Hair & makeup / getting ready",
          "kind": "number"
        },
        {
          "id": "prepBuffer",
          "label": "Buffer for prep block",
          "kind": "number"
        },
        {
          "id": "photoHours",
          "label": "Formal photos / family portraits",
          "kind": "number"
        },
        {
          "id": "photoBuffer",
          "label": "Buffer for photo block",
          "kind": "number"
        },
        {
          "id": "ceremonyHours",
          "label": "Ceremony + cocktail hour",
          "kind": "number"
        },
        {
          "id": "receptionHours",
          "label": "Reception (dinner + dancing)",
          "kind": "number"
        },
        {
          "id": "transitions",
          "label": "Number of location/transition moves",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "totalHours",
          "label": "Realistic total day length"
        },
        {
          "id": "addedBuffer",
          "label": "Buffer hours added vs. scheduled"
        },
        {
          "id": "prep",
          "label": "Buffered prep time"
        },
        {
          "id": "photo",
          "label": "Buffered photo time"
        }
      ]
    },
    {
      "slug": "deposit-cancellation-policy-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/deposit-cancellation-policy-calculator",
      "title": "Vendor Deposit & Cancellation Policy Calculator",
      "category": "financial",
      "summary": "Model refund amounts and retained revenue under a tiered cancellation policy.",
      "formula": "Refund % determined by days-before-event tier; refund amount = contract value × refund %; retained = contract value − refund.",
      "inputs": [
        {
          "id": "contractValue",
          "label": "Total contract value",
          "kind": "number"
        },
        {
          "id": "depositPct",
          "label": "Deposit required",
          "kind": "number"
        },
        {
          "id": "daysBefore",
          "label": "Days before event at cancellation",
          "kind": "number"
        },
        {
          "id": "tier1Days",
          "label": "Full-refund cutoff (days before)",
          "kind": "number"
        },
        {
          "id": "tier2Days",
          "label": "Partial-refund cutoff (days before)",
          "kind": "number"
        },
        {
          "id": "tier2Pct",
          "label": "Partial refund in tier 2",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "refundAmount",
          "label": "Refund owed to client"
        },
        {
          "id": "retained",
          "label": "Vendor retains"
        },
        {
          "id": "deposit",
          "label": "Non-refundable deposit"
        },
        {
          "id": "refundPct",
          "label": "Refund tier applied"
        }
      ]
    },
    {
      "slug": "vendor-travel-fee-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/vendor-travel-fee-calculator",
      "title": "Wedding Vendor Travel Fee Calculator",
      "category": "financial",
      "summary": "Convert mileage, drive time, and lodging into a fair travel fee line item.",
      "formula": "Travel fee = (miles × mileage rate) + (paid drive hours × hourly rate) + lodging + per diem.",
      "inputs": [
        {
          "id": "miles",
          "label": "Round-trip miles",
          "kind": "number"
        },
        {
          "id": "mileageRate",
          "label": "Mileage rate",
          "kind": "number"
        },
        {
          "id": "freeMiles",
          "label": "Free-travel radius (round trip)",
          "kind": "number"
        },
        {
          "id": "driveHours",
          "label": "Total drive time",
          "kind": "number"
        },
        {
          "id": "hourlyRate",
          "label": "Hourly rate for paid drive time",
          "kind": "number"
        },
        {
          "id": "lodging",
          "label": "Lodging (if overnight required)",
          "kind": "number"
        },
        {
          "id": "perDiem",
          "label": "Per diem (meals, incidentals)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "fee",
          "label": "Total travel fee"
        },
        {
          "id": "mileageCost",
          "label": "Mileage cost"
        },
        {
          "id": "driveCost",
          "label": "Paid drive-time cost"
        },
        {
          "id": "billableMiles",
          "label": "Billable miles (beyond free radius)"
        }
      ]
    },
    {
      "slug": "second-shooter-cost-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/second-shooter-cost-calculator",
      "title": "Wedding Second Shooter Cost Calculator",
      "category": "financial",
      "summary": "See if adding a second photographer is worth it after their day rate and your markup.",
      "formula": "Client charge = second shooter pay × (1 + markup %); profit = client charge − pay − (extra edit hrs × your hourly rate).",
      "inputs": [
        {
          "id": "shooterPay",
          "label": "Second shooter day rate",
          "kind": "number"
        },
        {
          "id": "markup",
          "label": "Markup on second shooter fee",
          "kind": "number"
        },
        {
          "id": "extraEditHours",
          "label": "Extra culling/editing hours from 2nd card",
          "kind": "number"
        },
        {
          "id": "yourHourly",
          "label": "Your hourly rate",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "clientCharge",
          "label": "Amount to charge client"
        },
        {
          "id": "profit",
          "label": "Your profit from adding a 2nd shooter"
        },
        {
          "id": "extraEditCost",
          "label": "Extra editing cost (your time)"
        },
        {
          "id": "margin",
          "label": "Margin on the add-on"
        }
      ]
    },
    {
      "slug": "wedding-album-cogs-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/wedding-album-cogs-calculator",
      "title": "Wedding Album Cost of Goods Calculator",
      "category": "financial",
      "summary": "Price an album from print lab cost, design time, and target margin.",
      "formula": "Sell price = (lab cost + design labor + shipping) ÷ (1 − target margin %).",
      "inputs": [
        {
          "id": "spreads",
          "label": "Number of spreads",
          "kind": "number"
        },
        {
          "id": "labCostPerSpread",
          "label": "Lab cost per spread",
          "kind": "number"
        },
        {
          "id": "coverUpgrade",
          "label": "Cover/material upgrade cost",
          "kind": "number"
        },
        {
          "id": "designHours",
          "label": "Design layout hours",
          "kind": "number"
        },
        {
          "id": "designRate",
          "label": "Design hourly rate",
          "kind": "number"
        },
        {
          "id": "shipping",
          "label": "Shipping / packaging",
          "kind": "number"
        },
        {
          "id": "targetMargin",
          "label": "Target margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "sellPrice",
          "label": "Album sell price"
        },
        {
          "id": "totalCost",
          "label": "Total cost of goods"
        },
        {
          "id": "labCost",
          "label": "Print lab cost"
        },
        {
          "id": "profit",
          "label": "Profit per album"
        }
      ]
    },
    {
      "slug": "wedding-season-pricing-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/wedding-season-pricing-calculator",
      "title": "Wedding Season Pricing Multiplier Calculator",
      "category": "financial",
      "summary": "Adjust your base rate up or down for peak season, day of week, and lead time.",
      "formula": "Adjusted price = base rate × season multiplier × day-of-week multiplier × lead-time adjustment.",
      "inputs": [
        {
          "id": "baseRate",
          "label": "Base rate",
          "kind": "number"
        },
        {
          "id": "season",
          "label": "Season",
          "kind": "select"
        },
        {
          "id": "day",
          "label": "Day of week",
          "kind": "select"
        },
        {
          "id": "leadDays",
          "label": "Days between booking and event",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Adjusted price"
        },
        {
          "id": "seasonMult",
          "label": "Season multiplier applied"
        },
        {
          "id": "dayMult",
          "label": "Day-of-week multiplier applied"
        },
        {
          "id": "leadMult",
          "label": "Lead-time multiplier applied"
        }
      ]
    },
    {
      "slug": "videographer-package-pricing-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/videographer-package-pricing-calculator",
      "title": "Wedding Videographer Package Pricing Calculator",
      "category": "financial",
      "summary": "Price a highlight-film package from shoot hours, edit hours, and gear cost.",
      "formula": "Price = (shoot hrs + edit hrs) × target hourly × (1 + overhead %) + gear amortization + licensing.",
      "inputs": [
        {
          "id": "shootHours",
          "label": "Shoot hours (coverage)",
          "kind": "number"
        },
        {
          "id": "editHoursPerShootHour",
          "label": "Edit hours per shoot hour",
          "kind": "number"
        },
        {
          "id": "targetHourly",
          "label": "Target hourly rate",
          "kind": "number"
        },
        {
          "id": "overhead",
          "label": "Overhead",
          "kind": "number"
        },
        {
          "id": "gearAmort",
          "label": "Gear/drone amortization",
          "kind": "number"
        },
        {
          "id": "licensing",
          "label": "Music licensing cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "price",
          "label": "Package price"
        },
        {
          "id": "editHrs",
          "label": "Editing hours"
        },
        {
          "id": "totalHrs",
          "label": "Total hours"
        },
        {
          "id": "effHourly",
          "label": "Effective hourly at this price"
        }
      ]
    },
    {
      "slug": "hair-makeup-team-pricing-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/hair-makeup-team-pricing-calculator",
      "title": "Bridal Hair & Makeup Team Pricing Calculator",
      "category": "financial",
      "summary": "Price a bridal party booking from per-person service time and artist capacity.",
      "formula": "Time needed = (party size ÷ artists) × service time per person; revenue = party size × per-person rate + trial fee.",
      "inputs": [
        {
          "id": "partySize",
          "label": "Bridal party size (incl. bride)",
          "kind": "number"
        },
        {
          "id": "serviceTime",
          "label": "Service time per person (hair+makeup)",
          "kind": "number"
        },
        {
          "id": "artists",
          "label": "Artists on the team",
          "kind": "number"
        },
        {
          "id": "prepWindow",
          "label": "Available prep window",
          "kind": "number"
        },
        {
          "id": "perPersonRate",
          "label": "Rate per person",
          "kind": "number"
        },
        {
          "id": "trialFee",
          "label": "Trial run fee (one-time)",
          "kind": "number"
        },
        {
          "id": "artistPayShare",
          "label": "Artist pay share of revenue",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "timeNeeded",
          "label": "Time needed to complete party"
        },
        {
          "id": "fits",
          "label": "Fits available prep window?"
        },
        {
          "id": "revenue",
          "label": "Total booking revenue"
        },
        {
          "id": "profit",
          "label": "Profit after artist pay"
        }
      ]
    },
    {
      "slug": "wedding-cake-markup-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/wedding-cake-markup-calculator",
      "title": "Wedding Cake Cost & Markup Calculator",
      "category": "financial",
      "summary": "Price a tiered cake from ingredient cost, servings, and decoration labor.",
      "formula": "Price per serving = (ingredient cost + decoration labor + delivery) ÷ servings ÷ (1 − target margin %).",
      "inputs": [
        {
          "id": "servings",
          "label": "Servings",
          "kind": "number"
        },
        {
          "id": "ingredientCostPerServing",
          "label": "Ingredient cost per serving",
          "kind": "number"
        },
        {
          "id": "decorationHours",
          "label": "Decoration labor hours",
          "kind": "number"
        },
        {
          "id": "decorationRate",
          "label": "Decoration labor rate",
          "kind": "number"
        },
        {
          "id": "delivery",
          "label": "Delivery & setup cost",
          "kind": "number"
        },
        {
          "id": "targetMargin",
          "label": "Target margin",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "pricePerServing",
          "label": "Price per serving"
        },
        {
          "id": "totalPrice",
          "label": "Total cake price"
        },
        {
          "id": "totalCost",
          "label": "Total cost"
        },
        {
          "id": "profit",
          "label": "Profit"
        }
      ]
    },
    {
      "slug": "officiant-fee-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/officiant-fee-calculator",
      "title": "Wedding Officiant Fee Calculator",
      "category": "financial",
      "summary": "Price a ceremony package from prep meetings, script writing, and travel.",
      "formula": "Fee = (consult hrs + writing hrs + rehearsal hrs + ceremony hrs) × hourly rate + travel cost.",
      "inputs": [
        {
          "id": "consultHours",
          "label": "Consultation meetings",
          "kind": "number"
        },
        {
          "id": "writingHours",
          "label": "Custom script writing",
          "kind": "number"
        },
        {
          "id": "rehearsalHours",
          "label": "Rehearsal attendance",
          "kind": "number"
        },
        {
          "id": "ceremonyHours",
          "label": "Ceremony + travel-on-site time",
          "kind": "number"
        },
        {
          "id": "hourlyRate",
          "label": "Target hourly rate",
          "kind": "number"
        },
        {
          "id": "travelCost",
          "label": "Travel cost",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "fee",
          "label": "Ceremony package fee"
        },
        {
          "id": "totalHrs",
          "label": "Total hours invested"
        },
        {
          "id": "laborFee",
          "label": "Labor portion of fee"
        },
        {
          "id": "effHourly",
          "label": "Effective hourly rate"
        }
      ]
    },
    {
      "slug": "event-lighting-roi-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/event-lighting-roi-calculator",
      "title": "Event Lighting Package ROI Calculator",
      "category": "financial",
      "summary": "See payback and profit on uplighting, string lights, or dance-floor lighting inventory.",
      "formula": "Payback events = equipment cost ÷ (package price − labor − consumables); annual profit = events per year × net margin − equipment cost ÷ useful life.",
      "inputs": [
        {
          "id": "equipmentCost",
          "label": "Equipment cost",
          "kind": "number"
        },
        {
          "id": "packagePrice",
          "label": "Price charged per event",
          "kind": "number"
        },
        {
          "id": "setupLaborCost",
          "label": "Setup/strike labor cost per event",
          "kind": "number"
        },
        {
          "id": "consumables",
          "label": "Consumables/batteries per event",
          "kind": "number"
        },
        {
          "id": "eventsPerYear",
          "label": "Events booked per year",
          "kind": "number"
        },
        {
          "id": "usefulLifeYears",
          "label": "Useful life",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "paybackYears",
          "label": "Payback period"
        },
        {
          "id": "paybackEvents",
          "label": "Events needed to break even"
        },
        {
          "id": "netPerEvent",
          "label": "Net profit per event"
        },
        {
          "id": "annualProfit",
          "label": "Annual profit (net of depreciation)"
        }
      ]
    },
    {
      "slug": "tent-rental-breakeven-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/tent-rental-breakeven-calculator",
      "title": "Tent Rental Breakeven Calculator",
      "category": "financial",
      "summary": "Find how many rentals a tent needs per season to clear purchase and labor cost.",
      "formula": "Breakeven rentals = purchase price ÷ (rental rate − labor − cleaning); season profit = (rentals − breakeven) × margin.",
      "inputs": [
        {
          "id": "purchasePrice",
          "label": "Tent purchase price",
          "kind": "number"
        },
        {
          "id": "rentalRate",
          "label": "Rental rate per event",
          "kind": "number"
        },
        {
          "id": "setupLabor",
          "label": "Setup + strike labor cost",
          "kind": "number"
        },
        {
          "id": "cleaning",
          "label": "Cleaning/repair reserve per rental",
          "kind": "number"
        },
        {
          "id": "expectedRentals",
          "label": "Expected rentals this season",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "breakevenRentals",
          "label": "Rentals to break even (lifetime)"
        },
        {
          "id": "margin",
          "label": "Contribution margin per rental"
        },
        {
          "id": "seasonProfit",
          "label": "Season profit vs. purchase price"
        },
        {
          "id": "marginOfSafety",
          "label": "Rentals above/below breakeven"
        }
      ]
    },
    {
      "slug": "day-of-coordinator-fee-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/day-of-coordinator-fee-calculator",
      "title": "Day-of Wedding Coordinator Fee Calculator",
      "category": "financial",
      "summary": "Price a month-of/day-of coordination package from prep hours and event-day hours.",
      "formula": "Fee = (prep hrs + event-day hrs) × hourly rate + assistant cost.",
      "inputs": [
        {
          "id": "prepHours",
          "label": "Pre-wedding prep hours (final month)",
          "kind": "number"
        },
        {
          "id": "eventDayHours",
          "label": "Event-day hours (incl. setup/breakdown)",
          "kind": "number"
        },
        {
          "id": "hourlyRate",
          "label": "Target hourly rate",
          "kind": "number"
        },
        {
          "id": "assistantCost",
          "label": "Assistant cost (if used)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "fee",
          "label": "Coordination package fee"
        },
        {
          "id": "totalHrs",
          "label": "Total hours invested"
        },
        {
          "id": "laborFee",
          "label": "Labor portion of fee"
        },
        {
          "id": "effHourly",
          "label": "Effective hourly rate"
        }
      ]
    },
    {
      "slug": "vendor-overtime-fee-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/vendor-overtime-fee-calculator",
      "title": "Vendor Overtime Fee Calculator",
      "category": "financial",
      "summary": "Price extra hours beyond the contracted package at a fair premium.",
      "formula": "Overtime rate = base package price ÷ contracted hours × overtime premium multiplier; overtime charge = rate × extra hours.",
      "inputs": [
        {
          "id": "packagePrice",
          "label": "Base package price",
          "kind": "number"
        },
        {
          "id": "contractedHours",
          "label": "Contracted hours",
          "kind": "number"
        },
        {
          "id": "overtimePremium",
          "label": "Overtime premium over base hourly",
          "kind": "number"
        },
        {
          "id": "extraHours",
          "label": "Extra hours requested",
          "kind": "number"
        },
        {
          "id": "staffOvertimePay",
          "label": "Additional staff overtime pay (if any)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "otCharge",
          "label": "Total overtime charge"
        },
        {
          "id": "otRate",
          "label": "Overtime hourly rate"
        },
        {
          "id": "baseHourly",
          "label": "Base package hourly rate"
        }
      ]
    },
    {
      "slug": "wedding-vendor-profit-margin-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/wedding-vendor-profit-margin-calculator",
      "title": "Wedding Vendor Profit Margin Calculator",
      "category": "financial",
      "summary": "See real profit margin after COGS, labor, and overhead on any vendor booking.",
      "formula": "Net margin % = (booking price − COGS − labor − overhead allocation) ÷ booking price × 100.",
      "inputs": [
        {
          "id": "bookingPrice",
          "label": "Booking price",
          "kind": "number"
        },
        {
          "id": "cogs",
          "label": "Direct cost of goods (materials, rentals, subs)",
          "kind": "number"
        },
        {
          "id": "laborCost",
          "label": "Labor cost (your time + staff)",
          "kind": "number"
        },
        {
          "id": "monthlyOverhead",
          "label": "Monthly business overhead",
          "kind": "number"
        },
        {
          "id": "bookingsPerMonth",
          "label": "Bookings per month (to allocate overhead)",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "netProfit",
          "label": "Net profit per booking"
        },
        {
          "id": "netMargin",
          "label": "Net margin"
        },
        {
          "id": "grossMargin",
          "label": "Gross margin (before labor/overhead)"
        },
        {
          "id": "overheadPerBooking",
          "label": "Overhead allocated per booking"
        }
      ]
    },
    {
      "slug": "ceremony-musician-rate-calculator",
      "url": "https://www.revenuelab.fyi/toolbox/ceremony-musician-rate-calculator",
      "title": "Ceremony Musician / String Quartet Rate Calculator",
      "category": "financial",
      "summary": "Price a string quartet or soloist booking by musician count, hours, and travel.",
      "formula": "Quote = musician count × hourly rate × max(booked hours, minimum call) + travel; per-musician pay = (quote − travel) × (1 − agency %) ÷ musician count.",
      "inputs": [
        {
          "id": "musicianCount",
          "label": "Number of musicians",
          "kind": "number"
        },
        {
          "id": "hourlyRate",
          "label": "Rate per musician per hour",
          "kind": "number"
        },
        {
          "id": "bookedHours",
          "label": "Requested performance hours",
          "kind": "number"
        },
        {
          "id": "minimumCall",
          "label": "Minimum call time",
          "kind": "number"
        },
        {
          "id": "travelCost",
          "label": "Travel cost (total, not per musician)",
          "kind": "number"
        },
        {
          "id": "agencyPct",
          "label": "Booking agency commission",
          "kind": "number"
        }
      ],
      "outputs": [
        {
          "id": "quote",
          "label": "Total quote to client"
        },
        {
          "id": "hoursBilled",
          "label": "Hours billed (incl. minimum call)"
        },
        {
          "id": "perMusicianPay",
          "label": "Per-musician take-home"
        },
        {
          "id": "agencyCut",
          "label": "Agency commission"
        }
      ]
    }
  ]
}