{
  "checked": "2026-09-18",
  "pricing_sha256": "2a0f6d07d7798d749b5a96b9285c7eb4ee024465ea06ca94a6ce54a7262322b8",
  "method": "Synthetic inputs; deterministic public tariff calculations. No field tests or observed customer costs.",
  "cases": [
    {
      "id": "CASE01",
      "label": "Solo, eight visits, basic feature filter only",
      "input": {
        "cleaners": 0,
        "office": 0,
        "ownerCleans": true,
        "appointments": 8,
        "newJobs": 8,
        "required": [],
        "billing": "monthly",
        "androidFull": false
      },
      "counts": {
        "users": 1,
        "providers": 1
      },
      "priced": [
        {
          "vendor": "maidily",
          "plan_id": "md-free",
          "plan": "Free",
          "price": 0,
          "annual_upfront": null,
          "caveat": "10 scheduled jobs. Unlimited profiles, but team-scheduling controls limited. Free hosted booking form is conflicting in public copy; not treated as verified."
        },
        {
          "vendor": "servicem8",
          "plan_id": "sm-free",
          "plan": "Free",
          "price": 0,
          "annual_upfront": null,
          "caveat": "30 new job cards/billing month; enter that count separately. Android Lite differs from full iOS. Free/paid SMS terms differ; fees excluded. Bonus jobs not assumed."
        },
        {
          "vendor": "zenmaid",
          "plan_id": "zm-starter",
          "plan": "Starter",
          "price": 19,
          "annual_upfront": null,
          "caveat": "Only owner included. 40 appointments/month. Limited notifications; SMS credits extra."
        },
        {
          "vendor": "bookingkoala",
          "plan_id": "bk-starter",
          "plan": "Starter",
          "price": 27,
          "annual_upfront": null,
          "caveat": "Also 5 GB. Larger storage needs can change tier. SMS not included in this shortlist."
        },
        {
          "vendor": "jobber",
          "plan_id": "jb-core-1",
          "plan": "Core · 1 user",
          "price": 49,
          "annual_upfront": null,
          "caveat": "Multiuser Core requires a quote; not priced here."
        },
        {
          "vendor": "launch27",
          "plan_id": "lp-base",
          "plan": "Base",
          "price": 75,
          "annual_upfront": null,
          "caveat": "Unlimited users/bookings. Mobile-friendly browser is not Plus native-app access. Email reminders; no modeled SMS entitlement."
        },
        {
          "vendor": "housecall-pro",
          "plan_id": "hcp-basic",
          "plan": "Basic",
          "price": 79,
          "annual_upfront": null,
          "caveat": "SMS requires correct number, registration and settings. Add-on quotes not modeled."
        }
      ],
      "unpriced": [],
      "excluded": []
    },
    {
      "id": "CASE02",
      "label": "Solo, forty-five visits and reminders",
      "input": {
        "cleaners": 0,
        "office": 0,
        "ownerCleans": true,
        "appointments": 45,
        "newJobs": 45,
        "required": [
          "sms"
        ],
        "billing": "monthly",
        "androidFull": false
      },
      "counts": {
        "users": 1,
        "providers": 1
      },
      "priced": [
        {
          "vendor": "maidily",
          "plan_id": "md-start",
          "plan": "Start",
          "price": 29,
          "annual_upfront": null,
          "caveat": "Extra 50-job packs $3. Two-way requires a $10/month number, added when selected. SMS usage/processing unpriced; full team scheduling is a Grow feature."
        },
        {
          "vendor": "servicem8",
          "plan_id": "sm-starter",
          "plan": "Starter",
          "price": 29,
          "annual_upfront": null,
          "caveat": "50 new job cards/billing month; enter that count separately. Android Lite differs from full iOS. Free/paid SMS terms differ; fees excluded. Bonus jobs not assumed."
        },
        {
          "vendor": "zenmaid",
          "plan_id": "zm-pro",
          "plan": "Pro",
          "price": 39,
          "annual_upfront": null,
          "caveat": "Only owner included; every additional active profile billed. SMS credits extra. Branded booking forms."
        },
        {
          "vendor": "bookingkoala",
          "plan_id": "bk-growing",
          "plan": "Growing",
          "price": 57,
          "annual_upfront": null,
          "caveat": "Also 15 GB. SMS requires separate Twilio setup and charges."
        },
        {
          "vendor": "housecall-pro",
          "plan_id": "hcp-basic",
          "plan": "Basic",
          "price": 79,
          "annual_upfront": null,
          "caveat": "SMS requires correct number, registration and settings. Add-on quotes not modeled."
        },
        {
          "vendor": "jobber",
          "plan_id": "jb-connect-1",
          "plan": "Connect · 1 users",
          "price": 139,
          "annual_upfront": null,
          "caveat": "User bundle, not per-cleaner quote. SMS reminders are not equivalent to Grow two-way texting."
        },
        {
          "vendor": "launch27",
          "plan_id": "lp-pro",
          "plan": "Pro",
          "price": 150,
          "annual_upfront": null,
          "caveat": "Unlimited users/bookings. Twilio usage extra. QuickBooks label is published, but edition/object-level sync not normalized as verified QBO in this finder."
        }
      ],
      "unpriced": [],
      "excluded": []
    },
    {
      "id": "CASE03",
      "label": "Owner plus three, QBO required",
      "input": {
        "cleaners": 3,
        "office": 0,
        "ownerCleans": false,
        "appointments": 100,
        "newJobs": 100,
        "required": [
          "qbo"
        ],
        "billing": "monthly",
        "androidFull": false
      },
      "counts": {
        "users": 4,
        "providers": 3
      },
      "priced": [
        {
          "vendor": "maidily",
          "plan_id": "md-grow",
          "plan": "Grow",
          "price": 49,
          "annual_upfront": null,
          "caveat": "Extra 50-job packs $8. Unlimited profiles; team scheduling and advertised live QuickBooks included. Two-way number $10 when selected; usage unpriced."
        },
        {
          "vendor": "servicem8",
          "plan_id": "sm-growing",
          "plan": "Growing",
          "price": 79,
          "annual_upfront": null,
          "caveat": "150 new job cards/billing month; enter that count separately. Android Lite differs from full iOS. Free/paid SMS terms differ; fees excluded. Bonus jobs not assumed."
        },
        {
          "vendor": "housecall-pro",
          "plan_id": "hcp-essential",
          "plan": "Essentials",
          "price": 189,
          "annual_upfront": null,
          "caveat": "Routes/grouping are not the same as MAX drive-time optimization."
        },
        {
          "vendor": "jobber",
          "plan_id": "jb-connect-5",
          "plan": "Connect · 5 users",
          "price": 199,
          "annual_upfront": null,
          "caveat": "User bundle, not per-cleaner quote. SMS reminders are not equivalent to Grow two-way texting."
        }
      ],
      "unpriced": [],
      "excluded": []
    },
    {
      "id": "CASE04",
      "label": "Owner plus three, 151 scheduled jobs, QBO",
      "input": {
        "cleaners": 3,
        "office": 0,
        "ownerCleans": false,
        "appointments": 151,
        "newJobs": 100,
        "required": [
          "qbo"
        ],
        "billing": "monthly",
        "androidFull": false
      },
      "counts": {
        "users": 4,
        "providers": 3
      },
      "priced": [
        {
          "vendor": "maidily",
          "plan_id": "md-grow",
          "plan": "Grow",
          "price": 57,
          "annual_upfront": null,
          "caveat": "Extra 50-job packs $8. Unlimited profiles; team scheduling and advertised live QuickBooks included. Two-way number $10 when selected; usage unpriced."
        },
        {
          "vendor": "servicem8",
          "plan_id": "sm-growing",
          "plan": "Growing",
          "price": 79,
          "annual_upfront": null,
          "caveat": "150 new job cards/billing month; enter that count separately. Android Lite differs from full iOS. Free/paid SMS terms differ; fees excluded. Bonus jobs not assumed."
        },
        {
          "vendor": "housecall-pro",
          "plan_id": "hcp-essential",
          "plan": "Essentials",
          "price": 189,
          "annual_upfront": null,
          "caveat": "Routes/grouping are not the same as MAX drive-time optimization."
        },
        {
          "vendor": "jobber",
          "plan_id": "jb-connect-5",
          "plan": "Connect · 5 users",
          "price": 199,
          "annual_upfront": null,
          "caveat": "User bundle, not per-cleaner quote. SMS reminders are not equivalent to Grow two-way texting."
        }
      ],
      "unpriced": [],
      "excluded": []
    },
    {
      "id": "CASE05",
      "label": "QBO plus two-way messages",
      "input": {
        "cleaners": 3,
        "office": 0,
        "ownerCleans": false,
        "appointments": 151,
        "newJobs": 100,
        "required": [
          "qbo",
          "two_way"
        ],
        "billing": "monthly",
        "androidFull": false
      },
      "counts": {
        "users": 4,
        "providers": 3
      },
      "priced": [
        {
          "vendor": "maidily",
          "plan_id": "md-grow",
          "plan": "Grow",
          "price": 67,
          "annual_upfront": null,
          "caveat": "Extra 50-job packs $8. Unlimited profiles; team scheduling and advertised live QuickBooks included. Two-way number $10 when selected; usage unpriced."
        },
        {
          "vendor": "jobber",
          "plan_id": "jb-grow-5",
          "plan": "Grow · 5 users",
          "price": 299,
          "annual_upfront": null,
          "caveat": "Published bundle. Additional custom offers and Plus not modeled."
        }
      ],
      "unpriced": [],
      "excluded": []
    },
    {
      "id": "CASE06",
      "label": "Owner plus ten, reminders",
      "input": {
        "cleaners": 10,
        "office": 0,
        "ownerCleans": false,
        "appointments": 300,
        "newJobs": 200,
        "required": [
          "sms"
        ],
        "billing": "monthly",
        "androidFull": false
      },
      "counts": {
        "users": 11,
        "providers": 10
      },
      "priced": [
        {
          "vendor": "maidily",
          "plan_id": "md-start",
          "plan": "Start",
          "price": 44,
          "annual_upfront": null,
          "caveat": "Extra 50-job packs $3. Two-way requires a $10/month number, added when selected. SMS usage/processing unpriced; full team scheduling is a Grow feature."
        },
        {
          "vendor": "bookingkoala",
          "plan_id": "bk-growing",
          "plan": "Growing",
          "price": 57,
          "annual_upfront": null,
          "caveat": "Also 15 GB. SMS requires separate Twilio setup and charges."
        },
        {
          "vendor": "servicem8",
          "plan_id": "sm-premium",
          "plan": "Premium",
          "price": 149,
          "annual_upfront": null,
          "caveat": "500 new job cards/billing month; enter that count separately. Android Lite differs from full iOS. Free/paid SMS terms differ; fees excluded. Bonus jobs not assumed."
        },
        {
          "vendor": "launch27",
          "plan_id": "lp-pro",
          "plan": "Pro",
          "price": 150,
          "annual_upfront": null,
          "caveat": "Unlimited users/bookings. Twilio usage extra. QuickBooks label is published, but edition/object-level sync not normalized as verified QBO in this finder."
        },
        {
          "vendor": "zenmaid",
          "plan_id": "zm-pro",
          "plan": "Pro",
          "price": 179,
          "annual_upfront": null,
          "caveat": "Only owner included; every additional active profile billed. SMS credits extra. Branded booking forms."
        },
        {
          "vendor": "jobber",
          "plan_id": "jb-connect-15",
          "plan": "Connect · 15 users",
          "price": 399,
          "annual_upfront": null,
          "caveat": "User bundle, not per-cleaner quote. SMS reminders are not equivalent to Grow two-way texting."
        },
        {
          "vendor": "housecall-pro",
          "plan_id": "hcp-max",
          "plan": "MAX",
          "price": 434,
          "annual_upfront": null,
          "caveat": "Extra users $35/month on MAX. Annual billing timing of extra seats must be confirmed; annual calculator excludes >8 users."
        }
      ],
      "unpriced": [],
      "excluded": []
    },
    {
      "id": "CASE07",
      "label": "Annual, owner plus three, reminders",
      "input": {
        "cleaners": 3,
        "office": 0,
        "ownerCleans": false,
        "appointments": 100,
        "newJobs": 100,
        "required": [
          "sms"
        ],
        "billing": "annual",
        "androidFull": false
      },
      "counts": {
        "users": 4,
        "providers": 3
      },
      "priced": [
        {
          "vendor": "launch27",
          "plan_id": "lp-pro",
          "plan": "Pro",
          "price": 127.5,
          "annual_upfront": 1530,
          "caveat": "Unlimited users/bookings. Twilio usage extra. QuickBooks label is published, but edition/object-level sync not normalized as verified QBO in this finder."
        },
        {
          "vendor": "housecall-pro",
          "plan_id": "hcp-essential",
          "plan": "Essentials",
          "price": 149,
          "annual_upfront": 1788,
          "caveat": "Routes/grouping are not the same as MAX drive-time optimization."
        },
        {
          "vendor": "jobber",
          "plan_id": "jb-connect-5",
          "plan": "Connect · 5 users",
          "price": 149,
          "annual_upfront": 1788,
          "caveat": "User bundle, not per-cleaner quote. SMS reminders are not equivalent to Grow two-way texting."
        }
      ],
      "unpriced": [
        {
          "id": "bk-growing",
          "vendor": "bookingkoala",
          "name": "Growing",
          "reason": "No applicable public price normalized for this billing/headcount combination."
        },
        {
          "id": "bk-premium",
          "vendor": "bookingkoala",
          "name": "Premium",
          "reason": "No applicable public price normalized for this billing/headcount combination."
        },
        {
          "id": "zm-pro",
          "vendor": "zenmaid",
          "name": "Pro",
          "reason": "No applicable public price normalized for this billing/headcount combination."
        },
        {
          "id": "zm-max",
          "vendor": "zenmaid",
          "name": "Pro Max",
          "reason": "No applicable public price normalized for this billing/headcount combination."
        },
        {
          "id": "md-start",
          "vendor": "maidily",
          "name": "Start",
          "reason": "No applicable public price normalized for this billing/headcount combination."
        },
        {
          "id": "md-grow",
          "vendor": "maidily",
          "name": "Grow",
          "reason": "No applicable public price normalized for this billing/headcount combination."
        },
        {
          "id": "md-scale",
          "vendor": "maidily",
          "name": "Scale",
          "reason": "No applicable public price normalized for this billing/headcount combination."
        },
        {
          "id": "sm-growing",
          "vendor": "servicem8",
          "name": "Growing",
          "reason": "No applicable public price normalized for this billing/headcount combination."
        },
        {
          "id": "sm-premium",
          "vendor": "servicem8",
          "name": "Premium",
          "reason": "No applicable public price normalized for this billing/headcount combination."
        }
      ],
      "excluded": []
    },
    {
      "id": "CASE08",
      "label": "QBO with new-job usage unknown",
      "input": {
        "cleaners": 3,
        "office": 0,
        "ownerCleans": false,
        "appointments": 100,
        "newJobs": null,
        "required": [
          "qbo"
        ],
        "billing": "monthly",
        "androidFull": false
      },
      "counts": {
        "users": 4,
        "providers": 3
      },
      "priced": [
        {
          "vendor": "maidily",
          "plan_id": "md-grow",
          "plan": "Grow",
          "price": 49,
          "annual_upfront": null,
          "caveat": "Extra 50-job packs $8. Unlimited profiles; team scheduling and advertised live QuickBooks included. Two-way number $10 when selected; usage unpriced."
        },
        {
          "vendor": "housecall-pro",
          "plan_id": "hcp-essential",
          "plan": "Essentials",
          "price": 189,
          "annual_upfront": null,
          "caveat": "Routes/grouping are not the same as MAX drive-time optimization."
        },
        {
          "vendor": "jobber",
          "plan_id": "jb-connect-5",
          "plan": "Connect · 5 users",
          "price": 199,
          "annual_upfront": null,
          "caveat": "User bundle, not per-cleaner quote. SMS reminders are not equivalent to Grow two-way texting."
        }
      ],
      "unpriced": [
        {
          "id": "sm-free",
          "vendor": "servicem8",
          "name": "Free",
          "reason": "New job cards per billing cycle not supplied; appointments are not substituted."
        },
        {
          "id": "sm-starter",
          "vendor": "servicem8",
          "name": "Starter",
          "reason": "New job cards per billing cycle not supplied; appointments are not substituted."
        },
        {
          "id": "sm-growing",
          "vendor": "servicem8",
          "name": "Growing",
          "reason": "New job cards per billing cycle not supplied; appointments are not substituted."
        },
        {
          "id": "sm-premium",
          "vendor": "servicem8",
          "name": "Premium",
          "reason": "New job cards per billing cycle not supplied; appointments are not substituted."
        }
      ],
      "excluded": []
    },
    {
      "id": "CASE09",
      "label": "QBO and fuller Android field management",
      "input": {
        "cleaners": 3,
        "office": 0,
        "ownerCleans": false,
        "appointments": 100,
        "newJobs": 100,
        "required": [
          "qbo"
        ],
        "billing": "monthly",
        "androidFull": true
      },
      "counts": {
        "users": 4,
        "providers": 3
      },
      "priced": [
        {
          "vendor": "maidily",
          "plan_id": "md-grow",
          "plan": "Grow",
          "price": 49,
          "annual_upfront": null,
          "caveat": "Extra 50-job packs $8. Unlimited profiles; team scheduling and advertised live QuickBooks included. Two-way number $10 when selected; usage unpriced."
        },
        {
          "vendor": "housecall-pro",
          "plan_id": "hcp-essential",
          "plan": "Essentials",
          "price": 189,
          "annual_upfront": null,
          "caveat": "Routes/grouping are not the same as MAX drive-time optimization."
        },
        {
          "vendor": "jobber",
          "plan_id": "jb-connect-5",
          "plan": "Connect · 5 users",
          "price": 199,
          "annual_upfront": null,
          "caveat": "User bundle, not per-cleaner quote. SMS reminders are not equivalent to Grow two-way texting."
        }
      ],
      "unpriced": [],
      "excluded": [
        {
          "vendor": "servicem8",
          "reason": "Documented Android Lite restrictions conflict with the selected full-field-management/payment requirement."
        },
        {
          "vendor": "servicem8",
          "reason": "Documented Android Lite restrictions conflict with the selected full-field-management/payment requirement."
        },
        {
          "vendor": "servicem8",
          "reason": "Documented Android Lite restrictions conflict with the selected full-field-management/payment requirement."
        },
        {
          "vendor": "servicem8",
          "reason": "Documented Android Lite restrictions conflict with the selected full-field-management/payment requirement."
        }
      ]
    }
  ]
}
