When we started building the income forecasting piece of Trampay, we had one constraint we kept coming back to: the number on screen needs to be useful for actual planning decisions, not just interesting. A forecast you cannot act on is not a forecast, it is a statistic.
Planning decisions for couriers look like: do I need to pick up extra shifts this week to cover rent? Can I afford to take Saturday off? Is this week likely to be strong enough that I can skip the Sunday morning session? Those decisions require a forward-looking number in a range you can reason about, not a point estimate with false precision.
This article explains how we arrive at that number, what inputs go into it, and where the honest limits of the forecast are.
What the model starts with: your personal earnings history
The most predictive input for next week's earnings is last week's earnings, adjusted for the day-of-week pattern from the prior month. That sounds obvious stated plainly, but it is actually the most important thing the model does: it starts from your specific work pattern rather than from a general average for couriers in your city.
A courier who consistently works Thursday through Sunday evenings has a very different baseline pattern than one who works Monday through Friday mornings. Both patterns are real and consistent, and a model that treats them the same will forecast poorly for both. By reading your actual delivery history from your connected platforms, the model sees your specific schedule pattern: which days you tend to work, your average active hours per day, your typical delivery volume during those hours, and how much that varies week to week.
The minimum useful history is around 30 days. With 30 days of data the model can identify your weekly schedule pattern with reasonable confidence. With 90 days it can also see your monthly rhythm, which matters because some couriers work harder at the start of the month and ease off toward the end, while others do the reverse. With 6 months or more the model can also start to capture seasonal patterns in your specific zone.
Seasonality and calendar signals
Delivery demand in Sao Paulo is not uniform across the year. Carnival week sees reduced delivery volume in most zones because order demand drops as people are out of their normal routines. The Christmas period from the second week of December through early January has a distinct demand profile: food delivery volume drops in residential areas as people gather at family homes, but convenience and gift delivery volume spikes. The FIFA and Copa America tournament periods show elevated dinner-hour delivery volume on match nights, which the model captures as a calendar signal.
These seasonality patterns are encoded as calendar adjustments applied on top of your personal baseline. When your week ahead includes a public holiday or a known high-demand calendar event, the forecast adjusts the relevant day estimates accordingly. This is not a large adjustment in most cases, maybe 10 to 15 percent on the affected days, but it is systematic and it tends to be in the right direction.
Feriados municipais specific to Sao Paulo, like Aniversario de Sao Paulo on January 25th, are also in the calendar. Municipal holidays affect delivery patterns differently from national holidays because only Sao Paulo residents get the day off, which shifts both demand behavior and courier availability.
Platform-level signals
The three major platforms each have promotional cadences: turbo bonus weeks, increased per-delivery rates during specific periods, and incentive programs that activate based on delivery volume thresholds. These signals affect expected earnings independently of how many deliveries you complete.
We track known promotional patterns from each platform to the extent they are observable from historical earnings data. When our model detects that a platform typically runs a volume bonus program in the same calendar period each year, that signal is incorporated into the forecast for the relevant days. This is not a precise input because platforms change their promotional structures, and we cannot predict future promotions that have not been announced. What we can do is flag when a period historically showed elevated rates in prior years, so the forecast reflects that tendency rather than assuming a flat rate.
What the forecast does not know
We want to be direct about the limits of what the forecast can capture, because overstating it would make it less useful rather than more.
The forecast does not know whether you will be sick next week, whether your bike will need a repair, or whether you will decide to take time off for a personal reason. All of those are legitimate reasons why actual income will differ from the forecast, and none of them are predictable from your delivery history. The forecast is a probability-weighted estimate of what you would earn if you worked roughly your normal schedule under roughly normal conditions.
It also does not predict sudden platform policy changes. If a platform cuts per-delivery base rates during the forecast window, the forecast will be optimistic. These changes are not foreseeable from historical earnings data. We track platform policy changes as they happen and update the model, but there will always be a lag between a platform-side change and our model reflecting it.
Weather is partially incorporated through historical weather patterns for your zone and the time of year, but specific weather events in the next 14 days are not predictable with the precision that would make a meaningful difference to the forecast. Rain is listed as a likely-positive signal in the shift optimizer feature, but the forecast does not promise earnings spikes on specific days due to weather.
The range instead of a single number
For the 14-day forecast shown on the Plus plan, we show a range rather than a single number. The range has a low and a high, representing roughly the 25th and 75th percentile outcomes based on your historical variance. If you consistently earn within a tight band week to week, your range will be narrow. If your earnings vary significantly based on how many days you work, the range will be wider.
That width is intentional. A false-precision point estimate of R$ 2,847 would feel authoritative but would mislead you about the uncertainty involved. A range of R$ 2,400 to R$ 3,200 is honest about the fact that your actual earnings depend on choices you have not made yet. It also gives you the planning information you actually need: the low end is the floor you can count on if you work your normal schedule, and the high end is what you would earn if you had a strong week with good shift selection.
The forecast is a planning tool, not a guarantee. We built it to be as accurate as the available data allows, and we are direct about where it cannot be accurate. If it helps you make one better planning decision per week, it has done its job.