| Month | Shifts | Hours | Avg/Day | Avg Shift | MoM |
|---|---|---|---|---|---|
| January | 1,702 | 7,491.0 | 242 | 4.40 | — |
| February | 1,628 | 7,184.5 | 257 | 4.41 | −4.1% |
| March | 1,906 | 8,437.9 | 272 | 4.43 | +17.4% |
| April | 1,810 | 7,954.7 | 265 | 4.39 | −5.7% |
| May | 1,949 | 8,226.5 | 265 | 4.22 | +3.4% |
| June | 1,944 | 8,159.4 | 272 | 4.20 | −0.8% |
| July (to 30th) | 1,845 | 7,742.6 | 258 | 4.20 | −5.1% |
| Total YTD | 12,784 | 55,196.5 | 262 | 4.32 | — |
| # | Site | Shifts | Hours YTD | % of YTD | Billed @ $28 |
|---|
Volume is stable, not growing. Hours have held in a tight 7,184–8,438 band all year with no upward trend. March was the high point; the last four months have drifted down slightly (Jul −5.1% on Jun). Growth in profit will have to come from rate or mix, not from the existing book.
Delivery reliability is excellent. Zero unfilled shifts in all seven months across 12,784 shifts. This is a genuine competitive asset and worth putting in front of clients at renewal.
Average shift length is shrinking — 4.40 hrs in January to 4.20 hrs in June–July. Shift count is up but hours per shift are down, meaning more travel, more clock-ins and more supervision per billable hour. Watch this: it raises cost to serve without raising revenue.
Revenue concentration is high. The top 15 of 65 sites carry 67.8% of hours, and the single largest (BOC Wetherill Park Screening) is 4,250 hrs — 7.7% of the book, worth ~$119k billed. Losing any top-5 site would be materially felt.
Weekends are the soft spot. Weekdays run ~9,000–9,550 hrs each YTD; Saturday (4,607) and Sunday (4,140) are less than half. If weekend rates carry a premium, there is upside in selling more weekend coverage into existing sites.
At current pace the year lands at ~94,600 hrs — about $2.65m revenue and $378k gross profit on the $4/hr spread, before on-costs and overheads.
| Month | Hours | Revenue $28 | Wages $24 | Profit $4 |
|---|---|---|---|---|
| Jan | 7,491.0 | $209,747 | $179,784 | $29,964 |
| Feb | 7,184.5 | $201,165 | $172,428 | $28,738 |
| Mar | 8,437.9 | $236,260 | $202,509 | $33,751 |
| Apr | 7,954.7 | $222,732 | $190,913 | $31,819 |
| May | 8,226.5 | $230,342 | $197,436 | $32,906 |
| Jun | 8,159.4 | $228,463 | $195,826 | $32,638 |
| Jul (to 30th) | 7,742.6 | $216,791 | $185,821 | $30,970 |
| Total YTD | 55,196.5 | $1,545,501 | $1,324,715 | $220,786 |
385 of 440 shifts (87.5%) were copied from a previous roster week — MFS runs a stable, repeating roster and tweaks it, rather than rebuilding.
174 edits were made across 133 shifts (30% of the week). Most changed shifts got exactly one edit; 8 shifts were reworked 3–5 times.
Bulk roster work happens around 4 PM — 213 of this week's shifts were created in the 16:00 hour, with secondary waves late morning (11:00–12:00).
359 shifts (81.6%) were on the roster 2+ weeks early; only 6 were added within 2 days of the shift. Cover speed is not a problem — when the 3 blank shifts appeared, they were filled within the hour.
Watch confirmations, not coverage: 138 shifts are still Pending and 75 Submitted for this week — coverage is 100%, but confirmation lag is the operational risk.
| # | Site | Shifts | Hours |
|---|
| Day | Time | Hrs | Employee | Status | Site | Added (MM-DD HH:MM) | Lead (days) | Edits |
|---|