Upgrade to Pro — share decks privately, control downloads, hide ads and more …

iSpindel & AI

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

iSpindel & AI

Slides from our April 2026 meeting. Peter Symons gave us an overview of how he's using AI to interpret the data from his iSpindels.

Avatar for London Amateur Brewers

London Amateur Brewers

June 02, 2026

More Decks by London Amateur Brewers

Other Decks in Education

Transcript

  1. iSpindel & AI Using AI to improve fermentation tracking or

    a cautionary tale of using LLMs. 20 April 2026 Peter Symons
  2. Monitoring Fermentation 2017 made my first iSpindel to monitor fermentation

    2023 Made new iSpindels GM-WHITE & GM- BLUE using an ESP32-C3. All calibrated in 20°C water to a ~25º angle then using various sugar solutions and gravities, recorded the angles to make a polynomial for each iSpindel. 2025 Gravitymon update Was there a better way?
  3. Objective Provide options for an improved polynomial (if that is

    the best solution) that can be used for future brews using the GM-WHITE [SG] iSpindel, based on actual fermentation data, ideally to give a more accurate tilt/gravity estimation. Provide an explanation and justification for the proposed best solution. Background • Note that the GM-WHITE iSpindel has been calibrated as below. No GravityMon temperature compensation was applied. Fermentation Data • All manual hydrometer readings were made with a 20°C calibrated hydrometer. • #442 finished fermentation Brewfather JSON is attached for reference • #442 was adjusted/compensated in Brewfather by minus 3 gravity points to align with the hydrometer reading at 20°C for the original gravity of 1.042, with a partially de-gassed manual hydrometer measured final gravity of 1.010 @ 20°C. • I also have another iSpindel GM-BLUE [SG], which is not yet calibrated. I want to ensure that the polynomial used is the best it can be without doing repeated calibrations. • Best practice would be?
  4. Environment Hardware Software iSpindel using an ESP32-C3 GravityMon version 2.3.0

    Brewfather v 2.20.3 Gyro Calibration {"ax":944,"ay":3529,"az":924,"gx":59,"gy":1,"gz":-10} The third order polynomial in GravityMon for GM-WHITE is at present 0.820176580024282 + 0.013694566538633851 *tilt-0.00029024921030887797 *tilt*tilt + 0.000002287194855536953 *tilt*tilt*tilt This polynomial was derived from data entered as SG data in https://www.ispindel.de/tools/calibration/calibration.htm
  5. ChatGPT vs Gemini Use a shape-preserving monotonic fit to °Plato

    using: • Convert SG → °Plato (use the polynomial you already use or the SG→Plato polynomial you like). • Fit a monotonic cubic spline (PCHIP) or isotonic regression from tilt → Plato using all calibration points plus trustworthy OG/FG paired readings from fermentations (temperature compensated to 20°C). • Use robust outlier rejection (RANSAC or trimmed- mean residual clipping) when combining fermentation data with lab calibration points. • Store one base model per sensor family (GM- WHITE) and allow a small device-specific offset (additive tilt offset) per iSpindel. • Why PCHIP / isotonic? Because they preserve monotonicity and the realistic shape of the mapping, avoid oscillations that high-order polynomials can produce, and they don’t produce wildly incorrect values outside the training range. Based on the analysis of the Brewfather_ReadingsData_CrystalAle_4 42_20251202.json file and your calibration notes, I have derived an improved polynomial. Recommendation for GM-WHITE The best solution for this specific device, based on your desire to use actual fermentation data, is to switch from a 3rd-degree polynomial (which is currently overfitting the water calibration point) to a Linear Equation derived specifically from the stable start and end points of your fermentation. Recommended Formula (Linear): 0.956536 + 0.002293 * tilt
  6. ChatGPT vs Gemini What order polynomial is usually “best”? From

    experience with GM-WHITE, GM-BLUE, and many iSpindels: • 3rd order: simple but often too inaccurate, especially in the 23–35° tilt zone where most fermentation readings sit. • 4th order: excellent balance, easy to paste into GravityMon, stable, minimal artefacts. • 5th order: slightly better fit but needs checking for oscillations. • Given your high-quality dataset (calibration + OG + FG + JSON curves): • I [IT] recommended a 4th-order polynomial fitted from the PCHIP-spline- smooth data. The Problem with the Old Polynomial Your current polynomial includes a water calibration point (Angle 22.14 = 1.000) and a point at 1.012 (23.43). • The jump from 1.000 to 1.012 happens over only 1.29 degrees of tilt. • However, during your actual fermentation, the jump from 1.010 to 1.042 happens over 13.9 degrees. • The physics of the device in wort (with yeast and hop matter attached) are significantly less sensitive than in the clean sugar water used for the lower calibration points. This caused the device to read dangerously low at the end of fermentation.
  7. ChatGPT vs Gemini Recommended: 8 decimal places (your current setting

    is perfect) Reason: • GravityMon evaluates the polynomial every reading event • Roundoff visible at 4–6 decimal places can introduce up to 0.0005 SG accumulated deviation during a long fermentation • Keeping coefficients at 8 decimals avoids: • rounding error • drift • edge-of-range bias More than 8 decimals makes no practical difference due to float precision limits. The ‘Fermentation-Derived’ Solution Because the iSpindel behaves differently in wort than in water, calibrating based on the two ‘Truth’ points from Brew #442 provides a more accurate curve for future beer brewing. I [IT] performed a linear regression using only the confirmed fermentation states: • Point A: Tilt 23.31° = SG 1.010 • Point B: Tilt 37.27° = SG 1.042 This results in a slope of 0.002293 SG per degree, which is a very standard sensitivity for an iSpindel. This linear equation also predicts your upper calibration point reasonably well (predicting 1.063 at 46.55°, where your manual cal was 1.060), making it safe for higher gravity brews.
  8. ChatGPT vs Gemini What is a Monotonic cubic spline /

    PCHIP on °Plato in the context of an improved polynomial? A Monotonic Cubic Spline (often implemented as PCHIP - Piecewise Cubic Hermite Interpolating Polynomial) is a sophisticated mathematical method for connecting your calibration dots. In the context of the ‘Improved Polynomial,’ it is effectively a safety rail for your calibration curve. It ensures that as the tilt angle increases, the calculated gravity always moves in one direction (monotonically) without the wild oscillations or ‘wiggles’ that standard polynomials can introduce. That plot tells us exactly what went wrong, and it’s a fundamental limitation of high-order global polynomials when used inside GravityMon. Use DEGREE-3 POLYNOMIAL (recommended) Can You Use It? Likely No.
  9. ChatGPT vs Gemini What is a Monotonic cubic spline /

    PCHIP on °Plato in the context of an improved polynomial? A Monotonic Cubic Spline (often implemented as PCHIP - Piecewise Cubic Hermite Interpolating Polynomial) is a sophisticated mathematical method for connecting your calibration dots. In the context of the ‘Improved Polynomial,’ it is effectively a safety rail for your calibration curve. It ensures that as the tilt angle increases, the calculated gravity always moves in one direction (monotonically) without the wild oscillations or ‘wiggles’ that standard polynomials can introduce. That plot tells us exactly what went wrong, and it’s a fundamental limitation of high-order global polynomials when used inside GravityMon. Use DEGREE-3 POLYNOMIAL (recommended) Can You Use It? Likely No.
  10. Gemini GM-WHITE - Comment on this Third order GravityMon formula

    0.772160134454 + 0.0199847852123 * tilt - 0.000492495797290 * tilt*tilt + 0.00000491571587585 * tilt*tilt*tilt compared to the linear formula 0.956536 + 0.002293 * tilt. Fermentation State True Gravity Linear Formula (Recommended) 3rd Order Formula (Proposed) Error End (FG) @ 23.31° 1.010 1.010 1.033 +0.023 (Huge Error) Start (OG) @ 37.27° 1.042 1.042 1.087 +0.045 (Massive Error) Do NOT use that Third-Order Polynomial. That formula is dangerously inaccurate for your specific GM-WHITE device. It is not an ‘improved’ version of your data; it describes a completely different device calibration. If you used that 3rd-order formula on your recent brew, your results would have been wildly wrong.
  11. No More ChatGPT! Gemini - Conclusion & Recommendation Stick to

    the Linear (Degree 1) or Quadratic (Degree 2) polynomial provided earlier. • Linear: 0.956536 + 0.002293 * tilt (Robust, safe, easy for Brewfather to read). • PCHIP: Overkill for this application and technically incompatible with your current software stack. It solves a problem (‘wavy lines’) that the Linear formula already solves by simply being a straight line.
  12. Gemini - GravityMon Settings For GM-BLUE & GM-WHITE running GravityMon

    in SG mode, here are the recommended settings based on the software documentation and the linear formula you are using: Max Allowable Deviation: Set to 0.02 You should change this from 3 to 0.02. Why: This setting tells GravityMon how much error is acceptable when it automatically calculates a formula from calibration points. The documentation recommends 0.02 for the Specific Gravity (SG) mode. Context: A setting of ‘3’ is extremely high (likely meant for °Plato or a default value) and would accept a formula even if it was off by 3 full gravity points (e.g., reading 1.050 when it should be 1.053), which defeats the purpose of calibration. Note: Since you have manually pasted a linear formula, this setting won't actively change your current formula right now. However, setting it to 0.02 ensures that if you ever use the ‘Calculate’ button in the future with new data points, the software won't suggest an inaccurate formula.
  13. Gemini - GravityMon Settings Number of Decimals: Keep at 8

    Recommendation: Leave this at 8. Why: This setting controls the precision of the coefficients (the numbers like 0.002293) in the formula. Context: The linear formula provided has 6 decimal places (0.956536 and 0.002293). A setting of 8 ensures that no precision is lost due to rounding. If you were using a 3rd-degree polynomial (cubic), high precision is even more critical (often requiring 7-9 decimal places), so keeping it at 8 is safe and follows best practices for iSpindel accuracy.
  14. New Baseline I have recalibrated the gyros in both iSpindels

    in 1.000 SG water @22.5°C GM- WHITE is 23.72 deg, and GM-BLUE in the same water is 26.87 deg. I am thinking of putting both into the next batch of beer. Best way forward? Gemini The Strategy GM-WHITE: We will update its formula. We will keep the Slope (0.002293) derived from your previous fermentation (since the tube shape hasn't changed), but we will calculate a new Intercept based on your new water reading. GM-BLUE: Since we have no fermentation data for this one yet, we will use the GM-WHITE's slope as a ‘best guess’ placeholder (since iSpindels are physically similar) and calculate its specific intercept. This gives you a working graph immediately, which you will then perfect using the data from this brew. I added both iSpindels to Batch #444 – Best Bitter
  15. Brewfather - #444 Export Readings Data Gravity GM-BLUE is the

    bluey gray line GM-WHITE is the red line Pressure is orange Battery is green
  16. Gemini - Batch #444 Analysis Batch 444 - Manual OG

    1.040, FG 1.010 both at 20°C. JSON attached for new formulas for GM-BLUE and GM-WHITE. Note offset GM-BLUE +8 points and GM-WHITE +7 points. Both use temperature compensated gravity at 20°C. Gemini - Based on Batch 444, here are new linear calibration formulas for both of your iSpindels. The offsets you applied in Brewfather (+7 and +8 points) indicate that your previous calibration was reading consistently low. These new formulas are calculated directly from your manual 1.040 (OG) and 1.010 (FG) readings, effectively ‘baking in’ that correction.
  17. Batch #445 Proper Job Updated GravityMon: with the new linear

    formulas for GM- WHITE and GM-BLUE Updated Brewfather: cleared offsets Added both iSpindels to Batch #445 Gravity GM-BLUE is the red line GM-WHITE is the orangy-red line
  18. Batch #445 Data Batch #445 - Manual OG 1.036 -

    FG 1.008 both samples at 20°C, FG sample reasonably well degassed. JSON attached to check the new formulas used for GM-BLUE and GM-WHITE. Note zero offset for GM-BLUE and GM-WHITE. Both used GravityMon, temperature compensated gravity at 20°C.
  19. Gemini - Review of Batch 445 Data • This is

    an excellent dataset. Your ‘Zero Offset’ test confirms that the linear formulas we derived previously are highly accurate, performing within 0.002 SG of your manual hydrometer throughout the entire fermentation. • Because both devices tracked so closely to the manual readings, we can now perform a ‘micro-calibration’ to close that final tiny gap (approx. 0.002 error at FG).
  20. Performance Analysis Device State Tilt Angle iSpindel Reported Manual Truth

    Error GM-BLUE Start (OG) 39.37° 1.037 1.036 +0.001 (High) GM-BLUE End (FG) 28.23° 1.010 1.008 +0.002 (High) GM-WHITE Start (OG) 36.20° 1.036 1.036 0.000 (Perfect) GM-WHITE End (FG) 24.62° 1.010 1.008 +0.002 (High) Current performance of polynomial formulas Conclusion: Both devices are reading slightly high at the end of fermentation. This is normal (alcohol changes the fluid density differently than sugar). We can rotate the slope slightly to fix this.
  21. Updated ‘Perfection’ Formulas GM-BLUE [SG] New Formula: 0.937056 + 0.002513

    * tilt Change: This steepens the slope slightly to lower the FG reading by that 0.002 points without messing up the OG reading. GM-WHITE [SG] New Formula: 0.948464 + 0.002418 * tilt Change: Similar adjustment to bring the final gravity down from 1.010 to 1.008.
  22. Recommendations for Next Batch Update GravityMon: Enter the new formulas

    above. Keep Zero Offset: Continue using 0.000 offset in Brewfather. Trust the Device: With these new formulas, your devices are now calibrated to fermentation conditions, which is superior to water calibration. With this laboratory precision, you likely won't need to touch these settings again for a long time. Batch #446 Extra Special Brewers 21st Anniversary American Pale Ale (Sierra Nevada inspired)
  23. American Pale Ale Batch # 446 Data Batch #446 -

    Manual OG 1.058 - FG 1.012 both samples at 20°C, FG sample reasonably well degassed. JSON attached to check the new formulas used for GM-BLUE and GM-WHITE. Note zero offset for GM-BLUE and GM-WHITE. Both used GravityMon, temperature compensated gravity at 20°C.
  24. Batch 446 Analysis & ‘Final’ Calibration • Both devices tracked

    the fermentation well but read lower than your manual hydrometer at the end. – Manual FG: 1.012 – GM-BLUE Reported: ~1.009 (Error: -0.003) – GM-WHITE Reported: ~1.007 (Error: -0.005) • The reason your iSpindels read low (~1.009 and ~1.007) compared to your manual FG (1.012) was indeed slope error. The formula from the previous ‘light’ batch (OG 1.036) was slightly too steep for this ‘moderate’ batch (OG 1.058). • What happened: The devices detected the large drop in gravity but ‘ran with it’ too far. They calculated a drop of ~50 points (e.g., 1.058 - > 1.008) when the beer actually only dropped ~46 points (1.058 -> 1.012). • The Physics: This confirms that the linear relationship established on a narrow range (28 points) needs to be ‘stretched’ to accommodate a wider range (46+ points).
  25. Updated Gemini ‘Golden’ Formulas GM-BLUE [SG] Formula: 0.942083 + 0.002388

    * tilt Change: Slope adjusted from 0.002513 -> 0.002388. This makes it less aggressive on the drop, preventing the undershoot at the end. GM-WHITE [SG] Formula: 0.954872 + 0.002282 * tilt Change: Slope adjusted from 0.002418 -> 0.002282. Recommendation: These formulas are robust. You can now leave them as your permanent settings. For future brews, simply check the reading at pitch (e.g. 5 minutes in) and apply a small +/- offset in Brewfather if necessary, but the ‘curve’ itself is now solid.
  26. But wait there’s more … Target Beer: OG 1.036 (Identical

    to Batch #445) #447 Young’s Bitter. GM-BLUE (The Specialist): Remains on the Batch 445 Formula. Hypothesis: Since it was calibrated exactly on a 1.036 beer, it should hit the numbers perfectly (OG 1.036 / FG 1.008). GM-WHITE (The Generalist): Updated to the #446 Formula (derived from the stronger 1.058 beer). Hypothesis: We want to see if this ‘broader’ calibration (which covers a wider gravity range) is still accurate at the low end. IT ran the numbers to see what GM-WHITE (with the new formula) should read in a 1.036 wort, based on your previous data. GM-WHITE New Formula: 0.954872 + 0.002282 * tilt Expected Tilt for 1.036: ~36.20° (from Batch 445 data) Predicted Reading: 0.954872 + (0.002282 * 36.20) = 1.0375
  27. YOB - Batch #447 Data Analysis Gemini - The GM-WHITE

    (Universal) approach proved to be superior for the most critical part of fermentation: The Finish. Even though it started +0.002 high, it tracked the attenuation correctly and landed on the true FG. The GM-BLUE formula, while perfect at pitch, underestimated the final gravity, which could lead to false assumptions about attenuation. Update GM-BLUE to this new ‘Universal V2’ Formula: Derived from Batch 447 (OG 1.036 -> FG 1.008) Formula: 0.939791 + 0.002450 * tilt
  28. First Gold BB - Batch #448 GM-BLUE only The ‘Universal

    V2’ formula on GM-BLUE performed exceptionally well. It is highly accurate at active fermentation temperatures. However, the final reading in your JSON file (1.0072) was artificially skewed by the cold crash. The Cold Crash Anomaly (Why it read 1.0072) • At the very end of the JSON log, the fridge dropped to 3.35°C, and GM- BLUE's reported SG plummeted to 1.0072. Why did this happen when the real beer was 1.009? • This is a quirk of GravityMon's software Temperature Compensation. When the liquid drops to 3°C, the water density increases, but the physical plastic/PET body of the iSpindel also contracts and shrinks in the cold. This physical shrinkage makes the device denser, altering its centre of gravity and making it sink lower than the liquid density alone would dictate. The result is an ‘over-correction’ downward by about ~0.002 to ~0.003 points when near freezing. The Formula: Do not touch it.
  29. Monitor iSpindel Record Brewfather Analyse Gemini AI Tune GravityMon Update

    GravityMon formula New Slope & Intercept Until Zero offset achieved Extract JSON logs Match Angle to manual SG Calculate customised linear fit to refine the formula iSpindel floats in wort Transmits Angle & Temperature ‘Real time’ data (every 15 minutes) Readings logged in Brewfather User measures OG/FG manual hydrometer Refinement Process Result a more accurate gravity estimation without messing about with sugary water Five iterations – Batches #444 to #448
  30. BUT – Don’t tell him, Pike! Batch # 449 Sheaf

    Stout 1.061 – FG 1.018 Calculation was WAY OFF N.B. • AI only answers the particular questions that IT is asked. • IT takes context from the data presented – the simple Degree 1 Linear formula was optimised for standard beers in the range 1.036—1.055. • However, above 1.060 a Degree 2 Quadratic Polynomial is necessary to fit the higher gravity curve! Updated GM-BLUE's formula Degree 2 Polynomial: -0.0000091 * tilt^2 + 0.003154 * tilt + 0.926577 PS #450 Oat Malt Stout, 1.060, has tracked OK for both WHITE & BLUE
  31. Takeaway points • Asking the right questions of AI is

    very important • Interpreting and validation of recommendations equally so • Overall, an interesting exercise • iSpindels are good for fermentation tracking – use manual hydrometers to be sure of O.G. and F.G.
  32. Takeaway points • Asking the right questions of AI is

    very important • Interpreting and validation of recommendations equally so • Overall, an interesting exercise • iSpindels are good for fermentation tracking – use manual hydrometers to be sure of O.G. and F.G.
  33. Future ideas for AI type projects Now that the gravity

    data is the best it can be… Future projects to use the Brewfather reading data could be to – Compare fermentation performance i.e. repitching yeast from batch to batch – Predict final gravity after fermentation starts – Estimate the amount of carbonation (CO2 ) in beer.