Open spec · brewmark.obp/0.1 · draft for comment
The BrewMark Protocol
Every grinder has its own private number scale, so a recipe written for one grinder is useless on another. The protocol is one scale for all of them, a recipe format that uses it, and a free lookup that turns it into the setting on the grinder you own.
01One target, every grinder
A pour-over recipe written as BGI 38 on the BrewMark Grind Index comes out like this on six grinders. Each setting is written the way that grinder’s dial prints it.
| Grinder | BGI 38 is | How it’s known |
|---|---|---|
| Fellow Ode Gen 2 | 6.2 | Maker’s chart |
| Baratza Encore | 15 | Maker’s chart |
| Comandante C40 MK4 | 27 clicks | Maker’s chart |
| Fellow Opus | 6.3 | Maker’s chart |
| Niche Zero | 40 | Maker’s chart |
| Timemore C2 | 16 clicks | Estimated |
02Three parts
One scale
The BrewMark Grind Index, 0 to 100, that every grinder’s dial is mapped onto. Read the spec
One file
The Open Brew Profile: a recipe as JSON whose grind is a target, never a setting. Read the spec
One lookup
translate: a target and a grinder in, the setting out. Free to call, from code or from an AI assistant.
03The scale
Five fixed points. Each grinder is described by its setting at each one, and the curve between them is what translate reads. The BGI orders grinds; it is not yet a particle size. Tying each point to a measured size is the next version.
- 0
- Espresso fine
- 15
- Moka pot
- 40
- Filter medium
- 70
- French press
- 100
- Very coarse
04Try it
From code, no key needed. A key (free, on request) raises the limit to 300 calls a minute and counts your usage.
GET https://brewmark.io/api/v1/translate?bgi=38&grinder=fellow-ode-gen-2
Post a whole recipe to get its grind for any grinder:
POST https://brewmark.io/api/v1/translate
Content-Type: application/json
{
"grinder": "baratza-encore",
"profile": {
"spec": "brewmark.obp/0.1",
"method": "pour_over",
"grind": { "bgi": 38 },
"ratio": 16.7
}
}From an AI assistant: connect the MCP server at https://brewmark.io/api/mcp and ask it to translate a recipe onto your grinder.
05Every number says how it’s known
06Built on it
- Code builder for roasters
Write a recipe once, print the code on the bag, and put it on your product page with the dial-in widget.
- Recipe insights
How first cups of your recipes rated, grinder by grinder.
- Measure your grind
A phone photo of your grounds gives your grinder’s particle size. Readings are reviewed, then shown on the grinder’s page.
- API access
Free, on request and reviewed by a person. Raises your limits and counts your usage.
- Partners
What brewer makers, roasters, grinder makers and AI platforms get.
For developers: the OpenAPI document, the TypeScript SDK and the grinder feed.
Open, and open to comment
The spec, schema and examples are MIT-licensed: anyone can write, read and validate profiles without asking. Building with it? See what partners get and the rules for AI agents. Version 0.1 is a draft. Corrections and implementations are welcome as issues on GitHub. If a setting looks wrong for your grinder, tell us.