Drop on the dose, not the clock
The problem: some days Joshua has other plans
Today (16th October 2026) we had weird weather. It rained, it stopped, rinse and repeat for hours. Humidity fluctuations, wind. Not a lovely roast day. We had some problems, but we came up with a solution.
Oddly enough one partly inspired by a video tour of a local cheese factory I watched the other day on YouTube.
We roast to master profiles: the best version of each coffee, replayed step by step. Most days the roast follows the master closely. Some days it doesn't.
Recently we had a run of roasts that came in a few degrees hot through the last minutes. Same coffee, same profile, same settings. The weather, the airflow and the machine itself all nudge a roast, and a few degrees near the end changes the cup.
That leaves the usual question: when do you drop? The two usual answers both fail here.
- Drop at the master's time. A hot roast has gone further by then, so it's overdone.
- Drop at the master's temperature. A hot roast gets there early, before it has had enough time.
What we actually want is the moment the coffee has developed as much as the master did. Neither the clock nor the thermometer measures that on its own.
The science: hotter seconds count for more
Roasting is chemistry, and chemistry speeds up with heat. A handy rule of thumb says many reactions run about twice as fast for every 10°C (18°F) hotter.
Think of a day at the beach. Ten minutes in the midday sun burns you more than half an hour at 8 a.m. What matters is your total dose of sun, not just the minutes you spent in it.
Coffee works the same way. A second at 418°F does about twice the work of a second at 400°F. A second at 382°F does about half. So two roasts can spend the same time in development and still end up in very different places.
Counting the heat dose
We turn that rule into a running score. Pick a reference temperature, 400°F. Every second of the roast adds points to a total, based on how hot the beans are:
points per second = 2(BT − 400°F) / 18
BT is bean temperature. In plain numbers:
| Bean temperature | Points for that second |
|---|---|
| 418°F | 2 |
| 400°F | 1 |
| 382°F | 0.5 |
| 300°F | about 0.02 |
We start counting a little before first crack, where the flavor-defining stretch begins. Earlier seconds barely register anyway. The total is the heat dose, measured in "seconds at 400°F". A dose of 170 means the beans got the same chemical push as 170 seconds held steady at 400°F, even though the real temperature was climbing the whole time.
DoseMatch: dropping on the dose
In RoastRacc, our roasting app, we call this DoseMatch. It's available in RoastRacc version 1.37 and above, and works in three steps:
- Set the target. When a master profile loads, the app adds up the master's own heat dose, from the start point to its drop. That number is the goal for every roast of that coffee.
- Count live. During the roast, the app keeps the same running total, second by second.
- Cue the drop. It looks ahead from the current rate of rise, and tells us when the roast is about to match the master's dose.
The result trades time and temperature against each other automatically. A roast running hot reaches the dose sooner, so the cue comes early. A roast running cool gets a little longer.
The cue also stays within a sensible window around the master's drop, so one odd reading can't send it somewhere strange.
Working backwards from the end
A fellow roaster once gave us advice that stuck: profile backwards. Because the chemistry speeds up so much with heat, the last few seconds matter most for the cup. But what happens in them was decided 30 to 40 seconds earlier, by the heat already in the drum and the beans.
That's exactly where DoseMatch helps and where it stops. It picks the best moment to end a roast that has drifted. It can't undo the drift. By the time a hot roast reaches the end, the heat is already in.
So the next step is to look ahead earlier: watch where a roast is heading right after first crack, and make a small gas adjustment while it can still make a difference. DoseMatch is the first piece of that.
Not a new idea, and not a perfect one
The math isn't ours. Canneries and autoclaves have used the same trick for decades: they count "equivalent minutes at 121°C" to make sure food is safely sterilized, with every second weighted by temperature. Their weighting is much steeper, since killing bacteria is far more sensitive to heat than roast chemistry is.
Coffee people have been here before too. An old Jabez Burns lab study worked out which combinations of time and temperature gave the same roast color. It found color development slows right around 365°F, close to where we start counting. Some roast software also tracks the "area under the curve", which adds up temperature over time without the exponential weighting.
We're upfront about the weak spots:
- Same dose isn't the same flavor. Roasting is many reactions at once, each sensitive to heat in its own way. Two roasts can share a dose and still taste different.
- The doubling rule is a rule of thumb. Some published measurements of roast weight loss point to a gentler effect (Vargas-Elías et al., 2016). The right number may differ for our roaster and our coffees.
- The probe lags the beans. It trails more when the roast moves fast, which is exactly when the cue matters most.
So we're testing it against real results. We'll compare each past roast's dose with how much weight it lost, a good measure of how far it roasted. That data will also tell us the right doubling factor for our machine. Then the cupping table gets the final say.
A cue, not an autopilot
DoseMatch doesn't roast the coffee for us. It gives us one more number to trust, alongside our eyes, ears and nose. If it's right, the coffee you buy from us should taste more alike from bag to bag, even when the roaster is having an off day.
We'll share what the data shows once we've run it for a while. If you roast and have tried something similar, or think we've got the chemistry wrong, we'd love to hear from you.
Continue reading about our first day testing here.