Badger Brew Ops guide
How to use every part of the app. The ? button on each screen opens the part of this guide for that screen.
Getting started
- Sign in with your email. There's no password: the app emails you a sign-in code. Type it in (or tap the link in the email).
- Join your team, or set up your brewery. If your admin invited the email you signed in with, you join automatically. If not, the app asks whether your brewery already uses Badger Brew Ops:
- Yes, I'm joining my team: type the join code from your invite email (like grist-knockout-4821; capitals and spaces don't matter). The code works with any email, so it's the answer when you were invited at one address and signed in with another. No code? Ask your admin to invite the email you signed in with, then tap Check for invites.
- No, I'm setting it up: name your brewery and you're its admin. If anyone at your brewery already uses Badger Brew Ops, ask them to invite you instead, so you're all looking at the same tanks.
- Set up your brewery: a new brewery's tank board starts with Set up your brewery, six short steps from units to your crew (see Setting up your brewery). Or bring everything in from a spreadsheet with Settings → Import.
- Put it on your phone's Home Screen, so it opens full screen with its own icon, like an app: on an iPhone, in Safari tap Share → Add to Home Screen; on Android, in Chrome tap ⋮ → Add to Home screen (or Install app). Sign in there by typing the emailed code (the email's link opens the browser instead). On an iPhone this also keeps the app's copy for no signal safe: Safari clears a website's saved data after about a week without a visit, but not an app on the Home Screen.
Everything has sensible defaults, so you can start using the tank board right away and set up the rest (brew sheet fields, package types, alerts) when you get to it.
Setting up your brewery
A new brewery's empty tank board offers Set up your brewery: one page of six short steps, in order. The step you're on is open; the rest show what's already there. Skip any step, come back to any step (Change or add), and change anything later in Settings.
- Units and time zone: how numbers are shown and typed. Looks right, or change them in Settings → Brewery.
- Your brewhouse: its name, turn size, and usual turns per batch. Two sites? Add each one. (Each one's kettle volumes and efficiency are in Settings → Equipment.)
- Your tanks, in groups: a kind, a name, a range, and a size. "FV" 1 to 8 makes FV1 to FV8; picking brite tanks switches the name to "BT". Names already there are left out, so adding the same group twice is harmless.
- Your beers: one per line, a name, then a comma and its style if you like ("Pale Ale, American Pale Ale"). Or import recipes from BeerXML on the Recipes page, which adds their beers too.
- What's in the tanks right now: for each tank with beer in it, the beer, its batch number (the next number if left blank), roughly when it was brewed, and its stage. Its size is the tank's size; correct anything on the batch's page. Nothing in them yet? They're all empty right now.
- Your crew: invite people in Settings → Team and permissions, or Later.
Until every step is done or skipped, the tank board shows Finish setting up with how many are done. "Looks right", "all empty", and "Later" are remembered on that phone or computer.
Just looking around? The demo on the sign-in page is a ready-made brewery of its own. Other ways to start on the empty board also loads a backup file, or fills the brewery with made-up sample data.
The demo
Try the demo on the sign-in screen opens a demo brewery of your own, with no email: two locations (a 15 bbl and a 30 bbl brewhouse, so batches of one, two, and three turns), about three months of made-up brewing ending today, and every part of the app in use: brew sheets, cellar logs, inventory, raw materials, the calendar, and menu boards.
- A two-minute tour starts the first time a demo opens: it walks through the tank board, alerts, a batch's story and its brew-day sheet (turn by turn), inventory and pars, raw materials, the calendar, and a menu board, on the real screens with the demo's own records. Back, Next, and Skip (or ←, →, and Esc); Take the tour on the yellow bar plays it again.
- Try it yourself (on the yellow bar, and at the end of the tour): seven jobs a brewery does every week, a minute or less each, with the real forms: log a check, dry hop with a lot, transfer to a brite, package, bring kegs up to the taproom, put a beer on a draft line, and plan a brew day. Show me makes the next button pulse and says what to do; a job is ticked off when it's really done (its record exists), and the app then points at what it worked out from it. The bar counts them ("2 of 7").
- It's yours alone. Change anything; nobody else sees it. Coming back on the same phone or computer brings you back to it, until it's deleted a week after it was made (the yellow bar says when).
- Switched off in the demo: invites, API keys, calendar links, and uploading fonts (nothing in a demo sends an email or lasts beyond it). Menu board links work, so a demo's board can be shown on a TV.
- A demo never becomes a real brewery. Start your own brewery signs you out of the demo (for good: with no email, there's no way back to it), so you can sign in with your email and set up your own.
The tank board
The first screen: every tank, grouped by location. A full tank shows its beer, batch number, how much is in it, its stage (with its color), and how many days it's been in that stage ("today" on its first day). An empty tank shows its status: Empty, Cleaning, or Maintenance, and Acid due (with why) when it needs an acid cycle before it's filled. Once your brewery logs its cleanings (caustic, sanitize, and so on, not only acid), an Empty tank with nothing logged since its last batch left says Not cleaned since #142 left.
- Tap a full tank to open the batch's page (see A batch's page).
- Tap an empty tank to start a batch in it (if you're allowed to), or to change its status.
- Today (the box at the top): today's jobs, then the alerts. The jobs are the same as the calendar's today, for every tank: what's planned for today, anything planned that was left undone (marked late), and the steps of each beer's schedule that are due today, that a gravity reading has reached (due now), or that are late. Late ones come first. Tap a job to open it (a planned one in its form, a schedule step on its batch's page); Done ticks a planned job off. Ticking off a planned Clean or Acid cycle on a tank opens that tank's cleaning log, so you can record what was done in the same go (Acid starts ticked for an acid cycle; Cancel skips it). The alerts follow (see Alerts); the box's border turns orange when there are any. Three or more of one kind (like beers under par after a taproom count) fold into one row: open it to see each, or tap I've got them all.
- Changes to review (a dashed box, when there are any): changes an API key suggested, waiting for someone to Approve or Reject; see Settings: API keys.
- Packaged batches (below the tanks) lists batches that are out of the tanks: packaged, or used in another batch, the latest 10 first (Show all for the rest, or type a beer or batch number in the box to find one). Tap one to open it.
- Inventory and Settings are at the top.
Messages show in a bar at the top (tap × to close one), and questions like "Delete FV2?" in a box that says what the button does: Enter answers yes, Esc answers no.
A red bar means no signal: you're seeing the last saved copy, and changes are kept on the phone (see No signal). A green bar, "A new version of the app is ready", means the app was updated: tap Reload when you're not in the middle of typing.
Starting and moving batches
Start a batch
Tap an empty tank. Enter the batch number (it must be unique), the beer, the brew date, and the size. It starts Fermenting unless you choose another stage. A new batch gets the location's usual number of turns (see brewhouse settings).
Change the stage or move it
On the batch's page, tap Stage / transfer…. The stages are Fermenting, Dry hopping, Conditioning, Carbonating, Ready, and Packaged. When you pick a new stage, its start date is set to today (you can change it).
- To transfer, pick the new tank. The form asks for the volume moved; leave it empty for "all of it". If you move less than was in the tank, what's left behind (yeast, trub) is recorded as a loss, and the form tells you before you save. The old tank goes to Cleaning.
- The app warns (but lets you continue) when the new tank is being cleaned, needs acid, or is too small, and refuses a tank that already holds another batch.
- Undo: after you start a batch, change its stage, transfer it, package it, or make a split or blend, a message at the top says what was saved, with Undo for 8 seconds. Undo takes it back before it's sent, so the records never see it. (Other changes wait those few seconds too, so everything still arrives in order.) After that, change it back by hand.
- Packaged here means the whole batch is out of the tank. To count kegs and cases, use Package… instead (see Packaging).
Every change is kept in the batch's history; a mistake is fixed by saving the right values, and the history shows both.
A batch's page
Tap a full tank. At the top: the stage, the tank, days in the stage, how much is in the tank, and the brew date. Then:
- The numbers: OG (from the tank sample on the brew-day sheet, or the average of the turns' knockout gravities), Now (the latest gravity; FG once the batch is past fermenting), ABV, and attenuation, each next to the beer's target. They're worked out from the readings, so fixing a reading fixes them.
- In stock / Made from / Part went into: finished goods from this batch still on hand, and the batches it was split from or blended into (each a link).
- Buttons: + Log cellar work, + Addition, Stage / transfer…, Brew-day sheet, Print brew sheet, Package…, Check level, Split / blend… (each shows only if you're allowed to use it).
- Fermentation chart: gravity and temperature by day since brewing, with the target FG as a dashed line. It appears once there are a couple of readings. Under it, when the batch has a couple of pH readings, a pH strip on the same days (starting from the brew-day sheet's knockout pH), so a check's pH sits right under its gravity: a healthy fermentation's pH drops in the first days and levels off.
- Cellar log: what was done and measured, newest first.
- Ingredients and additions: brew-day ingredients (tagged "brew day") and cellar additions like dry hops, with lot numbers.
- History: every stage change, transfer, and volume movement, oldest first.
Log cellar work
Tap + Log cellar work: the date, an action (Check, Tank sample, Dry hop, Rouse, Crash, Harvest, Drain, Spund, Carbonate, Ready, Other), gravity, pH, temperature, a cellar change ("FR to 62"), and notes. Dry hop, Crash, Carbonate, and Ready offer to move the batch to the matching stage (Dry hopping, Conditioning, Carbonating, Ready) in the same step. Tap an entry to correct it (it's marked "edited") or delete it.
Additions
Tap + Addition for dry hops, fruit, spices and the like: what, how much, when, and the lot number. The name and lot suggestions come from your raw materials.
The brew-day sheet
On a batch's page, tap Brew-day sheet. It follows your paper sheet's order (choose the fields in Settings → Brew sheet).
- Each value saves as soon as you leave its box, also with no signal.
- Turns are tabs (Turn 1, Turn 2...). Fields marked "whole batch" (yeast, knockout volume, notes) are shared by all turns. Change the number of turns with the Turns box.
- Targets show under each field: fixed ones (sparge temperature, pH ranges), your brewhouse's (flow, kettle full), the beer's OG, and the water worked out from the grist weight. A value far from its target is highlighted ("Typo?"); how far is set in Settings → Brewery.
- Water: once the grist weight is in, the sheet shows the mash, sparge, and total water for that turn: mash = grist × water-to-grist ÷ 4; total = kettle full × 31 + grist × grain absorption; sparge = total − mash (gallons; set the numbers in the location's brewhouse settings).
- Flow meter fields take the start and end readings and save the difference.
- Ingredients are at the top: + Ingredient (kind, amount, when, turn, lot number), or copy them in one tap from the last batch of this beer or from a recipe (lot numbers start empty; per-turn lines go on each turn; dry hops and other cellar additions aren't copied, so they're logged when they go in). A batch copied from a recipe remembers its version: the sheet says so, and Compare with what was brewed shows the differences.
- Correcting a value keeps the earlier one in the database's history.
Your permission level needs "Start batches and edit batch details" to fill it in; others can see it.
The printed brew sheet
On a batch's page, tap Print brew sheet (or Print on the brew-day sheet). It prints the same fields in the same order with a box for each turn, the targets (water as the formula, since the grist isn't weighed yet), the ingredients with a Lot column and blank rows, and whatever's already been entered. The usual set of fields fits on one Letter page.
The QR code opens that batch in the app (after signing in) to type in the numbers. With no signal, the link is printed instead.
Volumes and level checks
Every tank shows how much is in it. The app doesn't store that number: it works it out from every movement of beer, like a bank balance: the knockout into a fermenter, transfers, packaging, losses, and level checks. So a mistake is fixed with a new record, never by editing a number, and every barrel can be traced.
- Knockout volume comes from the brew-day sheet's "Total knockout volume", or the batch size if that's empty.
- Volume not recorded shows when no volume was ever entered; everything still works, and a level check sets it.
Check level (sight glass)
On a batch's page, tap Check level and type what the sight glass shows. If it's less than on record, say what the difference was: served (poured from this tank; the default for serving tanks), loss, or a correction. More than on record is noted as a correction. Later movements count from the latest check.
Packaging
On a batch's page, tap Package…. Enter how many of each package type you filled (set your types in Settings → Packages). As you type, the app shows the barrels, about how much is left in the tank, and what's left would fill ("about 20 × ½ bbl keg").
- Into: the stock place the packages go to (the tank location's storage place, unless you choose another).
- Is the tank empty now? Not yet keeps the rest for another run. Yes, it's spent records what's left on paper as a loss, marks the batch packaged, and sends the tank to Cleaning. If more than 10% would be left over, the app asks first.
- Each run keeps the volume per package it was packaged with, so changing a package type later never changes a past run.
Splits and blends
On a batch's page, tap Split / blend…. Both make a new batch, so a tank always holds one batch and each part has its own stage, additions, and packaging.
- Split: say how much of this batch goes into the new one, and the tank. The source keeps the rest.
- Blend: add other batches with + Blend in another batch…, each with how much.
- All used: ticked when you take all of a source (empty "how much"), unticked when you type a part (change it either way). A source that's all used becomes "Used in another batch": what's left is a loss, and its tank goes to Cleaning. A blend can go into one of its sources' tanks if that source is all used.
- The suggested number is "142-2" for a split and "142/143" for a blend. The new batch's OG is worked out from its sources, by volume.
Inventory: finished goods
Tap Inventory on the tank board. Kegs and cases on hand, worked out from records: packaging puts them in, removals and counts take them out.
- Places: choose a place (each location's Storage, a Taproom...) or All places. Add places in Settings → Equipment.
- Views (the dashed chips) are your own sheets, like a master sheet: which places they add up, a column per size or per place and size, totals, brewery-wide pars, and the pipeline (beer still in tanks). + View makes one; Edit view changes it.
- Order: each place lists beers A–Z, oldest batch first, in its own order (Arrange…), or (a taproom) by draft line.
- Tap a beer to see the batches behind it, oldest first ("From before the app" for opening counts).
Count, move, remove
- Count a place: a count sheet that starts at what the app expects; change what's different. Less than expected at a taproom is recorded as poured; elsewhere you choose (sold, not sure, dumped). Add a beer to count beer from before the app (opening stock).
- Move: from one place to another (up to the taproom, to the other location).
- Remove: sold, taproom, transferred (in bond), donated or samples, or dumped, with an account name.
- Taking stock out always uses the oldest batch first.
- Reasons ("Stocked the taproom", "Dock sale"): your own list, offered on every count, move, and removal, and required if your admin turned that on (Settings → Packages).
Pars, restocking, draft lines, and on deck
- Set pars on a place (barrels and/or cases); with All places, the brewery-wide par. Each place shows over / under, and what to bring up ("Bring up 3 × ½ bbl keg from Storage"; Bring up fills in the move). Bring up all (when two or more things are under par) brings everything up in one go: it says what first, then moves it, noted "Brought up to par".
- Draft lines (a taproom): numbered lines pouring a beer, something else (wine, a guest beer), empty, or out of order. Tap a line to change it. Count sheets for a taproom follow the lines.
- Kicked kegs: when a keg runs out, tap Kicked beside its line. The day and the keg's size are filled in (the size last kicked of that beer there, or the one there's most of); then say what's on the line now: the next keg of the same beer, something else (the line's own form opens to choose it), or nothing (the line is empty). Under the lines, Kicked kegs adds up a month's kicks by beer and size (‹ › for other months), with Download (CSV) for a spreadsheet; Each keg lists them, and a mistake can be removed. A kick is a log only: it doesn't change stock, which counts keep right, so count the kegs on tap too.
- On deck (a taproom): beers in storage that aren't on a line or on hand there yet.
Inventory: raw materials
Inventory → Raw materials. On hand by lot = received − used on batches + counts. Receiving, counting, ordering, and setting up items need their own permission, "Receive, count, and order raw materials" (separate from finished goods).
- Items: malt, hops, salts, yeast, chemicals, each with a unit, a pack (a 55 lb sack), a reorder level, and (optionally) how many days it takes to arrive when ordered. The item's name is what's typed as an ingredient, so usage is counted automatically.
- Receive: a delivery by lot, in packs or the item's unit, with the supplier and (optionally) the cost.
- Used up automatically by brew-day ingredients and cellar additions with the same name and lot (lb, kg, oz, and g convert; so do gal, L, and mL).
- Count: what's actually on the shelf for a lot; the difference is recorded with a reason.
- On order: a delivery you're expecting (item, how much, the day it's due, the supplier). It counts toward brews planned after that day on the calendar, so an ordered shortfall stops warning. When it comes, Received opens the delivery form already filled in (add the lot number); a delivery past its day is marked. Cancel takes it off.
- Below the reorder level is flagged. Tap an item for its lots and the batches that used each one.
Planning calendar
Calendar on the tank board opens the plan: tanks down the side (and a Whole brewery row for things not tied to a tank, like a delivery), days across the top. A phone shows three days, a computer the whole week; ‹ and › move, Today comes back. A plan is never a record: nothing on the calendar changes a batch, a tank, or stock. Doing the work records it, as usual.
- Plan something: tap a square (it fills in that tank and day) or + Plan. Choose what (Brew day, Dry hop, Diacetyl rest, Crash, Transfer, Carbonate, Package, Clean, Acid cycle, Yeast harvest, Maintenance, Delivery, or Other), optionally a name in your words, the beer, and notes.
- Someday: instead of a day, say roughly when ("Fall"). Someday plans are listed above the week; give one a day when it's real.
- Beer schedules: each beer's steps in days after brewing (dry hop on day 5, package on day 12...). The calendar lays them out, drawn lighter as expected, after a planned brew and for batches already in tanks. Tap an expected item to open its batch (or the planned brew it comes from).
- Gravity steps: a step can also go off at a gravity ("dry hop at 4 °P", for dry hop, crash, carbonate, transfer, and package). It sits on its day, labeled "at 4.0 °P"; when a logged reading reaches it, it's due now on today (and the Gravity step due alert), until the records show it's done. Under Beer schedules, choose whether one reading at or below it is enough, or two in a row. Always a reading someone logged, never a forecast.
- Suggest from past batches (in Beer schedules): fills in each step from how many days after brewing it really happened, on average, in this beer's past batches. Check them, then save.
- Clashes, before they happen: a planned brew is marked ⚠ with a red border when its tank won't be free: a batch is still in it (until its planned or expected transfer or packaging), another brew is planned there first, it's in maintenance, or (for a brew in the next week) it needs an acid cycle. Tap it to see why.
- Late, and pushing the rest back: when a batch is behind its beer's schedule (still not dry hopping on its dry hop day), that step shows on today, marked late. Tap it to push the batch's remaining steps back (it suggests the days it's behind). If that would clash with a brew planned in its tank, it says so and asks first. The app tells a step is done from the records: dry hopping (the stage, or a dry hop addition), crashed (Conditioning or later), carbonating, moved out of its first tank, or packaged; steps it can't tell (a diacetyl rest) simply pass. A planned item left undone shows on today as late, too, until it's moved or ticked done.
- Will there be enough? A planned brew (with its beer and tank) needs its beer's recipe, written for one turn times the brewhouse's usual turns (or for the whole batch: Settings → Beers), or, with no recipe, what the last batch of the beer used. Going through the planned brews in date order: on hand, plus deliveries on order due by then, minus each earlier brew. A brew that comes up short is marked short; tap it to see how much of what, in packs. Recipe ingredients count only when a raw material has the same name; the rest are listed, never guessed.
- Dismiss a shortfall someone has dealt with ("borrowing 2 sacks from next door"): it stops alerting, and comes back if the shortfall gets bigger.
- Shopping list: everything the brews in the look-ahead (two weeks to start; longer for items that take longer to arrive) will be short of, how much, in packs, and when to order by. On order… on a line records the order; Copy copies the list. The Short for a planned brew alert emails the same (see Settings: Alerts).
- Move or tick done: tap an item to change its day or tank, or tick Done (for a Clean or Acid cycle on a tank, this opens the tank's cleaning log too). A planned brew counts as done once a batch of that beer is started in that tank within a few days of it.
- Who: an item can name a person from the team ("Sam brews Tuesday"); it shows on the item. My week shows only what you're on (tap again for everything).
- From your planning sheet: bring the plan in with Settings → Import (Calendar plan).
- Print: the week shown, Monday to Sunday, on one landscape page for the brewhouse wall: what's planned (and who), what's expected, and clashes (⚠).
- In Google or Apple Calendar: a private, read-only link in Settings → My account.
- Who can do what: everyone sees the calendar. Plan the schedule (head brewers and admins, to start) adds, changes, and deletes, and sets beer schedules; Move items (brewers too) moves items, ticks them done, and says who's on them. See Who can do what.
Alerts
The orange box on the tank board lists what needs attention: no gravity logged lately, too long in a stage, acid due, a beer under par, low on a raw material. The server checks every 15 minutes (and the app checks whenever it loads), so it's current even when nobody has the app open.
- I've got it takes an alert off the board.
- An alert clears by itself when its cause goes away (a gravity is logged, the tank gets its acid cycle).
- The people chosen for each kind are emailed about each new alert once: one email per person listing everything new. Set it up in Settings → Alerts.
No signal (offline)
Opening the app shows the copy kept on your phone straight away, and the current data replaces it a moment later; if that takes more than a moment, a line under the header says "Updating… showing data from 10:42 AM". The app also keeps working with no signal. A red bar shows how old the data on screen is. Floor work is kept on the phone and sent, in order, when the signal returns: starting, moving, and packaging batches; tank status; cleanings; cellar log entries and additions; brew-day sheet values; level checks; splits and blends; counts, moves, and removals; raw material deliveries and counts.
Setup changes (beers, tanks, locations, settings) need a signal.
If a change can't be saved when it's sent (say, a coworker filled that tank first), it's listed in a "These changes couldn't be saved" box at the top, so nothing is lost silently. Changes arrive in the order they were made.
Who can do what
Each person has a level. An admin can change what a level includes, or adjust one person (Settings → Team and permissions). The usual levels:
| Permission | Viewer | Taproom | Cellar | Brewer | Head brewer | Admin |
|---|---|---|---|---|---|---|
| Log readings and cellar work | ✓ | ✓ | ✓ | ✓ | ||
| Set a tank's status (cleaning, maintenance) | ✓ | ✓ | ✓ | ✓ | ||
| Log cleanings | ✓ | ✓ | ✓ | ✓ | ||
| Change stages and transfer beer | ✓ | ✓ | ✓ | ✓ | ||
| Package beer | ✓ | ✓ | ✓ | ✓ | ||
| Count and move finished goods | ✓ | ✓ | ✓ | ✓ | ✓ | |
| Receive, count, and order raw materials | ✓ | ✓ | ✓ | ✓ | ||
| Start batches and edit batch details | ✓ | ✓ | ✓ | |||
| Beers and recipes | ✓ | ✓ | ||||
| Beer menu details (description, ABV, IBU, prices, and the menu's lists) | ✓ | ✓ | ✓ | |||
| Tanks and locations | ✓ | ✓ | ||||
| Acid rules | ✓ | ✓ | ||||
| Units, time zone, targets, and brew sheet fields | ✓ | ✓ | ||||
| Rename the brewery | ✓ | |||||
| Download and load backups | ✓ | |||||
| Delete batches, beers, tanks, and locations | ✓ | |||||
| Plan the schedule (calendar and beer schedules) | ✓ | ✓ | ||||
| Move items on the calendar and tick them done | ✓ | ✓ | ✓ |
Everyone in the brewery can see everything. Anything you can't do is hidden or greyed out, and the database checks it too.
The Taproom level is for a taproom manager: finished goods (counts, moves, pars, draft lines) and the beer menu, but nothing on the brewhouse side (batches, tanks, recipes, brew sheets, or raw materials).
Settings: Brewery
- Brewery name (admins).
- Units and time zone: temperature (°F or °C), gravity (Plato, SG, or Brix), volume (barrels, hectoliters, or gallons). Changing a unit only changes how numbers are shown and typed; nothing recorded changes.
- Flag brew-day values far from target: how far a value can be from its target before the brew-day sheet highlights it, for gravity, temperature, pH, and volumes (a percentage). Leave a box empty to turn that flag off.
- Delete this brewery (made by mistake, or only tried with the sample data): shown to the admin only while they're the only person in the brewery. Type the brewery's name to confirm; it deletes everything in it and can't be undone, so download a backup first if you might want it. A brewery with a team can't be deleted here.
Settings: Equipment
- Tanks: name, type (Fermenter, Brite tank, Serving tank, Lagering tank), capacity, location, status, and "acid every X turns" (tap a tank to change it or log a cleaning).
- Cleaning (in a tank's form): Log cleaning… records a day's steps. Tick what was done (Caustic, Rinse, Acid, Passivate, Sanitize, PAA, Other) and add a note if you like (chemical, strength, temperature, time). Nothing starts ticked, except Acid when the tank is due for it. The log shows one line per day, with who logged it; Remove takes back a day logged by mistake. An empty tank also says whether it's been cleaned since its last batch left.
- History (in a tank's form) lists every batch that's been in the tank, newest first, with when it came in and left ("now" if it's still there) and its stages; tap one to open its page, and on a batch's page tap the tank's name to open the tank's form.
- Locations, each with its brewhouse settings for the brew-day sheet: turn size, usual turns per batch, kettle-full volume, flow target, water-to-grist ratio (qt/lb), and grain absorption (gal/lb).
- Stock places: where finished kegs and cases are kept. Each location starts with a Storage place; add a taproom or more. Rename or hide a place (it's never deleted, since past counts point to it).
Settings: Brew sheet
- Tick the fields you measure from a catalog of about 100, in paper order. Usual set and Everything, and All / None for each section. A batch always shows every field it has a value for, ticked or not.
- Edit a field to rename it (your crew's term) and set its target: the usual one, your own range in your units, or none. Back to usual undoes it.
- Add your own field: a name, the section, and the kind of value (a number with your unit, temperature, gravity, volume, pH, time, or text).
Settings: Beers
- Beers: name, style, target OG and FG (the target ABV is worked out).
- On the menu: what the taproom's menu says about a beer, using the pour sizes, sections, tags, and fields set up in Settings → Menu:
- a short line for the TV (up to 80 characters) and a longer description (for print and the public page);
- ABV, IBU, and color (SRM, shown as a swatch). Fill in ABV, IBU, and color fills the boxes from the latest finished batch's gravities (or the beer's targets) and the recipe's IBU and color, and says where each came from; check them, then Save;
- its section, its tags, and the brewery's own fields;
- prices: a price for each pour size it's poured in (leave the others empty). With two or more taprooms, each has its own column: a price there is used at that taproom instead; leave it empty for the usual price;
- Leave off the public menu: still on the TV and print, but not on the menu page for the public.
- A beer's recent batches (in its form): each finished batch's OG, FG, attenuation (apparent, and real), brewhouse efficiency, and yeast and generation, with the beer's usual attenuation; one well below it is marked. Attenuation by yeast generation (in Settings → Beers): each yeast's batches by generation, so a repitched culture that's tiring shows up (a generation 3 or more points below the yeast's usual is marked).
- Recipes have their own page: Open recipes (here, or Its recipes in a beer's form). See Recipes.
Recipes
Recipes have a page of their own: Open recipes in Settings → Beers, or Its recipes in a beer's form. The list is on the left (on a phone, first); the recipe you choose, or the one you're writing, is beside it (on a phone, instead of the list, with ← All recipes to go back).
- Recipes are written for one turn (the calendar multiplies by the brewhouse's usual turns) or the whole batch.
- Recipes: + New recipe writes one here:
- the beer, a name, which brewhouse it's for (or any) and the batch size, and the targets (OG, FG, IBU, color; the ABV is worked out);
- ingredients grouped as on a brew sheet: malt and sugars, hops, salts and process aids, yeast, other. Each line: name (suggested from your raw materials, so "will there be enough?" matches it), amount, unit, when, and per turn (on each turn) or for the whole batch. Hops and salts start per turn, the rest per batch. Supplier, note folds out;
- beside each line, worked out: % of the grain bill, and lb/bbl (g/bbl for salts);
- Fill in from a batch takes what a batch actually used.
- Estimates (worked out as you type, and shown on the recipe): OG, FG, ABV, IBU, and color, next to the targets, marked when far off. They say what they used:
- efficiency: set on the recipe, else set on its brewhouse (Settings → Equipment → the location), else measured from that brewhouse's batches (malt used, OG, and knockout volume; the last 10), else a typical 72% until there's more to go on;
- attenuation: set on the recipe, else this beer's own last batches, else a typical 75%;
- each malt's extract % and color (°L), and each hop's alpha acid %: on the ingredient's line (they fold out with the supplier), else on its raw material (Inventory → Raw materials → Items, from the supplier's sheet). BeerXML brings them in. One that's missing is named, never guessed;
- IBU by the Tinseth formula; whirlpool and flameout hops count at half (over 20 minutes unless a time is typed); dry hops add none. Color by the Morey formula.
- Every saved change is a version. Changing a recipe asks (optionally) what changed and why. Tap a recipe to see it, with its Versions: who saved each, when, and why. Compare with now shows an older version against the current one, line by line (added, removed, "10 lb → 12 lb"). Go back to this opens that version to save again as the newest; nothing is ever rewritten. If someone else saved a change while you had the recipe open, your save is refused, so nobody's work is lost: open it again to see theirs. Duplicate copies a recipe. Scale… makes it for another brewhouse or any size: every line by volume (per-turn lines split again over the new turns), and the malt also for the efficiency there, so the OG and IBU hold; it opens as a new recipe to check and save, and the original stays as it is. Each line shows what's on hand (marked when there's less than the recipe needs), and, once deliveries have prices, the ingredient cost a batch and a barrel, at each one's latest delivery price. Print puts it on paper (per-turn amounts and totals, % of grist, per barrel, the targets, and its version). BeerXML saves it as a file for other recipe software; Export all (BeerXML) saves every recipe in one file. Amounts go out for the whole batch, since BeerXML has no turns.
- Import BeerXML… from BeerSmith, Brewfather, Brewer's Friend, or other recipe software. A preview shows each recipe (size, OG, FG, IBU, ingredients); match it to a beer or a new one (a new beer takes the recipe's style and targets), optionally for one location. Ingredients come in your units with their timing.
Settings: Packages
- Package types: tick the ones you fill from the catalog (US, metric, one-way, and Cornelius kegs; casks; cases of cans and bottles; single containers), rename them, or add your own (a volume in gallons, liters, ounces, mL, imperial gallons, or barrels, times how many per package for cases). Unticking one never changes past packaging.
- Reasons for stock changes: your list, offered on every count, move, and removal; tick Ask for a reason to require one.
Settings: Cleaning
Acid cleaning: styles that always need an acid cycle afterward (a tank is flagged "Acid due" when a batch of one of them leaves it). Each tank can also need acid every few turns (set on the tank). Log an acid cycle from the tank's settings (tap an empty tank on the board, then Log cleaning…). Only acid steps count here: caustic, rinse, and sanitize don't reset the turns.
Recent cleanings: every tank's cleanings in one list, newest first, one line per tank and day (the steps, notes, and who). Tap one to open its tank. Download as a spreadsheet saves the whole log (date, tank, step, note, who), for an inspection or your own records.
Settings: Team and permissions
- Invite someone by email with a level; they get an email and join when they sign in with that address. Email again resends it; Cancel withdraws it.
- Join code: each invite also has a code, like grist-knockout-4821, shown here and in the invite email. If they sign in with a different email, they choose Yes, I'm joining my team and type it (or you read it out). It works once, for 14 days after the invite was made or last emailed; Email again renews it. Whoever uses it joins at the invited level and shows on the team with the email they signed in with, so check the list. Five wrong codes in an hour make a person wait an hour.
- Tap a person to change their level, adjust single permissions (the app asks: just this person, or everyone at their level), or remove them. A brewery always keeps at least one admin.
- What each level can do: admins can change what a level includes, or reset to the usual; see Who can do what. Its last row is each level's usual morning summary (Admin and Head brewer: everything; Brewer and Cellar: the cellar's; Taproom: the taproom's; Viewer: off), which each person can change for themselves in Settings → My account.
Settings: Alerts
- Each kind of alert can be on or off, with its threshold: No gravity logged (after how many days, in which stages), Too long in a stage (a limit per stage; empty for none), Acid due, Under par, Low on a raw material (below the item's reorder level), Gravity step due (a logged gravity reached a step in the beer's schedule; see Planning calendar), and Short for a planned brew (below).
- Fermentation checks, from a batch's own readings (all on to start; each threshold is shown in your units and can be changed):
- Fermentation stalled: a fermenting batch that dropped less than 0.5 °P in 3 days while still more than 1.5 °P above its beer's target FG.
- Looks finished: a nudge when a fermenting batch holds steady (two readings within 0.2 °P, at least 2 days apart) at or near its target FG: time to crash or dry hop?
- Finished high or low: holding steady more than 1 °P from the target FG. High (once it's past fermenting) may be stuck; low can mean a wild yeast or diastaticus, worth checking before packaging. (Still fermenting, steady and high is a stall, and shows as stalled.)
- pH: still above 4.8 after 3 days (a slow start), or up more than 0.2 from its lowest (a common early sign of infection). Beers whose style or name has sour, gose, berliner, lambic, or wild are left out (change the list).
- Email to: tick the people who get each kind. Nobody is ticked to start, so alerts only show on the board until you choose.
- Short for a planned brew: on by default; look ahead how many days for it (14 to start; people who can plan the schedule change it). Items that take longer to arrive are warned about that much earlier.
- Quiet hours: no emails between these hours (your brewery's time zone); they're sent when the quiet hours end.
Settings: Import
- Choose what's in it: tanks, beers, batches in tanks, cellar log entries, or a calendar plan (a row per item: the day, or rough words like "Fall" for a someday plan; what, like "Brew" or your own words; the tank, beer, who, and notes). (Import tanks and beers first, then batches, then cellar logs.)
- Paste cells copied from Excel or Google Sheets (with the header row), choose a CSV file, or paste a Google Sheets link (shared as "anyone with the link can view") and tap Read sheet.
- Check the columns (matched by name; change any) and the preview: each row is imported, already here (skipped), or a problem (and why). Numbers are read in your units; dates as 2026-10-07, 10/7/2026, or 10/7/26.
- Tap Import. Importing the same sheet again is safe: what's already here is skipped. New locations (for tanks) and beers (for batches) are made on the way.
Settings: Backup and export
- Backup: Download saves everything in the brewery as one file. Load… brings a backup into an empty brewery, all at once: if anything in the file can't be loaded, nothing is, and the app says why. It brings back the records and the settings (units, the brew sheet, the menu, alerts and their thresholds, stock reasons, what each level may do); not the team, invites, API keys, or calendar links, which belong to people. (The server also backs up every night.)
- Export as spreadsheets: each list as a CSV file that opens in Excel or Google Sheets, with names instead of codes and your units in the column names, or Everything as one zip file.
Settings: API keys
A key lets an outside tool or an AI assistant read and write here as you, with some or all of your permissions (never more). Make one with a name, untick what it shouldn't do, choose how it changes things, and copy it: it's shown once. Revoke it any time; it stops working at once. Admins see every key in the brewery and when each was last used. Everything a key writes is marked on the record as "via" the key's name (in a batch's cellar log, additions, and history, and in Inventory's recent changes), and listed under What keys did lately. A key can also read and change settings (units, locations, tanks, beers, package types, alerts, the menu's lists, the brew sheet's fields), under the same permissions; never the team, permissions, keys, or backups. What the API can do: the API guide.
- Suggests changes for a person to approve (the usual choice, and the one for AI assistants): nothing the key sends is saved by itself. It's checked (something that couldn't be saved is refused right away), then waits on the tank board under changes to review. Approve saves it as you, with your permissions, marked "via" the key and dated the day it was suggested; Reject sets it aside. Anyone who can change something here (not a viewer) can decide.
- Makes changes directly: for a tool you trust, like a sensor or a script. Its changes are saved at once (still marked "via" the key).
- The key list shows which each key does; What keys did lately shows each suggestion's fate (waiting, approved by, rejected by).
- Undo (in What keys did lately) takes back a key's change, as you and under your permissions: what it added is removed (a cellar log entry, an addition, an acid cycle, a calendar item, a delivery, an order, a recipe, a kicked keg, a new location, tank, beer, or package type, if nothing uses it yet), and what it changed is put back (a tank, a beer, a draft line, a setting, a location, a package type, an alert), unless someone changed it again since; then undo says so and changes nothing. Volumes and stock (batches, transfers, packaging, level checks, moves, counts), brew-day sheet values, and raw material counts are corrected the usual way, with a level check, a count, a move, or a new value, so their history is kept.
Settings: My account
Morning summary: each morning (6:00 in the brewery's time zone unless you pick another hour) you get today's jobs and alerts at this brewery, like "5 jobs, 2 alerts. First: Package: Helles". What's in it is your level's usual, or one you pick: Everything (today's jobs and all alerts), Cellar (today's jobs and the cellar's alerts: gravity, stalled, pH, acid, too long in a stage), Taproom (your own jobs and the taproom's alerts: under par, low on stock), Only my jobs, or Off. Turn on notifications on this device sends it to this phone or computer; on an iPhone, add the app to the Home Screen first and turn it on from there. If none of your devices takes it, it comes by email instead. A day with nothing on sends nothing. Signing out turns this device's notifications off. (The demo doesn't send any.)
The calendar in your phone: Make a calendar link (tick Only what I'm on for just yours) and subscribe to it: Add to Apple Calendar on an iPhone or Mac, or in Google Calendar on a computer, Other calendars → + → From URL. It shows the plan and the expected steps, read-only (change plans in Badger Brew Ops). The link is shown once; anyone with it can see the plan, so keep it to yourself. Turn off stops it at once. Google refreshes subscribed calendars only every several hours.
The email you're signed in with, switching breweries (if you're in more than one; the app remembers your choice), and Sign out. Signing out clears this phone's copy of the data; if there are changes not yet sent, the app warns you first.
Problem reports: when something goes wrong in the app (not a mistake you can fix, like a name that's already used), it sends a short report so it gets fixed: the error message, the screen you were on, the app's version, your browser, and who and which brewery. It never sends your records. With no signal, the report waits on the phone and goes later.