Skip to main content
BrewMarkBREWMARK

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.

GrinderBGI 38 isHow it’s known
Fellow Ode Gen 26.2Maker’s chart
Baratza Encore15Maker’s chart
Comandante C40 MK427 clicksMaker’s chart
Fellow Opus6.3Maker’s chart
Niche Zero40Maker’s chart
Timemore C216 clicksEstimated

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

measuredRead off ground coffee with a stated method. Reserved: nothing is measured yet.
makerThe maker publishes a brew-method chart, and the curve is fitted to it.
communityOwners’ readings. None in a curve yet: owners can submit particle-size readings with the measure-grind tool, held as pending until reviewed.
estimatedPlaced by comparison with grinders whose makers publish a chart.

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.