How it works
Every espresso shot gives you two signals: how long it ran and what it tasted like. Those two signals encode almost everything you need to know about extraction.
- Time tells you about flow. Fast means under-extracted by default. Slow means over-extracted.
- Taste tells you about result. Sour means under-extracted. Bitter means over-extracted. Balanced means stop.
- Together they tell you the cause. Sour and fast = grind. Sour and slow = channeling. Bitter and fast = dose. Bitter and slow = grind.
The troubleshooter encodes the same logic experienced baristas use. It picks the highest-impact next step so you change one variable at a time instead of guessing.
How to use the troubleshooter
- Pull a shot at your current setting and target yield.
- Pick the dominant taste note — sour, balanced, or bitter.
- Pick the time band the shot landed in.
- Read the recommendation and apply that single change before the next pull.
- Re-pull and re-taste. If the change moved the cup the right way, lock it in.
For target yields and time bands by ratio, use the espresso ratio calculator. For the full method behind the recommendations, read the 3-shot dial-in guide.
The nine-cell map
The full grid the troubleshooter walks. Useful as a reference once you've used it a few times.
| Taste | Fast (under 22 s) | On target (22–32 s) | Slow (over 32 s) |
|---|---|---|---|
| Sour | Grind finer | Grind 1 click finer | Fix distribution |
| Balanced | Grind 1 click finer | Lock it in | Grind 1 click coarser |
| Bitter | Reduce dose 0.5 g | Grind coarser or drop temp | Grind coarser |
When the troubleshooter is wrong
- Beans are too fresh or too old. Coffee under 5 days or over 4 weeks off roast behaves differently. Adjust for freshness first — see resting coffee beans.
- Water is the issue. Very soft water under-extracts; very hard water over-extracts. If shots are uniformly off regardless of grind, try bottled water at 50–150 ppm.
- The basket is the issue. A worn or undersized basket channels at any dose. If a fresh basket fixes the problem, that was the variable.
What this troubleshooter does not do
It doesn't track shots over time. Every visit is a fresh one-shot decision. To see patterns — bag-age trends, basket comparisons, recurring channeling — log shots in Beany. The app applies the same decision logic and remembers what happened so you don't solve the same problem twice.
