Why does the pop happen?
When your final extraction stage exits on weight, the piston retracts immediately - regardless of how much pressure is still in the group. If pressure is above ~2 bar at that moment, rapid depressurization creates a vacuum cavity that collapses with a sharp snap or pop.
A Soft Close stage bleeds pressure or flow to near-zero over a few seconds before the piston lifts - eliminating the snap entirely.
How to wire it in
- Find the last extraction stage in your profile (the one that currently holds the
weightexit trigger). - Remove the
weightexit trigger from that stage. Keep your time-based safety exit. - Add the Soft Close stage below as the last stage in your profile. It now owns the weight exit.
Choose a variant
Use after pressure-controlled stages - lever profiles, adaptive espresso, any pressure-type final stage.
// Add as the last stage in your profile { "name": "Soft Close", "key": "soft_close", "type": "pressure", "dynamics": { "over": "time", "interpolation": "linear", "points": [ [0, 3.0], // start - tune to your typical end pressure [6, 0.5] // end - near-zero to clear the group ] }, "exit_triggers": [ { "type": "weight", "value": "$weight_YourYieldVariable", // ← replace with your variable "relative": false, "comparison": ">=" }, { "type": "time", "value": 6, "relative": true, "comparison": ">=" } ], "limits": [ { "type": "flow", "value": 3.0 } ] }
Tune the starting pressure
| Profile type | Start pressure | Duration |
|---|---|---|
| High peak (9 - 10 bar), short decline | 4.0 - 5.0 bar | 6 - 8 s |
| Medium peak (7 - 9 bar), long decline | 2.0 - 3.0 bar | 5 - 6 s |
| Soft spring / low peak (4 - 6 bar) | 1.0 - 1.5 bar | 4 - 5 s |
| Already near floor (1 - 2 bar) | 1.0 bar | 3 - 4 s |
Use after flow-controlled stages - allongé, turbo, constant-flow, or any flow-type final stage.
// Add as the last stage in your profile { "name": "Soft Close", "key": "soft_close", "type": "flow", "dynamics": { "over": "time", "interpolation": "linear", "points": [ [0, 4.5], // match your extraction flow rate [5, 0.5] // taper to near-zero ] }, "exit_triggers": [ { "type": "weight", "value": "$weight_YourYieldVariable", // ← replace with your variable "relative": false, "comparison": ">=" }, { "type": "time", "value": 5, "relative": true, "comparison": ">=" } ], "limits": [ { "type": "pressure", "value": "$pressure_YourPressureLimitVariable" } // ← same as extraction stage ] }
Tune the starting flow
| Extraction flow | Start | End | Duration |
|---|---|---|---|
| 4.0 - 5.0 ml/s (allongé) | 4.5 ml/s | 0.5 ml/s | 5 s |
| 2.0 - 3.0 ml/s (standard) | 3.0 ml/s | 0.5 ml/s | 4 s |
| 1.5 - 2.0 ml/s (slow/Italian) | 2.0 ml/s | 0.3 ml/s | 4 s |
Just want a quick fix? Drop this in, move your weight exit, done.
// Add as the last stage in your profile { "name": "Soft Close", "key": "soft_close", "type": "pressure", "dynamics": { "over": "time", "interpolation": "linear", "points": [ [0, 2.0], [3, 0.0] ] }, "exit_triggers": [ { "type": "weight", "value": "$weight_YourYieldVariable", "relative": false, "comparison": ">=" }, { "type": "time", "value": 3, "relative": true, "comparison": ">=" } ], "limits": [ { "type": "flow", "value": 2.0 } ] }
Before & after - stage wiring
Extraction Stage
exit_triggers:
- weight >= $weight_Yield
← shot ends hard here
at full pressure
- time >= 30 (safety)
Extraction Stage
exit_triggers:
- time >= 30 (safety)
- flow >= 4.0 (runaway)
← no weight exit here
Soft Close
exit_triggers:
- weight >= $weight_Yield
← weight exit moves here
- time >= 6 (safety)
Bonus - flow runaway exit
Add this exit trigger to your extraction stage (not Soft Close) to catch a collapsing puck before it gushes. If flow climbs above the threshold, the stage exits into Soft Close regardless of weight.
// Add to exit_triggers of your extraction stage { "type": "flow", "value": 4.0, // tune to ~1.5x your normal extraction flow "relative": false, "comparison": ">=" }
| Extraction type | Typical flow | Runaway threshold |
|---|---|---|
| Espresso / adaptive locked | 1.5 - 2.5 ml/s | 3.5 - 4.0 ml/s |
| Adaptive locked (higher range) | 2.5 - 3.5 ml/s | 4.0 - 5.0 ml/s |
| Allongé / high-flow | 4.0 - 5.0 ml/s | 6.0 - 7.0 ml/s |
Notes
time safety exit on Soft Close ensures the stage always terminates even if the scale hasn't registered yield yet - rare but possible with slow scale response.
flow limit on pressure-type Soft Close prevents the pump from over-driving during the bleed. Keep it at or below your extraction flow.
0.0 is valid but may cause a brief re-pressurization artifact on some machines. A floor of 0.3 - 0.5 bar is safer.