Same-day booking is one of the most requested features from homeowners. It is also the most operationally expensive to offer reliably. Promising same-day service and then failing to deliver it — because a professional was double-booked, because travel time was underestimated, because the preceding job ran late — is worse than not offering it at all. A broken promise is more damaging than a conservative promise kept.
We have been running same-day bookings on OSCAR since November 2024, and we have spent the last five months learning exactly which constraints matter and which ones we initially got wrong. This is an honest account of that.
The constraint graph for a single same-day booking
When a homeowner in Cedofeita books a plumber at 09:15 on a Thursday requesting service "today," the scheduler needs to answer one question: is there a slot today where a qualified, available, appropriately-located professional can be at this address with meaningful confidence?
That question involves at minimum six constraints that must all be satisfied simultaneously:
1. Professional certification match. Not all professionals cover all service categories. A plumber cannot accept an electrical job. A locksmith cannot cover a plumbing request. The candidate pool is immediately filtered to professionals certified for the requested category.
2. Daily capacity remaining. Each professional has a daily cap — currently 6 jobs or 7 billable hours. Any professional already at capacity is excluded. Any professional with remaining capacity that would be exceeded by this job is also excluded.
3. Current schedule and location. If a professional has a job at 10:00 in Matosinhos and another at 14:00 in Bonfim, the open window is roughly 11:15-13:30 depending on job durations. The scheduler evaluates whether the Cedofeita job fits into a genuine gap, not just a nominal gap.
4. Travel time to the homeowner's address. The professional must be able to reach Cedofeita from their current or next known location with the appropriate buffer. This uses the time-of-day traffic matrix, not straight-line distance.
5. Job duration estimate with variance. The plumbing job in Cedofeita has an estimated duration. That duration needs to fit in the available window including travel in and travel out to the next job.
6. Professional preference zone (in development). Some professionals have expressed strong preferences to work within particular neighborhoods. This is currently a soft weight in candidate ranking, not a hard constraint, and the preference declaration system is not fully live. We note it here because it will affect same-day availability as it develops.
Only when all five active constraints are satisfied does the scheduler return a same-day slot as confirmed. If no slot exists that satisfies all constraints, the system offers the earliest next-day window rather than overpromising.
The cut-off time problem
Same-day booking has a natural cut-off point that depends on the job type. A tap replacement with a 75-minute estimated duration cannot be accepted at 17:00 if the professional day ends at 19:00 — there is not enough time for the job plus travel. Our cut-off logic dynamically calculates the latest viable booking time based on job duration estimate and the available professional pool's end-of-day availability.
In practice, same-day availability for standard plumbing and locksmith jobs in Porto city typically runs until about 15:30-16:00 for same-day bookings placed before 10:00. Bookings placed after noon tend to saturate the afternoon availability quickly, particularly for categories with fewer professionals in the network, such as tile work.
We surface the cut-off honestly in the booking flow. If same-day is not available, the interface says so and offers the earliest confirmed next-day slot. We do not show "today" as an option if the system cannot genuinely confirm it.
What happens when a same-day job runs over
Job overruns are the primary source of same-day cascade failures. When a plumber's 10:00 job in Paranhos runs to 12:30 instead of the expected 11:30, every subsequent booking for that professional is affected. The 12:00 booking in Campanhã cannot start until 13:10 at the earliest. If that job also runs over, the 15:00 booking in Bonfim may not start until 16:30, and the homeowner who booked for 15:00 has had a poor experience despite having a confirmed slot.
We handle this with two mechanisms. First, our job duration estimates include a variance buffer — the scheduled slot is longer than the base estimate by a category-specific margin. That buffer absorbs most normal overruns without downstream impact. Second, when a job genuinely runs beyond the buffer, our system sends automated updates to subsequent homeowners with revised arrival estimates. The professional is prompted to signal "running late" status through the app when they expect to exceed their slot by more than 15 minutes. That prompt creates the visibility — the homeowner knows at 12:15 that their 12:00 professional will arrive closer to 12:45, rather than finding out at 12:45 when they call to ask.
We don't claim this fully solves cascade failures. It reduces them and makes them visible when they occur. A 30-minute overrun that is communicated is a manageable inconvenience. The same overrun with no communication is a broken promise. The operational difference is the in-app signaling, and we have been strict about professional accountability for triggering it.
Network density and same-day reliability
Same-day reliability is directly correlated with the number of professionals in a given zone. Porto city centre — Bonfim, Cedofeita, Santo Ildefonso, Bonfim — has the highest professional density in our network. Same-day bookings in those areas have the highest fill rate. The outer western neighborhoods — parts of Matosinhos, the Foz do Douro and Nevogilde zones — have lower density and consequently lower same-day fill rates.
We are honest about this in the booking flow. The coverage map shown when a homeowner enters their address indicates same-day availability likelihood by zone. A homeowner in Espinho sees a lower same-day confidence indicator than one in Paranhos, because that reflects operational reality. Showing everyone the same high-confidence message regardless of location would create false expectations and downstream failures.
The density gap in western Porto and the outer municipalities is something we're actively addressing through professional recruitment in those zones. We are not there yet. The honest answer for Espinho right now is: next-day is the reliably confirmable option, and we say so.
What same-day actually means for job categories
Same-day availability is not uniform across service categories. Locksmith work — emergency lockout, lock replacement — has the highest same-day fill rate because the jobs are typically short (30-60 minutes) and locksmiths make up a significant share of our certified professionals. A homeowner locked out of a Bonfim apartment on a Tuesday morning has a very high chance of a same-day booking within 90 minutes.
Plumbing same-day rates are strong for standard jobs but lower for complex categories like boiler service or pressure testing, because those jobs have higher duration variance and require professionals with specific equipment. Cleaning same-day bookings are possible but have lower fill rates because cleaning jobs are longer in duration (2-4 hours typically) and consume proportionally more of a professional's daily capacity.
Tile work same-day is currently not available at all — the category is too new in our network and we don't have the professional density or the job duration calibration to offer it reliably. We expect to add same-day tile capability by Q3 2025 as the category matures.
The constraint graph is different for every category. Treating "same-day" as a single feature that either exists or doesn't misses the operational reality. We offer it where we can genuinely confirm it, and we're specific about where we cannot.