{
  "slug": "extended-care-margin",
  "title": "Extended-Care / Before-After-School Margin Calculator",
  "heading": "Extended-Care Program Margin Calculator",
  "category": "financial",
  "url": "https://www.revenuelab.fyi/toolbox/extended-care-margin",
  "summary": "Check whether your before/after-school or extended-day program actually profits.",
  "description": "Extended-care and before/after-school programs are often priced as an add-on convenience without anyone checking whether the hourly staffing cost actually clears the revenue collected. This calculator takes children enrolled in extended care, the ratio required during that time block (often the same or looser than core hours), staff hourly pay, hours the program runs per day, and the price charged per child, then computes daily and monthly margin. Because extended care runs shorter blocks than the main program day, staffing often can't be trimmed proportionally — a 90-minute after-school block still needs a full staff member for the full ratio, so cost per child-hour tends to run higher than core-day cost per child-hour. This tool isolates that block so you can see whether it's a genuine profit center or a convenience loss-leader, and by how much.",
  "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.",
  "dateModified": "2026-09-30",
  "run_url": "https://www.revenuelab.fyi/api/public/calc?tool=extended-care-margin",
  "inputs": [
    {
      "id": "children",
      "label": "Children enrolled in extended care",
      "kind": "number",
      "hint": null,
      "default": 22,
      "unit": null,
      "min": 1,
      "max": null
    },
    {
      "id": "ratio",
      "label": "Required ratio during this block",
      "kind": "number",
      "hint": null,
      "default": 12,
      "unit": null,
      "min": 1,
      "max": null
    },
    {
      "id": "hourlyPay",
      "label": "Staff hourly pay (loaded)",
      "kind": "number",
      "hint": null,
      "default": 19,
      "unit": "$/hr",
      "min": 0,
      "max": null
    },
    {
      "id": "hours",
      "label": "Program length",
      "kind": "number",
      "hint": null,
      "default": 2,
      "unit": "hrs",
      "min": 0.25,
      "max": null
    },
    {
      "id": "price",
      "label": "Price charged per child per day",
      "kind": "number",
      "hint": null,
      "default": 18,
      "unit": "$",
      "min": 0,
      "max": null
    },
    {
      "id": "daysMonth",
      "label": "Days offered per month",
      "kind": "number",
      "hint": null,
      "default": 21,
      "unit": null,
      "min": 1,
      "max": null
    }
  ],
  "outputs": [
    {
      "id": "monthlyMargin",
      "label": "Monthly program margin",
      "format": "currency",
      "hint": null,
      "primary": true
    },
    {
      "id": "dailyMargin",
      "label": "Daily margin",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "marginPerChild",
      "label": "Margin per child / day",
      "format": "currency",
      "hint": null,
      "primary": false
    },
    {
      "id": "staff",
      "label": "Staff required this block",
      "format": "number",
      "hint": null,
      "primary": false
    },
    {
      "id": "dailyLabor",
      "label": "Daily labor cost",
      "format": "currency",
      "hint": null,
      "primary": false
    }
  ],
  "worked_example": {
    "inputs": [
      "Children enrolled in extended care: 22",
      "Required ratio during this block: 12",
      "Staff hourly pay (loaded): 19 $/hr",
      "Program length: 2 hrs",
      "Price charged per child per day: 18 $",
      "Days offered per month: 21"
    ],
    "outputs": [
      "Monthly program margin: $6,720",
      "Daily margin: $320",
      "Margin per child / day: $14.55",
      "Staff required this block: 2",
      "Daily labor cost: $76"
    ]
  },
  "how_to": {
    "title": "How to use this",
    "steps": [
      "Enter children enrolled in extended care.",
      "Enter required ratio during this block.",
      "Enter staff hourly pay (loaded) ($/hr).",
      "Enter program length (hrs).",
      "Enter price charged per child per day ($).",
      "Enter days offered per month.",
      "Read your monthly program margin 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": {
        "children": 13,
        "ratio": 7,
        "hourlyPay": 11.4,
        "hours": 1.2,
        "price": 11,
        "daysMonth": 13
      }
    },
    {
      "name": "Typical",
      "description": "Defaults — the most common real-world setup.",
      "values": {
        "children": 22,
        "ratio": 12,
        "hourlyPay": 19,
        "hours": 2,
        "price": 18,
        "daysMonth": 21
      }
    },
    {
      "name": "Ambitious",
      "description": "Higher-end numbers — what if things really pop?",
      "values": {
        "children": 35,
        "ratio": 19,
        "hourlyPay": 30.400000000000002,
        "hours": 3.2,
        "price": 29,
        "daysMonth": 34
      }
    }
  ],
  "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 a short program block cost so much per child?",
      "a": "Staffing snaps to whole people regardless of block length, so a 90-minute program needing 2 staff for ratio compliance pays for 2 full hourly blocks (often with a minimum-shift-length rule) no matter how short the program itself runs. Short, low-enrollment blocks are the most likely part of your schedule to run at a loss even when the main program day is healthy."
    },
    {
      "q": "Should extended care be priced to fully cover its own labor?",
      "a": "Many operators intentionally accept a smaller margin (or break-even) on extended care because it's a strong retention and enrollment tool for working parents who need coverage past the core day. That's a reasonable strategy, but you should choose it deliberately after seeing the real numbers, not by accident because no one ever ran this math."
    },
    {
      "q": "How do I improve margin without raising price a lot?",
      "a": "Combine age groups where licensing allows a looser ratio for the extended-care block specifically, since many states allow different (looser) ratios outside core instructional hours. Also check whether enrollment is clustered enough to run one larger group instead of splitting into two under-filled rooms each needing their own staff."
    },
    {
      "q": "Does this account for staff who are already on shift for other reasons?",
      "a": "No — it assumes dedicated extended-care staffing. If you're using teachers already on a closing shift who'd be paid regardless, the marginal cost of extended care is lower than modeled here; adjust the hourly pay input down to reflect only the incremental cost if that's your situation."
    }
  ],
  "related": [
    "https://www.revenuelab.fyi/toolbox/childcare-staffing-ratio-cost",
    "https://www.revenuelab.fyi/toolbox/camp-session-margin",
    "https://www.revenuelab.fyi/toolbox/daycare-bus-route-cost-per-rider"
  ],
  "license": "CC-BY-4.0",
  "citation": "RevenueLab — Extended-Care / Before-After-School Margin Calculator (https://www.revenuelab.fyi/toolbox/extended-care-margin)"
}