{
  "slug": "maid-service-bid-pricing",
  "title": "Maid Service Bid Pricing Calculator",
  "heading": "Maid Service Recurring Bid Pricing Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/maid-service-bid-pricing",
  "summary": "Build a competitive recurring cleaning bid that still covers cost and profit.",
  "description": "Recurring residential cleaning bids need to account for frequency discounts (weekly customers pay less per visit than monthly ones because the home stays cleaner and each visit is faster), team size, and a realistic time estimate per visit. This calculator prices a recurring bid across common frequencies so you can present a customer with options and know exactly which frequency protects margin best.",
  "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.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=maid-service-bid-pricing",
  "inputs": [
    {
      "id": "sqft",
      "label": "Home square footage",
      "kind": "number",
      "hint": null,
      "default": 2200,
      "unit": "sq ft",
      "min": 300,
      "max": null
    },
    {
      "id": "baseTimeHours",
      "label": "Base cleaning time (monthly frequency)",
      "kind": "number",
      "hint": null,
      "default": 6,
      "unit": "team-hrs",
      "min": 0.5,
      "max": null
    },
    {
      "id": "teamSize",
      "label": "Team size",
      "kind": "number",
      "hint": null,
      "default": 2,
      "unit": null,
      "min": 1,
      "max": 5
    },
    {
      "id": "loadedRate",
      "label": "Loaded rate per cleaner per hour",
      "kind": "number",
      "hint": null,
      "default": 24,
      "unit": "$",
      "min": 10,
      "max": null
    },
    {
      "id": "margin",
      "label": "Target margin",
      "kind": "number",
      "hint": null,
      "default": 45,
      "unit": "%",
      "min": 5,
      "max": 75
    },
    {
      "id": "frequency",
      "label": "Cleaning frequency",
      "kind": "select",
      "hint": null,
      "default": "0.75",
      "options": [
        {
          "value": "0.65",
          "label": "Weekly"
        },
        {
          "value": "0.75",
          "label": "Bi-weekly"
        },
        {
          "value": "1.0",
          "label": "Monthly"
        }
      ]
    }
  ],
  "outputs": [
    {
      "id": "price",
      "label": "Price per visit",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "monthlyRevenue",
      "label": "Monthly revenue (this account)",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "laborCost",
      "label": "Labor cost per visit",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "timeHours",
      "label": "Team-hours per visit",
      "format": "decimal",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Home square footage: 2200 sq ft",
      "Base cleaning time (monthly frequency): 6 team-hrs",
      "Team size: 2",
      "Loaded rate per cleaner per hour: 24 $",
      "Target margin: 45 %",
      "Cleaning frequency: Bi-weekly"
    ],
    "outputs": [
      "Price per visit: $196",
      "Monthly revenue (this account): $426",
      "Labor cost per visit: $108",
      "Team-hours per visit: 4.5"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter home square footage (sq ft).",
      "Enter base cleaning time (monthly frequency) (team-hrs).",
      "Enter team size.",
      "Enter loaded rate per cleaner per hour ($).",
      "Enter target margin (%).",
      "Enter cleaning frequency.",
      "Read your price per visit on the right — it updates as you type.",
      "Hit Share to keep the scenario or send it to someone."
    ]
  },
  "scenarios": [
    {
      "name": "Conservative",
      "description": "Lower-end numbers — what if things land soft?",
      "values": {
        "sqft": 1300,
        "baseTimeHours": 3.5999999999999996,
        "teamSize": 1,
        "loadedRate": 14,
        "margin": 27,
        "frequency": "0.75"
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "sqft": 2200,
        "baseTimeHours": 6,
        "teamSize": 2,
        "loadedRate": 24,
        "margin": 45,
        "frequency": "0.75"
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "sqft": 3500,
        "baseTimeHours": 9.600000000000001,
        "teamSize": 3,
        "loadedRate": 38,
        "margin": 72,
        "frequency": "0.75"
      }
    }
  ],
  "limitations": [
    "Results are estimates before tax, fees, and inflation unless an input explicitly covers them.",
    "Rates are treated as fixed for the whole period — variable-rate products will drift from this projection.",
    "This is educational maths, not financial advice. Check anything contractual with the lender or your accountant."
  ],
  "faq": [
    {
      "q": "Why does weekly cleaning take less time than monthly?",
      "a": "A home cleaned weekly never accumulates heavy dust, buildup, or clutter the way a monthly-cleaned home does, so weekly visits are often 30-40% faster per visit than a monthly deep-style clean of the same square footage. That's why frequency discounts on the per-visit price are justified by real time savings, not just a customer-retention tactic."
    },
    {
      "q": "Which frequency is most profitable for the business overall?",
      "a": "Even though weekly customers pay less per visit, they typically generate the highest monthly revenue per account (roughly 4.3 visits a month) and the lowest customer acquisition cost per dollar of revenue since one sales conversation locks in a much larger long-term relationship than a monthly customer. Route density also improves since weekly customers repeat in the same territory constantly."
    },
    {
      "q": "How should team size affect the bid?",
      "a": "A two-person team finishes a home in roughly half the time of a solo cleaner but costs close to double the hourly labor, so total labor cost stays similar, the real benefit is finishing more homes per day and improving route capacity. For homes with time-sensitive scheduling (before a showing, before guests arrive), team-based bids justify a premium since the customer is paying for speed and certainty."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/cleaning-square-foot-pricing",
    "https://www.revenuelab.fyi/toolbox/recurring-vs-onetime-ltv"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Maid Service Bid Pricing Calculator (https://www.revenuelab.fyi/toolbox/maid-service-bid-pricing)"
}