Sandra is forty-seven. She started Ortega Commercial Cleaning fifteen years ago after a decade as a night-crew lead at a larger BSCAI-member shop. Her shop now does about $1.2M ARR across 9 property-manager accounts. The shape is unusual: nights from 5pm to 11pm are the production window for vacuuming, mopping, restroom deep clean, trash, and floor care; days are for two day porters (real-time response — restroom stock, lobby spills, executive breakroom) at her two largest accounts; mornings are for spot-checks where she drives past last night's buildings before tenants arrive at 8.

The contract value at risk is structurally enormous. A single $4,800/month account is $57,600 of annual revenue. Loss is triggered by ONE $0.50 trash bag not stocked in the executive bathroom on the day the CEO walks in. The PM rarely makes the cancel decision but always shapes it. One bad walk-through, one missed lockup, one COI lapse = relationship damage that cascades.

The day before OpsLight

Sandra's biggest hidden cost was the monthly PM report. Every 9 PM accounts received a status report on the 1st of every month. The format was non-negotiable per the contract: service summary, supply consumption table, incident log, photos of completed periodic work (strip-and-wax floor care, carpet extraction quarterly, high dusting), and next-month's scheduled work calendar. Sandra built each report in Word from scratch. She'd paste in last month's template, manually update the service-summary table from her crew's WhatsApp messages, dump photos from three different crew leads' phones, hand-type the incident log from her own notes, attach the supply-usage tally from her supplier portal screenshots. Six hours per Sunday. She missed the 1st most months and sent on the 3rd with apologies.

The COI compliance side was the slower-bleeding crisis. Every PM building required a Certificate of Insurance naming the building owner + the management company as additional insureds. Sandra had 9 active PMs. Her general-liability policy renewed annually. If her broker didn't auto-issue the new COI to every PM on file (and they often didn't), her night crew would show up Monday and the security desk would turn them away. Sandra had this happen three times in the last two years. Each one cost a $400-$800 emergency-COI-issuance fee from the broker, plus 4-6 hours of phone calls to apologize to the PMs.

And the night-shift verification gap. Every night, 11 buildings closed. Each building needed: exterior doors locked, supplies restocked, lights off. Sandra "trusted" her crew leads — but trust without verification meant the failure modes only surfaced when the PM noticed at 8am Monday. One unlocked loading-dock door at the Embarcadero tower in February 2024 triggered an alarm response, a 2:47am PM call, and a cancellation conversation that took two weeks of damage control to defuse.

"The work my crew does at 9pm doesn't get appreciated. It gets penalized when it's missing. The monthly report is the only artifact the PM sees that justifies the $4,800. The COI is the only thing the security desk looks at. The lockup is the only thing that matters at 1am. Three artifacts. I was producing them on a Saturday with a Word template and a prayer."

Sandra Ortega · Ortega Commercial Cleaning

How Sandra found OpsLight

One of her PMs — a mid-tier Embarcadero property-management firm — also worked with an OpsLight-equipped HVAC vendor. The PM mentioned that her HVAC vendor's monthly status emails had become "the gold standard" for vendor accountability in her portfolio. Could Ortega do the same? Sandra called us that week.

First call was an hour. We asked Sandra: walk me through the current monthly PM report end to end. She did, with the Word template open. We asked: which PMs are tightest about COI compliance and which broker do you use? She named 3 PMs and the broker. We asked: what does the worst-case night-shift failure look like — describe February 2024. She walked us through the loading-dock incident.

That call became the install brief. Two weeks later: OpsLight live. Monthly PM report rendering from accumulated crew check-ins + photos + supply data + incident log. COI tracking with 60/30/7-day alarms + broker auto-email. Night-shift door-lock + supplies + lights-off 3-item checklist with geo-stamp + photo, single confirmation SMS to Sandra at 1am. Tenant-complaint defense log (per-suite service record). Bilingual SMS (Spanish input from night crew parses the same as English).

Three moments from a regular month

Sunday May 31 · 9:00 PM

The monthly PM report Sandra didn't spend 6 hours on

OpsLight had been accumulating per-building data through April: every crew check-in with timestamps, every restroom photo, every supply-restock note, every incident (one tenant suite key request, one HVAC reroute that affected 7th-floor cleaning schedule). On the morning of June 1, Sandra got 9 PDF drafts in her inbox — one per PM account — each branded on Ortega Commercial Cleaning letterhead with the building name + the PM's contact. Service summary table, supply consumption, incident log, 4-12 photos of periodic work, next-month schedule. She reviewed each one in 30-60 seconds, sent all 9 by 9:30am June 1. The Sunday she'd usually been writing reports? Spent with her family.

Monday May 5 · 1:14 AM

The single confirmation text Sandra used to sleep through

11 buildings closed Monday night. Each night-crew lead SMS-confirmed the 3-item checklist with photos: doors locked + photo, supplies restocked + photo of paper stock, lights off + photo. Geo-stamped at the building address. OpsLight rolled the 11 confirmations into a single SMS to Sandra at 1:14am: "All 11 sites secured. Crew checkout logged. Photos archived. Sleep well." Sandra didn't get up at 2am. The PM didn't call. The buildings were locked.

Tuesday May 19 · 11:42 AM

The tenant complaint that didn't escalate

PM at the Embarcadero tower forwarded a tenant complaint: "suite 412 hadn't been vacuumed in two weeks." Sandra pulled the service log for suite 412 in 10 seconds: crew member Carmen, check-in 9:23pm May 12 + May 5 + April 28, geo-stamp at 412 floor confirmed, photo of vacuumed carpet attached each time. Sandra replied to the PM with the three timestamps + photos. PM forwarded to the tenant. Tenant apologized — different suite. Issue closed in 18 minutes. No relationship damage.

Six months later

Sandra's monthly-PM-report time went from ~6 hours per Sunday to ~30 minutes per month review-and-send. COI compliance is automatic — 60 days out, the broker gets the email + the PM list, and Sandra gets the CC. Zero security-desk turnaways in 6 months. The night-shift confirmation text at 1am means she sleeps through. And the tenant-complaint-with-no-evidence pattern has zeroed out — every complaint now resolves with a 10-second service-log pull.

The number Sandra keeps coming back to: she signed a 10th PM account in March (Mission District medical-office building) BECAUSE the prospective PM heard about her monthly-report quality from one of the existing PMs. The deliverable became the marketing.

"Commercial cleaning is a relationship business. The relationship runs on three artifacts the PM actually sees: the monthly report, the COI on file, and the building secured when they walk in Monday. OpsLight made those three artifacts production-grade. My crew was always doing the work. Now the work is documented in a way that protects them — and protects me." Sandra Ortega

What's configured specifically for janitorial

  • Janitorial-vocabulary intake classifier. Knows day porter vs night crew · stripping (chemical wax removal) · scrubbing · burnishing · VCT (vinyl composition tile) · spec cleaning · post-construction clean · scope creep · walk-through · BSCAI · ISSA · CIMS · COI · Certified Custodial Supervisor.
  • Monthly PM status report auto-renderer. Service summary table, supply consumption, incident log, photos of completed periodic work (strip-and-wax, carpet extraction, high dusting), next-month schedule. Per-PM building-branded PDF on the 1st. Replaces 6 hours of Sunday Word-document work with 30-60 seconds review per account.
  • COI expiration tracking + broker auto-email. 60-day, 30-day, 7-day alarms before policy expires. Broker email with full PM list auto-attached. Owner CC'd. Eliminates the Monday-morning crew-turned-away fire drill.
  • Night-shift 3-item checklist with geo-stamp. Doors locked + photo, supplies restocked + photo, lights off + photo. Geo-stamped at the building. Single rollup confirmation SMS to owner by 1am ("All 11 sites secured").
  • Tenant-complaint defense log. Per-suite service record with crew member + check-in/out timestamps + geo-stamp + photo. 10-second pull when a complaint arrives. He-said-she-said disputes end.
  • Sub-contractor no-show escalation cascade. 15-min late → sub direct text · 30-min late → backup crew lead · 45-min late → owner SMS with building address. Owner intervenes BEFORE the PM finds out Monday.
  • Bilingual SMS (English + Spanish). Crew can text ENTRADA J-1248 / SALIDA J-1248 / FOTOS / INVENTARIO the same way English crews text IN/OUT. Same parsing, same data structure.
  • Day-porter real-time response log. Day porter texts the spill / restroom / breakroom request response with photo + timestamp. Builds the day-porter accountability log without forcing them to use an app on shift.

What other janitorial owners ask us

What is the best software for a small commercial cleaning company?

For 5-15 person commercial cleaning shops with PM-retainer accounts, the right software depends on day-porter vs nightly-janitorial mix + periodic floor-care load. OpsLight fits owner-operator shops who need monthly PM status reports auto-rendering, COI expiration alarms, geo-stamped night-shift verification, and tenant-complaint defense logs. Bilingual SMS (EN + ES). Pricing: $3,500-5K install, $400-600/mo retainer.

Does OpsLight auto-generate the monthly PM status report?

Yes. Crew check-ins, photos, supply usage, incident logs accumulate per building. On the 1st, OpsLight renders a building-branded PDF per PM account: service summary, supply consumption, incident log, photos of completed periodic work, next-month schedule. Owner reviews + sends in 30-60 seconds per building.

How does OpsLight handle COI expiration?

60 / 30 / 7-day alarms before policy expires. Broker email with full PM-list auto-attached. Owner CC'd. Crew never gets turned away from the security desk because the COI lapsed.

Can OpsLight verify night-shift door-lock + supplies + lights-off completion?

Yes. 3-item checklist with photo per item, geo-stamped at the building. Single rollup confirmation SMS to owner by 1am ("All N sites secured"). 2am PM panic-calls stop happening.

How does OpsLight defend against tenant complaints?

Per-suite service record with crew + timestamps + geo-stamp + photo. 10-second pull when a complaint arrives. Conversation becomes documented service, not "we always do it."

Does OpsLight handle sub-contractor no-show escalation?

Yes. 15-min late → sub text. 30-min late → backup crew lead. 45-min late → owner SMS. Owner intervenes BEFORE the PM finds out Monday.

Will my night crews need to install an app? They mostly speak Spanish.

No app, no login. Bilingual SMS — crew texts in Spanish (ENTRADA / SALIDA / FOTOS / INVENTARIO) and the system parses identically to English. Most night crews already SMS in their first language; OpsLight respects that.

How long does setup take?

Two weeks. Includes: porting/provisioning Twilio number, importing your PM account list with COI renewal dates + broker contacts, configuring per-building checklist details, branding the monthly-PM-report PDF template per building, wiring up crew SMS roster in both languages.

Related trades

Want to see this configured for your cleaning operation?

20 minutes. We'll wire up a sandbox with your PM account list, your COI renewal calendar, your monthly-report template per building, and your night-shift checklist. Run a mock month and watch the PDF render.

Set up yourself in 6 min Or apply to the founding cohort Talk to the janitorial scenario assistant