Espresso tastes sour, bitter or thin? Get one change — and the reason.
Say how the shot tasted. ShotPulled ranks what’s likely wrong and tells you the one thing to change next, in your grinder’s own clicks. Free, on iPhone and Android, on the web, and inside Claude or ChatGPT.
Free while we grow. If we ever charge, it will be for new things, never for what you already have. Setting up your machine, grinder and first bag takes about two minutes.
Three places, one account
Everything lives on the server. Start a bag in the chat, log the shot on your phone, read the history on the web.
A bag that counts itself
Register it once, with the roast date and the weight. Every shot you log takes its dose off the top.
The app on the bench
Espresso happens standing up, with wet hands. If your scale speaks Bluetooth, it fills the numbers in for you.
Your whole bench, first thing
The cockpit opens on the bag in use: how many shots are left, and a track showing where today sits in its peak window and the day it turns. Under it, the grinder's setting, anything maintenance needs, and your last shots.
Two weighings, one card
Weigh the dose in. Weigh the shot out. The card moves from Dose to Yield and Time on its own. Scales with their own clock send the time; the rest get a timer the app runs. Either way, it never starts itself.
Only if the scale says so
A scale gets a Connect button when its own record says it has Bluetooth. Nothing about your hardware is assumed, and manual entry is always there.
Free on the App Store · iPhone, iOS 26.1 or later.
Free on Google Play · Android 8.0 or later.
Add it to Claude or ChatGPT
Your beans, shots and recipes, in the conversation. Same account, same data as the dashboard.
ShotPulled is in ChatGPT’s plugin directory. Install it, sign in with your ShotPulled account, and mention @ShotPulled in any chat.
Works on a free ChatGPT account. A workspace or a region can still block it — Connect is greyed out when it does.
Add to ChatGPTOther MCP clients and advanced settings
Any MCP client reaches the same endpoint. Sign-in is OAuth 2.1 through Clerk and is discovered from the server, so leave any client ID and client secret fields empty — in Claude those sit under Advanced settings.
Prefer a UI? Open the web dashboard →