{
  "exportedAt": "2026-08-05T01:18:22.494Z",
  "bags": [
    {
      "id": 1,
      "roaster": "Metric",
      "name": "Ándale Market",
      "isBlend": true,
      "isDecaf": false,
      "roastLevel": "medium",
      "processingMethod": "unspecified",
      "roastDate": "2026-04-27",
      "purchaseDate": null,
      "purchaseShop": "Metric Coffee Chicago",
      "price": null,
      "weightG": 300,
      "weightCorrectionG": -100,
      "dialInTip": null,
      "status": "finished",
      "finishedDate": "2026-05-29",
      "peakStartDay": 7,
      "peakEndDay": 35,
      "notes": "Cherry, Nougat, Wildflower Honey. Bright, acidic Latin American blend. Coordinates on bag: 41°53'12\"N 87°40'39\"W — Metric roastery location.",
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-29 15:07:25"
    },
    {
      "id": 2,
      "roaster": "Luckycat",
      "name": "Maomi Blend",
      "isBlend": true,
      "isDecaf": false,
      "roastLevel": "unspecified",
      "processingMethod": "unspecified",
      "roastDate": "2026-05-04",
      "purchaseDate": null,
      "purchaseShop": "Luckycat Coffee",
      "price": null,
      "weightG": 250,
      "weightCorrectionG": 0,
      "dialInTip": null,
      "status": "finished",
      "finishedDate": "2026-05-27",
      "peakStartDay": 7,
      "peakEndDay": 35,
      "notes": "Caramel, Cocoa, Nuts. Full-bodied, low acidity blend. Good milk drink bean.",
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-27 12:32:50"
    },
    {
      "id": 3,
      "roaster": "Metric",
      "name": "Decaf Huila Pink Bourbon",
      "isBlend": false,
      "isDecaf": true,
      "roastLevel": "unspecified",
      "processingMethod": "ea_washed",
      "roastDate": "2026-05-18",
      "purchaseDate": null,
      "purchaseShop": "Metric Coffee Chicago",
      "price": null,
      "weightG": 300,
      "weightCorrectionG": -65.1,
      "dialInTip": "Your shots are consistently sour with uneven flow—classic signs of under-extraction. Jump your grind to 31-32 (coarser) to slow down flow and increase contact time; you've been between 27.5-29, which is too fine for this bean. Shot 3 at grind 28 hinted you're close, but you've since drifted finer and back into sourness. Make one bold adjustment upward and dial from there.",
      "status": "finished",
      "finishedDate": "2026-06-07",
      "peakStartDay": 4,
      "peakEndDay": 21,
      "notes": "Luxardo, Ganache, Orange Peel. EA Washed (sugarcane ethyl acetate) decaf process. Pink Bourbon variety. High elevation 1700-1900 MASL. Do not use until May 25 2026 — too fresh.",
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-06-07 15:33:27"
    },
    {
      "id": 7,
      "roaster": "Dark Matter Coffee",
      "name": "Unicorn Blood",
      "isBlend": true,
      "isDecaf": false,
      "roastLevel": "unspecified",
      "processingMethod": "washed",
      "roastDate": "2026-05-23",
      "purchaseDate": null,
      "purchaseShop": "Online",
      "price": 22,
      "weightG": 340,
      "weightCorrectionG": 0,
      "dialInTip": null,
      "status": "removed",
      "finishedDate": "2026-05-27",
      "peakStartDay": 7,
      "peakEndDay": 35,
      "notes": "Dutch Cocoa, Cherry, Praline. Bold, low acid, voluptuous, chocolaty espresso. Holds up well to milk with Dutch cocoa, cherry and praline as dominant notes. Mixed lot base from Finca Santa Rosa (Honduras) processed by Inaginsa, paired with Catuai/Caturra and Catimor from Finca San Jeronimo Miramar (Guatemala). Subtle and sweet cherry nuance. Less jagged and rough around the edges compared to previous versions.",
      "createdAt": "2026-05-27 04:21:33",
      "updatedAt": "2026-05-27 04:30:18"
    },
    {
      "id": 8,
      "roaster": "Trial",
      "name": "Trial 1",
      "isBlend": false,
      "isDecaf": false,
      "roastLevel": "medium_dark",
      "processingMethod": "natural",
      "roastDate": "2026-04-27",
      "purchaseDate": "2026-05-09",
      "purchaseShop": null,
      "price": 22,
      "weightG": 300,
      "weightCorrectionG": 0,
      "dialInTip": null,
      "status": "removed",
      "finishedDate": "2026-05-27",
      "peakStartDay": 9,
      "peakEndDay": 32,
      "notes": null,
      "createdAt": "2026-05-27 04:29:17",
      "updatedAt": "2026-05-27 04:30:11"
    },
    {
      "id": 9,
      "roaster": "Metric",
      "name": "Ándale Market",
      "isBlend": true,
      "isDecaf": false,
      "roastLevel": "medium",
      "processingMethod": "unspecified",
      "roastDate": "2026-04-27",
      "purchaseDate": "2026-05-09",
      "purchaseShop": "Metric Coffee Chicago",
      "price": null,
      "weightG": null,
      "weightCorrectionG": 0,
      "dialInTip": null,
      "status": "finished",
      "finishedDate": "2026-05-27",
      "peakStartDay": null,
      "peakEndDay": null,
      "notes": null,
      "createdAt": "2026-05-27 13:59:06",
      "updatedAt": "2026-05-27 13:59:06"
    },
    {
      "id": 10,
      "roaster": "Luckycat",
      "name": "Maomi Blend",
      "isBlend": true,
      "isDecaf": false,
      "roastLevel": "unspecified",
      "processingMethod": "unspecified",
      "roastDate": "2026-05-26",
      "purchaseDate": "2026-05-27",
      "purchaseShop": "Luckycat Coffee",
      "price": null,
      "weightG": null,
      "weightCorrectionG": 0,
      "dialInTip": null,
      "status": "removed",
      "finishedDate": null,
      "peakStartDay": 7,
      "peakEndDay": 35,
      "notes": "Caramel, Cocoa, Nuts. Full-bodied, low acidity blend. Good milk drink bean.",
      "createdAt": "2026-05-28 04:40:15",
      "updatedAt": "2026-05-28 04:40:23"
    },
    {
      "id": 11,
      "roaster": "Metric",
      "name": "Ándale Market",
      "isBlend": true,
      "isDecaf": false,
      "roastLevel": "medium",
      "processingMethod": "unspecified",
      "roastDate": "2026-05-26",
      "purchaseDate": "2026-05-27",
      "purchaseShop": "Metric Coffee Chicago",
      "price": 18,
      "weightG": 300,
      "weightCorrectionG": -101.2,
      "dialInTip": null,
      "status": "finished",
      "finishedDate": "2026-06-15",
      "peakStartDay": 7,
      "peakEndDay": 35,
      "notes": "Cherry, Nougat, Wildflower Honey. Bright, acidic Latin American blend. Coordinates on bag: 41°53'12\"N 87°40'39\"W — Metric roastery location.",
      "createdAt": "2026-05-28 04:46:15",
      "updatedAt": "2026-06-15 17:28:22"
    },
    {
      "id": 12,
      "roaster": "Printer's Row Coffee Co",
      "name": "Brazil Cerrado",
      "isBlend": false,
      "isDecaf": false,
      "roastLevel": "unspecified",
      "processingMethod": "natural",
      "roastDate": "2026-05-23",
      "purchaseDate": "2026-05-29",
      "purchaseShop": "Printer's Row Coffee Co - Lincoln Park",
      "price": 18.5,
      "weightG": 340,
      "weightCorrectionG": -104.6,
      "dialInTip": "You've overcorrected: shots 1–3 choked severely at 28–39, so you jumped to 41.5 (shot 6), but now you're sour and fast. The Brazil needs a middle ground. Try grind 40 next—it's coarser than your early chokes but finer than your current sour shots. Watch for flow to start around 8–10 seconds and finish around 28–32 seconds; that timing should bring out the chocolate and walnut sweetness instead of the acid brightness you're tasting now.",
      "status": "finished",
      "finishedDate": "2026-06-07",
      "peakStartDay": 11,
      "peakEndDay": 39,
      "notes": "Notes of bakers chocolate, dried apricot and walnut. Balanced, creamy, soft.",
      "createdAt": "2026-05-29 20:17:01",
      "updatedAt": "2026-06-07 15:25:05"
    },
    {
      "id": 13,
      "roaster": "Printers Row Coffee Co.",
      "name": "Mexico Huatusco Veracruz",
      "isBlend": false,
      "isDecaf": true,
      "roastLevel": "unspecified",
      "processingMethod": "swiss_water",
      "roastDate": "2026-05-03",
      "purchaseDate": "2026-06-06",
      "purchaseShop": "Printers row coffee store",
      "price": 16,
      "weightG": 340,
      "weightCorrectionG": 0,
      "dialInTip": "Start at grind 40–41 with 18g → 40g (1:2.2 ratio), targeting 27–30 second shots. Your Brazil Cerrado shots at grind 41–42 hit 4/5★ balanced results, and this Mexican bean should dial similarly; step 1–2 notches finer if the shot runs under 25 seconds, or coarser if it exceeds 32 seconds. Focus on even flow from 10 seconds onward—uneven/wobbly streams indicate tamping or distribution issues rather than grind alone.",
      "status": "removed",
      "finishedDate": null,
      "peakStartDay": 7,
      "peakEndDay": 28,
      "notes": "Toasted Marshmallow, citrus, pecan",
      "createdAt": "2026-06-06 13:46:49",
      "updatedAt": "2026-06-08 21:27:50"
    },
    {
      "id": 14,
      "roaster": "Coffee Lab & Roasters",
      "name": "Coffee Lab & Roasters Huila Decaf",
      "isBlend": false,
      "isDecaf": true,
      "roastLevel": "light",
      "processingMethod": "unspecified",
      "roastDate": "2026-06-02",
      "purchaseDate": "2026-06-08",
      "purchaseShop": "Coffee Lab Lincoln Park Store",
      "price": 20,
      "weightG": 340,
      "weightCorrectionG": -214.2,
      "dialInTip": "Start at 18-20 on the Encore ESP Pro for this light decaf, targeting a 1:2 ratio (e.g., 18g in, 36g out) in 28-32 seconds. The bright acidity and light roast suggest you'll want a moderately fine grind; pull a shot at 19, then adjust in 2-setting increments—finer if it runs fast, coarser if it chokes or tastes sour.",
      "status": "finished",
      "finishedDate": "2026-07-16",
      "peakStartDay": 4,
      "peakEndDay": 21,
      "notes": "Bright acidity, sweet, lemon",
      "createdAt": "2026-06-08 22:26:50",
      "updatedAt": "2026-07-16 00:59:26"
    },
    {
      "id": 15,
      "roaster": "Dark Matter Coffee",
      "name": "Unicorn Blood Espresso Blend",
      "isBlend": true,
      "isDecaf": false,
      "roastLevel": "medium_dark",
      "processingMethod": "washed",
      "roastDate": "2026-05-25",
      "purchaseDate": "2026-06-15",
      "purchaseShop": "Marshal's Landing Caffe at Merchandise Mart",
      "price": 22,
      "weightG": 340,
      "weightCorrectionG": -80,
      "dialInTip": "Start at grind 28–28.5 with 18g → 39g (1:2.17 ratio) targeting a 25–27 second pull. This medium-dark blend should behave similarly to your best Métrica Ándale shots at grind 28, which hit balanced flavor with good flow. If the shot pulls faster than 25s or tastes sour, step finer by 0.5–1 increment; if slower than 27s or bitter, coarsen by 0.5–1 increment.",
      "status": "finished",
      "finishedDate": "2026-07-08",
      "peakStartDay": 5,
      "peakEndDay": 28,
      "notes": "Espresso blend from Dark Matter Coffee. Described as having notes of dark chocolate, caramel, and berry. Designed for espresso preparation.",
      "createdAt": "2026-06-15 17:22:44",
      "updatedAt": "2026-07-08 14:57:23"
    },
    {
      "id": 16,
      "roaster": "Metric Coffee",
      "name": "Colombia Carlos Efrain Cortes",
      "isBlend": false,
      "isDecaf": false,
      "roastLevel": "light",
      "processingMethod": "washed",
      "roastDate": "2026-07-06",
      "purchaseDate": "2026-07-07",
      "purchaseShop": "Metric online store",
      "price": 16,
      "weightG": 170,
      "weightCorrectionG": -46.2,
      "dialInTip": "You've found your sweet spot at grind 26 (Shot 6 was balanced and clean). Stay there for the next 2–3 shots to dial in dose, tamp consistency, and tamper angle—small mechanical variables often matter more than grind at this stage. This light Colombia is behaving well at 26; micro-adjustments in prep technique will help you unlock the limoncello and blackberry without chasing the grinder.",
      "status": "finished",
      "finishedDate": "2026-07-22",
      "peakStartDay": 14,
      "peakEndDay": 42,
      "notes": "Tasting notes of Limoncello, Blackberry, Cocoa. Single origin from a small producer in Tasnaque, Nariño, Colombia at 2015 meters of elevation, using a traditional washed method, fermenting for 8 to 25 hours before being washed and slowly dried on raised parabolic beds for 8 to 10 days",
      "createdAt": "2026-07-08 00:09:09",
      "updatedAt": "2026-07-22 16:12:57"
    },
    {
      "id": 17,
      "roaster": "Metric Coffee",
      "name": "Costa Rica Don Eli Tematica",
      "isBlend": false,
      "isDecaf": false,
      "roastLevel": "light",
      "processingMethod": "honey",
      "roastDate": "2026-07-06",
      "purchaseDate": "2026-07-07",
      "purchaseShop": "Metric Online Store",
      "price": 16,
      "weightG": 170,
      "weightCorrectionG": -116.6,
      "dialInTip": "Start at grind 32–33 with an 18g dose pulled to 28–29g (1:1.55 ratio), targeting 25–30 seconds. Your Ethiopia reference shots performed well in this zone, and this Costa Rica's honey process should dial in nearby; adjust in 1–2 setting increments (finer if gushing, coarser if choking) until you hit sweet, balanced extraction with clear hibiscus and raspberry notes.",
      "status": "finished",
      "finishedDate": "2026-08-04",
      "peakStartDay": 16,
      "peakEndDay": 44,
      "notes": "Honey Reposado process. Elevation: 1,700 MASL. Tasting notes: hibiscus, raspberry, caramel. This coffee grows among native forest that's been untouched since the 1970s, including Typica trees planted nearly a century ago. Cherries were picked by hand, rested overnight, then depulped with the mucilage left on the parchment. The coffee dried slowly on raised beds for 15 to 18 days, deepening in color and sweetness, before resting for several weeks ahead of milling.",
      "createdAt": "2026-07-08 00:33:38",
      "updatedAt": "2026-08-04 14:16:53"
    },
    {
      "id": 18,
      "roaster": "Metric",
      "name": "Ethiopia Yaye",
      "isBlend": false,
      "isDecaf": false,
      "roastLevel": "light",
      "processingMethod": "honey",
      "roastDate": "2026-07-06",
      "purchaseDate": "2026-07-07",
      "purchaseShop": "Metric online store",
      "price": 16,
      "weightG": 170,
      "weightCorrectionG": -27.40000000000001,
      "dialInTip": "Start at grind 25.5–26 with a 1:2.2 ratio (17.6g→38.6g) on your Bambino. This Ethiopian honey process sits between your previous light roasts and should highlight the floral complexity and clarity. Pull 2–3 shots at this setting, then adjust in 0.5-setting increments: go finer (lower) if the shot flows too fast or tastes thin/sour, coarser (higher) if it chokes or tastes muted. Stop when you hit 25–30 seconds total brew time with balanced sweetness.",
      "status": "finished",
      "finishedDate": "2026-07-30",
      "peakStartDay": 16,
      "peakEndDay": 44,
      "notes": "Cranberry, baking spice, papaya. Elevation: 2,200–2,300 MASL. Cool temperatures and slow cherry maturation contribute to exceptional clarity, sweetness, and floral complexity.\r\n\r\n",
      "createdAt": "2026-07-08 02:31:12",
      "updatedAt": "2026-07-30 14:08:06"
    },
    {
      "id": 19,
      "roaster": "Metric",
      "name": "El Diviso Pink Bourbon",
      "isBlend": false,
      "isDecaf": false,
      "roastLevel": "light",
      "processingMethod": "washed",
      "roastDate": "2026-07-06",
      "purchaseDate": "2026-07-07",
      "purchaseShop": "Metric Coffee online store",
      "price": 16,
      "weightG": 170,
      "weightCorrectionG": 0,
      "dialInTip": "Start at grind 26 with 17.5g dose pulling to ~41g (1:2.3 ratio) as your baseline—this Pink Bourbon sits in the same elevation and processing family as your reference shots. If the shot runs fast or tastes thin/sour, move finer by 0.5–1 setting at a time; if it chokes or tastes bitter, go coarser. Expect the floral notes to shine between 25–27 on your Encore ESP Pro.",
      "status": "active",
      "finishedDate": null,
      "peakStartDay": 14,
      "peakEndDay": 42,
      "notes": "Elevation: 1,700–1,900 MASL. Tasting notes: strawberry, honeycomb, jasmine. \r\n\r\nPink Bourbon has become one of the most sought-after varieties in specialty coffee for its floral aromatics, vibrant acidity, and layered sweetness. At Huila’s high elevations, the cherries mature slowly, allowing the coffee to develop exceptional clarity and balance.\r\n\r\nThese cherries were selectively handpicked at peak ripeness, depulped, carefully fermented to remove mucilage, and slowly dried to preserve stability and cup quality throughout storage and transit.",
      "createdAt": "2026-07-08 03:10:13",
      "updatedAt": "2026-07-22 16:13:26"
    },
    {
      "id": 20,
      "roaster": "Dark Matter Coffee",
      "name": "Unicorn Blood Espresso Blend",
      "isBlend": true,
      "isDecaf": false,
      "roastLevel": "medium_dark",
      "processingMethod": "washed",
      "roastDate": "2026-06-15",
      "purchaseDate": "2026-07-08",
      "purchaseShop": "Marshal's Landing Caffe at Merchandise Mart",
      "price": 22,
      "weightG": 340,
      "weightCorrectionG": -129.9,
      "dialInTip": null,
      "status": "finished",
      "finishedDate": "2026-07-17",
      "peakStartDay": 5,
      "peakEndDay": 28,
      "notes": "Espresso blend from Dark Matter Coffee. Described as having notes of dark chocolate, caramel, and berry. Designed for espresso preparation.",
      "createdAt": "2026-07-08 14:57:23",
      "updatedAt": "2026-07-17 14:48:14"
    },
    {
      "id": 21,
      "roaster": "Blue Bottle Coffee",
      "name": "Night Light Decaf",
      "isBlend": true,
      "isDecaf": true,
      "roastLevel": "medium",
      "processingMethod": "swiss_water",
      "roastDate": "2026-07-08",
      "purchaseDate": "2026-07-22",
      "purchaseShop": "Blue Bottle store",
      "price": 24,
      "weightG": 340,
      "weightCorrectionG": 0,
      "dialInTip": "Start at grind 40 with 17.5g → 38g (1:2.17 ratio) targeting 25-28 seconds—this medium decaf will benefit from the heavier dose you noted in the tasting notes to unlock sweetness and body. Your recent balanced shots with medium-dark beans at grind 40 suggest this is a solid anchor; step finer by 1-2 clicks if the shot runs faster than 28s, or coarser by 1-2 clicks if slower than 25s, adjusting dose ±0.5g as needed to dial in that creamy vanilla character.",
      "status": "active",
      "finishedDate": null,
      "peakStartDay": 4,
      "peakEndDay": 21,
      "notes": "Signature Blend. USDA Organic. Tasting notes: Crème Brûlée, Vanilla, Key Lime. Night Light Decaf shines with a heavier coffee dose, bringing out extra sweetness and roundness while keeping its clean, cocoa-forward profile — even when brewed cold.",
      "createdAt": "2026-07-22 23:57:34",
      "updatedAt": "2026-07-24 05:21:21"
    },
    {
      "id": 22,
      "roaster": "Four Letter Word Coffee Roasters",
      "name": "Matas",
      "isBlend": false,
      "isDecaf": false,
      "roastLevel": "medium_light",
      "processingMethod": "washed",
      "roastDate": "2026-07-28",
      "purchaseDate": "2026-07-27",
      "purchaseShop": "4LW website",
      "price": 20,
      "weightG": 283,
      "weightCorrectionG": 0,
      "dialInTip": "Start with 18g dose at grind 32–34 on your Baratza Encore ESP Pro, targeting a 1:1.6–1:2.0 ratio and 23–25 second pull. Your shot history shows consistent sourness above grind 36, and your best balanced result came at grind 33 with the Ethiopia Yaye; this washed Brazilian should respond well in that zone. Pull your first shot, assess flow and taste, then adjust in 1–2 clicks finer if the shot runs too fast or tastes thin, or coarser if it chokes.",
      "status": "active",
      "finishedDate": null,
      "peakStartDay": 10,
      "peakEndDay": 38,
      "notes": "Peanut butter brittle, cocoa, hint of lemon. Whole bean, for filter and espresso. Recommend resting at least 10 days post-roast. Producer: Leonardo Sales. Fazenda Córrego da Boa Vista, third-generation family farm.",
      "createdAt": "2026-08-03 16:53:08",
      "updatedAt": "2026-08-03 16:53:08"
    },
    {
      "id": 23,
      "roaster": "Four Letter Word Coffee Roasters",
      "name": "Decaf Aba Mecha",
      "isBlend": false,
      "isDecaf": true,
      "roastLevel": "medium_light",
      "processingMethod": "ea_washed",
      "roastDate": "2026-07-28",
      "purchaseDate": "2026-07-27",
      "purchaseShop": "4lwcoffee.com",
      "price": 25,
      "weightG": 284,
      "weightCorrectionG": 0,
      "dialInTip": "Start with 18g → 28g (1:1.55 ratio) at grind 34–35 on your Encore ESP Pro. Your Ethiopia Yaye shots at grind 33 scored well, and this washed decaf should behave similarly; dial finer in 1–2 clicks if the shot runs faster than 25 seconds, or coarser if it's sluggish. Target 23–26s total time to balance the melon and chocolate notes without the sourness that plagued your recent decaf attempts.",
      "status": "active",
      "finishedDate": null,
      "peakStartDay": 10,
      "peakEndDay": 28,
      "notes": "Tasting notes: melon, milk chocolate, graham cracker. Washed/EA decaf using sugarcane ethyl acetate process. Whole bean, for filter and espresso. Recommend resting at least 10 days post-roast.",
      "createdAt": "2026-08-03 16:56:27",
      "updatedAt": "2026-08-03 16:56:53"
    }
  ],
  "bagOrigins": [
    {
      "id": 24,
      "bagId": 2,
      "country": "Papua New Guinea",
      "region": null,
      "farm": null,
      "variety": null,
      "blendPercentage": "",
      "createdAt": "2026-05-27 04:05:02",
      "updatedAt": "2026-05-27 04:05:02"
    },
    {
      "id": 25,
      "bagId": 2,
      "country": "Guatemala",
      "region": null,
      "farm": null,
      "variety": null,
      "blendPercentage": "",
      "createdAt": "2026-05-27 04:05:02",
      "updatedAt": "2026-05-27 04:05:02"
    },
    {
      "id": 26,
      "bagId": 2,
      "country": "Mexico",
      "region": null,
      "farm": null,
      "variety": null,
      "blendPercentage": "",
      "createdAt": "2026-05-27 04:05:02",
      "updatedAt": "2026-05-27 04:05:02"
    },
    {
      "id": 27,
      "bagId": 7,
      "country": "Honduras",
      "region": null,
      "farm": "Santa Rosa",
      "variety": "Mixed",
      "blendPercentage": "",
      "createdAt": "2026-05-27 04:21:33",
      "updatedAt": "2026-05-27 04:21:33"
    },
    {
      "id": 28,
      "bagId": 7,
      "country": "Guatemala",
      "region": "San Jeronimo Miramar",
      "farm": "San Jeronimo Miramar",
      "variety": "Catuai/Caturra Mix",
      "blendPercentage": "",
      "createdAt": "2026-05-27 04:21:33",
      "updatedAt": "2026-05-27 04:21:33"
    },
    {
      "id": 29,
      "bagId": 7,
      "country": "Guatemala",
      "region": "San Jeronimo Miramar",
      "farm": "San Jeronimo Miramar",
      "variety": "Catimor",
      "blendPercentage": "",
      "createdAt": "2026-05-27 04:21:33",
      "updatedAt": "2026-05-27 04:21:33"
    },
    {
      "id": 30,
      "bagId": 8,
      "country": "Mexico",
      "region": null,
      "farm": null,
      "variety": null,
      "blendPercentage": "",
      "createdAt": "2026-05-27 04:29:17",
      "updatedAt": "2026-05-27 04:29:17"
    },
    {
      "id": 31,
      "bagId": 9,
      "country": "Mexico",
      "region": null,
      "farm": null,
      "variety": null,
      "blendPercentage": null,
      "createdAt": "2026-05-27 13:59:09",
      "updatedAt": "2026-05-27 13:59:09"
    },
    {
      "id": 32,
      "bagId": 9,
      "country": "Guatemala",
      "region": null,
      "farm": null,
      "variety": null,
      "blendPercentage": null,
      "createdAt": "2026-05-27 13:59:09",
      "updatedAt": "2026-05-27 13:59:09"
    },
    {
      "id": 33,
      "bagId": 10,
      "country": "Papua New Guinea",
      "region": null,
      "farm": null,
      "variety": null,
      "blendPercentage": "",
      "createdAt": "2026-05-28 04:40:15",
      "updatedAt": "2026-05-28 04:40:15"
    },
    {
      "id": 34,
      "bagId": 10,
      "country": "Guatemala",
      "region": null,
      "farm": null,
      "variety": null,
      "blendPercentage": "",
      "createdAt": "2026-05-28 04:40:15",
      "updatedAt": "2026-05-28 04:40:15"
    },
    {
      "id": 35,
      "bagId": 10,
      "country": "Mexico",
      "region": null,
      "farm": null,
      "variety": null,
      "blendPercentage": "",
      "createdAt": "2026-05-28 04:40:15",
      "updatedAt": "2026-05-28 04:40:15"
    },
    {
      "id": 44,
      "bagId": 1,
      "country": "Mexico",
      "region": null,
      "farm": null,
      "variety": null,
      "blendPercentage": "",
      "createdAt": "2026-05-28 05:59:42",
      "updatedAt": "2026-05-28 05:59:42"
    },
    {
      "id": 45,
      "bagId": 1,
      "country": "Guatemala",
      "region": null,
      "farm": null,
      "variety": null,
      "blendPercentage": "",
      "createdAt": "2026-05-28 05:59:42",
      "updatedAt": "2026-05-28 05:59:42"
    },
    {
      "id": 58,
      "bagId": 12,
      "country": "Brazil",
      "region": "Cerrado",
      "farm": null,
      "variety": null,
      "blendPercentage": "",
      "createdAt": "2026-06-05 19:28:37",
      "updatedAt": "2026-06-05 19:28:37"
    },
    {
      "id": 59,
      "bagId": 3,
      "country": "Colombia",
      "region": "Huila",
      "farm": null,
      "variety": "Pink Bourbon",
      "blendPercentage": "",
      "createdAt": "2026-06-06 00:45:12",
      "updatedAt": "2026-06-06 00:45:12"
    },
    {
      "id": 62,
      "bagId": 13,
      "country": "Mexico",
      "region": "Huatusco, Veracruz",
      "farm": null,
      "variety": null,
      "blendPercentage": "",
      "createdAt": "2026-06-08 02:32:15",
      "updatedAt": "2026-06-08 02:32:15"
    },
    {
      "id": 63,
      "bagId": 14,
      "country": "Colombia",
      "region": "Huila",
      "farm": null,
      "variety": null,
      "blendPercentage": "",
      "createdAt": "2026-06-08 22:26:50",
      "updatedAt": "2026-06-08 22:26:50"
    },
    {
      "id": 64,
      "bagId": 11,
      "country": "Mexico",
      "region": null,
      "farm": null,
      "variety": null,
      "blendPercentage": "",
      "createdAt": "2026-06-14 15:58:55",
      "updatedAt": "2026-06-14 15:58:55"
    },
    {
      "id": 65,
      "bagId": 11,
      "country": "Guatemala",
      "region": null,
      "farm": null,
      "variety": null,
      "blendPercentage": "",
      "createdAt": "2026-06-14 15:58:55",
      "updatedAt": "2026-06-14 15:58:55"
    },
    {
      "id": 73,
      "bagId": 15,
      "country": "Honduras",
      "region": "Copan",
      "farm": null,
      "variety": null,
      "blendPercentage": "",
      "createdAt": "2026-07-08 00:19:20",
      "updatedAt": "2026-07-08 00:19:20"
    },
    {
      "id": 74,
      "bagId": 15,
      "country": "Guatemala",
      "region": "Acatenango",
      "farm": null,
      "variety": null,
      "blendPercentage": "",
      "createdAt": "2026-07-08 00:19:20",
      "updatedAt": "2026-07-08 00:19:20"
    },
    {
      "id": 76,
      "bagId": 16,
      "country": "Colombia",
      "region": "Nariño",
      "farm": "Carlos Efrain Cortes",
      "variety": "Castillo",
      "blendPercentage": "",
      "createdAt": "2026-07-08 01:19:17",
      "updatedAt": "2026-07-08 01:19:17"
    },
    {
      "id": 78,
      "bagId": 19,
      "country": "Colombia",
      "region": "Huila",
      "farm": "El Diviso",
      "variety": "Pink Bourbon",
      "blendPercentage": "",
      "createdAt": "2026-07-08 03:10:13",
      "updatedAt": "2026-07-08 03:10:13"
    },
    {
      "id": 81,
      "bagId": 20,
      "country": "Honduras",
      "region": "Copan",
      "farm": null,
      "variety": null,
      "blendPercentage": "",
      "createdAt": "2026-07-16 15:36:00",
      "updatedAt": "2026-07-16 15:36:00"
    },
    {
      "id": 82,
      "bagId": 20,
      "country": "Guatemala",
      "region": "Acatenango",
      "farm": null,
      "variety": null,
      "blendPercentage": "",
      "createdAt": "2026-07-16 15:36:00",
      "updatedAt": "2026-07-16 15:36:00"
    },
    {
      "id": 85,
      "bagId": 21,
      "country": "Indonesia",
      "region": "Sumatra",
      "farm": null,
      "variety": null,
      "blendPercentage": "",
      "createdAt": "2026-07-24 05:21:21",
      "updatedAt": "2026-07-24 05:21:21"
    },
    {
      "id": 86,
      "bagId": 18,
      "country": "Ethiopia",
      "region": "Sidama",
      "farm": "Yaye",
      "variety": "Bishari",
      "blendPercentage": "",
      "createdAt": "2026-07-29 00:50:13",
      "updatedAt": "2026-07-29 00:50:13"
    },
    {
      "id": 87,
      "bagId": 17,
      "country": "Costa Rica",
      "region": "Tarrazu",
      "farm": "Don Eli Tematica",
      "variety": "Heirloom",
      "blendPercentage": "",
      "createdAt": "2026-08-02 16:57:06",
      "updatedAt": "2026-08-02 16:57:06"
    },
    {
      "id": 88,
      "bagId": 22,
      "country": "Brazil",
      "region": "Matas de Minas, Manhuaçu, Minas Gerais",
      "farm": "Fazenda Córrego da Boa Vista",
      "variety": "Arara, Catuai, Catucai",
      "blendPercentage": "",
      "createdAt": "2026-08-03 16:53:08",
      "updatedAt": "2026-08-03 16:53:08"
    },
    {
      "id": 90,
      "bagId": 23,
      "country": "Ethiopia",
      "region": "Jimma",
      "farm": "Abdo Aba Mecha",
      "variety": "74110 / 74112",
      "blendPercentage": "",
      "createdAt": "2026-08-03 16:56:53",
      "updatedAt": "2026-08-03 16:56:53"
    }
  ],
  "shots": [
    {
      "id": 1,
      "bagId": 1,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-07T13:00:00.000Z",
      "grindSetting": 37,
      "doseG": 18.1,
      "yieldG": 36,
      "shotTimeSeconds": 36,
      "targetRatioLabel": null,
      "lagG": null,
      "preinfusionSeconds": 10,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 15,
      "wdtUsed": false,
      "distributionToolUsed": false,
      "grinderRetentionG": 0.1,
      "tasteBalance": 2,
      "shotRating": 1,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Sour. Early shot, still learning workflow. Using 15lb spring, no WDT yet. Extended manual preinfusion ~10 seconds.",
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 2,
      "bagId": 1,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-08T08:00:00",
      "grindSetting": 36.5,
      "doseG": 18,
      "yieldG": 38,
      "shotTimeSeconds": 25,
      "targetRatioLabel": null,
      "lagG": null,
      "preinfusionSeconds": 10,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 15,
      "wdtUsed": false,
      "distributionToolUsed": false,
      "grinderRetentionG": null,
      "tasteBalance": 2,
      "shotRating": 1,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Still sour. Flow all over the place, more on one spout than the other. Stopped machine at ~30g, significant drip lag to 38g.",
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 3,
      "bagId": 1,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-09T08:00:00",
      "grindSetting": 34.5,
      "doseG": 18.1,
      "yieldG": 43.3,
      "shotTimeSeconds": 43,
      "targetRatioLabel": null,
      "lagG": null,
      "preinfusionSeconds": 10,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 15,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": null,
      "tasteBalance": 2,
      "shotRating": 1,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Went finer to address sourness. Flow restricted at first, just dripping. Over-extracted. Still sour. WDT introduced this session. Extended preinfusion still in use.",
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 4,
      "bagId": 1,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-10T08:00:00",
      "grindSetting": 35.5,
      "doseG": 18,
      "yieldG": 37.5,
      "shotTimeSeconds": 35,
      "targetRatioLabel": null,
      "lagG": null,
      "preinfusionSeconds": 0,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": null,
      "tasteBalance": 2,
      "shotRating": 2,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Switched to 30lb spring. No manual preinfusion. Flow even from both spouts. Slightly sour but noticeably more balanced than previous shots. Best shot so far.",
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 5,
      "bagId": 1,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-11T08:00:00",
      "grindSetting": 34.5,
      "doseG": 18.1,
      "yieldG": 39.6,
      "shotTimeSeconds": 31,
      "targetRatioLabel": null,
      "lagG": null,
      "preinfusionSeconds": 0,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": null,
      "tasteBalance": 2,
      "shotRating": 3,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Slightly sour but really good with milk. Both spouts but concentrated in one for a while mid-shot. Puck intact. Getting closer.",
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 6,
      "bagId": 1,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-12T08:00:00",
      "grindSetting": 33,
      "doseG": 18.1,
      "yieldG": 39.6,
      "shotTimeSeconds": 31,
      "targetRatioLabel": null,
      "lagG": null,
      "preinfusionSeconds": 0,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": null,
      "tasteBalance": 2,
      "shotRating": 3,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Slightly sour, less than other shots. Came through both spouts but not the whole time — concentrated in one for a while. Really good with milk. Possibly best shot yet on this bean.",
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 7,
      "bagId": 1,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-13T08:00:00",
      "grindSetting": 34,
      "doseG": 18.1,
      "yieldG": 38,
      "shotTimeSeconds": 23,
      "targetRatioLabel": null,
      "lagG": null,
      "preinfusionSeconds": 0,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": null,
      "tasteBalance": 2,
      "shotRating": 2,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Sour. Fast shot at 23 seconds. Stopped at ~30g. Bean getting older at 16 days — may need finer grind as it ages.",
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 8,
      "bagId": 1,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-14T15:00:00",
      "grindSetting": 39.5,
      "doseG": 9,
      "yieldG": 40,
      "shotTimeSeconds": null,
      "targetRatioLabel": null,
      "lagG": null,
      "preinfusionSeconds": 0,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": false,
      "distributionToolUsed": false,
      "grinderRetentionG": null,
      "tasteBalance": 3,
      "shotRating": 3,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Gaby's shot. Single 9g dose for affogato. Much more balanced — likely due to very long ratio (1:4.4) diluting acidity. Coarse grind 39.5.",
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 9,
      "bagId": 1,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-14T15:30:00",
      "grindSetting": null,
      "doseG": 8,
      "yieldG": 21,
      "shotTimeSeconds": 16,
      "targetRatioLabel": null,
      "lagG": null,
      "preinfusionSeconds": 0,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": null,
      "tasteBalance": 4,
      "shotRating": 2,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "8g single shot test for affogato. 21g in 16 seconds — very fast, slightly bitter. Small dose + no 3-way solenoid made drip lag proportionally huge. Difficult on the Bambino.",
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 10,
      "bagId": 1,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-15T08:00:00",
      "grindSetting": 31.5,
      "doseG": 18,
      "yieldG": null,
      "shotTimeSeconds": null,
      "targetRatioLabel": null,
      "lagG": null,
      "preinfusionSeconds": 0,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": null,
      "tasteBalance": 4,
      "shotRating": 2,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Went very fine (31-32 range) to test limits. Over-extracted and slightly bitter. Flow uneven. Useful to identify the over-extraction end of the spectrum on this bean.",
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 11,
      "bagId": 2,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-16T08:00:00",
      "grindSetting": 34,
      "doseG": 18,
      "yieldG": null,
      "shotTimeSeconds": null,
      "targetRatioLabel": null,
      "lagG": null,
      "preinfusionSeconds": 0,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": null,
      "tasteBalance": 4,
      "shotRating": 2,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "First shot on Maomi. Purged ~20g first to clear Ándale from burrs. Slightly bitter but not too bad. Did not log scale — no yield or time recorded.",
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 12,
      "bagId": 2,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-16T08:30:00",
      "grindSetting": 35,
      "doseG": 18,
      "yieldG": null,
      "shotTimeSeconds": 40,
      "targetRatioLabel": null,
      "lagG": null,
      "preinfusionSeconds": 10,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": null,
      "tasteBalance": 2,
      "shotRating": 1,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Went coarser to 35. Accidentally used 10 second manual preinfusion — old habit. Over-extracted at 40 seconds. Flow restricted. Sour. Identified preinfusion as ongoing variable causing inconsistency.",
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 13,
      "bagId": 2,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-16T09:00:00",
      "grindSetting": 35,
      "doseG": 18.1,
      "yieldG": 37.4,
      "shotTimeSeconds": 33,
      "targetRatioLabel": null,
      "lagG": null,
      "preinfusionSeconds": 0,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": 0.1,
      "tasteBalance": 2,
      "shotRating": 3,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Best shot yet. No manual preinfusion. Flow came out more on right spout then started on left halfway through — mild channeling. Acid taste that does not linger much. Really good with milk. Grinder retention 0.1g.",
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 14,
      "bagId": 2,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-25T13:42:38.300Z",
      "grindSetting": 33,
      "doseG": 18.1,
      "yieldG": 37.9,
      "shotTimeSeconds": 29,
      "targetRatioLabel": null,
      "lagG": 10,
      "preinfusionSeconds": 5,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": 0,
      "tasteBalance": 2,
      "shotRating": 2,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Sour to very sour, but not lingering. Light bodied. Flow came in mostly through the left spot at first then evening about about 12 seconds in. ",
      "createdAt": "2026-05-25 13:42:38",
      "updatedAt": "2026-05-25 13:42:38"
    },
    {
      "id": 15,
      "bagId": 2,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-25T19:57:56.060Z",
      "grindSetting": 31,
      "doseG": 17.5,
      "yieldG": 34.5,
      "shotTimeSeconds": 40,
      "targetRatioLabel": null,
      "lagG": 6,
      "preinfusionSeconds": 4,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.7,
      "tasteBalance": 6,
      "shotRating": 2,
      "flowCharacteristics": "dripping_restricted",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Over extracted. Flow was difficult at first and started dripping rapidly at around 11 second, then after 10 seconds it started flowing for another 10 seconds then drip again, but both spouts showed the same flow this time. the taste is bitter",
      "createdAt": "2026-05-25 19:57:56",
      "updatedAt": "2026-05-25 19:57:56"
    },
    {
      "id": 16,
      "bagId": 2,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-25T20:12:18.859Z",
      "grindSetting": 32,
      "doseG": 18,
      "yieldG": 35.9,
      "shotTimeSeconds": 31,
      "targetRatioLabel": null,
      "lagG": 8,
      "preinfusionSeconds": 4,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 2,
      "shotRating": 2,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was even across the two spouts, started with drips at around 10 seconds then better flow at around 20 seconds. Taste is sour that lingers. ",
      "createdAt": "2026-05-25 20:12:18",
      "updatedAt": "2026-05-25 20:12:18"
    },
    {
      "id": 18,
      "bagId": 2,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-26T14:02:03.973Z",
      "grindSetting": 32.5,
      "doseG": 18.1,
      "yieldG": 35.4,
      "shotTimeSeconds": 38,
      "targetRatioLabel": null,
      "lagG": 8,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 3,
      "shotRating": 3,
      "flowCharacteristics": "dripping_restricted",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow Wass good for a few seconds then it started fast dripping on both sides then it corrected on the right and stayed mostly constant with the left spout fast dripping most of the time. the puck was stuck to the shower head again, but extracted intact and without leaving a lot of mess on the portafilter. The taste is slightly sour but more balanced than recent shots without a strong lingering sourness but still there after a minute",
      "createdAt": "2026-05-26 14:02:03",
      "updatedAt": "2026-05-26 14:02:03"
    },
    {
      "id": 19,
      "bagId": 3,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-27T01:24:48.254Z",
      "grindSetting": 33.5,
      "doseG": 18.1,
      "yieldG": 38.8,
      "shotTimeSeconds": 20,
      "targetRatioLabel": null,
      "lagG": 10,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": 0,
      "tasteBalance": 1,
      "shotRating": 1,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Grinded 21 grams of Decaff to clean the grinder before preparing the shot. Taste is very sour, but quickly reducing in intensity but lingering sourness. Flow started even and almost right away on both spouts, before stopping on the left side at around 12 seconds for the remainder of the pull. Lag was longer than expected",
      "createdAt": "2026-05-27 01:24:48",
      "updatedAt": "2026-05-27 01:24:48"
    },
    {
      "id": 20,
      "bagId": 3,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-27T01:37:44.153Z",
      "grindSetting": 29,
      "doseG": 18.2,
      "yieldG": 34.2,
      "shotTimeSeconds": 28,
      "targetRatioLabel": null,
      "lagG": 6,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": 0.1,
      "tasteBalance": 2,
      "shotRating": 1,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was even on both spouts throughout. not as sour as before but still strong and lingering. Lag was less than usual resulting in a shorter shot",
      "createdAt": "2026-05-27 01:37:44",
      "updatedAt": "2026-05-27 01:37:44"
    },
    {
      "id": 34,
      "bagId": 2,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-27T12:32:38.905Z",
      "grindSetting": 29,
      "doseG": 17.9,
      "yieldG": 40.5,
      "shotTimeSeconds": 25,
      "targetRatioLabel": null,
      "lagG": 10,
      "preinfusionSeconds": 4,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": 0.2,
      "tasteBalance": 1,
      "shotRating": 1,
      "flowCharacteristics": "both_spouts_uneven",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Very Sour at first and thin body. Flow took a while to come out then it went from one spout to the other. ",
      "createdAt": "2026-05-27 12:32:38",
      "updatedAt": "2026-05-27 12:32:38"
    },
    {
      "id": 35,
      "bagId": 3,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-27T21:29:49.356Z",
      "grindSetting": 28,
      "doseG": 18,
      "yieldG": 36.4,
      "shotTimeSeconds": 33,
      "targetRatioLabel": null,
      "lagG": 6,
      "preinfusionSeconds": 5,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.3,
      "tasteBalance": 5,
      "shotRating": 4,
      "flowCharacteristics": "both_spouts_uneven",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at around 8 seconds through both spouts, but quickly changed to just the left and rapid dripping on the right, then it went uneven at times on both spouts. Flavor is now on the bitter side but much more balanced than previous drinks",
      "createdAt": "2026-05-27 21:29:49",
      "updatedAt": "2026-05-27 21:29:49"
    },
    {
      "id": 36,
      "bagId": 1,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-28T14:07:00.000Z",
      "grindSetting": 28,
      "doseG": 17.9,
      "yieldG": 39.8,
      "shotTimeSeconds": 21,
      "targetRatioLabel": null,
      "lagG": 10,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 2,
      "shotRating": 2,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at around 8 seconds, even on both spouts, flow was high for a few seconds then the coffee strings became thinner. The flow was wobbly at the end but even across the spouts. The shot felt fast. the taste is sour that reduces after a few seconds but still lingers with a thin body ",
      "createdAt": "2026-05-28 14:29:58",
      "updatedAt": "2026-05-28 14:29:58"
    },
    {
      "id": 37,
      "bagId": 3,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-28T23:39:00.000Z",
      "grindSetting": 28.5,
      "doseG": 18.1,
      "yieldG": 37.5,
      "shotTimeSeconds": 33,
      "targetRatioLabel": null,
      "lagG": 6,
      "preinfusionSeconds": null,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 2,
      "shotRating": 2,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "flow started at 8 seconds then dripped through the left spout while the right remained flowing. Flow evened out at around 23 seconds. Taste is very sour at first but dissipates quickly.",
      "createdAt": "2026-05-28 23:45:29",
      "updatedAt": "2026-05-28 23:45:29"
    },
    {
      "id": 38,
      "bagId": 1,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-29T14:48:00.000Z",
      "grindSetting": 29,
      "doseG": 7.9,
      "yieldG": 18.8,
      "shotTimeSeconds": 15,
      "targetRatioLabel": null,
      "lagG": 8,
      "preinfusionSeconds": 5,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": 0,
      "tasteBalance": 5,
      "shotRating": 3,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Ran out of beans so pulled the largest dose I had remaining targeting a 1:2 ratio on the single shot and using the single shot basket. Flow started at around 8 seconds with even flow throughout. I also learned you have to stir the espresso before tasting so did that this time and the flavor was much more balanced than previous shots. with bitter and acid notes but a bit more towards the bitter side. no strong lingering flavors",
      "createdAt": "2026-05-29 14:59:32",
      "updatedAt": "2026-05-29 14:59:32"
    },
    {
      "id": 39,
      "bagId": 3,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-30T01:33:00.000Z",
      "grindSetting": 29,
      "doseG": 18,
      "yieldG": 38.1,
      "shotTimeSeconds": 29,
      "targetRatioLabel": null,
      "lagG": 6,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.3,
      "tasteBalance": 2,
      "shotRating": 2,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at around 8 seconds, started fast but then slowed. Both spouts started fast dripping around 25 seconds in. Taste after mixing is sour but dissipates quickly with a slight acidic lingering taste",
      "createdAt": "2026-05-30 01:46:37",
      "updatedAt": "2026-05-30 01:46:37"
    },
    {
      "id": 42,
      "bagId": 12,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-30T14:09:00.000Z",
      "grindSetting": 39,
      "doseG": 18.3,
      "yieldG": 33.8,
      "shotTimeSeconds": 60,
      "targetRatioLabel": null,
      "lagG": 6,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": 0.2,
      "tasteBalance": 6,
      "shotRating": 2,
      "flowCharacteristics": "dripping_restricted",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Over extracted. Flow started at around 15 seconds slow dripping on both spouts. Then it started flowing on the left spout close to 25 seconds and remained that way for the remainder of the shot until the machine turned off. I also tried shots at 28, 33 and 37 grind levels all choking the machine with no to little output. Flavor is bitter to very bitter even with milk. Good body",
      "createdAt": "2026-05-30 14:21:40",
      "updatedAt": "2026-05-30 14:21:40"
    },
    {
      "id": 43,
      "bagId": 12,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-30T14:01:00.000Z",
      "grindSetting": 28,
      "doseG": 18.1,
      "yieldG": 0,
      "shotTimeSeconds": 74,
      "targetRatioLabel": null,
      "lagG": null,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": 0.2,
      "tasteBalance": null,
      "shotRating": null,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": true,
      "failReason": "choking",
      "notes": "Too fine grinding chocked the shot, with no coffee coming out even after more than a minute when the machine stopped automatically. when Removing the Portafilter water splashed everywhere suggesting flow was impeded but the fine grind",
      "createdAt": "2026-05-31 03:39:19",
      "updatedAt": "2026-05-31 03:39:19"
    },
    {
      "id": 44,
      "bagId": 12,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-30T14:07:00.000Z",
      "grindSetting": 33,
      "doseG": 18.1,
      "yieldG": 0,
      "shotTimeSeconds": 74,
      "targetRatioLabel": null,
      "lagG": null,
      "preinfusionSeconds": null,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": 0.1,
      "tasteBalance": null,
      "shotRating": null,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": true,
      "failReason": "choking",
      "notes": "second attempt at dialing in this bean, increasing grind to 33. Shot was still choked, with just a few drops out after more than a minute. Water was also trapped at the portafilter spilling everywhere when removing. will continue to increase grind size at large steps for the next shot",
      "createdAt": "2026-05-31 03:48:56",
      "updatedAt": "2026-05-31 03:48:56"
    },
    {
      "id": 45,
      "bagId": 12,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-30T14:08:00.000Z",
      "grindSetting": 37,
      "doseG": 18,
      "yieldG": 13,
      "shotTimeSeconds": 76,
      "targetRatioLabel": null,
      "lagG": null,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": null,
      "shotRating": null,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": true,
      "failReason": "choking",
      "notes": "Very slow drip of dark and thick liquid started to extract at around 30 to 40 seconds which continued slowly until the machine stoped after more than a minute. Yield was very restricted and below the initial dose. Taste was bitter but irrelevant given the level of over extraction. Still need to go coarser",
      "createdAt": "2026-05-31 03:54:47",
      "updatedAt": "2026-05-31 03:54:47"
    },
    {
      "id": 46,
      "bagId": 12,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-31T14:00:00.000Z",
      "grindSetting": 45,
      "doseG": 18.2,
      "yieldG": 41.9,
      "shotTimeSeconds": 15,
      "targetRatioLabel": null,
      "lagG": 10,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.3,
      "tasteBalance": 1,
      "shotRating": 1,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Foe started at around 8 seconds remained fast and even on both spouts for the quick duration of the shot. Taste was very sour that lingered",
      "createdAt": "2026-05-31 14:10:53",
      "updatedAt": "2026-05-31 14:10:53"
    },
    {
      "id": 47,
      "bagId": 12,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-31T14:14:00.000Z",
      "grindSetting": 41.5,
      "doseG": 18.3,
      "yieldG": 36.7,
      "shotTimeSeconds": 34,
      "targetRatioLabel": null,
      "lagG": 6,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 2,
      "shotRating": 2,
      "flowCharacteristics": "dripping_restricted",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Coffee started to flow at around 10 seconds dripping on both spouts. Dripping speed increased with even flow starting on both spouts at 23 seconds. Flavor is acid and bright first based on the flow I would have expected more bitter flavors ",
      "createdAt": "2026-05-31 14:30:27",
      "updatedAt": "2026-05-31 14:30:27"
    },
    {
      "id": 48,
      "bagId": 3,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-31T19:40:00.000Z",
      "grindSetting": 29,
      "doseG": 18.1,
      "yieldG": 41.3,
      "shotTimeSeconds": 26,
      "targetRatioLabel": null,
      "lagG": 6,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 1,
      "shotRating": 1,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was even across the spouts starting around 8 seconds. Taste was very sour that dissipates eventually but still present",
      "createdAt": "2026-05-31 19:48:34",
      "updatedAt": "2026-05-31 19:48:34"
    },
    {
      "id": 49,
      "bagId": 3,
      "equipmentProfileId": 1,
      "pulledAt": "2026-05-31T19:48:00.000Z",
      "grindSetting": 27.5,
      "doseG": 18.1,
      "yieldG": 39.6,
      "shotTimeSeconds": 40,
      "targetRatioLabel": null,
      "lagG": 6,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": 0.1,
      "tasteBalance": 3,
      "shotRating": 2,
      "flowCharacteristics": "dripping_restricted",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started on the right spout only at 8 seconds then fast dripping through both spouts at around 15 seconds and then again even on Both spouts but wobbly after 25 seconds. Tastes sour but more balanced and dissipates quicker than the previous shot. Still hard to get this bean, maybe is my taste bias",
      "createdAt": "2026-05-31 20:00:53",
      "updatedAt": "2026-05-31 20:00:53"
    },
    {
      "id": 50,
      "bagId": 12,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-01T15:31:00.000Z",
      "grindSetting": 40.5,
      "doseG": 18,
      "yieldG": 44.2,
      "shotTimeSeconds": 58,
      "targetRatioLabel": null,
      "lagG": 4,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 6,
      "shotRating": 2,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at around 12 seconds dripping slowly on the right spout, then started to flow on that spout first slowly then faster. The left spout dripped throughout. Because I was checking the flow I was late to stop the shot, extra going for longer and a larger yield. Lag was lower this time. After extraction the puck showed a big channel. Still a good improvement knowing that the balance is closer",
      "createdAt": "2026-06-01 15:45:17",
      "updatedAt": "2026-06-01 15:45:17"
    },
    {
      "id": 51,
      "bagId": 12,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-01T15:49:00.000Z",
      "grindSetting": 41,
      "doseG": 18.2,
      "yieldG": 16,
      "shotTimeSeconds": 60,
      "targetRatioLabel": null,
      "lagG": 4,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": null,
      "shotRating": null,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": true,
      "failReason": "choking",
      "notes": "Flow started at around 30 seconds dripping throughout. I don’t understand why the machine choked at this setting if it is coarser than my past shot",
      "createdAt": "2026-06-01 16:00:56",
      "updatedAt": "2026-06-01 16:00:56"
    },
    {
      "id": 52,
      "bagId": 12,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-01T16:09:00.000Z",
      "grindSetting": 42,
      "doseG": 18,
      "yieldG": 40.7,
      "shotTimeSeconds": 28,
      "targetRatioLabel": null,
      "lagG": 8,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.2,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "normal",
      "isLocked": true,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started around 10 seconds on both spouts flowing normally. Taste is balanced without lingering acid or bitter flavors ",
      "createdAt": "2026-06-01 16:24:08",
      "updatedAt": "2026-06-01 16:24:08"
    },
    {
      "id": 53,
      "bagId": 3,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-01T19:19:00.000Z",
      "grindSetting": 28,
      "doseG": 18,
      "yieldG": 36.4,
      "shotTimeSeconds": 27,
      "targetRatioLabel": null,
      "lagG": 5,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 3,
      "shotRating": 4,
      "flowCharacteristics": "normal",
      "isLocked": true,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at around 8 seconds flowing through both spouts although there was some wobbliness on the left one row 5 seconds mid pull. Taste is slightly sour but resolved quickly. The bean taste is bright and acid but probably the best shot yet for the decaf",
      "createdAt": "2026-06-01 19:33:34",
      "updatedAt": "2026-06-01 19:33:34"
    },
    {
      "id": 54,
      "bagId": 12,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-03T13:51:00.000Z",
      "grindSetting": 42,
      "doseG": 18.1,
      "yieldG": 36,
      "shotTimeSeconds": 32,
      "targetRatioLabel": null,
      "lagG": 5,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 3,
      "shotRating": 3,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Shot started flowing around 10 seconds on both spouts, then continued on the left spout only, before evening out at 25 seconds. Flavor is balanced but slightly sour today",
      "createdAt": "2026-06-03 14:08:24",
      "updatedAt": "2026-06-03 14:08:24"
    },
    {
      "id": 55,
      "bagId": 3,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-03T23:06:00.000Z",
      "grindSetting": 28,
      "doseG": 18.1,
      "yieldG": 41,
      "shotTimeSeconds": 25,
      "targetRatioLabel": null,
      "lagG": 8,
      "preinfusionSeconds": null,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 2,
      "shotRating": 3,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was even but fast. Taste was sour and lingering indicating under extraction. Could aging beans require a finer grind?",
      "createdAt": "2026-06-03 23:22:16",
      "updatedAt": "2026-06-03 23:22:16"
    },
    {
      "id": 56,
      "bagId": 12,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-04T18:13:00.000Z",
      "grindSetting": 41.5,
      "doseG": 18,
      "yieldG": 42.5,
      "shotTimeSeconds": 27,
      "targetRatioLabel": null,
      "lagG": 10,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": 0,
      "tasteBalance": 2,
      "shotRating": 2,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at around 8 seconds. It was even and fast and there was a bit of dripping in the right spout for about 10 seconds but resolved by itself. I stopped the shot too late at 32 grams. There was significant lag this time. Taste is sour with slight lingering",
      "createdAt": "2026-06-04 18:26:09",
      "updatedAt": "2026-06-04 18:26:09"
    },
    {
      "id": 57,
      "bagId": 3,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-04T21:11:00.000Z",
      "grindSetting": 27.5,
      "doseG": 18,
      "yieldG": 36.7,
      "shotTimeSeconds": 27,
      "targetRatioLabel": null,
      "lagG": 4,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.2,
      "tasteBalance": 4,
      "shotRating": 3,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was even starting at around 10 seconds with thin but constant flow streams throughout. Taste was acid but that is the bean. I got notes for the burning this time around ",
      "createdAt": "2026-06-04 21:23:34",
      "updatedAt": "2026-06-04 21:23:34"
    },
    {
      "id": 58,
      "bagId": 12,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-05T15:36:00.000Z",
      "grindSetting": 40.5,
      "doseG": 18,
      "yieldG": 36.3,
      "shotTimeSeconds": 43,
      "targetRatioLabel": null,
      "lagG": 4,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 6,
      "shotRating": 2,
      "flowCharacteristics": "dripping_restricted",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at around 10 seconds with thin flow, which quickly became restricted with fast dripping on both spouts. At 25 seconds flow started on the right spout again but remained restricted on the left. Taste is acid first then bitter. Clear over extraction and channeling",
      "createdAt": "2026-06-05 15:55:00",
      "updatedAt": "2026-06-05 15:55:00"
    },
    {
      "id": 59,
      "bagId": 3,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-06T00:12:00.000Z",
      "grindSetting": 28,
      "doseG": 18,
      "yieldG": 40.7,
      "shotTimeSeconds": 21,
      "targetRatioLabel": null,
      "lagG": 4,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": 0,
      "tasteBalance": 2,
      "shotRating": 2,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at 8 seconds and ran fast. Taste is sour and lasting ",
      "createdAt": "2026-06-06 00:18:17",
      "updatedAt": "2026-06-06 00:18:17"
    },
    {
      "id": 60,
      "bagId": 3,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-06T00:23:00.000Z",
      "grindSetting": 26,
      "doseG": 18.1,
      "yieldG": 38.7,
      "shotTimeSeconds": 26,
      "targetRatioLabel": null,
      "lagG": 9,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": null,
      "shotRating": null,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Wobbly streams. Did not taste the espresso it was for someone else",
      "createdAt": "2026-06-06 00:29:16",
      "updatedAt": "2026-06-06 00:29:16"
    },
    {
      "id": 61,
      "bagId": 12,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-06T12:58:00.000Z",
      "grindSetting": 40.5,
      "doseG": 18.1,
      "yieldG": 40.3,
      "shotTimeSeconds": 31,
      "targetRatioLabel": null,
      "lagG": 11,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.2,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at around 14 seconds evenly across both spouts, no wobbling or dripping. Taste is acid and bright at first but balanced overall",
      "createdAt": "2026-06-06 13:03:49",
      "updatedAt": "2026-06-06 13:03:49"
    },
    {
      "id": 62,
      "bagId": 3,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-06T23:15:00.000Z",
      "grindSetting": 27,
      "doseG": 18.1,
      "yieldG": 36.7,
      "shotTimeSeconds": 27,
      "targetRatioLabel": null,
      "lagG": 7,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.3,
      "tasteBalance": null,
      "shotRating": 3,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was even on both spouts throughout. Taste is acid and bright but not lingering. This coffee might be too bright for my taste or I continue to under-extract although numbers are correct. Crema was mostly missing and body was light",
      "createdAt": "2026-06-06 23:42:00",
      "updatedAt": "2026-06-06 23:42:00"
    },
    {
      "id": 63,
      "bagId": 11,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-07T13:29:00.000Z",
      "grindSetting": 29,
      "doseG": 18.1,
      "yieldG": 38.3,
      "shotTimeSeconds": 36,
      "targetRatioLabel": null,
      "lagG": 7,
      "preinfusionSeconds": 7,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 4,
      "shotRating": 3,
      "flowCharacteristics": "dripping_restricted",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at 14 seconds slow dripping, before starting to flow normally at 21 seconds on both spouts. Flow was wonky on the left spout throughout. Taste is bright but balanced ",
      "createdAt": "2026-06-07 13:33:06",
      "updatedAt": "2026-06-07 13:33:06"
    },
    {
      "id": 64,
      "bagId": 11,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-07T20:19:00.000Z",
      "grindSetting": 31,
      "doseG": 18.1,
      "yieldG": 39.2,
      "shotTimeSeconds": 25,
      "targetRatioLabel": null,
      "lagG": 7,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": null,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.3,
      "tasteBalance": 3,
      "shotRating": 3,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at around 9 seconds even across both spouts, but became restricted in the right spout for the rest of the shot, sometimes dripping sometimes wobbly, which I think indicates channeling. Taste is slightly sour and very bright, similar to the first shot",
      "createdAt": "2026-06-07 20:31:43",
      "updatedAt": "2026-06-07 20:31:43"
    },
    {
      "id": 65,
      "bagId": 11,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-08T15:51:00.000Z",
      "grindSetting": 32,
      "doseG": 18.1,
      "yieldG": 38.5,
      "shotTimeSeconds": 24,
      "targetRatioLabel": null,
      "lagG": 8,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 2,
      "shotRating": 2,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at around 8 seconds, dripping for four to five seconds on the right spout before flowing properly again for the rest of the shot. Taste is acid and bright but a slight sourness that lingers due to the under extraction.",
      "createdAt": "2026-06-08 16:06:52",
      "updatedAt": "2026-06-08 16:06:52"
    },
    {
      "id": 66,
      "bagId": 14,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-08T22:56:00.000Z",
      "grindSetting": 27.5,
      "doseG": 18,
      "yieldG": 31.5,
      "shotTimeSeconds": 60,
      "targetRatioLabel": null,
      "lagG": 9,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.2,
      "tasteBalance": null,
      "shotRating": null,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": true,
      "failReason": "choking",
      "notes": "Flow starter at around 13 seconds, flowing slowly through the left spout only, then 5 seconds later started dripping slowly through both spouts for the remainder of the shot which stopped automatically after 1 minute. Spur was extremely sour ",
      "createdAt": "2026-06-08 23:19:47",
      "updatedAt": "2026-06-08 23:19:47"
    },
    {
      "id": 67,
      "bagId": 11,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-09T15:13:00.000Z",
      "grindSetting": 31,
      "doseG": 18,
      "yieldG": 37.4,
      "shotTimeSeconds": 24,
      "targetRatioLabel": null,
      "lagG": 8,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": null,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 2,
      "shotRating": 2,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at around 10 seconds even across Both spouts and remained that way until about 20 seconds in when it started dripping on the right spout. Taste is sour and lingering ",
      "createdAt": "2026-06-09 15:24:00",
      "updatedAt": "2026-06-09 15:24:00"
    },
    {
      "id": 68,
      "bagId": 11,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-10T16:37:00.000Z",
      "grindSetting": 30,
      "doseG": 18.1,
      "yieldG": 40.6,
      "shotTimeSeconds": 26,
      "targetRatioLabel": null,
      "lagG": 8,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": null,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 1,
      "shotRating": 1,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started on both spouts at 8 seconds and remained constant throughout. Flow is still a bit fast so will go down to grind 29.5 for the next one. Very little crema. Taste is strong acid that lingers ",
      "createdAt": "2026-06-10 16:51:22",
      "updatedAt": "2026-06-10 16:51:22"
    },
    {
      "id": 69,
      "bagId": 14,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-10T20:57:00.000Z",
      "grindSetting": 30,
      "doseG": 18.1,
      "yieldG": 32.4,
      "shotTimeSeconds": 60,
      "targetRatioLabel": null,
      "lagG": 5,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.6,
      "tasteBalance": null,
      "shotRating": null,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": true,
      "failReason": "choking",
      "notes": "Flow was very restricted, dripping throughout. The shot took 60 seconds until the machine stopped automatically. Taste is very bitter",
      "createdAt": "2026-06-10 21:05:16",
      "updatedAt": "2026-06-10 21:05:16"
    },
    {
      "id": 70,
      "bagId": 14,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-10T21:07:00.000Z",
      "grindSetting": 33,
      "doseG": 18.1,
      "yieldG": 29.2,
      "shotTimeSeconds": 60,
      "targetRatioLabel": null,
      "lagG": 5,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": null,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.3,
      "tasteBalance": null,
      "shotRating": null,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": true,
      "failReason": "choking",
      "notes": "The shot ran until the machine stopped itself at 1 minute. Dripping throughout never got a proper stream. Taste is bitter",
      "createdAt": "2026-06-10 21:13:01",
      "updatedAt": "2026-06-10 21:13:01"
    },
    {
      "id": 71,
      "bagId": 11,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-11T14:13:00.000Z",
      "grindSetting": 29.5,
      "doseG": 18,
      "yieldG": 47.5,
      "shotTimeSeconds": 26,
      "targetRatioLabel": null,
      "lagG": 8,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": null,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": 0,
      "tasteBalance": null,
      "shotRating": null,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": true,
      "failReason": "channeling",
      "notes": "Shot ran very fast through both spouts. Puck was broken when removing portafilter",
      "createdAt": "2026-06-11 14:22:46",
      "updatedAt": "2026-06-11 14:22:46"
    },
    {
      "id": 72,
      "bagId": 11,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-11T14:22:00.000Z",
      "grindSetting": 29.5,
      "doseG": 18,
      "yieldG": 45,
      "shotTimeSeconds": 26,
      "targetRatioLabel": null,
      "lagG": 9,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 2,
      "shotRating": 2,
      "flowCharacteristics": "very_fast",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Shot ran fast again even at a finer grind. Flow was also restricted at times at one spout or the other. Taste was sour to very sour",
      "createdAt": "2026-06-11 14:32:21",
      "updatedAt": "2026-06-11 14:32:21"
    },
    {
      "id": 73,
      "bagId": 14,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-11T23:29:00.000Z",
      "grindSetting": 29.5,
      "doseG": 18,
      "yieldG": 35.3,
      "shotTimeSeconds": 31,
      "targetRatioLabel": null,
      "lagG": 6,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": false,
      "grinderRetentionG": 0.2,
      "tasteBalance": 1,
      "shotRating": 3,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started across both spouts but started dripping on the right side after a few seconds, staying that way for the remainder of the shot. The left spout flowed normally. Taste is bright and very sour but it reduces in intensity with a bit of lingering",
      "createdAt": "2026-06-11 23:47:06",
      "updatedAt": "2026-06-11 23:47:06"
    },
    {
      "id": 74,
      "bagId": 11,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-12T14:38:00.000Z",
      "grindSetting": 29,
      "doseG": 18.2,
      "yieldG": 42.3,
      "shotTimeSeconds": 26,
      "targetRatioLabel": null,
      "lagG": 10,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 3,
      "shotRating": 3,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at around 8 seconds evenly across both spouts, but stopped on the right spout mid shot. Good crema, taste is slightly sour and lingering but better than past shots",
      "createdAt": "2026-06-12 14:49:57",
      "updatedAt": "2026-06-12 14:49:57"
    },
    {
      "id": 75,
      "bagId": 11,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-13T14:12:00.000Z",
      "grindSetting": 28,
      "doseG": 18,
      "yieldG": 38.5,
      "shotTimeSeconds": 26,
      "targetRatioLabel": null,
      "lagG": 7,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.2,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "normal",
      "isLocked": true,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started around 10 seconds with even flow through both spouts which remained even. Flow color changed at around 20 seconds to light color. Light crema. Taste is bright but disappears quickly. ",
      "createdAt": "2026-06-13 14:27:06",
      "updatedAt": "2026-06-13 14:27:06"
    },
    {
      "id": 76,
      "bagId": 11,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-14T14:21:00.000Z",
      "grindSetting": 28,
      "doseG": 18,
      "yieldG": 37,
      "shotTimeSeconds": 26,
      "targetRatioLabel": null,
      "lagG": 7,
      "preinfusionSeconds": 7,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.2,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started evenly across both spouts at 8 seconds and remained constant throughout the shot. Little crema. Taste was well balanced with initial acidity",
      "createdAt": "2026-06-14 14:34:57",
      "updatedAt": "2026-06-14 14:34:57"
    },
    {
      "id": 77,
      "bagId": 14,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-14T21:22:00.000Z",
      "grindSetting": 29.5,
      "doseG": 18.1,
      "yieldG": 38.6,
      "shotTimeSeconds": 52,
      "targetRatioLabel": null,
      "lagG": 6,
      "preinfusionSeconds": 7,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.2,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "dripping_restricted",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was extremely restricted throughout but the flavor is balanced. Lots of channeling with flow switching between spouts, but mostly dripping ",
      "createdAt": "2026-06-14 21:34:30",
      "updatedAt": "2026-06-14 21:34:30"
    },
    {
      "id": 78,
      "bagId": 11,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-15T14:33:00.000Z",
      "grindSetting": 27.5,
      "doseG": 18.2,
      "yieldG": 39.5,
      "shotTimeSeconds": 27,
      "targetRatioLabel": null,
      "lagG": 7,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at around 9 seconds, dark, then became lighter at around 17 seconds. Restricted through the right spout for about 6 seconds mid shot. Taste is bright at first but balanced. Light bodied",
      "createdAt": "2026-06-15 14:46:37",
      "updatedAt": "2026-06-15 14:46:37"
    },
    {
      "id": 79,
      "bagId": 15,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-16T12:58:00.000Z",
      "grindSetting": 30,
      "doseG": 18.1,
      "yieldG": 37,
      "shotTimeSeconds": 49,
      "targetRatioLabel": null,
      "lagG": 6,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.7,
      "tasteBalance": null,
      "shotRating": null,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": true,
      "failReason": "puck_collapse",
      "notes": "Flow was restricted throughout the shot starting to flow on the left spout at around 8 seconds then dripping through both for about 9 seconds then flowing again on the left only. Good crema. Flavor is acid and lingering. ",
      "createdAt": "2026-06-16 13:09:32",
      "updatedAt": "2026-06-16 13:09:32"
    },
    {
      "id": 80,
      "bagId": 15,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-16T13:10:00.000Z",
      "grindSetting": 34,
      "doseG": 18.3,
      "yieldG": 37.7,
      "shotTimeSeconds": 40,
      "targetRatioLabel": null,
      "lagG": 6,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.4,
      "tasteBalance": 4,
      "shotRating": 3,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Shot flowed constantly but only through the left spout. Channeling. Taste is balanced though with strong chocolate flavor and nice crema",
      "createdAt": "2026-06-16 13:23:22",
      "updatedAt": "2026-06-16 13:23:22"
    },
    {
      "id": 81,
      "bagId": 15,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-17T14:43:00.000Z",
      "grindSetting": 34.5,
      "doseG": 18,
      "yieldG": 36,
      "shotTimeSeconds": 39,
      "targetRatioLabel": null,
      "lagG": 6,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.7,
      "tasteBalance": 3,
      "shotRating": 3,
      "flowCharacteristics": "both_spouts_uneven",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at around 10 seconds even across both spouts before starting to drip on both. Flow re-established on the left spout at around 25 seconds. Good crema. Taste is bright at first but resolved quickly. Practice shot did not drink even though it was drinkable. This blend is proving more forgiving",
      "createdAt": "2026-06-17 14:54:58",
      "updatedAt": "2026-06-17 14:54:58"
    },
    {
      "id": 82,
      "bagId": 15,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-17T15:08:00.000Z",
      "grindSetting": 35,
      "doseG": 18.1,
      "yieldG": 43.6,
      "shotTimeSeconds": 56,
      "targetRatioLabel": null,
      "lagG": 6,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 5,
      "shotRating": 3,
      "flowCharacteristics": "dripping_restricted",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was very restricted which was surprising since I grinded coarser. Taste is slightly bitter but more balanced than the previous shot with better numbers. Flow started at 12 seconds dripping slowly and became faster and an even flow as the shot progressed, but late in the shot (30 seconds or so). Didn’t drink trying again",
      "createdAt": "2026-06-17 15:18:26",
      "updatedAt": "2026-06-17 15:18:26"
    },
    {
      "id": 83,
      "bagId": 15,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-17T15:20:00.000Z",
      "grindSetting": 34,
      "doseG": 18.1,
      "yieldG": 34.4,
      "shotTimeSeconds": 60,
      "targetRatioLabel": null,
      "lagG": 6,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 4,
      "shotRating": 3,
      "flowCharacteristics": "dripping_restricted",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Another balanced long shot. Flow was very restricted starting very late but evenly across the spouts. Taste is balanced ",
      "createdAt": "2026-06-17 15:34:11",
      "updatedAt": "2026-06-17 15:34:11"
    },
    {
      "id": 84,
      "bagId": 15,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-17T18:37:00.000Z",
      "grindSetting": 36,
      "doseG": 17.3,
      "yieldG": 36.6,
      "shotTimeSeconds": 40,
      "targetRatioLabel": null,
      "lagG": 6,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.3,
      "tasteBalance": 2,
      "shotRating": 2,
      "flowCharacteristics": "both_spouts_uneven",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was still very uneven starting to drip at around 15 seconds. I am taking my time with the wdt and coarser on the grind but still get slow pulls and very restricted and uneven flow. This time taste is more acid. But still resolved quickly.",
      "createdAt": "2026-06-17 18:47:08",
      "updatedAt": "2026-06-17 18:47:08"
    },
    {
      "id": 85,
      "bagId": 14,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-19T00:45:00.000Z",
      "grindSetting": 38,
      "doseG": 18,
      "yieldG": 36.5,
      "shotTimeSeconds": 35,
      "targetRatioLabel": null,
      "lagG": 6,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.2,
      "tasteBalance": 3,
      "shotRating": 2,
      "flowCharacteristics": "both_spouts_uneven",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started even on both spouts around 9 seconds but quickly started to switch between spouts remaining restricted throughout the rest of the shot. Light crema. Taste is bright lingering  ",
      "createdAt": "2026-06-19 01:00:32",
      "updatedAt": "2026-06-19 01:00:32"
    },
    {
      "id": 86,
      "bagId": 15,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-19T12:54:00.000Z",
      "grindSetting": 36,
      "doseG": 17.8,
      "yieldG": 40.6,
      "shotTimeSeconds": 48,
      "targetRatioLabel": null,
      "lagG": 8,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.5,
      "tasteBalance": 5,
      "shotRating": 3,
      "flowCharacteristics": "dripping_restricted",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started around 12 seconds with dripping and remained restricted throughout the shot with short moments of flow in both spouts. Taste is slightly bitter",
      "createdAt": "2026-06-19 13:16:21",
      "updatedAt": "2026-06-19 13:16:21"
    },
    {
      "id": 87,
      "bagId": 15,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-19T19:47:00.000Z",
      "grindSetting": 37.5,
      "doseG": 17.6,
      "yieldG": 36.3,
      "shotTimeSeconds": 40,
      "targetRatioLabel": null,
      "lagG": 7,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 3,
      "shotRating": 2,
      "flowCharacteristics": "dripping_restricted",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Very frustrating to still get slow shots and not find the flow even at many grind setting. Wdt for a few minutes making sure all puck was covered. Flow started on both spouts at around 10 seconds then started dripping at 15 secs on the right spout, then uneven across both spouts for the rest of the shot flowing better on the left. Taste is acid that resolves quickly for the most part ",
      "createdAt": "2026-06-19 20:05:48",
      "updatedAt": "2026-06-19 20:05:48"
    },
    {
      "id": 88,
      "bagId": 15,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-20T13:26:00.000Z",
      "grindSetting": 37.5,
      "doseG": 18,
      "yieldG": 27.5,
      "shotTimeSeconds": 60,
      "targetRatioLabel": null,
      "lagG": 7,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": null,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 3,
      "shotRating": 3,
      "flowCharacteristics": "dripping_restricted",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Acid taste that resolves mostly. Shot was very restricted again. Kept to 30 seconds of wdt. Flow started at 20 seconds and dropped mostly with a bit more flow on the left spout for 60 seconds until the machine stopped automatically. Ended with a double ristreto that I recently learned is the right pull for a flat white but I think it was still missing some of the sweet noted",
      "createdAt": "2026-06-20 13:41:43",
      "updatedAt": "2026-06-20 13:41:43"
    },
    {
      "id": 89,
      "bagId": 15,
      "equipmentProfileId": 1,
      "pulledAt": "2026-06-20T17:43:00.000Z",
      "grindSetting": 41.5,
      "doseG": 17.6,
      "yieldG": 41,
      "shotTimeSeconds": 21,
      "targetRatioLabel": null,
      "lagG": 12,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": null,
      "shotRating": null,
      "flowCharacteristics": "very_fast",
      "isLocked": false,
      "isFailed": true,
      "failReason": null,
      "notes": "Shot was fast. Tasted bitter. I was not able to oversee the shot grind 40 could help slow it down. Flow was even across the spouts though",
      "createdAt": "2026-06-20 17:56:06",
      "updatedAt": "2026-06-20 17:56:06"
    },
    {
      "id": 91,
      "bagId": 15,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-06T14:14:00.000Z",
      "grindSetting": 40,
      "doseG": 17.5,
      "yieldG": 38.1,
      "shotTimeSeconds": 34,
      "targetRatioLabel": null,
      "lagG": 7,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": true,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started even on both spouts at around 9 seconds, then started dripping on the right spout a few seconds later, but resolved after about 5 seconds, with even flow the rest of the shot. Bright punch of flavor at first but resolved quickly with a balanced taste. some Crema.",
      "createdAt": "2026-07-06 14:29:42",
      "updatedAt": "2026-07-06 14:29:42"
    },
    {
      "id": 92,
      "bagId": 14,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-06T19:53:00.000Z",
      "grindSetting": 38,
      "doseG": 17.5,
      "yieldG": 38.2,
      "shotTimeSeconds": 34,
      "targetRatioLabel": null,
      "lagG": 7,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started evenly at around 8 seconds but started dripping at around 15 seconds. Flow reestablished 8 or 10 seconds after that but was wobbly through mostly dominant on the left spout. Taste is bright that resolves quickly with a slight aftertaste ",
      "createdAt": "2026-07-06 20:07:13",
      "updatedAt": "2026-07-06 20:07:13"
    },
    {
      "id": 93,
      "bagId": 15,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-07T15:12:00.000Z",
      "grindSetting": 40,
      "doseG": 17.6,
      "yieldG": 39,
      "shotTimeSeconds": 24,
      "targetRatioLabel": null,
      "lagG": 8,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 4,
      "shotRating": 5,
      "flowCharacteristics": "normal",
      "isLocked": true,
      "isFailed": false,
      "failReason": null,
      "notes": "Balanced shot with slight bright and bitter notes. Taste reminds me of chocolate. Flow was slightly fast but even across both spouts throughout. More lag than usual which might indicate some minor channeling ",
      "createdAt": "2026-07-07 15:29:21",
      "updatedAt": "2026-07-07 15:29:21"
    },
    {
      "id": 94,
      "bagId": 15,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-08T13:54:00.000Z",
      "grindSetting": 40,
      "doseG": 17.3,
      "yieldG": 38.3,
      "shotTimeSeconds": 30,
      "targetRatioLabel": null,
      "lagG": 8,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": null,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 3,
      "shotRating": 3,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at 8 seconds even and remained throughout the shot. Taste is slightly bitter that lingers",
      "createdAt": "2026-07-08 14:06:07",
      "updatedAt": "2026-07-08 14:06:07"
    },
    {
      "id": 95,
      "bagId": 20,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-09T14:12:00.000Z",
      "grindSetting": 40,
      "doseG": 17.7,
      "yieldG": 35.9,
      "shotTimeSeconds": 30,
      "targetRatioLabel": null,
      "lagG": 7,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 3,
      "shotRating": 3,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at 8 seconds and remained mostly even throughout the shot outside of a few seconds of fast dropping on the left spout. Taste is bright which resolves quickly with a bit of aftertaste.",
      "createdAt": "2026-07-09 14:26:27",
      "updatedAt": "2026-07-09 14:26:27"
    },
    {
      "id": 96,
      "bagId": 20,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-10T14:23:00.000Z",
      "grindSetting": 39.5,
      "doseG": 18.1,
      "yieldG": 15.5,
      "shotTimeSeconds": 64,
      "targetRatioLabel": null,
      "lagG": 2,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": null,
      "shotRating": null,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": true,
      "failReason": "choking",
      "notes": null,
      "createdAt": "2026-07-10 14:33:42",
      "updatedAt": "2026-07-10 14:33:42"
    },
    {
      "id": 97,
      "bagId": 20,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-10T14:44:00.000Z",
      "grindSetting": 40,
      "doseG": 17.6,
      "yieldG": 37.3,
      "shotTimeSeconds": 34,
      "targetRatioLabel": null,
      "lagG": 7,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 3,
      "shotRating": 3,
      "flowCharacteristics": "dripping_restricted",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at around 13 seconds with slow dripping on both spouts that accelerates throughout the shot. Proper even stream started at 25 seconds. Taste is bright that lingers. Shot was more balanced after a minute or so. Good crema",
      "createdAt": "2026-07-10 14:58:32",
      "updatedAt": "2026-07-10 14:58:32"
    },
    {
      "id": 98,
      "bagId": 20,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-10T20:10:00.000Z",
      "grindSetting": 40,
      "doseG": 17.4,
      "yieldG": 37.6,
      "shotTimeSeconds": 25,
      "targetRatioLabel": null,
      "lagG": 9,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.2,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Strong flavor without acid or bitter notes. Good crema. Flow was even throughout the shot starting at about 10 seconds ",
      "createdAt": "2026-07-10 20:22:34",
      "updatedAt": "2026-07-10 20:22:34"
    },
    {
      "id": 99,
      "bagId": 20,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-11T14:20:00.000Z",
      "grindSetting": 40,
      "doseG": 17.6,
      "yieldG": 37.8,
      "shotTimeSeconds": 27,
      "targetRatioLabel": null,
      "lagG": 9,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at 10 seconds even across both spouts but then started dripping on the right spout for the remainder of the shot. The left spout flowed normally. Taste is bright but resolved, maybe a bit of channeling led to partial under extraction. Puck prep is the likely culprit ",
      "createdAt": "2026-07-11 14:29:45",
      "updatedAt": "2026-07-11 14:29:45"
    },
    {
      "id": 100,
      "bagId": 20,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-11T21:26:00.000Z",
      "grindSetting": 39.5,
      "doseG": 17,
      "yieldG": 39.5,
      "shotTimeSeconds": 32,
      "targetRatioLabel": null,
      "lagG": 9,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 5,
      "shotRating": 3,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was even at first but started dripping quickly on the right spout about 15 seconds in. Flow re-established on the right side after about 10 seconds. Taste is slightly bitter",
      "createdAt": "2026-07-11 21:39:14",
      "updatedAt": "2026-07-11 21:39:14"
    },
    {
      "id": 101,
      "bagId": 20,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-12T13:42:00.000Z",
      "grindSetting": 40,
      "doseG": 17.1,
      "yieldG": 29.7,
      "shotTimeSeconds": 21,
      "targetRatioLabel": null,
      "lagG": 7,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 5,
      "shotRating": 4,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Targeting ristretto but lag made it slightly long. Flow was even throughout the shot. Taste is strong and balanced with bright and bitter notes resolving quickly",
      "createdAt": "2026-07-12 13:51:28",
      "updatedAt": "2026-07-12 13:51:28"
    },
    {
      "id": 102,
      "bagId": 20,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-13T15:34:00.000Z",
      "grindSetting": 40,
      "doseG": 17.5,
      "yieldG": 26.8,
      "shotTimeSeconds": 23,
      "targetRatioLabel": null,
      "lagG": 4,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": null,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started even but started to drip on the right spout again after a few seconds. Stopped for a rosstretto but the lag made it a short espresso. Taste was bright but balanced ",
      "createdAt": "2026-07-13 15:49:21",
      "updatedAt": "2026-07-13 15:49:21"
    },
    {
      "id": 103,
      "bagId": 20,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-14T14:25:00.000Z",
      "grindSetting": 40,
      "doseG": 17.6,
      "yieldG": 37,
      "shotTimeSeconds": 29,
      "targetRatioLabel": "Espresso",
      "lagG": 7,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.4,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Bright but not offensive or lingering. Flow started at around 7 seconds even on both spouts with short moments of fast dripping across both throughout the shot",
      "createdAt": "2026-07-14 14:40:03",
      "updatedAt": "2026-07-14 14:40:03"
    },
    {
      "id": 104,
      "bagId": 20,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-15T15:53:00.000Z",
      "grindSetting": 40,
      "doseG": 17.5,
      "yieldG": 26.6,
      "shotTimeSeconds": 21,
      "targetRatioLabel": "Ristretto",
      "lagG": 7,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 4,
      "shotRating": 5,
      "flowCharacteristics": "normal",
      "isLocked": true,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was even across both spouts throughout the shot. Stoped slightly late. Flavor was strong and balanced without any predominant notes. ",
      "createdAt": "2026-07-15 16:15:08",
      "updatedAt": "2026-07-15 16:15:08"
    },
    {
      "id": 105,
      "bagId": 20,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-15T18:56:00.000Z",
      "grindSetting": 40,
      "doseG": 17.5,
      "yieldG": 28.5,
      "shotTimeSeconds": 21,
      "targetRatioLabel": "Ristretto",
      "lagG": 10,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 3,
      "shotRating": 3,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at around 10 seconds even across both spouts with a short period where their right spout drilled per quickly before destabilizing after a few seconds.  Very long lag this time with coffee continuing to drip for more than a minute after stopping. \r\nTaste was slightly acid but not lingering. Not as good as the one this morning though",
      "createdAt": "2026-07-15 19:35:24",
      "updatedAt": "2026-07-15 19:35:24"
    },
    {
      "id": 106,
      "bagId": 20,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-16T15:03:00.000Z",
      "grindSetting": 40,
      "doseG": 17.5,
      "yieldG": 26.1,
      "shotTimeSeconds": 21,
      "targetRatioLabel": "Ristretto",
      "lagG": 8,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was even across both spouts throughout the shot. Taste is bright with out overpowering or lingering too much",
      "createdAt": "2026-07-16 15:13:30",
      "updatedAt": "2026-07-16 15:13:30"
    },
    {
      "id": 107,
      "bagId": 16,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-17T16:31:00.000Z",
      "grindSetting": 40,
      "doseG": 17.5,
      "yieldG": 51.1,
      "shotTimeSeconds": 16,
      "targetRatioLabel": "Espresso",
      "lagG": 8,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "very_fast",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started very quick and very fast throughout the shot. Body is light, watery. Taste is surprisingly balanced with light lingering acid and bitter notes. ",
      "createdAt": "2026-07-17 17:41:09",
      "updatedAt": "2026-07-17 17:41:09"
    },
    {
      "id": 108,
      "bagId": 16,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-17T21:02:00.000Z",
      "grindSetting": 34,
      "doseG": 17.5,
      "yieldG": 37,
      "shotTimeSeconds": 15,
      "targetRatioLabel": "Espresso",
      "lagG": 17,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 3,
      "shotRating": 4,
      "flowCharacteristics": "very_fast",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was very fast again even with the finer grind. Taste was slightly sour that lingers and lacking body. Not bad though although clearly underextracted",
      "createdAt": "2026-07-17 21:18:19",
      "updatedAt": "2026-07-17 21:18:19"
    },
    {
      "id": 109,
      "bagId": 16,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-18T13:40:00.000Z",
      "grindSetting": 29,
      "doseG": 18,
      "yieldG": 39.4,
      "shotTimeSeconds": 24,
      "targetRatioLabel": "Espresso",
      "lagG": 10,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.4,
      "tasteBalance": 3,
      "shotRating": 3,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was even across both spouts starting at around 12 seconds. Slower than previous shots but still fast. Taste was bright and lingering with fruity tones. Even though the numbers improved I seem to have preferred the taste of the previous shots better. Still under extracting so planning to reduce grind by 1.5 to 2 clicks for the next shot ",
      "createdAt": "2026-07-18 13:59:57",
      "updatedAt": "2026-07-18 13:59:57"
    },
    {
      "id": 110,
      "bagId": 16,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-18T21:02:00.000Z",
      "grindSetting": 27.5,
      "doseG": 18,
      "yieldG": 38.6,
      "shotTimeSeconds": 19,
      "targetRatioLabel": "Espresso",
      "lagG": 10,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 2,
      "shotRating": 2,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at around 9 seconds even across spouts but the shot ran fast. Taste is sour and lingering, curious why we went faster with a finer grind, maybe channeling that was not evident with the spouts flow or just the bean that needs to degas a few more days to be more stable and constant",
      "createdAt": "2026-07-18 21:14:30",
      "updatedAt": "2026-07-18 21:14:30"
    },
    {
      "id": 111,
      "bagId": 16,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-19T14:44:00.000Z",
      "grindSetting": 27,
      "doseG": 17.7,
      "yieldG": 39.1,
      "shotTimeSeconds": 23,
      "targetRatioLabel": "Espresso",
      "lagG": 10,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started even fly around 10 seconds with a slow and steady flow. After about 5 seconds it started dripping on the left spout but recovered quickly. The spout remained slightly wobbly for the rest of the shot. The right spout gained speed and was flowing fast by the end. Taste is well balanced without lingering flavors. Still light body due to the long pull. Channeling not fully resolved",
      "createdAt": "2026-07-19 15:11:35",
      "updatedAt": "2026-07-19 15:11:35"
    },
    {
      "id": 112,
      "bagId": 16,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-20T16:25:00.000Z",
      "grindSetting": 26,
      "doseG": 17.6,
      "yieldG": 38.5,
      "shotTimeSeconds": 24,
      "targetRatioLabel": "Espresso",
      "lagG": 10,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "normal",
      "isLocked": true,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow starter at 11 seconds and was even throughout the shot, changing from dark brown to light brown. Taste was balanced without lingering notes. Still not a fan of the notes on this bean. ",
      "createdAt": "2026-07-20 16:48:26",
      "updatedAt": "2026-07-20 16:48:26"
    },
    {
      "id": 113,
      "bagId": 16,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-21T12:57:00.000Z",
      "grindSetting": 25.5,
      "doseG": 17.5,
      "yieldG": 41.4,
      "shotTimeSeconds": 24,
      "targetRatioLabel": "Espresso",
      "lagG": 11,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 3,
      "shotRating": 4,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at 10 seconds and stayed constant throughout the shot on both spouts. Shot still ran fast. Taste is slightly bright but not lingering ",
      "createdAt": "2026-07-21 13:04:43",
      "updatedAt": "2026-07-21 13:04:43"
    },
    {
      "id": 114,
      "bagId": 19,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-22T16:13:00.000Z",
      "grindSetting": 26,
      "doseG": 17.6,
      "yieldG": 39.1,
      "shotTimeSeconds": 21,
      "targetRatioLabel": "Espresso",
      "lagG": 8,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 2,
      "shotRating": 3,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at 9 seconds evenly but quickly started dripping and recovering on the right spout which remained for the rest of the shot. Slight channeling most probably due to puck prep and over distribution. Taste is bright with lingering acidity. Tones remind me of strawberry",
      "createdAt": "2026-07-22 16:31:49",
      "updatedAt": "2026-07-22 16:31:49"
    },
    {
      "id": 115,
      "bagId": 21,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-23T00:24:00.000Z",
      "grindSetting": 39.5,
      "doseG": 18.8,
      "yieldG": 36.4,
      "shotTimeSeconds": 28,
      "targetRatioLabel": "Espresso",
      "lagG": 8,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.8,
      "tasteBalance": 6,
      "shotRating": 3,
      "flowCharacteristics": "dripping_restricted",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "A bit of a false start because I turned off the scale by mistake when starting the shot. Flow started at around 10 seconds even and slow on both spouts. At around 16 seconds it started dripping on the right spout and shortly after on the left, dripping more and more slowly throughout the shot. Lag was still long. Taste was bitter and lingering. Over extracted so will try a few clocks coarser next time bit keeping in mind shot speed is on the lower end of the desired range. Bitterness does not allow me to taste other notes",
      "createdAt": "2026-07-23 00:44:25",
      "updatedAt": "2026-07-23 00:44:25"
    },
    {
      "id": 116,
      "bagId": 18,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-23T14:19:00.000Z",
      "grindSetting": 26,
      "doseG": 17.8,
      "yieldG": 30,
      "shotTimeSeconds": 60,
      "targetRatioLabel": "Espresso",
      "lagG": 8,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 5,
      "shotRating": 3,
      "flowCharacteristics": "dripping_restricted",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at 15 seconds very restricted in both spouts, dripping slowly for the duration of the shot until the machine stopped at 60 seconds. Taste is slightly bitter but not lingering which is surprising. Will try a coarser setting next time to promote a more even and unrestricted flow",
      "createdAt": "2026-07-23 14:31:43",
      "updatedAt": "2026-07-23 14:31:43"
    },
    {
      "id": 117,
      "bagId": 21,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-23T23:48:00.000Z",
      "grindSetting": 42,
      "doseG": 18.6,
      "yieldG": 39.4,
      "shotTimeSeconds": 23,
      "targetRatioLabel": "Espresso",
      "lagG": 9,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.4,
      "tasteBalance": 5,
      "shotRating": 3,
      "flowCharacteristics": null,
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at 8 seconds through both spouts, then shortly after started to quickly drop on the right spout before restablishing a few seconds later. Flow was even the rest of the shot but seemed faster on the left spout. The shot pulled fast again. I’m ver all flavor was complex. At first it was bitter and tasted like burnt coffee but quickly changed with sour notes. I don’t know if that is the coffee profile or uneven extraction over and under extracting. Will go one click finer the next pull and be more careful with puck prep",
      "createdAt": "2026-07-24 00:18:09",
      "updatedAt": "2026-07-24 00:18:09"
    },
    {
      "id": 118,
      "bagId": 18,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-24T14:43:00.000Z",
      "grindSetting": 34,
      "doseG": 17.8,
      "yieldG": 37.2,
      "shotTimeSeconds": 27,
      "targetRatioLabel": "Espresso",
      "lagG": 8,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 4,
      "shotRating": 3,
      "flowCharacteristics": "both_spouts_uneven",
      "isLocked": true,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at around 10 seconds across both spouts. Flow was even with alternating moments of fast dripping on both sides on the first half of the pull. Taste was bright but resolved quickly so marking it as balanced",
      "createdAt": "2026-07-24 15:01:24",
      "updatedAt": "2026-07-24 15:01:24"
    },
    {
      "id": 119,
      "bagId": 21,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-24T18:41:00.000Z",
      "grindSetting": 41,
      "doseG": 18.8,
      "yieldG": 42,
      "shotTimeSeconds": 24,
      "targetRatioLabel": "Espresso",
      "lagG": 9,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.2,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started evenly across both spouts at 10 seconds. Mid way through the shot the right spout started to wobble and eventually stopped indicating late channeling that accelerated the flow on the other spout. Taste was strong but balanced with the bitter taste resolving quickly.",
      "createdAt": "2026-07-24 18:54:54",
      "updatedAt": "2026-07-24 18:54:54"
    },
    {
      "id": 120,
      "bagId": 18,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-25T14:14:00.000Z",
      "grindSetting": 33.5,
      "doseG": 17.6,
      "yieldG": 40.1,
      "shotTimeSeconds": 27,
      "targetRatioLabel": "Espresso",
      "lagG": 8,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 3,
      "shotRating": 3,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started even at 10 se inda and remained that way for the duration of the shot outside of a second or two of fast dripping on the right side mid shot. I stopped the machine too late closer to 32 grams. I am still seeing more lag lately. Taste had a strong sour taste that resolved immediately which could be bean profile",
      "createdAt": "2026-07-25 14:23:32",
      "updatedAt": "2026-07-25 14:23:32"
    },
    {
      "id": 121,
      "bagId": 21,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-26T02:21:00.000Z",
      "grindSetting": 41.5,
      "doseG": 18,
      "yieldG": 39,
      "shotTimeSeconds": 21,
      "targetRatioLabel": "Espresso",
      "lagG": 10,
      "preinfusionSeconds": 7,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.3,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started evenly around 10 seconds but then started dripping on the right spout for the rest of the shot without recovering. Taste is strong again and still don’t understand if it is the bean profile or an extraction issue. This time there are some bitter and sour notes that somehow cancel each other and just leave a strong smoky flavor. ",
      "createdAt": "2026-07-26 02:38:26",
      "updatedAt": "2026-07-26 02:38:26"
    },
    {
      "id": 122,
      "bagId": 18,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-26T13:19:00.000Z",
      "grindSetting": 33,
      "doseG": 17.7,
      "yieldG": 36.4,
      "shotTimeSeconds": 27,
      "targetRatioLabel": "Espresso",
      "lagG": 8,
      "preinfusionSeconds": 7,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 3,
      "shotRating": 3,
      "flowCharacteristics": "normal",
      "isLocked": true,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at 10 seconds even across spouts and remained tat way throughout the shot. Lag is still long but stoped the shot earlier which ended up at the target ratio. Taste was bright but resolving. I think I prefer other beans in terms of taste but happy to have dialed in properly",
      "createdAt": "2026-07-26 13:40:25",
      "updatedAt": "2026-07-26 13:40:25"
    },
    {
      "id": 123,
      "bagId": 21,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-26T23:13:00.000Z",
      "grindSetting": 41,
      "doseG": 18.5,
      "yieldG": 38.5,
      "shotTimeSeconds": 25,
      "targetRatioLabel": "Espresso",
      "lagG": 10,
      "preinfusionSeconds": 7,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.3,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was even starting at 10 seconds. Flowing evenly throughout the shot. Stopped the clock at 28g with the clock marking 25 seconds getting to 38 with lag only. Taste is strong again. No sour or bitter notes this time so confirmed the strong smoky flavor is the bean profile. Still undecided if it is for me ",
      "createdAt": "2026-07-26 23:46:23",
      "updatedAt": "2026-07-26 23:46:23"
    },
    {
      "id": 124,
      "bagId": 18,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-27T15:51:00.000Z",
      "grindSetting": 33,
      "doseG": 17.8,
      "yieldG": 25.5,
      "shotTimeSeconds": 21,
      "targetRatioLabel": "Ristretto",
      "lagG": 8,
      "preinfusionSeconds": 7,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": true,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at around 12 seconds restricted in the right side. Flow corrected 6 to 7 seconds later. I stopped the shot at 16 ish seconds to target ristretto. Taste was bright but not lingering. Good body and very dark color after extraction. ",
      "createdAt": "2026-07-27 16:08:33",
      "updatedAt": "2026-07-27 16:08:33"
    },
    {
      "id": 125,
      "bagId": 21,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-27T21:24:00.000Z",
      "grindSetting": 40.5,
      "doseG": 18.4,
      "yieldG": 28,
      "shotTimeSeconds": 16,
      "targetRatioLabel": "Ristretto",
      "lagG": 10,
      "preinfusionSeconds": 7,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.4,
      "tasteBalance": 4,
      "shotRating": 3,
      "flowCharacteristics": "very_fast",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was even across both spouts throughout the shot. Flow was fast getting to 18h in 16 seconds and 28g after lag. Taste was strong again with more texture given the ristretto shot. Shot rating is not an extraction situation but bean profile ",
      "createdAt": "2026-07-27 21:38:08",
      "updatedAt": "2026-07-27 21:38:08"
    },
    {
      "id": 126,
      "bagId": 18,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-28T14:01:00.000Z",
      "grindSetting": 33,
      "doseG": 17.7,
      "yieldG": 28.3,
      "shotTimeSeconds": 21,
      "targetRatioLabel": "Ristretto",
      "lagG": 9,
      "preinfusionSeconds": 7,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 3,
      "shotRating": 4,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was uneven from the start, dripping on the left spout and flowing properly I. The right side. Flow restablished on the left for the last third of the shot. Taste was bright but mostly attributed to bean profile, not intrusive",
      "createdAt": "2026-07-28 14:14:54",
      "updatedAt": "2026-07-28 14:14:54"
    },
    {
      "id": 127,
      "bagId": 18,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-29T14:34:00.000Z",
      "grindSetting": 33,
      "doseG": 17.6,
      "yieldG": 28.2,
      "shotTimeSeconds": 21,
      "targetRatioLabel": "Ristretto",
      "lagG": 8,
      "preinfusionSeconds": 7,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 3,
      "shotRating": 3,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was even across both spouts starting army around 10 seconds. Taste was bright and lingering",
      "createdAt": "2026-07-29 14:48:37",
      "updatedAt": "2026-07-29 14:48:37"
    },
    {
      "id": 128,
      "bagId": 21,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-29T21:15:00.000Z",
      "grindSetting": 40.5,
      "doseG": 18.6,
      "yieldG": 28.8,
      "shotTimeSeconds": 17,
      "targetRatioLabel": "Ristretto",
      "lagG": 8,
      "preinfusionSeconds": 7,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 4,
      "shotRating": 4,
      "flowCharacteristics": "very_fast",
      "isLocked": true,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was even but fast throughout the shot. Taste is strong with a slight hint of brightness. The most ver powering taste of the bean lingers. Very little crema ",
      "createdAt": "2026-07-29 21:44:09",
      "updatedAt": "2026-07-29 21:44:09"
    },
    {
      "id": 129,
      "bagId": 18,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-30T12:46:00.000Z",
      "grindSetting": 32.5,
      "doseG": 18.6,
      "yieldG": 29.7,
      "shotTimeSeconds": 23,
      "targetRatioLabel": "Ristretto",
      "lagG": 8,
      "preinfusionSeconds": 6,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.2,
      "tasteBalance": 2,
      "shotRating": 3,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was started even across both spouts at 10 seconds. There were a few seconds of fast dripping on the right spout which resolved. Taste today is acid that lingers for a bit",
      "createdAt": "2026-07-30 13:01:16",
      "updatedAt": "2026-07-30 13:01:16"
    },
    {
      "id": 130,
      "bagId": 21,
      "equipmentProfileId": 1,
      "pulledAt": "2026-07-31T00:32:00.000Z",
      "grindSetting": 39.5,
      "doseG": 18.3,
      "yieldG": 28.1,
      "shotTimeSeconds": 19,
      "targetRatioLabel": "Ristretto",
      "lagG": 10,
      "preinfusionSeconds": 7,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.2,
      "tasteBalance": 3,
      "shotRating": 2,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow starter at 11 seconds evenly across spouts and remained that way for the remainder of the shot. Taste is slightly sour today and lingers. With the strong taste not my best shot",
      "createdAt": "2026-07-31 00:47:55",
      "updatedAt": "2026-07-31 00:47:55"
    },
    {
      "id": 131,
      "bagId": 17,
      "equipmentProfileId": 1,
      "pulledAt": "2026-08-01T13:11:00.000Z",
      "grindSetting": 32.5,
      "doseG": 17.8,
      "yieldG": 34.5,
      "shotTimeSeconds": 14,
      "targetRatioLabel": "Espresso",
      "lagG": 7,
      "preinfusionSeconds": 7,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 3,
      "shotRating": 3,
      "flowCharacteristics": "very_fast",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started almost immediately after preinfusion evenly but with fast flow. Resulting shot was watery and light in texture with lingering sour notes but not bad taste iverall",
      "createdAt": "2026-08-01 13:27:00",
      "updatedAt": "2026-08-01 13:27:00"
    },
    {
      "id": 132,
      "bagId": 21,
      "equipmentProfileId": 1,
      "pulledAt": "2026-08-01T21:26:00.000Z",
      "grindSetting": 38.5,
      "doseG": 18.5,
      "yieldG": 28.6,
      "shotTimeSeconds": 20,
      "targetRatioLabel": "Ristretto",
      "lagG": 10,
      "preinfusionSeconds": 7,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 2,
      "shotRating": 2,
      "flowCharacteristics": "one_spout_dominant",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at around 10 seconds a bit fast with moments of quick dripping but resolving on the left side. Taste was sour and lingering, not hreat",
      "createdAt": "2026-08-01 21:43:03",
      "updatedAt": "2026-08-01 21:43:03"
    },
    {
      "id": 133,
      "bagId": 17,
      "equipmentProfileId": 1,
      "pulledAt": "2026-08-02T13:34:00.000Z",
      "grindSetting": 27,
      "doseG": 17.9,
      "yieldG": 40.8,
      "shotTimeSeconds": 21,
      "targetRatioLabel": "Espresso",
      "lagG": 12,
      "preinfusionSeconds": 7,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 3,
      "shotRating": 2,
      "flowCharacteristics": "very_fast",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was even starting at 10 seconds but quickly becoming fast indicating need for finer grind or a major channeling issue. Taste is all over the place but might be bean profile. Either way not my favorita shot so far",
      "createdAt": "2026-08-02 13:50:30",
      "updatedAt": "2026-08-02 13:50:30"
    },
    {
      "id": 134,
      "bagId": 21,
      "equipmentProfileId": 1,
      "pulledAt": "2026-08-02T23:53:00.000Z",
      "grindSetting": 36.5,
      "doseG": 18.6,
      "yieldG": 28.3,
      "shotTimeSeconds": 23,
      "targetRatioLabel": "Ristretto",
      "lagG": 8,
      "preinfusionSeconds": 7,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.1,
      "tasteBalance": 2,
      "shotRating": 3,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was even starting at 10 seconds. Numbers looked great but the taste was sour. It improved with time and with the milk but there was still a lingering flavor ",
      "createdAt": "2026-08-03 00:09:07",
      "updatedAt": "2026-08-03 00:09:07"
    },
    {
      "id": 135,
      "bagId": 17,
      "equipmentProfileId": 1,
      "pulledAt": "2026-08-03T14:28:00.000Z",
      "grindSetting": 25,
      "doseG": 17.7,
      "yieldG": 45,
      "shotTimeSeconds": 21,
      "targetRatioLabel": "Espresso",
      "lagG": 12,
      "preinfusionSeconds": 7,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 3,
      "shotRating": 4,
      "flowCharacteristics": "very_fast",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow was quick starting evenly at 10 seconds. I stopped it too late at 33 grams. Taste was slightly sour with light body but no lingering flavors",
      "createdAt": "2026-08-03 14:44:15",
      "updatedAt": "2026-08-03 14:44:15"
    },
    {
      "id": 136,
      "bagId": 21,
      "equipmentProfileId": 1,
      "pulledAt": "2026-08-03T21:02:00.000Z",
      "grindSetting": 36,
      "doseG": 18.3,
      "yieldG": 27,
      "shotTimeSeconds": 23,
      "targetRatioLabel": "Ristretto",
      "lagG": 8,
      "preinfusionSeconds": 7,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.3,
      "tasteBalance": 3,
      "shotRating": 3,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started evenly at 10 seconds and remained even throughout the shot. Taste was bright but resolving",
      "createdAt": "2026-08-03 21:16:03",
      "updatedAt": "2026-08-03 21:16:03"
    },
    {
      "id": 137,
      "bagId": 19,
      "equipmentProfileId": 1,
      "pulledAt": "2026-08-04T14:17:00.000Z",
      "grindSetting": 26,
      "doseG": 17.9,
      "yieldG": 38.7,
      "shotTimeSeconds": 21,
      "targetRatioLabel": "Espresso",
      "lagG": 9,
      "preinfusionSeconds": 7,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0,
      "tasteBalance": 4,
      "shotRating": 3,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Flow started at 10 seconds even across both spouts but ran fast. Flavor is bright that dissipates quickly but mostly balanced. The bean has a strong taste of strawberry which is not my favorita ",
      "createdAt": "2026-08-04 14:35:04",
      "updatedAt": "2026-08-04 14:35:04"
    },
    {
      "id": 138,
      "bagId": 21,
      "equipmentProfileId": 1,
      "pulledAt": "2026-08-04T22:13:00.000Z",
      "grindSetting": 35,
      "doseG": 18.6,
      "yieldG": 25.5,
      "shotTimeSeconds": 25,
      "targetRatioLabel": "Ristretto",
      "lagG": 8,
      "preinfusionSeconds": 7,
      "temperatureC": 93,
      "pressureBar": 9,
      "springWeightLbs": 30,
      "wdtUsed": true,
      "distributionToolUsed": true,
      "grinderRetentionG": 0.2,
      "tasteBalance": 3,
      "shotRating": 4,
      "flowCharacteristics": "normal",
      "isLocked": false,
      "isFailed": false,
      "failReason": null,
      "notes": "Taste was strong and bright but quickly resolving. Numbers for this shot improved. Still sour and bitter notes indicate some potential channeling",
      "createdAt": "2026-08-04 22:25:51",
      "updatedAt": "2026-08-04 22:25:51"
    }
  ],
  "drinks": [
    {
      "id": 1,
      "shotId": 14,
      "milkType": null,
      "milkQuantityMl": 120,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 3,
      "notes": "Milk balanced the drink but still sour undertone. Drinkable. Steam art still a work in progress",
      "latteArtRating": null,
      "createdAt": "2026-05-25 13:42:38",
      "updatedAt": "2026-05-25 13:42:38"
    },
    {
      "id": 2,
      "shotId": 18,
      "milkType": "whole",
      "milkQuantityMl": 120,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 3,
      "notes": "Slightly sour but the milk helped balance the drink",
      "latteArtRating": null,
      "createdAt": "2026-05-26 14:02:03",
      "updatedAt": "2026-05-26 14:02:03"
    },
    {
      "id": 4,
      "shotId": 35,
      "milkType": "whole",
      "milkQuantityMl": 140,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Drink was balanced with slight bitter notes from the coffee. Reducing the bitterness and increasing the sweetness would continue to improve the drink ",
      "latteArtRating": null,
      "createdAt": "2026-05-27 21:29:49",
      "updatedAt": "2026-05-27 21:29:49"
    },
    {
      "id": 5,
      "shotId": 36,
      "milkType": "whole",
      "milkQuantityMl": 160,
      "foamMl": null,
      "hotWaterMl": null,
      "detectedDrinkName": "Dirty Chai",
      "isIced": false,
      "overallRating": 5,
      "notes": "I added 40ml of sweetened chai concentrate. The resulting drink was well balanced, without any sourness, not overly sweet and maintaining the notes of the chai and coffee",
      "latteArtRating": null,
      "createdAt": "2026-05-28 14:29:58",
      "updatedAt": "2026-05-28 14:29:58"
    },
    {
      "id": 6,
      "shotId": 37,
      "milkType": null,
      "milkQuantityMl": null,
      "foamMl": null,
      "hotWaterMl": null,
      "detectedDrinkName": "Affogato",
      "isIced": false,
      "overallRating": 3,
      "notes": "With the ice cream the sourness disappeared for the most part. Ice cream might be doing more here but the balance between acid and sweet is good. parts without much ice cream remain acidic",
      "latteArtRating": null,
      "createdAt": "2026-05-29 00:01:23",
      "updatedAt": "2026-05-29 00:01:23"
    },
    {
      "id": 7,
      "shotId": 38,
      "milkType": null,
      "milkQuantityMl": 240,
      "foamMl": 20,
      "hotWaterMl": null,
      "detectedDrinkName": "Latte",
      "isIced": false,
      "overallRating": 3,
      "notes": null,
      "latteArtRating": null,
      "createdAt": "2026-05-29 15:04:58",
      "updatedAt": "2026-05-29 15:04:58"
    },
    {
      "id": 8,
      "shotId": 39,
      "milkType": "whole",
      "milkQuantityMl": 120,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 2,
      "notes": "Milk balanced out most of the acid tones. still some bitter/sour notes remain",
      "latteArtRating": null,
      "createdAt": "2026-05-30 01:46:37",
      "updatedAt": "2026-05-30 01:46:37"
    },
    {
      "id": 9,
      "shotId": 42,
      "milkType": "whole",
      "milkQuantityMl": 120,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 3,
      "notes": "Bitter due to the coffee over extraction ",
      "latteArtRating": null,
      "createdAt": "2026-05-30 14:21:40",
      "updatedAt": "2026-05-30 14:21:40"
    },
    {
      "id": 10,
      "shotId": 47,
      "milkType": "whole",
      "milkQuantityMl": 30,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": null,
      "isIced": false,
      "overallRating": 3,
      "notes": "Drink was better balanced with bitter tones and a concentrated coffee flavor",
      "latteArtRating": null,
      "createdAt": "2026-05-31 14:30:28",
      "updatedAt": "2026-05-31 14:30:28"
    },
    {
      "id": 11,
      "shotId": 48,
      "milkType": "whole",
      "milkQuantityMl": 200,
      "foamMl": null,
      "hotWaterMl": null,
      "detectedDrinkName": "Dirty Chai",
      "isIced": false,
      "overallRating": 2,
      "notes": "Too much milk watered down the coffee and chai flavors even with the strong sour flavor of the shot",
      "latteArtRating": null,
      "createdAt": "2026-05-31 19:48:34",
      "updatedAt": "2026-05-31 19:48:34"
    },
    {
      "id": 12,
      "shotId": 49,
      "milkType": null,
      "milkQuantityMl": null,
      "foamMl": null,
      "hotWaterMl": null,
      "detectedDrinkName": "Affogato",
      "isIced": false,
      "overallRating": 4,
      "notes": "The ice cream masks the acidity very well and provides a balanced and sweet flavor. The more coffee forward spoonfuls are still acid ",
      "latteArtRating": null,
      "createdAt": "2026-05-31 20:00:53",
      "updatedAt": "2026-05-31 20:00:53"
    },
    {
      "id": 13,
      "shotId": 52,
      "milkType": "whole",
      "milkQuantityMl": 120,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 5,
      "notes": "Well balanced with good taste between the milk and the coffee",
      "latteArtRating": null,
      "createdAt": "2026-06-01 16:24:08",
      "updatedAt": "2026-06-01 16:24:08"
    },
    {
      "id": 14,
      "shotId": 53,
      "milkType": "whole",
      "milkQuantityMl": 150,
      "foamMl": null,
      "hotWaterMl": null,
      "detectedDrinkName": "Dirty Chai",
      "isIced": false,
      "overallRating": 5,
      "notes": "1:1 espresso to chai concentrate ratio with 130 ml of milk. Taste is well balanced with a clear presence of coffee and spice notes",
      "latteArtRating": null,
      "createdAt": "2026-06-01 19:33:34",
      "updatedAt": "2026-06-01 19:33:34"
    },
    {
      "id": 15,
      "shotId": 54,
      "milkType": null,
      "milkQuantityMl": 110,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Well balanced with bitter tones from the coffee ",
      "latteArtRating": null,
      "createdAt": "2026-06-03 14:08:24",
      "updatedAt": "2026-06-03 14:08:24"
    },
    {
      "id": 16,
      "shotId": 55,
      "milkType": "whole",
      "milkQuantityMl": 140,
      "foamMl": 0,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 5,
      "notes": "Using sweetened chai concentrate balanced out the sour taste.",
      "latteArtRating": null,
      "createdAt": "2026-06-03 23:22:16",
      "updatedAt": "2026-06-03 23:22:16"
    },
    {
      "id": 17,
      "shotId": 56,
      "milkType": "whole",
      "milkQuantityMl": 120,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 2,
      "notes": "Milk helped balance the drink removing the sour flavors. Bitter lingering flavors remained",
      "latteArtRating": null,
      "createdAt": "2026-06-04 18:26:09",
      "updatedAt": "2026-06-04 18:26:09"
    },
    {
      "id": 18,
      "shotId": 57,
      "milkType": "whole",
      "milkQuantityMl": 150,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Dirty Chai",
      "isIced": false,
      "overallRating": 2,
      "notes": "bitter aftertaste",
      "latteArtRating": null,
      "createdAt": "2026-06-04 21:23:34",
      "updatedAt": "2026-06-04 21:23:34"
    },
    {
      "id": 19,
      "shotId": 58,
      "milkType": "whole",
      "milkQuantityMl": 120,
      "foamMl": 20,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 3,
      "notes": "Bitterness of the shot still throwing off the balance",
      "latteArtRating": null,
      "createdAt": "2026-06-05 15:55:00",
      "updatedAt": "2026-06-05 15:55:00"
    },
    {
      "id": 20,
      "shotId": 59,
      "milkType": null,
      "milkQuantityMl": null,
      "foamMl": null,
      "hotWaterMl": null,
      "detectedDrinkName": "Affogato",
      "isIced": false,
      "overallRating": 3,
      "notes": null,
      "latteArtRating": null,
      "createdAt": "2026-06-06 00:18:17",
      "updatedAt": "2026-06-06 00:18:17"
    },
    {
      "id": 21,
      "shotId": 60,
      "milkType": null,
      "milkQuantityMl": null,
      "foamMl": 5,
      "hotWaterMl": null,
      "detectedDrinkName": null,
      "isIced": false,
      "overallRating": null,
      "notes": "Did not taste, for someone else",
      "latteArtRating": null,
      "createdAt": "2026-06-06 00:29:16",
      "updatedAt": "2026-06-06 00:29:16"
    },
    {
      "id": 22,
      "shotId": 61,
      "milkType": "whole",
      "milkQuantityMl": 120,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 5,
      "notes": "Very nice balance. Latte art is still not there at all",
      "latteArtRating": null,
      "createdAt": "2026-06-06 13:03:49",
      "updatedAt": "2026-06-06 13:03:49"
    },
    {
      "id": 23,
      "shotId": 62,
      "milkType": "whole",
      "milkQuantityMl": 150,
      "foamMl": null,
      "hotWaterMl": null,
      "detectedDrinkName": "Latte",
      "isIced": false,
      "overallRating": 5,
      "notes": "Well balanced with the sweetened chao",
      "latteArtRating": null,
      "createdAt": "2026-06-06 23:42:00",
      "updatedAt": "2026-06-06 23:42:00"
    },
    {
      "id": 24,
      "shotId": 63,
      "milkType": "whole",
      "milkQuantityMl": 110,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Well balanced drink with strong coffee flavor. Still some bitter/sour notes lingering after a while",
      "latteArtRating": null,
      "createdAt": "2026-06-07 13:33:06",
      "updatedAt": "2026-06-07 13:33:06"
    },
    {
      "id": 25,
      "shotId": 64,
      "milkType": "whole",
      "milkQuantityMl": 120,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Milk balanced the sourness",
      "latteArtRating": null,
      "createdAt": "2026-06-07 20:31:43",
      "updatedAt": "2026-06-07 20:31:43"
    },
    {
      "id": 26,
      "shotId": 65,
      "milkType": "whole",
      "milkQuantityMl": 120,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Milk helped balance the drink. Still some aftertaste notes that could improve. Still not there with the latte art, but I was able to create a smooth canvas and pour some dots of foam here and there",
      "latteArtRating": "pollock",
      "createdAt": "2026-06-08 16:06:52",
      "updatedAt": "2026-06-08 16:06:52"
    },
    {
      "id": 27,
      "shotId": 67,
      "milkType": "whole",
      "milkQuantityMl": 120,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Sourness disappeared with the milk. Latte art looks like a. Atomic bomb mushroom but improvement for sure",
      "latteArtRating": "calder",
      "createdAt": "2026-06-09 15:24:00",
      "updatedAt": "2026-06-09 15:24:00"
    },
    {
      "id": 28,
      "shotId": 68,
      "milkType": "whole",
      "milkQuantityMl": 100,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 1,
      "notes": "A bit of a burnt aftertaste lingering from the extreme acidity of the shot. Latte art is a big blob ",
      "latteArtRating": "pollock",
      "createdAt": "2026-06-10 16:51:22",
      "updatedAt": "2026-06-10 16:51:22"
    },
    {
      "id": 29,
      "shotId": 72,
      "milkType": "whole",
      "milkQuantityMl": 120,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 2,
      "notes": "Aftertaste and bland flavor",
      "latteArtRating": "pollock",
      "createdAt": "2026-06-11 14:32:21",
      "updatedAt": "2026-06-11 14:32:21"
    },
    {
      "id": 30,
      "shotId": 73,
      "milkType": "whole",
      "milkQuantityMl": 240,
      "foamMl": 20,
      "hotWaterMl": null,
      "detectedDrinkName": "Latte",
      "isIced": false,
      "overallRating": 4,
      "notes": "Milky and balanced flavor without lingering notes",
      "latteArtRating": "pollock",
      "createdAt": "2026-06-11 23:47:06",
      "updatedAt": "2026-06-11 23:47:06"
    },
    {
      "id": 31,
      "shotId": 74,
      "milkType": "whole",
      "milkQuantityMl": 60,
      "foamMl": 60,
      "hotWaterMl": null,
      "detectedDrinkName": "Cappuccino",
      "isIced": false,
      "overallRating": 3,
      "notes": "Lots of unintended foam turned this into a cap. The drink is ok but a better shot would have helped ",
      "latteArtRating": "pollock",
      "createdAt": "2026-06-12 14:49:57",
      "updatedAt": "2026-06-12 14:49:57"
    },
    {
      "id": 32,
      "shotId": 75,
      "milkType": "whole",
      "milkQuantityMl": 100,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Good balance with a Lowe coffee to milk ratio and a stronger coffee flavor. Latte art is a big blob. ",
      "latteArtRating": "pollock",
      "createdAt": "2026-06-13 14:27:06",
      "updatedAt": "2026-06-13 14:27:06"
    },
    {
      "id": 33,
      "shotId": 76,
      "milkType": "whole",
      "milkQuantityMl": 100,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 5,
      "notes": "Right ratio of milk and foam. Good coffee flavor although a bit diluted with the milk. Latte art started well with great canvas but then the white foam did not show up",
      "latteArtRating": "pollock",
      "createdAt": "2026-06-14 14:34:57",
      "updatedAt": "2026-06-14 14:34:57"
    },
    {
      "id": 34,
      "shotId": 77,
      "milkType": "whole",
      "milkQuantityMl": 60,
      "foamMl": 60,
      "hotWaterMl": null,
      "detectedDrinkName": "Cappuccino",
      "isIced": false,
      "overallRating": 4,
      "notes": "Bitter undertones (slight). Latte art is a big blob. I serrated the milk a lot at the beggining",
      "latteArtRating": null,
      "createdAt": "2026-06-14 21:34:30",
      "updatedAt": "2026-06-14 21:34:30"
    },
    {
      "id": 35,
      "shotId": 78,
      "milkType": "whole",
      "milkQuantityMl": 120,
      "foamMl": 10,
      "hotWaterMl": 10,
      "detectedDrinkName": null,
      "isIced": false,
      "overallRating": 4,
      "notes": "Strong coffee flavor. More foam that I eas targeting. But no white foam for latte art, just a few dots",
      "latteArtRating": null,
      "createdAt": "2026-06-15 14:46:37",
      "updatedAt": "2026-06-15 14:46:37"
    },
    {
      "id": 36,
      "shotId": 80,
      "milkType": "whole",
      "milkQuantityMl": 80,
      "foamMl": 20,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Strong coffee flavor and well balanced. A bit more foam than planned and latte art still just a blob",
      "latteArtRating": "pollock",
      "createdAt": "2026-06-16 13:23:22",
      "updatedAt": "2026-06-16 13:23:22"
    },
    {
      "id": 37,
      "shotId": 83,
      "milkType": null,
      "milkQuantityMl": 120,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Deny tree shape, good balance not much coffee flavor though and good foam ratio",
      "latteArtRating": "calder",
      "createdAt": "2026-06-17 15:34:11",
      "updatedAt": "2026-06-17 15:34:11"
    },
    {
      "id": 38,
      "shotId": 84,
      "milkType": "whole",
      "milkQuantityMl": 90,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": null,
      "latteArtRating": "pollock",
      "createdAt": "2026-06-17 18:47:08",
      "updatedAt": "2026-06-17 18:47:08"
    },
    {
      "id": 39,
      "shotId": 85,
      "milkType": null,
      "milkQuantityMl": 120,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 3,
      "notes": "Bitter tones, good milk foam ratio latte art good canvas but no white",
      "latteArtRating": "pollock",
      "createdAt": "2026-06-19 01:00:32",
      "updatedAt": "2026-06-19 01:00:32"
    },
    {
      "id": 40,
      "shotId": 86,
      "milkType": "whole",
      "milkQuantityMl": 120,
      "foamMl": 15,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 3,
      "notes": "Bitter tones carried to the drink. Latte art non existent, big blob, but improving on canvas prep",
      "latteArtRating": "pollock",
      "createdAt": "2026-06-19 13:16:21",
      "updatedAt": "2026-06-19 13:16:21"
    },
    {
      "id": 41,
      "shotId": 87,
      "milkType": "whole",
      "milkQuantityMl": 120,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Big blob for latte art. The drink is well balanced with strong coffee flavor that resolves most of the acidity",
      "latteArtRating": "pollock",
      "createdAt": "2026-06-19 20:05:48",
      "updatedAt": "2026-06-19 20:05:48"
    },
    {
      "id": 42,
      "shotId": 88,
      "milkType": "whole",
      "milkQuantityMl": 120,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 5,
      "notes": "Drink is very well balanced with sweet notes and good coffee flavor. Latte art is a blob. Added too much air from the beginning of the steaming process",
      "latteArtRating": "pollock",
      "createdAt": "2026-06-20 13:41:43",
      "updatedAt": "2026-06-20 13:41:43"
    },
    {
      "id": 43,
      "shotId": 91,
      "milkType": "whole",
      "milkQuantityMl": 90,
      "foamMl": 20,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Slightly bitter after taste. It reminds me of chocolate. Latte art was a big blob with too much foam almost cappuccino ",
      "latteArtRating": "pollock",
      "createdAt": "2026-07-06 14:29:42",
      "updatedAt": "2026-07-06 14:29:42"
    },
    {
      "id": 44,
      "shotId": 92,
      "milkType": "whole",
      "milkQuantityMl": 90,
      "foamMl": 20,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Good balanced drink with a light flavor. Latte art was a blob but positioned. Lots of air in the milk as well",
      "latteArtRating": "calder",
      "createdAt": "2026-07-06 20:07:13",
      "updatedAt": "2026-07-06 20:07:13"
    },
    {
      "id": 45,
      "shotId": 93,
      "milkType": "whole",
      "milkQuantityMl": 110,
      "foamMl": 10,
      "hotWaterMl": 0,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 5,
      "notes": "Very balanced drink without harsh notes. A bit too much foam still, big bubbles and blob latte art",
      "latteArtRating": "pollock",
      "createdAt": "2026-07-07 15:29:21",
      "updatedAt": "2026-07-07 15:29:21"
    },
    {
      "id": 46,
      "shotId": 94,
      "milkType": null,
      "milkQuantityMl": 130,
      "foamMl": 20,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 5,
      "notes": "Smooth drink resolving the lingering notes. Little foam today and no latte art, but no big bubbles in the steaming. Good canvas prep. Notes reming me of a light hot chocolate ",
      "latteArtRating": "pollock",
      "createdAt": "2026-07-08 14:06:07",
      "updatedAt": "2026-07-08 14:06:07"
    },
    {
      "id": 47,
      "shotId": 95,
      "milkType": null,
      "milkQuantityMl": 100,
      "foamMl": 15,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Good balance and nice taste but the lingering sour aftertaste of the shot remained ",
      "latteArtRating": "pollock",
      "createdAt": "2026-07-09 14:26:27",
      "updatedAt": "2026-07-09 14:26:27"
    },
    {
      "id": 48,
      "shotId": 97,
      "milkType": "whole",
      "milkQuantityMl": 100,
      "foamMl": 20,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 3,
      "notes": "Lots of foam. Drink was ok, but some acid aftertaste notes made it harsher. Blob latteart",
      "latteArtRating": "pollock",
      "createdAt": "2026-07-10 14:58:32",
      "updatedAt": "2026-07-10 14:58:32"
    },
    {
      "id": 49,
      "shotId": 98,
      "milkType": "whole",
      "milkQuantityMl": 90,
      "foamMl": 20,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Balanced flavor with hints of acidity. Latte art is a big blob. Too much foam",
      "latteArtRating": "pollock",
      "createdAt": "2026-07-10 20:22:34",
      "updatedAt": "2026-07-10 20:22:34"
    },
    {
      "id": 50,
      "shotId": 99,
      "milkType": "whole",
      "milkQuantityMl": 120,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Good drink. Slightly bitter. Good foam quantity this time latte art shows direction but still blobs mostly",
      "latteArtRating": "calder",
      "createdAt": "2026-07-11 14:29:45",
      "updatedAt": "2026-07-11 14:29:45"
    },
    {
      "id": 51,
      "shotId": 100,
      "milkType": "whole",
      "milkQuantityMl": 90,
      "foamMl": 30,
      "hotWaterMl": null,
      "detectedDrinkName": null,
      "isIced": false,
      "overallRating": 3,
      "notes": "Bitter tones remained. Too my CV foam but latte art was a bit more precise ",
      "latteArtRating": "calder",
      "createdAt": "2026-07-11 21:39:14",
      "updatedAt": "2026-07-11 21:39:14"
    },
    {
      "id": 52,
      "shotId": 101,
      "milkType": "whole",
      "milkQuantityMl": 100,
      "foamMl": 20,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Good drink. Light coffee table, more milk and foam than usual. Latte art is a big blob again",
      "latteArtRating": "pollock",
      "createdAt": "2026-07-12 13:51:28",
      "updatedAt": "2026-07-12 13:51:28"
    },
    {
      "id": 53,
      "shotId": 102,
      "milkType": null,
      "milkQuantityMl": 100,
      "foamMl": 20,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Light taste without lingering or sharp notes ",
      "latteArtRating": "pollock",
      "createdAt": "2026-07-13 15:49:21",
      "updatedAt": "2026-07-13 15:49:21"
    },
    {
      "id": 54,
      "shotId": 103,
      "milkType": "whole",
      "milkQuantityMl": 100,
      "foamMl": 20,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Too much air in the milk where I struggled to create a strong whirlpool effect to create the micro foam. Stronger coffee flavor than the recent ristretto shots. Taste is balanced ",
      "latteArtRating": "pollock",
      "createdAt": "2026-07-14 14:40:03",
      "updatedAt": "2026-07-14 14:40:03"
    },
    {
      "id": 55,
      "shotId": 104,
      "milkType": "whole",
      "milkQuantityMl": 90,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 5,
      "notes": "Great balance with strong coffee flavor and not intrusive or lingering notes. New glasses even showed the moving effect which is cool but they take less milk, concentrating the flavor more. Best drink yet, still behind Rosetta and blue coffee but getting there. Latte art was a controlled blob. The width of the new glasses helped but the pour is harder given the smaller size",
      "latteArtRating": "calder",
      "createdAt": "2026-07-15 16:15:08",
      "updatedAt": "2026-07-15 16:15:08"
    },
    {
      "id": 56,
      "shotId": 105,
      "milkType": "whole",
      "milkQuantityMl": 90,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Strong coffee flavor with some bitter aftertaste. Milk steaming in a rush ended up with too much air, struggled to get a whirlpool going. Pour was better with a better canvas and precise blobs at the beginning even pushing some of them into harts before a big blob of foam covered it all up",
      "latteArtRating": "picasso",
      "createdAt": "2026-07-15 19:35:24",
      "updatedAt": "2026-07-15 19:35:24"
    },
    {
      "id": 57,
      "shotId": 106,
      "milkType": "whole",
      "milkQuantityMl": 90,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": null,
      "isIced": false,
      "overallRating": 5,
      "notes": "Good balance with strong coffee flavor reminding me of chocolate. Too much air if the foam means big bubbles at the top and less control for latte art. Good canvas prep but pour was not precise ",
      "latteArtRating": "calder",
      "createdAt": "2026-07-16 15:13:30",
      "updatedAt": "2026-07-16 15:13:30"
    },
    {
      "id": 58,
      "shotId": 107,
      "milkType": "whole",
      "milkQuantityMl": 80,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Milk balanced the slight acid and bitter notes. Texture is very watery though. Taste is light as well. I was able to do a kind of hart with the latte art but the foam was a bit too airy",
      "latteArtRating": "calder",
      "createdAt": "2026-07-17 17:49:16",
      "updatedAt": "2026-07-17 17:49:16"
    },
    {
      "id": 59,
      "shotId": 108,
      "milkType": "whole",
      "milkQuantityMl": 80,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Better than the shot this morning with stronger coffee flavor. Well balanced without sharp or lingering notes. Milk had too much air again but latte art allowed for two harts ",
      "latteArtRating": "picasso",
      "createdAt": "2026-07-17 21:18:19",
      "updatedAt": "2026-07-17 21:18:19"
    },
    {
      "id": 60,
      "shotId": 109,
      "milkType": "whole",
      "milkQuantityMl": 80,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Good balance with bright and fruity notes. Missing body and sweetness. Milk was foamed properly and latte art was controlled blobs before airy foam created another blob",
      "latteArtRating": "calder",
      "createdAt": "2026-07-18 13:59:57",
      "updatedAt": "2026-07-18 13:59:57"
    },
    {
      "id": 61,
      "shotId": 110,
      "milkType": "whole",
      "milkQuantityMl": 80,
      "foamMl": 10,
      "hotWaterMl": 0,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 3,
      "notes": "Big blob and spilled everywhere. Taste reminds me of berries, which is aligned to the flavor profile. A few sharp notes ",
      "latteArtRating": "pollock",
      "createdAt": "2026-07-18 21:14:30",
      "updatedAt": "2026-07-18 21:14:30"
    },
    {
      "id": 62,
      "shotId": 111,
      "milkType": "whole",
      "milkQuantityMl": 80,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Good balance without lingering notes, but I might not enjoy the flavor tones of this bean as much as others. Milf foam was better this time. I was able to make a hart then tried doing a few more and ended up looking like an onion. Great progress there",
      "latteArtRating": "monet",
      "createdAt": "2026-07-19 15:11:35",
      "updatedAt": "2026-07-19 15:11:35"
    },
    {
      "id": 63,
      "shotId": 112,
      "milkType": "whole",
      "milkQuantityMl": 80,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Good balance and coffee flavor. Milk was too airy which made the latte art tricky ",
      "latteArtRating": "calder",
      "createdAt": "2026-07-20 16:48:27",
      "updatedAt": "2026-07-20 16:48:27"
    },
    {
      "id": 64,
      "shotId": 113,
      "milkType": "whole",
      "milkQuantityMl": 80,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Good balance light body. Hart achieved but second one failed due to extra air in the milk",
      "latteArtRating": "calder",
      "createdAt": "2026-07-21 13:04:43",
      "updatedAt": "2026-07-21 13:04:43"
    },
    {
      "id": 65,
      "shotId": 114,
      "milkType": "whole",
      "milkQuantityMl": 90,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 3,
      "notes": "Drink is balanced and light. Not a fan of the strawberry flavor honestly. I added too much water to the milk by not preheating the wand, reducing the overall body of the shot",
      "latteArtRating": "pollock",
      "createdAt": "2026-07-22 16:31:49",
      "updatedAt": "2026-07-22 16:31:49"
    },
    {
      "id": 66,
      "shotId": 115,
      "milkType": "whole",
      "milkQuantityMl": 90,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 3,
      "notes": "Milk reduces bitter flavor but still prevalent and strong. Latte art was promising but stopped looking at the milk level and spilled. Should have moved closer sooner",
      "latteArtRating": "calder",
      "createdAt": "2026-07-23 00:44:25",
      "updatedAt": "2026-07-23 00:44:25"
    },
    {
      "id": 67,
      "shotId": 116,
      "milkType": "whole",
      "milkQuantityMl": 90,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Well balanced with the milk resolving the bitterness of the shot. Latte art was better with two misshaped harts",
      "latteArtRating": "picasso",
      "createdAt": "2026-07-23 14:31:44",
      "updatedAt": "2026-07-23 14:31:44"
    },
    {
      "id": 68,
      "shotId": 117,
      "milkType": "whole",
      "milkQuantityMl": 90,
      "foamMl": 10,
      "hotWaterMl": 10,
      "detectedDrinkName": null,
      "isIced": false,
      "overallRating": 4,
      "notes": "Drink was good with strong coffee flavor. Milk resolved most but not all the sour and bitter notes of the shot. Latte art was not existent with only a big blob. It was rushed today",
      "latteArtRating": null,
      "createdAt": "2026-07-24 00:18:10",
      "updatedAt": "2026-07-24 00:18:10"
    },
    {
      "id": 69,
      "shotId": 118,
      "milkType": "whole",
      "milkQuantityMl": 80,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 5,
      "notes": "Drink is balanced with strong coffee flavor. Taste reminds me of fruits. No acid or bitter notes. Latte art was a successful simple hart",
      "latteArtRating": "monet",
      "createdAt": "2026-07-24 15:01:25",
      "updatedAt": "2026-07-24 15:01:25"
    },
    {
      "id": 70,
      "shotId": 119,
      "milkType": "whole",
      "milkQuantityMl": 80,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "No latte art. Taste is slightly bitter and probably the bean profile ",
      "latteArtRating": "pollock",
      "createdAt": "2026-07-24 18:54:55",
      "updatedAt": "2026-07-24 18:54:55"
    },
    {
      "id": 71,
      "shotId": 120,
      "milkType": "whole",
      "milkQuantityMl": 80,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 5,
      "notes": "No latte art, white foam just never appeared. Taste is balanced without sharp notes. Good body",
      "latteArtRating": "pollock",
      "createdAt": "2026-07-25 14:23:32",
      "updatedAt": "2026-07-25 14:23:32"
    },
    {
      "id": 72,
      "shotId": 121,
      "milkType": "whole",
      "milkQuantityMl": 80,
      "foamMl": 20,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Taste is balanced with strong flavor. Milk covered the burnt flavor but still a slight aftertaste. No latte art. Too much air into milk",
      "latteArtRating": "pollock",
      "createdAt": "2026-07-26 02:38:26",
      "updatedAt": "2026-07-26 02:38:26"
    },
    {
      "id": 73,
      "shotId": 122,
      "milkType": "whole",
      "milkQuantityMl": 90,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Good body and coffee flavor. No sharp notes, fruity taste from the bean. Latte art was a nice hart then I messed it up",
      "latteArtRating": "picasso",
      "createdAt": "2026-07-26 13:40:25",
      "updatedAt": "2026-07-26 13:40:25"
    },
    {
      "id": 74,
      "shotId": 123,
      "milkType": null,
      "milkQuantityMl": 80,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Strong flavor from the bean. Good balance. Complete fail on latte art, no foam showed",
      "latteArtRating": "pollock",
      "createdAt": "2026-07-26 23:46:23",
      "updatedAt": "2026-07-26 23:46:23"
    },
    {
      "id": 75,
      "shotId": 124,
      "milkType": "whole",
      "milkQuantityMl": 80,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": null,
      "isIced": false,
      "overallRating": 5,
      "notes": "Flavor is strong and balanced with good body. No lingering notes. Milk foaming was perfect but pouring did not work ending with a wigly white foam. Also it was very light on the foam, most of it stayed behind in the steaming pitcher",
      "latteArtRating": "calder",
      "createdAt": "2026-07-27 16:08:33",
      "updatedAt": "2026-07-27 16:08:33"
    },
    {
      "id": 76,
      "shotId": 125,
      "milkType": "whole",
      "milkQuantityMl": 80,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 5,
      "notes": "Drink is strong in flavor but well balanced. \r\nLatte art was a hart but failed on pulling the second one",
      "latteArtRating": "picasso",
      "createdAt": "2026-07-27 21:38:08",
      "updatedAt": "2026-07-27 21:38:08"
    },
    {
      "id": 77,
      "shotId": 126,
      "milkType": "whole",
      "milkQuantityMl": 80,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 5,
      "notes": "Very soft and smooth without bright or bitter notes. Taste reminds me of nuts. Latte art was a fail, good canvas but the cup was too full to try art so just a small controlled fetus shape. very little foam added to the drink",
      "latteArtRating": "calder",
      "createdAt": "2026-07-28 14:14:54",
      "updatedAt": "2026-07-28 14:14:54"
    },
    {
      "id": 78,
      "shotId": 127,
      "milkType": "whole",
      "milkQuantityMl": 90,
      "foamMl": 5,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Good soft flavor with a bit of a burnt undertone. Reminds me of chocolate. Latte art was a fail with no foam poured into the drink. Problem was pouring not steaming",
      "latteArtRating": "pollock",
      "createdAt": "2026-07-29 14:48:37",
      "updatedAt": "2026-07-29 14:48:37"
    },
    {
      "id": 79,
      "shotId": 128,
      "milkType": "whole",
      "milkQuantityMl": 70,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": null,
      "isIced": false,
      "overallRating": 5,
      "notes": "Balance flavor with the milk muting the strong character of the bean. Too much air while steaming the milk (started with the spout outside the milk) pouring was also not effective. Macchiato blob end resukt",
      "latteArtRating": "pollock",
      "createdAt": "2026-07-29 21:44:09",
      "updatedAt": "2026-07-29 21:44:09"
    },
    {
      "id": 80,
      "shotId": 129,
      "milkType": "whole",
      "milkQuantityMl": 70,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": null,
      "isIced": false,
      "overallRating": 4,
      "notes": "Drink is strong in flavor. Still some lingering notes. Latte art was a big blob of very airy foam. Steaming error",
      "latteArtRating": "pollock",
      "createdAt": "2026-07-30 13:01:17",
      "updatedAt": "2026-07-30 13:01:17"
    },
    {
      "id": 81,
      "shotId": 130,
      "milkType": "whole",
      "milkQuantityMl": 70,
      "foamMl": 15,
      "hotWaterMl": null,
      "detectedDrinkName": null,
      "isIced": false,
      "overallRating": 3,
      "notes": "Milk helps but still a bitter aftertaste. Milk steaming was ideal but pouring without control. Was looking promising though",
      "latteArtRating": "pollock",
      "createdAt": "2026-07-31 00:47:55",
      "updatedAt": "2026-07-31 00:47:55"
    },
    {
      "id": 82,
      "shotId": 131,
      "milkType": "whole",
      "milkQuantityMl": 80,
      "foamMl": 5,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 4,
      "notes": "Started a hart but failed after that. Taste is good without any sour notes but light in texture ",
      "latteArtRating": "calder",
      "createdAt": "2026-08-01 13:27:00",
      "updatedAt": "2026-08-01 13:27:00"
    },
    {
      "id": 83,
      "shotId": 132,
      "milkType": null,
      "milkQuantityMl": 70,
      "foamMl": 15,
      "hotWaterMl": 10,
      "detectedDrinkName": null,
      "isIced": false,
      "overallRating": 4,
      "notes": "Drink is ok with milk masking some of the sourness but it remains. Milk steaming was good. Latte art was starting to look like something but ended up as an oval in stead of a hart. Improving ",
      "latteArtRating": "calder",
      "createdAt": "2026-08-01 21:43:04",
      "updatedAt": "2026-08-01 21:43:04"
    },
    {
      "id": 84,
      "shotId": 133,
      "milkType": null,
      "milkQuantityMl": 70,
      "foamMl": 15,
      "hotWaterMl": null,
      "detectedDrinkName": null,
      "isIced": false,
      "overallRating": 4,
      "notes": "Milk did wonders to the drink after a hard to describe shot. Taste is strong but more balanced. Can’t define the taste yet. Milk steaming was beautiful but pouring showed white very early and then could not control it to shape anything. White blob",
      "latteArtRating": null,
      "createdAt": "2026-08-02 13:50:30",
      "updatedAt": "2026-08-02 13:50:30"
    },
    {
      "id": 85,
      "shotId": 134,
      "milkType": "whole",
      "milkQuantityMl": 80,
      "foamMl": 5,
      "hotWaterMl": null,
      "detectedDrinkName": "Flat White",
      "isIced": false,
      "overallRating": 3,
      "notes": "Milk helped mask the sourness but the drink has a strong aftertaste (bitter ish) milk steaming started bad with big bubbles but I was able to resolve during the steaming process. Pouring started good with a hart but when I tried doing the next one I ruined it ",
      "latteArtRating": "calder",
      "createdAt": "2026-08-03 00:09:07",
      "updatedAt": "2026-08-03 00:09:07"
    },
    {
      "id": 86,
      "shotId": 135,
      "milkType": "whole",
      "milkQuantityMl": 70,
      "foamMl": 15,
      "hotWaterMl": null,
      "detectedDrinkName": null,
      "isIced": false,
      "overallRating": 3,
      "notes": "Ok drink, bitter aftertaste. Milk steaming was excellent. Pouring improving but still no clear shapes",
      "latteArtRating": "calder",
      "createdAt": "2026-08-03 14:44:16",
      "updatedAt": "2026-08-03 14:44:16"
    },
    {
      "id": 87,
      "shotId": 136,
      "milkType": "whole",
      "milkQuantityMl": 70,
      "foamMl": 15,
      "hotWaterMl": null,
      "detectedDrinkName": null,
      "isIced": false,
      "overallRating": 5,
      "notes": "Great body and flavor without lingering notes. Latte art had a bit too much air to control",
      "latteArtRating": "calder",
      "createdAt": "2026-08-03 21:16:03",
      "updatedAt": "2026-08-03 21:16:03"
    },
    {
      "id": 88,
      "shotId": 137,
      "milkType": "whole",
      "milkQuantityMl": 70,
      "foamMl": 15,
      "hotWaterMl": null,
      "detectedDrinkName": null,
      "isIced": false,
      "overallRating": 4,
      "notes": "Taste is balanced with a few bitter tones. Strawberry taste still present but muted. Latte art was minimal with bad pouring",
      "latteArtRating": "pollock",
      "createdAt": "2026-08-04 14:35:04",
      "updatedAt": "2026-08-04 14:35:04"
    },
    {
      "id": 89,
      "shotId": 138,
      "milkType": "whole",
      "milkQuantityMl": 80,
      "foamMl": 10,
      "hotWaterMl": null,
      "detectedDrinkName": null,
      "isIced": false,
      "overallRating": 4,
      "notes": "A hi t of the strong notes from the shot remain but milk does wonders to this bean. Good balance and coffee flavor. Mil steaming was ok. Pouring still not there",
      "latteArtRating": "calder",
      "createdAt": "2026-08-04 22:25:51",
      "updatedAt": "2026-08-04 22:25:51"
    }
  ],
  "equipmentProfiles": [
    {
      "id": 1,
      "name": "Home Setup",
      "machine": "Breville Bambino",
      "grinder": "Baratza Encore ESP Pro",
      "tamper": "Normcore Self-Leveling",
      "portafilter": "Stock Breville Bambino, 54mm",
      "basket": "Stock, Breville Single Wall Single and Double Shot Baskets",
      "scale": "Bookoo Mini",
      "wdtTool": "Subminimal Flick - Six 0.5mm needles",
      "distributionTool": "Crema Dual",
      "defaultSpringWeightLbs": 30,
      "machineLastCleanedAt": "2026-07-17",
      "grinderLastCleanedAt": "2026-07-17",
      "machineCleaningIntervalDays": 30,
      "grinderCleaningIntervalDays": 14,
      "isActive": true,
      "notes": "No 3-way solenoid valve — expect 6-8g drip lag after pump stop. Stop pump at target yield minus 7g to account for lag. 10 min warmup + blank flush before pulling shots.\r\nStepless grinder with numbered settings 1-60. Finer = lower number, coarser = higher. Settings 1-40 intended for espresso. Each increment below 40 produces a larger grind change than above 40 — use smaller adjustments when dialing in. Some beans work best outside the 1-40 range",
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    }
  ],
  "extractionThresholds": [
    {
      "id": 1,
      "metric": "time",
      "minValue": 0,
      "maxValue": 20,
      "label": "Very Fast",
      "description": "Severely under-extracted — grind much finer",
      "sortOrder": 1,
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 2,
      "metric": "time",
      "minValue": 20,
      "maxValue": 25,
      "label": "Fast",
      "description": "Under-extracted — grind finer",
      "sortOrder": 2,
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 3,
      "metric": "time",
      "minValue": 25,
      "maxValue": 35,
      "label": "Normal",
      "description": "Good extraction range",
      "sortOrder": 3,
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 4,
      "metric": "time",
      "minValue": 35,
      "maxValue": 45,
      "label": "Slow",
      "description": "Slightly over-extracted — grind coarser",
      "sortOrder": 4,
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 5,
      "metric": "time",
      "minValue": 45,
      "maxValue": null,
      "label": "Very Slow",
      "description": "Severely over-extracted — grind much coarser",
      "sortOrder": 5,
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 6,
      "metric": "ratio",
      "minValue": 0,
      "maxValue": 1.5,
      "label": "Ristretto",
      "description": "Very concentrated, short pull",
      "sortOrder": 1,
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 7,
      "metric": "ratio",
      "minValue": 1.5,
      "maxValue": 2,
      "label": "Short",
      "description": "Slightly under target ratio",
      "sortOrder": 2,
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 8,
      "metric": "ratio",
      "minValue": 2,
      "maxValue": 2.5,
      "label": "Normal",
      "description": "Standard espresso ratio",
      "sortOrder": 3,
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 9,
      "metric": "ratio",
      "minValue": 2.5,
      "maxValue": 3,
      "label": "Long",
      "description": "Extended pull, less concentrated",
      "sortOrder": 4,
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    },
    {
      "id": 10,
      "metric": "ratio",
      "minValue": 3,
      "maxValue": null,
      "label": "Lungo",
      "description": "Very long pull, highly diluted",
      "sortOrder": 5,
      "createdAt": "2026-05-25 05:54:47",
      "updatedAt": "2026-05-25 05:54:47"
    }
  ],
  "shotAnalyses": [
    {
      "id": 3,
      "shotId": 14,
      "analysisMode": "recent",
      "summary": "Shot 14 on the Maomi Blend came in at 29s and a 2.09 ratio — both squarely in Normal range — but it tasted sour and light-bodied. The numbers look fine on paper, but the taste is clearly telling a different story: under-extraction. The uneven flow (left spout dominant early) points to mild channeling again, same pattern as shot 13.",
      "numbers": "29s is Normal by both industry standard and your thresholds. Ratio 2.09 is Normal. On paper this should be a decent shot. But balance of 2 (Sour) and light body are classic under-extraction signals — and they align. The flow note confirms mild channeling again, which short-circuits extraction even when time and ratio look acceptable. Your lag was 10g this pull versus your known 6-8g Bambino baseline — slightly high but not alarming given the flow irregularity. The sour taste not lingering is the one positive: this isn't a structural disaster, just under-extracted.",
      "recommendationAction": "Go 2 clicks finer — move from grind 33 to grind 31. Keep dose and yield identical.",
      "recommendationReason": "You dropped from 35 to 33 between shots 13 and 14, which was a significant jump — 2 full settings. The sourness and light body suggest you still need more resistance in the puck to slow the flow and extend contact time. Going to 31 continues the directional move. The recurring uneven flow (left-dominant) may also improve as the puck gets denser. If channeling persists at 31, that's a puck prep signal worth investigating — but start with grind first.",
      "beanContext": "Maomi Blend is low-acidity by design — caramel, cocoa, nuts — so sourness here is almost certainly extraction, not bean character. This is not a naturally bright bean like the Ándale Market was. Sourness on a full-bodied, low-acid blend means the shot needs more from the grind. At 21 days off roast you're in peak window, so freshness isn't a factor. You're 4 shots in and still dialing — this is normal at this stage.",
      "progressNote": "You've now had mild channeling in back-to-back shots — both times flow started uneven and corrected mid-shot. Worth a close look at your puck prep next pull: make sure the WDT is redistributing evenly across the full basket surface and the tamp is level before you attribute this entirely to grind.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 14 on the Maomi Blend came in at 29s and a 2.09 ratio — both squarely in Normal range — but it tasted sour and light-bodied. The numbers look fine on paper, but the taste is clearly telling a different story: under-extraction. The uneven flow (left spout dominant early) points to mild channeling again, same pattern as shot 13.\",\n  \"numbers\": \"29s is Normal by both industry standard and your thresholds. Ratio 2.09 is Normal. On paper this should be a decent shot. But balance of 2 (Sour) and light body are classic under-extraction signals — and they align. The flow note confirms mild channeling again, which short-circuits extraction even when time and ratio look acceptable. Your lag was 10g this pull versus your known 6-8g Bambino baseline — slightly high but not alarming given the flow irregularity. The sour taste not lingering is the one positive: this isn't a structural disaster, just under-extracted.\",\n  \"recommendation\": {\n    \"action\": \"Go 2 clicks finer — move from grind 33 to grind 31. Keep dose and yield identical.\",\n    \"reason\": \"You dropped from 35 to 33 between shots 13 and 14, which was a significant jump — 2 full settings. The sourness and light body suggest you still need more resistance in the puck to slow the flow and extend contact time. Going to 31 continues the directional move. The recurring uneven flow (left-dominant) may also improve as the puck gets denser. If channeling persists at 31, that's a puck prep signal worth investigating — but start with grind first.\"\n  },\n  \"bean_context\": \"Maomi Blend is low-acidity by design — caramel, cocoa, nuts — so sourness here is almost certainly extraction, not bean character. This is not a naturally bright bean like the Ándale Market was. Sourness on a full-bodied, low-acid blend means the shot needs more from the grind. At 21 days off roast you're in peak window, so freshness isn't a factor. You're 4 shots in and still dialing — this is normal at this stage.\",\n  \"progress_note\": \"You've now had mild channeling in back-to-back shots — both times flow started uneven and corrected mid-shot. Worth a close look at your puck prep next pull: make sure the WDT is redistributing evenly across the full basket surface and the tamp is level before you attribute this entirely to grind.\",\n  \"overall_verdict\": \"needs_work\",\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Dialing in Maomi Blend — reducing sourness, addressing recurring mild channeling\",\n    \"known_patterns\": \"Acidity sensitive — slight sourness on bright beans is often correct extraction, but Maomi is low-acid so sourness here means under-extraction. Bambino has 6-8g drip lag — stops pump early to compensate. WDT technique solid. 30lb spring tamper established after early channeling from 15lb spring. Recurring mild channeling on Maomi (shots 13 and 14) — left spout dominant early, evening out mid-shot. May be puck prep or grind related — monitor.\",\n    \"last_recommendation\": \"Move grind from 33 to 31. Keep dose and yield identical. Watch for channeling improvement.\",\n    \"last_analysis_date\": \"2026-05-25T13:42:38.300Z\",\n    \"last_analyzed_shot_id\": 14,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": 33.5,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": null,\n        \"shots_pulled\": 0,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Naturally bright — sourness was partially bean character not extraction error. Best results at grind 33-34, 30lb spring.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 31,\n        \"shots_pulled\": 4,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Low-acid bean — sourness means under-extraction, not bean character. Recurring mild channeling shots 13-14 (left spout dominant early). Moved from 35 to 33 between shots 13-14, still sour and light-bodied. Trying 31 next. Monitor channeling — may be puck prep related.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"resting\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 0,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon variety, ganache/orange peel/Luxardo\",\n        \"notes\": \"Roasted May 18 2026. Do not use until May 28 2026 minimum. Start coarser than regular beans — decaf extracts more easily.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-05-25 14:07:19"
    },
    {
      "id": 5,
      "shotId": 16,
      "analysisMode": "recent",
      "summary": "Shot 16 came in at 31 seconds and a 1.99 ratio — technically normal time, borderline short ratio — but the lingering sour finish tells the real story. This is under-extraction on a low-acid bean, which means the numbers are misleading: the grind is still too coarse for this dose and yield. Notably, flow was even across both spouts — the channeling pattern from shots 13 and 14 appears resolved with the move to 31 and the 30lb spring.",
      "numbers": "31 seconds is solidly Normal by both your thresholds and industry standard (25–35s). The 1.99 ratio is right at the Short/Normal border — not a problem on its own. But balance rated 2 (Sour) with lingering acidity on a low-acid caramel/cocoa/nuts bean is a clear extraction deficit. The previous shot at grind 33 was also balance 2 with a fast-moving, light-bodied pull. Moving to 31 slowed the time slightly but didn't resolve the under-extraction — which suggests the grind needs to go finer still. The even flow this shot is a meaningful positive signal: puck prep is no longer the variable to chase.",
      "recommendationAction": "Move grind from 32 to 30. Keep dose at 18g and yield at 35–37g.",
      "recommendationReason": "Two consecutive sour shots at grind 33 and 31 on a low-acid bean means you're still under-extracting. The channeling is gone — flow was even this shot — so finer grind won't reintroduce that problem. You need more surface contact and resistance. One click at a time: go to 30 and watch for the sourness to round out into the caramel and cocoa this bean is supposed to deliver. If the finish cleans up and body improves, you're close.",
      "beanContext": "Maomi is a full-body, low-acid blend — caramel, cocoa, nuts. Sourness here is not bean character, it's extraction. At 21 days post-roast you're squarely in peak window, so freshness isn't a factor. Six shots in and still sour across multiple grind settings suggests this bean may want a finer grind than the Ándale Market did (which dialed in at 33–34). That tracks — blends with PNG can be denser and less permeable. Expect the target zone to be somewhere in the 29–31 range.",
      "progressNote": "Good news: the channeling pattern that plagued shots 13 and 14 is gone. Even flow across both spouts this shot is a real technique win — puck prep is solid. The remaining problem is purely extraction depth, which is fixable with grind.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\"summary\":\"Shot 16 came in at 31 seconds and a 1.99 ratio — technically normal time, borderline short ratio — but the lingering sour finish tells the real story. This is under-extraction on a low-acid bean, which means the numbers are misleading: the grind is still too coarse for this dose and yield. Notably, flow was even across both spouts — the channeling pattern from shots 13 and 14 appears resolved with the move to 31 and the 30lb spring.\",\"numbers\":\"31 seconds is solidly Normal by both your thresholds and industry standard (25–35s). The 1.99 ratio is right at the Short/Normal border — not a problem on its own. But balance rated 2 (Sour) with lingering acidity on a low-acid caramel/cocoa/nuts bean is a clear extraction deficit. The previous shot at grind 33 was also balance 2 with a fast-moving, light-bodied pull. Moving to 31 slowed the time slightly but didn't resolve the under-extraction — which suggests the grind needs to go finer still. The even flow this shot is a meaningful positive signal: puck prep is no longer the variable to chase.\",\"recommendation\":{\"action\":\"Move grind from 32 to 30. Keep dose at 18g and yield at 35–37g.\",\"reason\":\"Two consecutive sour shots at grind 33 and 31 on a low-acid bean means you're still under-extracting. The channeling is gone — flow was even this shot — so finer grind won't reintroduce that problem. You need more surface contact and resistance. One click at a time: go to 30 and watch for the sourness to round out into the caramel and cocoa this bean is supposed to deliver. If the finish cleans up and body improves, you're close.\"},\"bean_context\":\"Maomi is a full-body, low-acid blend — caramel, cocoa, nuts. Sourness here is not bean character, it's extraction. At 21 days post-roast you're squarely in peak window, so freshness isn't a factor. Six shots in and still sour across multiple grind settings suggests this bean may want a finer grind than the Ándale Market did (which dialed in at 33–34). That tracks — blends with PNG can be denser and less permeable. Expect the target zone to be somewhere in the 29–31 range.\",\"progress_note\":\"Good news: the channeling pattern that plagued shots 13 and 14 is gone. Even flow across both spouts this shot is a real technique win — puck prep is solid. The remaining problem is purely extraction depth, which is fixable with grind.\",\"overall_verdict\":\"needs_work\",\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Maomi Blend — eliminating lingering sourness via finer grind. Channeling resolved. Pure extraction problem now.\",\"known_patterns\":\"Acidity sensitive — but Maomi is low-acid so all sourness here is under-extraction. Bambino drip lag 6-8g normal. WDT solid. 30lb spring tamper established. Channeling resolved shot 16 — even flow both spouts. Three consecutive sour shots (grind 35, 33, 31/32) indicate Maomi wants finer grind than Ándale Market — likely target zone 29–31.\",\"last_recommendation\":\"Move grind from 32 to 30. Keep dose at 18g and yield at 35–37g. Watch for sourness to round out into caramel/cocoa character.\",\"last_analysis_date\":\"2026-05-25T20:12:18.859Z\",\"last_analyzed_shot_id\":16,\"bean_contexts\":[{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":33.5,\"dialed_in_yield_g\":37,\"current_grind\":null,\"shots_pulled\":0,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower honey\",\"notes\":\"Naturally bright — sourness was partially bean character not extraction error. Best results at grind 33-34, 30lb spring.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":30,\"shots_pulled\":6,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Low-acid bean — all sourness is under-extraction. Channeling resolved shot 16 (even flow both spouts). Three sour shots at 35, 33, 31/32 — bean wants finer grind than Ándale Market. Likely target zone 29–31. Trying 30 next.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"resting\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":0,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon variety, ganache/orange peel/Luxardo\",\"notes\":\"Roasted May 18 2026. Do not use until May 28 2026 minimum. Start coarser than regular beans — decaf extracts more easily.\"}]}}",
      "createdAt": "2026-05-25 20:12:46"
    },
    {
      "id": 6,
      "shotId": 15,
      "analysisMode": "recent",
      "summary": "Shot 15 ran slow at 40 seconds and came out bitter — you overshot the correction at grind 31. The uneven stutter flow (drips, then flow, then drips again on both spouts simultaneously) suggests the puck was too restrictive, not channeling. Note this shot was pulled before shot 16 chronologically — grind 31 caused the over-extraction, and grind 32 on shot 16 was still sour, which tells you the sweet spot is narrow and likely sits right around 31–32.",
      "numbers": "40 seconds is Slow by your thresholds and slightly outside the ideal 25–35s industry range. Brew ratio 1.97 is Short. Balance rated 6 (Bitter) — consistent with the slow time. The symmetric stutter on both spouts rules out channeling; this is uniform over-restriction from a grind that's too fine. High grinder retention (0.7g vs your 0.2g average) is worth watching — inconsistent retention can shift your effective dose and contribute to variability shot to shot.",
      "recommendationAction": "Move grind from 31 to 32. Keep dose at 18g, target yield 36–38g.",
      "recommendationReason": "Shot 16 at grind 32 was sour (under-extracted). Shot 15 at grind 31 was bitter (over-extracted). The target is one step coarser than 31. Grind 32 was your last sour shot, so you may need to fine-tune within that setting — but start there and get a clean read before moving. Also check your grinder for retention consistency: 0.7g this shot vs your 0.2g average is a meaningful variance that can skew results.",
      "beanContext": "Maomi is a low-acid, full-body blend — caramel, cocoa, nuts. At the right extraction it should taste smooth and round, not sour or bitter. You're now bracketing the sweet spot: 31 is too fine, 32 is too coarse. That's actually good news — the target grind is right between your last two shots. The bean is 21 days off roast and in peak window, so freshness isn't a variable here.",
      "progressNote": "You've bracketed the Maomi's sweet spot in 6 shots — grind 31 overshoots bitter, grind 32 is sour. That's real dialing-in progress. One clean shot at 32 (or splitting the difference if your grinder allows) should get you there.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 15 ran slow at 40 seconds and came out bitter — you overshot the correction at grind 31. The uneven stutter flow (drips, then flow, then drips again on both spouts simultaneously) suggests the puck was too restrictive, not channeling. Note this shot was pulled before shot 16 chronologically — grind 31 caused the over-extraction, and grind 32 on shot 16 was still sour, which tells you the sweet spot is narrow and likely sits right around 31–32.\",\n  \"numbers\": \"40 seconds is Slow by your thresholds and slightly outside the ideal 25–35s industry range. Brew ratio 1.97 is Short. Balance rated 6 (Bitter) — consistent with the slow time. The symmetric stutter on both spouts rules out channeling; this is uniform over-restriction from a grind that's too fine. High grinder retention (0.7g vs your 0.2g average) is worth watching — inconsistent retention can shift your effective dose and contribute to variability shot to shot.\",\n  \"recommendation\": {\n    \"action\": \"Move grind from 31 to 32. Keep dose at 18g, target yield 36–38g.\",\n    \"reason\": \"Shot 16 at grind 32 was sour (under-extracted). Shot 15 at grind 31 was bitter (over-extracted). The target is one step coarser than 31. Grind 32 was your last sour shot, so you may need to fine-tune within that setting — but start there and get a clean read before moving. Also check your grinder for retention consistency: 0.7g this shot vs your 0.2g average is a meaningful variance that can skew results.\"\n  },\n  \"bean_context\": \"Maomi is a low-acid, full-body blend — caramel, cocoa, nuts. At the right extraction it should taste smooth and round, not sour or bitter. You're now bracketing the sweet spot: 31 is too fine, 32 is too coarse. That's actually good news — the target grind is right between your last two shots. The bean is 21 days off roast and in peak window, so freshness isn't a variable here.\",\n  \"progress_note\": \"You've bracketed the Maomi's sweet spot in 6 shots — grind 31 overshoots bitter, grind 32 is sour. That's real dialing-in progress. One clean shot at 32 (or splitting the difference if your grinder allows) should get you there.\",\n  \"overall_verdict\": \"needs_work\",\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Maomi Blend — bracketed the sweet spot. Grind 31 = bitter (40s, balance 6). Grind 32 = sour (31s, balance 2). Target is grind 32 with careful yield management, or a fractional step between 31–32 if possible.\",\n    \"known_patterns\": \"Acidity sensitive — but Maomi is low-acid so all sourness is under-extraction. Bambino drip lag 6-8g normal. WDT solid. 30lb spring tamper established. Channeling resolved. Maomi sweet spot is narrow — bracketed between grind 31 (bitter) and grind 32 (sour). Watch grinder retention: 0.7g on shot 15 vs 0.2g average — inconsistent retention shifts effective dose and can cause unexplained variability.\",\n    \"last_recommendation\": \"Move grind from 31 to 32. Keep dose at 18g, target yield 36–38g. Grind 32 was sour before — watch if taste improves this time. If still sour at 32, try 31.5 if the grinder allows a fractional step.\",\n    \"last_analysis_date\": \"2026-05-25T20:12:18.859Z\",\n    \"last_analyzed_shot_id\": 15,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": 33.5,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": null,\n        \"shots_pulled\": 0,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Naturally bright — sourness was partially bean character not extraction error. Best results at grind 33-34, 30lb spring.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 31,\n        \"shots_pulled\": 6,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Low-acid bean — all sourness is under-extraction. Channeling resolved. Sweet spot bracketed: grind 31 = bitter (40s, balance 6), grind 32 = sour (31s, balance 2). Target zone is grind 32 or fractional step between 31–32. Grinder retention spiked to 0.7g on shot 15 — monitor for consistency. Next shot: back to 32, 18g dose, 36–38g yield.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"resting\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 0,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon variety, ganache/orange peel/Luxardo\",\n        \"notes\": \"Roasted May 18 2026. Do not use until May 28 2026 minimum. Start coarser than regular beans — decaf extracts more easily.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-05-25 20:19:33"
    },
    {
      "id": 7,
      "shotId": 18,
      "analysisMode": "recent",
      "summary": "Grind 32.5 landed you squarely between the two extremes — 38 seconds, ratio 1.96, balance 3 (Slightly Sour). Taste confirms it: slightly sour, more balanced than recent shots, no hard linger after a minute. This is real progress. You've effectively found the narrow window on this bean.",
      "numbers": "Time at 38s is Slow by your labels, and sits at the upper edge of the industry good range (25–35s) — technically slightly slow but not a problem. Ratio at 1.96 is Short, which is consistent across your Maomi pulls and hasn't hurt flavor. Balance 3 is the best score you've hit on this bean, and the notes back it up — slightly sour but not lingering, which on a low-acid bean like Maomi signals you're close to fully extracted. The left spout fast-dripping throughout is a mild flow irregularity worth watching, but the shot extracted intact and tasted coherent, so it didn't cause catastrophic channeling. Grinder retention at 0.1g is clean — no retention variability this time.",
      "recommendationAction": "Pull one more shot at 32.5, but stop the shot about 2–3g earlier — target yield 33g instead of 35g.",
      "recommendationReason": "You're at balance 3 with a slight sour that lingers faintly at the one-minute mark. That suggests you're just barely under-extracted. Rather than moving the grind (which risks jumping back to bitter territory), tighten the yield slightly to increase concentration and reduce the watery sour tail. If the slight linger disappears and body improves, 32.5 at 33g is your dial-in. If it gets more bitter, 32.5 at 36g is the answer and you're already dialed in.",
      "beanContext": "At 22 days post-roast the Maomi is firmly in peak window — freshness isn't a factor here. The balance 3 result is consistent with a low-acid bean approaching full extraction: you're not dealing with bean brightness, just a hair of under-extraction. The intact puck sticking to the shower head is normal for your Bambino workflow and not a concern. The narrow grind sweet spot on this bean (31 = bitter, 32 = sour, 32.5 = nearly balanced) is characteristic of blends with heavier body components like PNG — they compress quickly.",
      "progressNote": "Balance 3 is your first 'Slightly Sour' on this bean — every previous Maomi shot was balance 2 or worse. The systematic bracket of 31 → 32 → 32.5 is exactly the right dialing-in process. You're one adjustment away from locking this in.",
      "overallVerdict": "good",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Grind 32.5 landed you squarely between the two extremes — 38 seconds, ratio 1.96, balance 3 (Slightly Sour). Taste confirms it: slightly sour, more balanced than recent shots, no hard linger after a minute. This is real progress. You've effectively found the narrow window on this bean.\",\n  \"numbers\": \"Time at 38s is Slow by your labels, and sits at the upper edge of the industry good range (25–35s) — technically slightly slow but not a problem. Ratio at 1.96 is Short, which is consistent across your Maomi pulls and hasn't hurt flavor. Balance 3 is the best score you've hit on this bean, and the notes back it up — slightly sour but not lingering, which on a low-acid bean like Maomi signals you're close to fully extracted. The left spout fast-dripping throughout is a mild flow irregularity worth watching, but the shot extracted intact and tasted coherent, so it didn't cause catastrophic channeling. Grinder retention at 0.1g is clean — no retention variability this time.\",\n  \"recommendation\": {\n    \"action\": \"Pull one more shot at 32.5, but stop the shot about 2–3g earlier — target yield 33g instead of 35g.\",\n    \"reason\": \"You're at balance 3 with a slight sour that lingers faintly at the one-minute mark. That suggests you're just barely under-extracted. Rather than moving the grind (which risks jumping back to bitter territory), tighten the yield slightly to increase concentration and reduce the watery sour tail. If the slight linger disappears and body improves, 32.5 at 33g is your dial-in. If it gets more bitter, 32.5 at 36g is the answer and you're already dialed in.\"\n  },\n  \"bean_context\": \"At 22 days post-roast the Maomi is firmly in peak window — freshness isn't a factor here. The balance 3 result is consistent with a low-acid bean approaching full extraction: you're not dealing with bean brightness, just a hair of under-extraction. The intact puck sticking to the shower head is normal for your Bambino workflow and not a concern. The narrow grind sweet spot on this bean (31 = bitter, 32 = sour, 32.5 = nearly balanced) is characteristic of blends with heavier body components like PNG — they compress quickly.\",\n  \"progress_note\": \"Balance 3 is your first 'Slightly Sour' on this bean — every previous Maomi shot was balance 2 or worse. The systematic bracket of 31 → 32 → 32.5 is exactly the right dialing-in process. You're one adjustment away from locking this in.\",\n  \"overall_verdict\": \"good\",\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Maomi Blend — grind 32.5 produced balance 3 (slightly sour, faint linger at 1 min). One adjustment left: try 32.5 at 33g yield to tighten concentration and eliminate sour tail. If that removes the linger → dialed in at 32.5/33g. If it gets bitter → dialed in at 32.5/36g.\",\n    \"known_patterns\": \"Acidity sensitive — but Maomi is low-acid so all sourness is under-extraction. Bambino drip lag 6-8g normal. WDT solid. 30lb spring tamper established. Maomi sweet spot is narrow — grind 31 = bitter (40s, balance 6), grind 32 = sour (31s, balance 2), grind 32.5 = slightly sour (38s, balance 3). Left spout irregularity appeared at 32.5 but shot extracted coherently — monitor but not critical. Grinder retention stable at 0.1g on shot 17.\",\n    \"last_recommendation\": \"Hold grind at 32.5. Pull at 18g dose, stop shot at 33g yield (down from 35g). Goal: eliminate faint sour linger by increasing concentration slightly without touching grind.\",\n    \"last_analysis_date\": \"2026-05-26T14:02:03.973Z\",\n    \"last_analyzed_shot_id\": 18,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"resting\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 0,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon variety, ganache/orange peel/Luxardo\",\n        \"notes\": \"Roasted May 18 2026. Do not use until May 28 2026 minimum. Start coarser than regular beans — decaf extracts more easily.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": 33.5,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": null,\n        \"shots_pulled\": 0,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Naturally bright — sourness was partially bean character not extraction error. Best results at grind 33-34, 30lb spring.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-05-26 15:00:27"
    },
    {
      "id": 8,
      "shotId": 19,
      "analysisMode": "recent",
      "summary": "First shot on the Decaf Huila Pink Bourbon — and it showed all the classic signs of a first pull on an unfamiliar bean: very fast at 20s, balance 1 (very sour), and a left spout that dropped out mid-shot around the 12-second mark. The grinder flush with 21g of decaf before the shot was good practice for a bean switch. This is a baseline shot, not a failure.",
      "numbers": "20 seconds lands right at the Fast/Very Fast boundary — industry standard calls this under-extracted, and your database agrees with 'Fast.' Ratio of 2.14 is Normal by both standards. The speed and extreme sourness are consistent with each other: at grind 33.5 (your Ándale Market sweet spot), this decaf is flowing way too fast. EA Washed decaf has an opened cell structure from the decaffeination process — it extracts more easily than regular beans, so a grind that worked on Ándale will run fast and sour on this one. The left spout dropping out at ~12s is worth noting — this may be channeling caused by the very coarse grind creating a loose puck, not a prep issue. The lag of 10g is on the high end of normal for the Bambino but not alarming given it's noted as 'longer than expected' — flag to monitor.",
      "recommendationAction": "Drop grind significantly to 31.5–32. Pull at 18g dose, target 36–38g yield. This is an exploratory shot — you're establishing a baseline range for this bean.",
      "recommendationReason": "Decaf extracts 1–2 settings faster than equivalent regular beans. Your Ándale dialed in around 33–34; starting 1.5–2 clicks finer for the decaf is the textbook adjustment. A 20s shot at 33.5 means you need meaningful resistance — 31.5 or 32 is the right exploration zone. The left spout dropout at 12s is likely a loose puck artifact from the coarse grind, not a prep problem — if it persists at a finer setting with a denser puck, then investigate further.",
      "beanContext": "The Decaf Huila Pink Bourbon is 8 days off roast. Your per-bag window says Peak, and for EA Washed decaf that's reasonable — these are ready around day 4 and peak roughly days 7–21, so you're in a good spot. The flavor notes (Luxardo, ganache, orange peel) suggest a rich, complex cup with some brightness — the extreme sourness here is pure under-extraction at the wrong grind, not bean character. The grinder retention logged as 0g is notable: you flushed 21g before the shot, so that's expected. Future shots should stabilize at normal retention levels.",
      "progressNote": "You're opening a new bean with the right instincts — purging the grinder before the switch was the correct move. This is shot 1 of the dialing-in process on a bean type that requires its own calibration. The Maomi work gave you a solid feel for bracketing; apply the same discipline here.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"First shot on the Decaf Huila Pink Bourbon — and it showed all the classic signs of a first pull on an unfamiliar bean: very fast at 20s, balance 1 (very sour), and a left spout that dropped out mid-shot around the 12-second mark. The grinder flush with 21g of decaf before the shot was good practice for a bean switch. This is a baseline shot, not a failure.\",\n  \"numbers\": \"20 seconds lands right at the Fast/Very Fast boundary — industry standard calls this under-extracted, and your database agrees with 'Fast.' Ratio of 2.14 is Normal by both standards. The speed and extreme sourness are consistent with each other: at grind 33.5 (your Ándale Market sweet spot), this decaf is flowing way too fast. EA Washed decaf has an opened cell structure from the decaffeination process — it extracts more easily than regular beans, so a grind that worked on Ándale will run fast and sour on this one. The left spout dropping out at ~12s is worth noting — this may be channeling caused by the very coarse grind creating a loose puck, not a prep issue. The lag of 10g is on the high end of normal for the Bambino but not alarming given it's noted as 'longer than expected' — flag to monitor.\",\n  \"recommendation\": {\n    \"action\": \"Drop grind significantly to 31.5–32. Pull at 18g dose, target 36–38g yield. This is an exploratory shot — you're establishing a baseline range for this bean.\",\n    \"reason\": \"Decaf extracts 1–2 settings faster than equivalent regular beans. Your Ándale dialed in around 33–34; starting 1.5–2 clicks finer for the decaf is the textbook adjustment. A 20s shot at 33.5 means you need meaningful resistance — 31.5 or 32 is the right exploration zone. The left spout dropout at 12s is likely a loose puck artifact from the coarse grind, not a prep problem — if it persists at a finer setting with a denser puck, then investigate further.\"\n  },\n  \"bean_context\": \"The Decaf Huila Pink Bourbon is 8 days off roast. Your per-bag window says Peak, and for EA Washed decaf that's reasonable — these are ready around day 4 and peak roughly days 7–21, so you're in a good spot. The flavor notes (Luxardo, ganache, orange peel) suggest a rich, complex cup with some brightness — the extreme sourness here is pure under-extraction at the wrong grind, not bean character. The grinder retention logged as 0g is notable: you flushed 21g before the shot, so that's expected. Future shots should stabilize at normal retention levels.\",\n  \"progress_note\": \"You're opening a new bean with the right instincts — purging the grinder before the switch was the correct move. This is shot 1 of the dialing-in process on a bean type that requires its own calibration. The Maomi work gave you a solid feel for bracketing; apply the same discipline here.\",\n  \"overall_verdict\": \"needs_work\",\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Decaf Huila Pink Bourbon — shot 1 baseline. Grind 33.5 too coarse: 20s, balance 1, left spout dropout at 12s. Decaf extracts faster — need to go finer. Target: try grind 31.5–32, 18g dose, 36–38g yield.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6-8g normal (this shot showed 10g — monitor). WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout at 12s on decaf shot 1 — likely loose puck from coarse grind, not prep issue. Grinder purge with 21g before bean switch: correct practice.\",\n    \"last_recommendation\": \"Drop grind to 31.5–32 for decaf. Pull at 18g dose, 36–38g yield. Exploring baseline range — decaf extracts faster than regular beans.\",\n    \"last_analysis_date\": \"2026-05-27T01:24:48.254Z\",\n    \"last_analyzed_shot_id\": 19,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 33.5,\n        \"shots_pulled\": 1,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Shot 1 at 33.5 too coarse: 20s, balance 1, left spout dropout at 12s. Start at 31.5–32 next — decaf extracts faster.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": 33.5,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": null,\n        \"shots_pulled\": 0,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Naturally bright — sourness was partially bean character not extraction error. Best results at grind 33-34, 30lb spring.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-05-27 01:25:27"
    },
    {
      "id": 9,
      "shotId": 20,
      "analysisMode": "recent",
      "summary": "Shot 20 on the Decaf Huila: grind drop from 33.5 to 29 — a big move — landed a 28s pull at 1.88 ratio. Balance improved from 1 to 2, flow was even both spouts throughout. Still sour and lingering, but meaningfully less than last time. Structurally this is a step forward.",
      "numbers": "28s is solidly in the Normal range (25–35s), and the ratio at 1.88 reads Short — yield came in at 34g against an 18g dose. The lower yield is likely contributing to the lingering sourness: less water through the puck means less full dissolution of the sweeter, later-extracting compounds. Even flow throughout is a good sign — the left spout dropout from shot 1 is gone, confirming that was a loose puck from the coarse grind, not a prep issue. The 10g drip lag is your Bambino normal. Balance at 2 (Sour) with improvement from 1 is consistent with the numbers — extraction is moving in the right direction but not quite there yet.",
      "recommendationAction": "Keep grind at 29, but push yield to 36–38g on the next shot.",
      "recommendationReason": "Time and flow are good at 29 — the puck is behaving. The lingering sourness is more likely an under-yield issue than an under-extraction issue at this grind. Adding 2–4g more water through the same puck will dissolve more of the sweeter compounds without needing to change the grind. One variable at a time: hold 29, chase the yield.",
      "beanContext": "EA Washed Pink Bourbon from Colombia Huila at 8 days post-roast — technically in the peak window for decaf (ready by day 4, peak through ~day 21). The flavor notes promise ganache, orange peel, and Luxardo — none of that is showing yet, which is expected at 2 shots in while still dialing. The lingering sourness is consistent with a short pull on a high-elevation, naturally acidic Pink Bourbon — this isn't bean character telling you to stop, it's extraction telling you to extend the yield.",
      "progressNote": "Even flow on both spouts this shot after the left dropout on shot 1 — that's a real fix, not luck. The 4.5-click grind drop was bold but it worked structurally. Now it's about getting yield right.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 20 on the Decaf Huila: grind drop from 33.5 to 29 — a big move — landed a 28s pull at 1.88 ratio. Balance improved from 1 to 2, flow was even both spouts throughout. Still sour and lingering, but meaningfully less than last time. Structurally this is a step forward.\",\n  \"numbers\": \"28s is solidly in the Normal range (25–35s), and the ratio at 1.88 reads Short — yield came in at 34g against an 18g dose. The lower yield is likely contributing to the lingering sourness: less water through the puck means less full dissolution of the sweeter, later-extracting compounds. Even flow throughout is a good sign — the left spout dropout from shot 1 is gone, confirming that was a loose puck from the coarse grind, not a prep issue. The 10g drip lag is your Bambino normal. Balance at 2 (Sour) with improvement from 1 is consistent with the numbers — extraction is moving in the right direction but not quite there yet.\",\n  \"recommendation\": {\n    \"action\": \"Keep grind at 29, but push yield to 36–38g on the next shot.\",\n    \"reason\": \"Time and flow are good at 29 — the puck is behaving. The lingering sourness is more likely an under-yield issue than an under-extraction issue at this grind. Adding 2–4g more water through the same puck will dissolve more of the sweeter compounds without needing to change the grind. One variable at a time: hold 29, chase the yield.\"\n  },\n  \"bean_context\": \"EA Washed Pink Bourbon from Colombia Huila at 8 days post-roast — technically in the peak window for decaf (ready by day 4, peak through ~day 21). The flavor notes promise ganache, orange peel, and Luxardo — none of that is showing yet, which is expected at 2 shots in while still dialing. The lingering sourness is consistent with a short pull on a high-elevation, naturally acidic Pink Bourbon — this isn't bean character telling you to stop, it's extraction telling you to extend the yield.\",\n  \"progress_note\": \"Even flow on both spouts this shot after the left dropout on shot 1 — that's a real fix, not luck. The 4.5-click grind drop was bold but it worked structurally. Now it's about getting yield right.\",\n  \"overall_verdict\": \"needs_work\",\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Decaf Huila Pink Bourbon — shot 2. Grind 29 landed 28s, balance 2, even flow. Under-yield at 34g likely driving lingering sourness. Hold grind at 29, push yield to 36–38g next shot.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields driving lingering sourness on this bean.\",\n    \"last_recommendation\": \"Hold grind at 29. Push yield to 36–38g. One variable — yield only.\",\n    \"last_analysis_date\": \"2026-05-27T01:37:44.254Z\",\n    \"last_analyzed_shot_id\": 20,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 29,\n        \"shots_pulled\": 2,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Shot 1 at 33.5: 20s, balance 1, left spout dropout. Shot 2 at 29: 28s, balance 2, even flow, under-yield 34g. Hold 29, push yield 36–38g.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": 33.5,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": null,\n        \"shots_pulled\": 0,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Naturally bright — sourness was partially bean character not extraction error. Best results at grind 33-34, 30lb spring.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-05-27 01:38:17"
    },
    {
      "id": 10,
      "shotId": 20,
      "analysisMode": "recent",
      "summary": "Shot 2 on the Decaf Huila: even flow, 28s, balance 2 — moving in the right direction from shot 1's disaster, but still sour and lingering. The 34.2g yield is short of the 36–38g target, which is almost certainly why the sourness isn't resolving.",
      "numbers": "Time at 28s is solidly Normal by both industry standard and your thresholds — no extraction speed problem. Ratio at 1.88 classifies Short, and that's the issue: you needed 36–38g and stopped at 34g. Under-yield on decaf means under-extraction, and lingering sourness on a short pull is textbook. The even bilateral flow confirms puck prep is clean and grind 29 is in a workable range — there's no channeling story here. The lag was 6g, perfectly normal for the Bambino.",
      "recommendationAction": "Hold grind at 29. This time, actually hit 36–38g yield — stop the pump later.",
      "recommendationReason": "The grind is dialed. The sour linger is yield starvation, not extraction speed or grind size. Shot 2 was the same instruction as shot 1 on yield — you stopped 2–4g short again. Fix the one variable that actually changed nothing: let the shot run to 37g before stopping.",
      "beanContext": "EA Washed decaf at 8 days post-roast is right at the edge of its window — the bag said don't use until May 25, and you're pulling May 27. It's entering peak but may need one more day of outgassing to settle. The Luxardo and ganache notes are buried under acidity right now, which is consistent with both under-yield and a bean still waking up. Orange peel brightness is real in this bean, but lingering sourness is not just character — it's extraction telling you something.",
      "progressNote": "Flow control is solid — two clean even pulls in a row after resolving the coarse grind/dropout issue. The technique is there. Now it's about following through on yield.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 2 on the Decaf Huila: even flow, 28s, balance 2 — moving in the right direction from shot 1's disaster, but still sour and lingering. The 34.2g yield is short of the 36–38g target, which is almost certainly why the sourness isn't resolving.\",\n  \"numbers\": \"Time at 28s is solidly Normal by both industry standard and your thresholds — no extraction speed problem. Ratio at 1.88 classifies Short, and that's the issue: you needed 36–38g and stopped at 34g. Under-yield on decaf means under-extraction, and lingering sourness on a short pull is textbook. The even bilateral flow confirms puck prep is clean and grind 29 is in a workable range — there's no channeling story here. The lag was 6g, perfectly normal for the Bambino.\",\n  \"recommendation\": {\n    \"action\": \"Hold grind at 29. This time, actually hit 36–38g yield — stop the pump later.\",\n    \"reason\": \"The grind is dialed. The sour linger is yield starvation, not extraction speed or grind size. Shot 2 was the same instruction as shot 1 on yield — you stopped 2–4g short again. Fix the one variable that actually changed nothing: let the shot run to 37g before stopping.\"\n  },\n  \"bean_context\": \"EA Washed decaf at 8 days post-roast is right at the edge of its window — the bag said don't use until May 25, and you're pulling May 27. It's entering peak but may need one more day of outgassing to settle. The Luxardo and ganache notes are buried under acidity right now, which is consistent with both under-yield and a bean still waking up. Orange peel brightness is real in this bean, but lingering sourness is not just character — it's extraction telling you something.\",\n  \"progress_note\": \"Flow control is solid — two clean even pulls in a row after resolving the coarse grind/dropout issue. The technique is there. Now it's about following through on yield.\",\n  \"overall_verdict\": \"needs_work\",\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Decaf Huila Pink Bourbon — shot 3. Grind 29 is correct, flow is clean. Sour linger persists because yield stopped at 34g again, short of 36–38g target. Next shot: hold grind at 29, run to 37g yield — no other changes.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields driving lingering sourness on this bean — yield target 36–38g has not been hit yet across two shots.\",\n    \"last_recommendation\": \"Hold grind at 29. Run yield to 37g. Stop the pump later — yield is the only thing to fix.\",\n    \"last_analysis_date\": \"2026-05-27T01:37:44.254Z\",\n    \"last_analyzed_shot_id\": 20,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 29,\n        \"shots_pulled\": 3,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Grind 29 confirmed: even flow, 28s, workable. Yield stuck at 34g both shots — linger sourness not resolving. Must hit 37g next.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": 33.5,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": null,\n        \"shots_pulled\": 0,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Naturally bright — sourness was partially bean character not extraction error. Best results at grind 33-34, 30lb spring.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-05-27 01:40:02"
    },
    {
      "id": 11,
      "shotId": 20,
      "analysisMode": "recent",
      "summary": "Shot 3 on the Decaf Huila Pink Bourbon: grind 29, 18.1g in, 34.2g out in 28 seconds. Flow was clean and even — technique is solid — but yield stopped at 34g again, short of the 37g target. The lingering sourness is still there, and the short yield is still the explanation.",
      "numbers": "28 seconds lands squarely in the Normal range (25–35s) — time is not the problem. The ratio of 1.88 classifies as Short, sitting below the standard espresso range of 2.0–2.5. That ~3g yield gap from the 37g target is small in volume but meaningful in extraction: you're stopping the shot before the sweeter, rounder compounds fully develop. Balance of 2 (Sour) is consistent with this — and the notes confirm the sourness is still lingering, not just a first-impression brightness. The good news: 'not as sour as before' is real progress. The direction is right, the yield just needs to close.",
      "recommendationAction": "Hold grind at 29. This time, watch the yield and stop the pump at 37g — not before.",
      "recommendationReason": "Everything about this shot is correct except when you stopped it. Grind is dialed, flow is even, time is healthy. The lingering sourness pattern across two shots at 34g yield is clear: you need 3 more grams. Don't change anything else. This is purely about letting the shot run longer.",
      "beanContext": "EA Washed decaf at 8 days post-roast — within the estimated peak window, and extraction behavior is consistent with that. The flavor notes (Luxardo, ganache, orange peel) suggest this bean has richness available that isn't being unlocked yet at the short yield. The lingering sourness is not a bean character trait to accept — it's a yield problem on a bean that should be showing more sweetness and body once you get there. No freshness concerns at this stage.",
      "progressNote": "Flow is clean and consistent across both shots at grind 29 — that's the hard part done. Yield discipline is the only remaining variable. Hit 37g once and you'll have a real read on where this bean lands.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 3 on the Decaf Huila Pink Bourbon: grind 29, 18.1g in, 34.2g out in 28 seconds. Flow was clean and even — technique is solid — but yield stopped at 34g again, short of the 37g target. The lingering sourness is still there, and the short yield is still the explanation.\",\n  \"numbers\": \"28 seconds lands squarely in the Normal range (25–35s) — time is not the problem. The ratio of 1.88 classifies as Short, sitting below the standard espresso range of 2.0–2.5. That ~3g yield gap from the 37g target is small in volume but meaningful in extraction: you're stopping the shot before the sweeter, rounder compounds fully develop. Balance of 2 (Sour) is consistent with this — and the notes confirm the sourness is still lingering, not just a first-impression brightness. The good news: 'not as sour as before' is real progress. The direction is right, the yield just needs to close.\",\n  \"recommendation\": {\n    \"action\": \"Hold grind at 29. This time, watch the yield and stop the pump at 37g — not before.\",\n    \"reason\": \"Everything about this shot is correct except when you stopped it. Grind is dialed, flow is even, time is healthy. The lingering sourness pattern across two shots at 34g yield is clear: you need 3 more grams. Don't change anything else. This is purely about letting the shot run longer.\"\n  },\n  \"bean_context\": \"EA Washed decaf at 8 days post-roast — within the estimated peak window, and extraction behavior is consistent with that. The flavor notes (Luxardo, ganache, orange peel) suggest this bean has richness available that isn't being unlocked yet at the short yield. The lingering sourness is not a bean character trait to accept — it's a yield problem on a bean that should be showing more sweetness and body once you get there. No freshness concerns at this stage.\",\n  \"progress_note\": \"Flow is clean and consistent across both shots at grind 29 — that's the hard part done. Yield discipline is the only remaining variable. Hit 37g once and you'll have a real read on where this bean lands.\",\n  \"overall_verdict\": \"needs_work\",\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Decaf Huila Pink Bourbon — shot 3 confirmed grind 29, clean flow. Lingering sourness persists across two shots at 34g yield. Next shot: same grind, stop pump at 37g — yield is the only remaining fix.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields driving lingering sourness on this bean — 34g yield across two shots, target is 37g, not yet hit.\",\n    \"last_recommendation\": \"Hold grind at 29. Stop the pump at 37g. Yield only — no other changes.\",\n    \"last_analysis_date\": \"2026-05-27T01:37:44.254Z\",\n    \"last_analyzed_shot_id\": 20,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 29,\n        \"shots_pulled\": 3,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Grind 29 confirmed: even flow, 28s, workable. Yield stuck at 34g across two shots — lingering sourness not resolving. Must hit 37g next.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": 33.5,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": null,\n        \"shots_pulled\": 0,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Naturally bright — sourness was partially bean character not extraction error. Best results at grind 33-34, 30lb spring.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-05-27 01:41:34"
    },
    {
      "id": 12,
      "shotId": 35,
      "analysisMode": "recent",
      "summary": "Shot 21: grind 28, 18g dose, 36.4g yield, 33s — right in the Normal/Normal zone. Balance flipped to 5 (slightly bitter) and quality jumped to 4 stars, your best decaf shot yet. The flavor is landing, but the flow was messy — uneven spouts and right-side dripping point to channeling during this pull.",
      "numbers": "Time at 33s is solidly Normal (25–35s industry standard). Ratio at 2.02 is Normal — you finally broke out of Short territory, hitting close to the 37g target (36.4g, just shy). The taste numbers tell a good story: balance 5 is slightly bitter but dramatically better than the sour-dominant shots at 34g yield. Quality at 4 is a real improvement from 1s across the last two pulls. The contradiction to flag: the channeling described in notes (right spout dropping out, uneven flow) typically means uneven extraction — yet the flavor came out reasonably balanced. That's either lucky distribution in the basket or the bitterness is masking residual sourness. Don't ignore the flow issues just because the cup was decent.",
      "recommendationAction": "Go 1 click coarser — grind 29 — and hold yield at 36–37g.",
      "recommendationReason": "You went 1 click finer to 28 without logging it as an intentional change from the last recommendation (hold at 29). The result: slight bitterness and channeling. Grind 28 may be compressing the puck enough to cause uneven resistance and the right-spout dropout you noted. Back to 29 — which had even flow on both spouts last shot — and keep the yield where it is now (36–37g). The 34g yield was driving lingering sourness. You've fixed that. Don't chase the bitterness with a coarser grind yet — go back to the confirmed-flow grind first and see if the flavor lands at this yield.",
      "beanContext": "At 9 days post-roast, this EA Washed decaf is right at the edge of its peak window (day 4–21 for EA Washed). Flavor notes are ganache, orange peel, Luxardo — the slight bitterness at balance 5 is plausible for this profile, but it's not a target. The channeling is more likely the cause of bitterness than the bean itself. Pink Bourbon at high elevation can read bright when under-extracted and chocolatey/slightly bitter when over-extracted — you're threading that needle. Grind 29 at 36–37g yield is the shot to confirm.",
      "progressNote": "Quality at 4 stars is your highest rating on any bean so far — and you got there by fixing the yield issue, not by chasing the grind. That's the right instinct.",
      "overallVerdict": "good",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 21: grind 28, 18g dose, 36.4g yield, 33s — right in the Normal/Normal zone. Balance flipped to 5 (slightly bitter) and quality jumped to 4 stars, your best decaf shot yet. The flavor is landing, but the flow was messy — uneven spouts and right-side dripping point to channeling during this pull.\",\n  \"numbers\": \"Time at 33s is solidly Normal (25–35s industry standard). Ratio at 2.02 is Normal — you finally broke out of Short territory, hitting close to the 37g target (36.4g, just shy). The taste numbers tell a good story: balance 5 is slightly bitter but dramatically better than the sour-dominant shots at 34g yield. Quality at 4 is a real improvement from 1s across the last two pulls. The contradiction to flag: the channeling described in notes (right spout dropping out, uneven flow) typically means uneven extraction — yet the flavor came out reasonably balanced. That's either lucky distribution in the basket or the bitterness is masking residual sourness. Don't ignore the flow issues just because the cup was decent.\",\n  \"recommendation\": {\n    \"action\": \"Go 1 click coarser — grind 29 — and hold yield at 36–37g.\",\n    \"reason\": \"You went 1 click finer to 28 without logging it as an intentional change from the last recommendation (hold at 29). The result: slight bitterness and channeling. Grind 28 may be compressing the puck enough to cause uneven resistance and the right-spout dropout you noted. Back to 29 — which had even flow on both spouts last shot — and keep the yield where it is now (36–37g). The 34g yield was driving lingering sourness. You've fixed that. Don't chase the bitterness with a coarser grind yet — go back to the confirmed-flow grind first and see if the flavor lands at this yield.\"\n  },\n  \"bean_context\": \"At 9 days post-roast, this EA Washed decaf is right at the edge of its peak window (day 4–21 for EA Washed). Flavor notes are ganache, orange peel, Luxardo — the slight bitterness at balance 5 is plausible for this profile, but it's not a target. The channeling is more likely the cause of bitterness than the bean itself. Pink Bourbon at high elevation can read bright when under-extracted and chocolatey/slightly bitter when over-extracted — you're threading that needle. Grind 29 at 36–37g yield is the shot to confirm.\",\n  \"progress_note\": \"Quality at 4 stars is your highest rating on any bean so far — and you got there by fixing the yield issue, not by chasing the grind. That's the right instinct.\",\n  \"overall_verdict\": \"good\",\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Decaf Huila Pink Bourbon — grind 28 produced channeling and slight bitterness at 36.4g yield. Back to grind 29, hold yield at 36–37g. Flow confirmed clean at 29. Next shot is the confirmation pull.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 caused channeling (right spout dropout) and slight bitterness. Grind 29 had clean even flow — return to 29.\",\n    \"last_recommendation\": \"Grind 29. Hold yield at 36–37g. Do not change grind — flow confirmation is the goal.\",\n    \"last_analysis_date\": \"2026-05-27T21:29:49.356Z\",\n    \"last_analyzed_shot_id\": 35,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 29,\n        \"shots_pulled\": 4,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Grind 29: even flow, 28s, workable. Grind 28: channeling, right spout dropout, slight bitterness. Yield 36–37g resolves lingering sourness. Confirm 29 at 36–37g.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": 33.5,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": null,\n        \"shots_pulled\": 0,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Naturally bright — sourness was partially bean character not extraction error. Best results at grind 33-34, 30lb spring.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-05-27 21:30:31"
    },
    {
      "id": 13,
      "shotId": 36,
      "analysisMode": "recent",
      "summary": "{\"summary\":\"Grind 28 again — but the coaching state clearly said to hold at 29 for this confirmation pull. This shot ran fast at 21 seconds with a 2.22 ratio, landing sour with lingering acidity and a thin body. The flow notes describe a high initial burst that strings down and wobbles at the end — consistent with a slightly uneven puck, though both spouts stayed even. The result confirms what grind 28 showed last time: too coarse for this decaf at this yield.\",\n\n\"numbers\":\"21 seconds is Fast by your labels and under-extracted by industry standard (20–25s zone). Ratio at 2.22 is Normal/standard espresso, so yield isn't the problem here — grind is. Balance 2 (Sour) matches the extraction numbers. The lag is logged as 10g, which is higher than the typical 6–8g Bambino norm but not a red flag — this was a slightly faster shot so the pump stopped with more water in the system. Sour + thin body + fast time all point the same direction: grind is too coarse, extraction is falling short. Notably, this is the Ándale Market bag, not the decaf — but the grind setting of 28 is still well into decaf territory and too coarse for this medium roast bean.\",\n\n\"recommendation\":{\"action\":\"Go back to grind 33, hold dose at 17.9g, target yield 36–38g. Do not pull at 28 again on this bag.\",\"reason\":\"Grind 28 was the decaf dialing-in setting — it's the wrong setting for the Ándale Market. At 31 days post-roast this bean is still in good shape, and your best shot on it was at grind 33 (31s, balance 2, quality 3 — the 'best shot yet' note). Grind 34 ran sour and fast at 23s. Grind 33 is the confirmed sweet spot. Return there.\"},\n\n\"bean_context\":\"The Ándale Market is a bright, acidic Latin American blend — cherry, nougat, wildflower honey — so some sourness is baked into the bean character. But lingering sourness with thin body at 21 seconds is extraction, not bean brightness. At 31 days post-roast it's still in excellent freshness. Your own history on this bag shows grind 33 as the best result. The decaf context doesn't apply here.\",\n\n\"progress_note\":\"The mixing of grind settings between beans is the pattern to watch. Keeping a quick note of which bean is in the hopper before grinding will prevent this — the Bambino has no retention buffer and any leftover grinds from the decaf session could also be contributing to the first few shots tasting off.\",\n\n\"overall_verdict\":\"needs_work\",\n\n\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Ándale Market — grind 28 pulled by mistake (decaf setting). Return to grind 33, yield 36–38g. Decaf Huila still needs confirmation pull at grind 29, yield 36–37g — that session is paused.\",\"known_patterns\":\"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 caused channeling and bitterness on decaf; same grind caused under-extraction on Ándale Market. Ándale Market best confirmed at grind 33. Grind settings must be matched to the correct bean — risk of cross-session mix-up noted.\",\"last_recommendation\":\"Grind 33, yield 36–38g on Ándale Market. Decaf confirmation pull (grind 29, yield 36–37g) still pending.\",\"last_analysis_date\":\"2026-05-28T14:07:00.000Z\",\"last_analyzed_shot_id\":36,\"bean_contexts\":[{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":29,\"shots_pulled\":4,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Grind 29: even flow, 28s, workable. Grind 28: channeling, right spout dropout, slight bitterness. Yield 36–37g resolves lingering sourness. Confirmation pull at 29 still pending.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":33,\"shots_pulled\":11,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best shot at grind 33 (31s, quality 3). Grind 34 ran fast and sour. Grind 28 (wrong bean mixup) confirmed too coarse. Return to 33 at 36–38g yield.\"}]}}}",
      "numbers": null,
      "recommendationAction": null,
      "recommendationReason": null,
      "beanContext": null,
      "progressNote": null,
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\"summary\":\"Grind 28 again — but the coaching state clearly said to hold at 29 for this confirmation pull. This shot ran fast at 21 seconds with a 2.22 ratio, landing sour with lingering acidity and a thin body. The flow notes describe a high initial burst that strings down and wobbles at the end — consistent with a slightly uneven puck, though both spouts stayed even. The result confirms what grind 28 showed last time: too coarse for this decaf at this yield.\",\n\n\"numbers\":\"21 seconds is Fast by your labels and under-extracted by industry standard (20–25s zone). Ratio at 2.22 is Normal/standard espresso, so yield isn't the problem here — grind is. Balance 2 (Sour) matches the extraction numbers. The lag is logged as 10g, which is higher than the typical 6–8g Bambino norm but not a red flag — this was a slightly faster shot so the pump stopped with more water in the system. Sour + thin body + fast time all point the same direction: grind is too coarse, extraction is falling short. Notably, this is the Ándale Market bag, not the decaf — but the grind setting of 28 is still well into decaf territory and too coarse for this medium roast bean.\",\n\n\"recommendation\":{\"action\":\"Go back to grind 33, hold dose at 17.9g, target yield 36–38g. Do not pull at 28 again on this bag.\",\"reason\":\"Grind 28 was the decaf dialing-in setting — it's the wrong setting for the Ándale Market. At 31 days post-roast this bean is still in good shape, and your best shot on it was at grind 33 (31s, balance 2, quality 3 — the 'best shot yet' note). Grind 34 ran sour and fast at 23s. Grind 33 is the confirmed sweet spot. Return there.\"},\n\n\"bean_context\":\"The Ándale Market is a bright, acidic Latin American blend — cherry, nougat, wildflower honey — so some sourness is baked into the bean character. But lingering sourness with thin body at 21 seconds is extraction, not bean brightness. At 31 days post-roast it's still in excellent freshness. Your own history on this bag shows grind 33 as the best result. The decaf context doesn't apply here.\",\n\n\"progress_note\":\"The mixing of grind settings between beans is the pattern to watch. Keeping a quick note of which bean is in the hopper before grinding will prevent this — the Bambino has no retention buffer and any leftover grinds from the decaf session could also be contributing to the first few shots tasting off.\",\n\n\"overall_verdict\":\"needs_work\",\n\n\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Ándale Market — grind 28 pulled by mistake (decaf setting). Return to grind 33, yield 36–38g. Decaf Huila still needs confirmation pull at grind 29, yield 36–37g — that session is paused.\",\"known_patterns\":\"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 caused channeling and bitterness on decaf; same grind caused under-extraction on Ándale Market. Ándale Market best confirmed at grind 33. Grind settings must be matched to the correct bean — risk of cross-session mix-up noted.\",\"last_recommendation\":\"Grind 33, yield 36–38g on Ándale Market. Decaf confirmation pull (grind 29, yield 36–37g) still pending.\",\"last_analysis_date\":\"2026-05-28T14:07:00.000Z\",\"last_analyzed_shot_id\":36,\"bean_contexts\":[{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":29,\"shots_pulled\":4,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Grind 29: even flow, 28s, workable. Grind 28: channeling, right spout dropout, slight bitterness. Yield 36–37g resolves lingering sourness. Confirmation pull at 29 still pending.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":33,\"shots_pulled\":11,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best shot at grind 33 (31s, quality 3). Grind 34 ran fast and sour. Grind 28 (wrong bean mixup) confirmed too coarse. Return to 33 at 36–38g yield.\"}]}}}",
      "createdAt": "2026-05-28 14:30:45"
    },
    {
      "id": 14,
      "shotId": 36,
      "analysisMode": "recent",
      "summary": "Confirmation pull at grind 28 — but the data shows grind setting 28, not 29 as planned. Shot ran fast at 21 seconds with a 2.22 ratio, rated sour with lingering acidity and thin body. This is not the confirmation pull you intended.",
      "numbers": "Shot time of 21s is Fast by your labels and under-extracted by industry standard (target 25–35s). Ratio 2.22 is Normal — yield was fine at 39.8g. The fast time at grind 28 lines up exactly with what you saw last time at 28: channeling risk, faster flow, extraction problems. The lag_g reads 10g here, which is higher than your typical 6g Bambino drip lag — worth noting but not necessarily alarming. Flow description (high initial flow, strings thinning, wobbly finish) is consistent with a slightly loose puck or mild channeling at the coarser grind. Balance 2 (Sour) with lingering finish confirms under-extraction. The numbers and taste notes are fully aligned.",
      "recommendationAction": "Move back to grind 29 immediately. This shot was pulled at grind 28 — the setting you already confirmed causes problems. Grind 29 is your target.",
      "recommendationReason": "Grind 28 has now produced fast, under-extracted shots with channeling signs twice. Grind 29 gave you clean even flow at 28 seconds. The plan was already set — this shot was a step backward, likely a grind dial error. Return to 29 and hold yield at 36–38g.",
      "beanContext": "Ándale Market at 31 days post-roast is still in a good freshness window for a medium roast. However, this bean is naturally bright and acidic — cherry, wildflower honey — so some acidity impression is expected. The lingering sourness with thin body here is not bean character though; it's under-extraction caused by the grind being too coarse and the shot running too fast. A well-extracted shot on this bean should show brightness up front that cleans up quickly, not a sour finish that hangs around. The bean is not the problem — grind 28 is.",
      "progressNote": "Your flow description is getting more precise — noting initial high flow, strings thinning, and wobbly finish shows you're reading the shot well in real time. That diagnostic skill is exactly what you need to catch future puck issues early.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Confirmation pull at grind 28 — but the data shows grind setting 28, not 29 as planned. Shot ran fast at 21 seconds with a 2.22 ratio, rated sour with lingering acidity and thin body. This is not the confirmation pull you intended.\",\n  \"numbers\": \"Shot time of 21s is Fast by your labels and under-extracted by industry standard (target 25–35s). Ratio 2.22 is Normal — yield was fine at 39.8g. The fast time at grind 28 lines up exactly with what you saw last time at 28: channeling risk, faster flow, extraction problems. The lag_g reads 10g here, which is higher than your typical 6g Bambino drip lag — worth noting but not necessarily alarming. Flow description (high initial flow, strings thinning, wobbly finish) is consistent with a slightly loose puck or mild channeling at the coarser grind. Balance 2 (Sour) with lingering finish confirms under-extraction. The numbers and taste notes are fully aligned.\",\n  \"recommendation\": {\n    \"action\": \"Move back to grind 29 immediately. This shot was pulled at grind 28 — the setting you already confirmed causes problems. Grind 29 is your target.\",\n    \"reason\": \"Grind 28 has now produced fast, under-extracted shots with channeling signs twice. Grind 29 gave you clean even flow at 28 seconds. The plan was already set — this shot was a step backward, likely a grind dial error. Return to 29 and hold yield at 36–38g.\"\n  },\n  \"bean_context\": \"Ándale Market at 31 days post-roast is still in a good freshness window for a medium roast. However, this bean is naturally bright and acidic — cherry, wildflower honey — so some acidity impression is expected. The lingering sourness with thin body here is not bean character though; it's under-extraction caused by the grind being too coarse and the shot running too fast. A well-extracted shot on this bean should show brightness up front that cleans up quickly, not a sour finish that hangs around. The bean is not the problem — grind 28 is.\",\n  \"progress_note\": \"Your flow description is getting more precise — noting initial high flow, strings thinning, and wobbly finish shows you're reading the shot well in real time. That diagnostic skill is exactly what you need to catch future puck issues early.\",\n  \"overall_verdict\": \"needs_work\",\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Ándale Market — grind 28 confirmed problematic twice (fast shot, channeling signs, sour). Return to grind 29, hold yield 36–38g. This is the actual confirmation pull needed.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale produced best results (31s, balance 2, good with milk). Flow observation skill improving — Diego reading high initial flow, string thinning, and wobbly finish in real time.\",\n    \"last_recommendation\": \"Grind 29. Hold yield 36–38g. Grind 28 confirmed problematic — do not use it again on this bean.\",\n    \"last_analysis_date\": \"2026-05-28T14:07:00.000Z\",\n    \"last_analyzed_shot_id\": 36,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 29,\n        \"shots_pulled\": 4,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Grind 29: even flow, 28s, workable. Grind 28: channeling, right spout dropout, slight bitterness. Yield 36–37g resolves lingering sourness. Confirm 29 at 36–37g.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 29,\n        \"shots_pulled\": 11,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Grind 28: fast shots, channeling signs, sour — confirmed problematic twice. Grind 29 target. Grind 33 best historical result. Naturally bright — some acidity is bean character.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-05-28 14:45:28"
    },
    {
      "id": 15,
      "shotId": 37,
      "analysisMode": "recent",
      "summary": "Shot 37 at grind 28.5 — a split-the-difference call between last recommendation (29) and the confirmed problematic 28. Flow split early with left spout lagging, then evened out mid-pull. Taste was very sour up front but dissipated quickly, landing at balance 3 (slightly sour). That quick-fade acidity pattern on a bright decaf is actually informative.",
      "numbers": "33 seconds (Normal), 2.07 ratio (Normal) — both squarely in range. The numbers are clean. Balance 3 is slightly sour but not alarming for a naturally bright EA Washed Pink Bourbon at day 10. The concerning part is the flow description: left spout lagging early while right ran freely, then converging around 23 seconds. That's a channeling signature — water found the path of least resistance early, then equalized as the puck saturated. The 6g drip lag is normal Bambino behavior, no issue there. The disconnect: the shot time and ratio look textbook, but the uneven flow suggests extraction was uneven across the puck rather than a clean, even pull.",
      "recommendationAction": "Return to grind 29 as directed. Do not use 28.5 again on this bean.",
      "recommendationReason": "Grind 28.5 produced the same early channel signature seen at grind 28 — left spout lag, uneven flow, split extraction. The slight sourness combined with that flow pattern points to uneven extraction, not true balance. The acidity dissipated quickly which is promising (well-extracted acidity fades; under-extracted acidity lingers), but the puck prep concern is real. Grind 29 had even flow on both spouts throughout — that's the baseline you want to build from. Once you confirm 29 with clean even flow, hold yield at 36–37g and assess taste from there.",
      "beanContext": "Pink Bourbon EA Washed decaf at day 10 — right at the front edge of peak window. The quick-fading sourness is consistent with the bean's brightness (Orange Peel, Luxardo notes) and is not necessarily a flaw. The Luxardo and ganache notes will come forward more as extraction evens out. Keep in mind this decaf extracts more easily than regular beans — grind 29 is already accounting for that. The flow behavior at 28.5 confirms this bean doesn't want to go finer than 29.",
      "progressNote": "The quick-dissipating sourness at balance 3 is actually your best taste result on this decaf so far — acidity that fades is a sign the extraction is getting closer. The flow issue is the remaining problem to fix, not the grind direction.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 37 at grind 28.5 — a split-the-difference call between last recommendation (29) and the confirmed problematic 28. Flow split early with left spout lagging, then evened out mid-pull. Taste was very sour up front but dissipated quickly, landing at balance 3 (slightly sour). That quick-fade acidity pattern on a bright decaf is actually informative.\",\n  \"numbers\": \"33 seconds (Normal), 2.07 ratio (Normal) — both squarely in range. The numbers are clean. Balance 3 is slightly sour but not alarming for a naturally bright EA Washed Pink Bourbon at day 10. The concerning part is the flow description: left spout lagging early while right ran freely, then converging around 23 seconds. That's a channeling signature — water found the path of least resistance early, then equalized as the puck saturated. The 6g drip lag is normal Bambino behavior, no issue there. The disconnect: the shot time and ratio look textbook, but the uneven flow suggests extraction was uneven across the puck rather than a clean, even pull.\",\n  \"recommendation\": {\n    \"action\": \"Return to grind 29 as directed. Do not use 28.5 again on this bean.\",\n    \"reason\": \"Grind 28.5 produced the same early channel signature seen at grind 28 — left spout lag, uneven flow, split extraction. The slight sourness combined with that flow pattern points to uneven extraction, not true balance. The acidity dissipated quickly which is promising (well-extracted acidity fades; under-extracted acidity lingers), but the puck prep concern is real. Grind 29 had even flow on both spouts throughout — that's the baseline you want to build from. Once you confirm 29 with clean even flow, hold yield at 36–37g and assess taste from there.\"\n  },\n  \"bean_context\": \"Pink Bourbon EA Washed decaf at day 10 — right at the front edge of peak window. The quick-fading sourness is consistent with the bean's brightness (Orange Peel, Luxardo notes) and is not necessarily a flaw. The Luxardo and ganache notes will come forward more as extraction evens out. Keep in mind this decaf extracts more easily than regular beans — grind 29 is already accounting for that. The flow behavior at 28.5 confirms this bean doesn't want to go finer than 29.\",\n  \"progress_note\": \"The quick-dissipating sourness at balance 3 is actually your best taste result on this decaf so far — acidity that fades is a sign the extraction is getting closer. The flow issue is the remaining problem to fix, not the grind direction.\",\n  \"overall_verdict\": \"needs_work\",\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Decaf Huila — grind 28.5 showed same early channeling as 28 (left spout lag, uneven flow). Return to grind 29, hold yield 36–37g, confirm clean even flow on both spouts from the start.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale produced best results (31s, balance 2, good with milk). Flow observation skill improving — Diego reading high initial flow, string thinning, and wobbly finish in real time. On Decaf: grind 28 and 28.5 both produce early uneven flow (left spout lag) — do not go finer than 29. Quick-fading acidity at balance 3 is a good sign extraction is approaching target.\",\n    \"last_recommendation\": \"Grind 29 on Decaf Huila. Hold yield 36–37g. Grind 28 and 28.5 confirmed problematic — do not use again on this bean.\",\n    \"last_analysis_date\": \"2026-05-28T23:39:00.000Z\",\n    \"last_analyzed_shot_id\": 37,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 29,\n        \"shots_pulled\": 5,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"28 and 28.5: early channel, left spout lag — do not use. Grind 29: even flow, target. Yield 36–37g. Quick-fade sourness at 28.5 is promising sign.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 29,\n        \"shots_pulled\": 11,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Grind 28: fast shots, channeling signs, sour — confirmed problematic twice. Grind 29 target. Grind 33 best historical result. Naturally bright — some acidity is bean character.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-05-29 00:02:13"
    },
    {
      "id": 16,
      "shotId": 37,
      "analysisMode": "recent",
      "summary": "Grind 28.5 repeated the same left-spout dropout seen at grind 28 — uneven flow from the start, left dripping while right flowed, evening out only at 23 seconds. The shot landed in Normal time and ratio territory, but the early channeling undermines extraction quality. The quick-fading sourness is again a promising sign that extraction potential is there, but the puck prep or grind is preventing even saturation.",
      "numbers": "33 seconds and 2.07 ratio both sit squarely in Normal range by every standard — on paper this looks fine. But the notes tell a different story: left spout dripping while right flowed freely is a textbook early channel, not a balanced extraction. Balance 2 (Sour) and the quick-fade pattern match what you saw at 28.5 before — the numbers are passable, the flow is not. This confirms the 28.5 finding: this grind is too fine for this bean at this stage, and it's producing a repeatable channeling signature on the left side specifically.",
      "recommendationAction": "Go back to grind 29 and hold it. Do not go finer than 29 on this bean.",
      "recommendationReason": "Grind 28.5 has now produced the same left-spout lag and uneven flow twice. This is not a one-off — it's a consistent channeling signature at this grind. Grind 29 gave you even flow on both spouts. The quick-fading sourness you're tasting is not a grind problem, it's likely the bean's brightness plus 10 days post-roast. Hold 36–37g yield at 29 and give it a clean pull before chasing the balance number.",
      "beanContext": "At 10 days post-roast, this EA Washed decaf is right at the edge of the peak window — flavor is developing but may still be slightly bright. The ganache and orange peel notes on this bean lean naturally toward a citrus-forward profile, so quick-fading acidity at balance 2 is not alarming — it's likely bean character, not a flaw you need to grind out. Do not chase extraction finer to fix the sourness; fix the flow first at 29, then reassess taste from a clean pull.",
      "progressNote": "Your flow reading is genuinely improving — you caught the left-spout dropout, tracked when it evened out, and correlated it to the grind. That's the right diagnostic instinct. Now trust what the data is telling you: 28 and 28.5 are off the table on this bean.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Grind 28.5 repeated the same left-spout dropout seen at grind 28 — uneven flow from the start, left dripping while right flowed, evening out only at 23 seconds. The shot landed in Normal time and ratio territory, but the early channeling undermines extraction quality. The quick-fading sourness is again a promising sign that extraction potential is there, but the puck prep or grind is preventing even saturation.\",\n  \"numbers\": \"33 seconds and 2.07 ratio both sit squarely in Normal range by every standard — on paper this looks fine. But the notes tell a different story: left spout dripping while right flowed freely is a textbook early channel, not a balanced extraction. Balance 2 (Sour) and the quick-fade pattern match what you saw at 28.5 before — the numbers are passable, the flow is not. This confirms the 28.5 finding: this grind is too fine for this bean at this stage, and it's producing a repeatable channeling signature on the left side specifically.\",\n  \"recommendation\": {\n    \"action\": \"Go back to grind 29 and hold it. Do not go finer than 29 on this bean.\",\n    \"reason\": \"Grind 28.5 has now produced the same left-spout lag and uneven flow twice. This is not a one-off — it's a consistent channeling signature at this grind. Grind 29 gave you even flow on both spouts. The quick-fading sourness you're tasting is not a grind problem, it's likely the bean's brightness plus 10 days post-roast. Hold 36–37g yield at 29 and give it a clean pull before chasing the balance number.\"\n  },\n  \"bean_context\": \"At 10 days post-roast, this EA Washed decaf is right at the edge of the peak window — flavor is developing but may still be slightly bright. The ganache and orange peel notes on this bean lean naturally toward a citrus-forward profile, so quick-fading acidity at balance 2 is not alarming — it's likely bean character, not a flaw you need to grind out. Do not chase extraction finer to fix the sourness; fix the flow first at 29, then reassess taste from a clean pull.\",\n  \"progress_note\": \"Your flow reading is genuinely improving — you caught the left-spout dropout, tracked when it evened out, and correlated it to the grind. That's the right diagnostic instinct. Now trust what the data is telling you: 28 and 28.5 are off the table on this bean.\",\n  \"overall_verdict\": \"needs_work\",\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Decaf Huila — grind 28.5 confirmed same channeling as 28 (left spout lag, uneven early flow). Return to grind 29, hold yield 36–37g, confirm clean even flow on both spouts from the start before adjusting anything else.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale produced best results (31s, balance 2, good with milk). Flow observation skill improving — Diego reading high initial flow, string thinning, and wobbly finish in real time. On Decaf Huila: grind 28 and 28.5 both produce early uneven flow (left spout lag) — confirmed twice each, do not go finer than 29. Quick-fading acidity at balance 2–3 is likely bean character on this bright EA Washed decaf, not an extraction flaw.\",\n    \"last_recommendation\": \"Grind 29 on Decaf Huila. Hold yield 36–37g. Grind 28 and 28.5 confirmed channeling — do not use again on this bean.\",\n    \"last_analysis_date\": \"2026-05-28T23:39:00.000Z\",\n    \"last_analyzed_shot_id\": 37,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 29,\n        \"shots_pulled\": 6,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"28 and 28.5: early channel, left spout lag — confirmed twice each, do not use. Grind 29: even flow, target. Yield 36–37g. Quick-fade sourness likely bean brightness, not extraction fault.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 29,\n        \"shots_pulled\": 11,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Grind 28: fast shots, channeling signs, sour — confirmed problematic twice. Grind 29 target. Grind 33 best historical result. Naturally bright — some acidity is bean character.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-05-29 00:53:58"
    },
    {
      "id": 17,
      "shotId": 38,
      "analysisMode": "recent",
      "summary": "Last beans from the bag — you pulled a 7.9g single shot in the single basket, targeting 1:2, and got 18.8g in 15 seconds. That's extremely fast and very under-extracted by time, though the balance landed at 5 (slightly bitter) which seems to contradict the numbers. The stirring discovery is the real story here.",
      "numbers": "15 seconds is Very Fast — well under the 20s floor for even minimally acceptable extraction. Industry standard flags this as severely under-extracted. The 1:2.38 ratio is Normal range. But the taste came back as slightly bitter (5), not sour — that's the opposite of what a 15s shot should produce. The contradiction is real: single basket dynamics, different flow characteristics, and possibly the stirring revealing flavors that were previously masked by stratification in the cup. The 8g drip lag on a 7.9g dose is also worth noting — proportionally, drip lag was nearly 100% of your dose, meaning almost all of your yield came from passive drip rather than active pump pressure. This is not a normal single shot scenario.",
      "recommendationAction": "Don't chase this shot — treat it as a one-off experiment, not a data point to dial in from.",
      "recommendationReason": "Single basket, last-of-bag dose, and proportional drip lag this extreme make this shot incomparable to your double basket baseline. The slightly bitter reading at balance 5 on a 15s shot is most likely an artifact of the unusual dynamics here, not a true taste signal. The bag is done. Your grind 29 on the double basket with 36–37g yield is still your confirmed target for any future Ándale pulls.",
      "beanContext": "Ándale Market at 32 days post-roast is at the tail end of its peak window but still extracting. The bag is finished now, so freshness is moot. This bean has been naturally bright throughout — cherry and wildflower acidity is baked into the profile. Your best historical result on this bag was grind 33 at 31s, which tells you the sweet spot for this bean on the double basket was coarser than you spent most of the bag dialing.",
      "progressNote": "The stirring observation is genuinely useful — espresso stratifies in the cup and tasting without stirring consistently reads sour on the first sip. Worth applying to every shot going forward, especially on bright beans where you might be over-correcting toward finer grinds based on surface-level sourness.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\"summary\":\"Last beans from the bag — you pulled a 7.9g single shot in the single basket, targeting 1:2, and got 18.8g in 15 seconds. That's extremely fast and very under-extracted by time, though the balance landed at 5 (slightly bitter) which seems to contradict the numbers. The stirring discovery is the real story here.\",\"numbers\":\"15 seconds is Very Fast — well under the 20s floor for even minimally acceptable extraction. Industry standard flags this as severely under-extracted. The 1:2.38 ratio is Normal range. But the taste came back as slightly bitter (5), not sour — that's the opposite of what a 15s shot should produce. The contradiction is real: single basket dynamics, different flow characteristics, and possibly the stirring revealing flavors that were previously masked by stratification in the cup. The 8g drip lag on a 7.9g dose is also worth noting — proportionally, drip lag was nearly 100% of your dose, meaning almost all of your yield came from passive drip rather than active pump pressure. This is not a normal single shot scenario.\",\"recommendation\":{\"action\":\"Don't chase this shot — treat it as a one-off experiment, not a data point to dial in from.\",\"reason\":\"Single basket, last-of-bag dose, and proportional drip lag this extreme make this shot incomparable to your double basket baseline. The slightly bitter reading at balance 5 on a 15s shot is most likely an artifact of the unusual dynamics here, not a true taste signal. The bag is done. Your grind 29 on the double basket with 36–37g yield is still your confirmed target for any future Ándale pulls.\"},\"bean_context\":\"Ándale Market at 32 days post-roast is at the tail end of its peak window but still extracting. The bag is finished now, so freshness is moot. This bean has been naturally bright throughout — cherry and wildflower acidity is baked into the profile. Your best historical result on this bag was grind 33 at 31s, which tells you the sweet spot for this bean on the double basket was coarser than you spent most of the bag dialing.\",\"progress_note\":\"The stirring observation is genuinely useful — espresso stratifies in the cup and tasting without stirring consistently reads sour on the first sip. Worth applying to every shot going forward, especially on bright beans where you might be over-correcting toward finer grinds based on surface-level sourness.\",\"overall_verdict\":\"needs_work\",\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Ándale bag finished. Decaf Huila active — grind 29 confirmed clean flow, hold yield 36–37g. Next session: confirm grind 29 on decaf produces balanced result and assess whether to nudge finer or hold.\",\"known_patterns\":\"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale produced best results (31s, balance 2, good with milk). On Decaf Huila: grind 28 and 28.5 both produce early uneven flow (left spout lag) — confirmed twice each, do not go finer than 29. Quick-fading acidity at balance 2–3 is likely bean character on this bright EA Washed decaf, not an extraction flaw. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid.\",\"last_recommendation\":\"Ándale bag finished. On Decaf Huila: grind 29, yield 36–37g, double basket. Stir before tasting.\",\"last_analysis_date\":\"2026-05-29T14:48:00.000Z\",\"last_analyzed_shot_id\":38,\"bean_contexts\":[{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":29,\"shots_pulled\":6,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"28 and 28.5: early channel, left spout lag — confirmed twice each, do not use. Grind 29: even flow, target. Yield 36–37g. Quick-fade sourness likely bean brightness, not extraction fault.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":29,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast. Never fully dialed — spent too long in fast/sour zone.\"}]}}",
      "createdAt": "2026-05-29 15:00:04"
    },
    {
      "id": 18,
      "shotId": 39,
      "analysisMode": "recent",
      "summary": "Grind 29 at 18g dose, 38.1g yield, 29 seconds — clean numbers right in the target zone. Balance logged at 2 (sour), but your notes say the sourness dissipates quickly after mixing, which is the bright EA Washed character you've seen before on this bean, not an extraction fault. Solid shot on paper, though the fast dripping near the end warrants attention.",
      "numbers": "Time (29s) and ratio (2.12) are both Normal — nothing to chase here technically. The balance 2 with quick-fading sourness after mixing is consistent with the pattern you've already identified on this bean: it reads sour on the surface but opens up when stirred. The fast bilateral dripping around 25 seconds is worth noting — this is likely the natural puck breakdown toward the end of extraction rather than mid-shot channeling, since flow was even at the start and both spouts dripped simultaneously rather than one lagging behind. No red flags in the numbers.",
      "recommendationAction": "Hold grind 29, yield 36–38g — do not adjust.",
      "recommendationReason": "Time, ratio, and flow are all where you want them. The quick-fading sourness is the bean's EA Washed brightness, not under-extraction. The late bilateral drip is a late-puck artifact, not a technique problem. You've confirmed grind 29 produces even flow twice now — this is your dialed setting.",
      "beanContext": "EA Washed Pink Bourbon at 12 days post-roast sits right at the edge of the estimated peak window for this process type. That's actually ideal — the bean has had just enough time to degas without losing the brightness that defines it. The Luxardo and orange peel notes are consistent with that quick-fade citric sourness you're tasting. This bean is inherently forward and bright; balance 2–3 with clean finish is likely its ceiling, not a sign you need to go finer.",
      "progressNote": "Two consecutive even-flow shots at grind 29 with no left-spout lag — the channeling issue from grind 28 and 28.5 is definitively behind you. Grind 29 is confirmed.",
      "overallVerdict": "good",
      "isStable": false,
      "rawResponse": "{\"summary\":\"Grind 29 at 18g dose, 38.1g yield, 29 seconds — clean numbers right in the target zone. Balance logged at 2 (sour), but your notes say the sourness dissipates quickly after mixing, which is the bright EA Washed character you've seen before on this bean, not an extraction fault. Solid shot on paper, though the fast dripping near the end warrants attention.\",\"numbers\":\"Time (29s) and ratio (2.12) are both Normal — nothing to chase here technically. The balance 2 with quick-fading sourness after mixing is consistent with the pattern you've already identified on this bean: it reads sour on the surface but opens up when stirred. The fast bilateral dripping around 25 seconds is worth noting — this is likely the natural puck breakdown toward the end of extraction rather than mid-shot channeling, since flow was even at the start and both spouts dripped simultaneously rather than one lagging behind. No red flags in the numbers.\",\"recommendation\":{\"action\":\"Hold grind 29, yield 36–38g — do not adjust.\",\"reason\":\"Time, ratio, and flow are all where you want them. The quick-fading sourness is the bean's EA Washed brightness, not under-extraction. The late bilateral drip is a late-puck artifact, not a technique problem. You've confirmed grind 29 produces even flow twice now — this is your dialed setting.\"},\"bean_context\":\"EA Washed Pink Bourbon at 12 days post-roast sits right at the edge of the estimated peak window for this process type. That's actually ideal — the bean has had just enough time to degas without losing the brightness that defines it. The Luxardo and orange peel notes are consistent with that quick-fade citric sourness you're tasting. This bean is inherently forward and bright; balance 2–3 with clean finish is likely its ceiling, not a sign you need to go finer.\",\"progress_note\":\"Two consecutive even-flow shots at grind 29 with no left-spout lag — the channeling issue from grind 28 and 28.5 is definitively behind you. Grind 29 is confirmed.\",\"overall_verdict\":\"good\",\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Decaf Huila grind 29 confirmed dialed. Both flow and extraction are on target. Next session: assess whether taste has shifted as bean ages further into peak window — no grind changes needed unless flow pattern changes.\",\"known_patterns\":\"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale produced best results (31s, balance 2, good with milk). On Decaf Huila: grind 28 and 28.5 both produce early uneven flow (left spout lag) — confirmed twice each, do not go finer than 29. Grind 29 confirmed dialed on Decaf Huila — two consecutive clean even-flow shots. Quick-fading acidity at balance 2–3 is likely bean character on this bright EA Washed decaf, not an extraction flaw. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling.\",\"last_recommendation\":\"Decaf Huila: hold grind 29, yield 36–38g. No adjustments needed — bean is dialed.\",\"last_analysis_date\":\"2026-05-29T20:33:00.000Z\",\"last_analyzed_shot_id\":39,\"bean_contexts\":[{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialed_in\",\"dialed_in_grind\":29,\"dialed_in_yield_g\":37,\"current_grind\":29,\"shots_pulled\":7,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Grind 29 confirmed dialed — even flow, two consecutive clean shots. Do not go below 29. Balance 2–3 with quick-fade sourness is bean character, not extraction fault.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast. Never fully dialed — spent too long in fast\"}]}}",
      "createdAt": "2026-05-30 01:47:13"
    },
    {
      "id": 19,
      "shotId": 42,
      "analysisMode": "recent",
      "summary": "First shot on the Brazil Cerrado at grind 39 — and it ran 60 seconds with heavily restricted, uneven flow and came out bitter. This is a significantly over-extracted shot, and the flow pattern points to a puck that's too dense for the grind even at 39. The fact that grind 28, 33, and 37 all choked tells you this bean needs to be pulled much coarser than anything you've used before.",
      "numbers": "60 seconds is well outside the normal range (25–35s) — this is a Very Slow shot by a wide margin. At a 1.85 ratio it's also Short, meaning you're pulling a small yield through a very resistant puck, which concentrates the bitterness further. Balance 6 (Bitter) aligns exactly with what the numbers predict. The flow description — both spouts barely dripping until 25 seconds, then only the left running to the end — is a classic sign of near-choke conditions with uneven distribution. This isn't a technique problem; it's a grind problem. Natural processed Brazil beans are typically dense and oily, and this one may also be on the larger-particle side. Your Decaf Huila ran well at 29 and the Ándale at 33 — this bean apparently needs something well above both.",
      "recommendationAction": "Jump to grind 45 for your next shot and aim for a yield of 36–38g.",
      "recommendationReason": "Everything below 39 choked, and 39 itself ran 60 seconds. You need a big coarse jump to get into a workable range — small increments will just give you more slow shots. Natural process beans often grind coarser than washed beans of similar roast level. Start at 45 and watch the flow: first drips should appear by 8–10 seconds. If it's still choking or running past 40s, go to 48. If it runs under 20s, come back 2–3 clicks. Get the flow in range first before worrying about taste.",
      "beanContext": "Brazil Cerrado is a natural processed single origin — natural process beans tend to have a denser, stickier grind profile that can behave very differently from washed beans. The flavor notes (baker's chocolate, walnut, dried apricot) suggest a low-acid, full-bodied, mellow cup — nothing about this bean should taste sharp or bitter when properly extracted. At 7 days off roast with a natural process, it's technically in the peak window, but naturals can sometimes benefit from a few more days of degassing, especially if CO2 is causing resistance during extraction. If 45 still gives you trouble, flag that freshness may be a factor and rest the bag 2–3 more days. No prior bean in your history is a close analog — Ándale was a washed blend, Maomi was a blend, Decaf Huila was EA Washed — so treat this as establishing a new baseline from scratch.",
      "progressNote": "This is a new bean with a completely different extraction profile from anything you've pulled before — the choke-fest across four grind settings is diagnostic information, not a failure. You've already eliminated a wide range of grind settings in one session, which is efficient. The jump to 45 is the right call.",
      "overallVerdict": "problem",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"First shot on the Brazil Cerrado at grind 39 — and it ran 60 seconds with heavily restricted, uneven flow and came out bitter. This is a significantly over-extracted shot, and the flow pattern points to a puck that's too dense for the grind even at 39. The fact that grind 28, 33, and 37 all choked tells you this bean needs to be pulled much coarser than anything you've used before.\",\n  \"numbers\": \"60 seconds is well outside the normal range (25–35s) — this is a Very Slow shot by a wide margin. At a 1.85 ratio it's also Short, meaning you're pulling a small yield through a very resistant puck, which concentrates the bitterness further. Balance 6 (Bitter) aligns exactly with what the numbers predict. The flow description — both spouts barely dripping until 25 seconds, then only the left running to the end — is a classic sign of near-choke conditions with uneven distribution. This isn't a technique problem; it's a grind problem. Natural processed Brazil beans are typically dense and oily, and this one may also be on the larger-particle side. Your Decaf Huila ran well at 29 and the Ándale at 33 — this bean apparently needs something well above both.\",\n  \"recommendation\": {\n    \"action\": \"Jump to grind 45 for your next shot and aim for a yield of 36–38g.\",\n    \"reason\": \"Everything below 39 choked, and 39 itself ran 60 seconds. You need a big coarse jump to get into a workable range — small increments will just give you more slow shots. Natural process beans often grind coarser than washed beans of similar roast level. Start at 45 and watch the flow: first drips should appear by 8–10 seconds. If it's still choking or running past 40s, go to 48. If it runs under 20s, come back 2–3 clicks. Get the flow in range first before worrying about taste.\"\n  },\n  \"bean_context\": \"Brazil Cerrado is a natural processed single origin — natural process beans tend to have a denser, stickier grind profile that can behave very differently from washed beans. The flavor notes (baker's chocolate, walnut, dried apricot) suggest a low-acid, full-bodied, mellow cup — nothing about this bean should taste sharp or bitter when properly extracted. At 7 days off roast with a natural process, it's technically in the peak window, but naturals can sometimes benefit from a few more days of degassing, especially if CO2 is causing resistance during extraction. If 45 still gives you trouble, flag that freshness may be a factor and rest the bag 2–3 more days. No prior bean in your history is a close analog — Ándale was a washed blend, Maomi was a blend, Decaf Huila was EA Washed — so treat this as establishing a new baseline from scratch.\",\n  \"progress_note\": \"This is a new bean with a completely different extraction profile from anything you've pulled before — the choke-fest across four grind settings is diagnostic information, not a failure. You've already eliminated a wide range of grind settings in one session, which is efficient. The jump to 45 is the right call.\",\n  \"overall_verdict\": \"problem\",\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Brazil Cerrado first dial-in. All settings from 28–39 choked or ran 60s. Jump to grind 45, target yield 36–38g. Natural process bean — expect coarser grind than any previous bean. Get flow normalized before adjusting for taste.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale produced best results (31s, balance 2, good with milk). On Decaf Huila: grind 28 and 28.5 both produce early uneven flow (left spout lag) — confirmed twice each, do not go finer than 29. Grind 29 confirmed dialed on Decaf Huila — two consecutive clean even-flow shots. Quick-fading acidity at balance 2–3 is likely bean character on this bright EA Washed decaf, not an extraction flaw. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at all settings from 28–39 — this bean requires significantly coarser grind than any previous bean. Natural process beans can require coarser grind than washed at equivalent roast level.\",\n    \"last_recommendation\": \"Brazil Cerrado: jump to grind 45, target 36–38g yield. Establish flow first before adjusting for taste.\",\n    \"last_analysis_date\": \"2026-05-30T14:09:00.000Z\",\n    \"last_analyzed_shot_id\": 42,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 39,\n        \"shots_pulled\": 1,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Choked or 60s at grind 28–39. Natural process — needs much coarser than any prior bean. Start at 45.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 29,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 29,\n        \"shots_pulled\": 7,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Grind 29 confirmed dialed — even flow, two consecutive clean shots. Do not go below 29. Balance 2–3 with quick-fade sourness is bean character, not extraction fault.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast. Never fully dialed — spent too long in fast range.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-05-30 14:22:46"
    },
    {
      "id": 20,
      "shotId": 42,
      "analysisMode": "recent",
      "summary": "Grind 39 ran 60 seconds with severely restricted flow — left-spout-only output for most of the pull, bitter result, and you confirmed grids 28, 33, and 37 all choked completely. This bean is categorically different from anything you've pulled before. The puck is simply too dense at every setting tried so far. You need a substantial jump to open flow.",
      "numbers": "60 seconds puts this firmly in Very Slow territory, well outside the industry standard ceiling of 45s. Ratio landed at 1.85 (Short), which makes sense — the puck restriction throttled output. The balance score of 6 (Bitter) is consistent with severe over-extraction from extended contact time. The flow description — 15 seconds before any movement, then left-spout only — confirms the puck never opened properly. This isn't a taste calibration problem, it's a flow problem. Nothing about extraction balance is meaningful until the shot is running.",
      "recommendationAction": "Jump to grind 45 and target 36–38g yield. Do not stop at intermediate settings — you've confirmed nothing below 39 flows at all.",
      "recommendationReason": "Every setting from 28–39 has either choked or produced severely restricted 60-second pulls. This natural process bean is dramatically denser than any washed bean you've dialed in. Grind 45 is a significant jump, but the data says it's necessary. Get flow normalized first — taste comes after you have a shot that actually runs in the 25–35 second range.",
      "beanContext": "At 7 days post-roast, this bean is within its estimated peak window for a natural process — so freshness isn't the culprit. Natural process beans retain more of their outer fruit layer during drying, which produces a denser, more resistant puck structure. Combined with an unspecified roast level that may be on the lighter side given the 'balanced, creamy, soft' descriptor, this bean appears to need a significantly coarser grind than any washed bean at a comparable roast. Your Maomi blend dialed in around 32.5 and Ándale around 33 — this bean may land anywhere from 42–48. Don't anchor on prior beans.",
      "progressNote": "One shot in on a bean that's genuinely outside your previous experience range — this is normal. The fact that you identified the pattern quickly (choked across multiple settings) and are ready to make a big jump is exactly the right instinct. Get flow first.",
      "overallVerdict": "problem",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Grind 39 ran 60 seconds with severely restricted flow — left-spout-only output for most of the pull, bitter result, and you confirmed grids 28, 33, and 37 all choked completely. This bean is categorically different from anything you've pulled before. The puck is simply too dense at every setting tried so far. You need a substantial jump to open flow.\",\n  \"numbers\": \"60 seconds puts this firmly in Very Slow territory, well outside the industry standard ceiling of 45s. Ratio landed at 1.85 (Short), which makes sense — the puck restriction throttled output. The balance score of 6 (Bitter) is consistent with severe over-extraction from extended contact time. The flow description — 15 seconds before any movement, then left-spout only — confirms the puck never opened properly. This isn't a taste calibration problem, it's a flow problem. Nothing about extraction balance is meaningful until the shot is running.\",\n  \"recommendation\": {\n    \"action\": \"Jump to grind 45 and target 36–38g yield. Do not stop at intermediate settings — you've confirmed nothing below 39 flows at all.\",\n    \"reason\": \"Every setting from 28–39 has either choked or produced severely restricted 60-second pulls. This natural process bean is dramatically denser than any washed bean you've dialed in. Grind 45 is a significant jump, but the data says it's necessary. Get flow normalized first — taste comes after you have a shot that actually runs in the 25–35 second range.\"\n  },\n  \"bean_context\": \"At 7 days post-roast, this bean is within its estimated peak window for a natural process — so freshness isn't the culprit. Natural process beans retain more of their outer fruit layer during drying, which produces a denser, more resistant puck structure. Combined with an unspecified roast level that may be on the lighter side given the 'balanced, creamy, soft' descriptor, this bean appears to need a significantly coarser grind than any washed bean at a comparable roast. Your Maomi blend dialed in around 32.5 and Ándale around 33 — this bean may land anywhere from 42–48. Don't anchor on prior beans.\",\n  \"progress_note\": \"One shot in on a bean that's genuinely outside your previous experience range — this is normal. The fact that you identified the pattern quickly (choked across multiple settings) and are ready to make a big jump is exactly the right instinct. Get flow first.\",\n  \"overall_verdict\": \"problem\",\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Brazil Cerrado dial-in. All settings 28–39 choked or ran 60s. Next shot: grind 45, target 36–38g yield. Flow normalization is the only goal — do not adjust for taste until shot runs 25–35s.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale produced best results (31s, balance 2, good with milk). On Decaf Huila: grind 28 and 28.5 both produce early uneven flow (left spout lag) — confirmed twice each, do not go finer than 29. Grind 29 confirmed dialed on Decaf Huila — two consecutive clean even-flow shots. Quick-fading acidity at balance 2–3 is likely bean character on this bright EA Washed decaf, not an extraction flaw. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–39 confirmed across multiple attempts — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 40.\",\n    \"last_recommendation\": \"Brazil Cerrado: jump to grind 45, target 36–38g yield. Flow normalization only — do not adjust for taste until shot runs in range.\",\n    \"last_analysis_date\": \"2026-05-30T14:09:00.000Z\",\n    \"last_analyzed_shot_id\": 42,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 39,\n        \"shots_pulled\": 1,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"All settings 28–39 choked or ran 60s. Left-spout-only flow at 39. Next: grind 45, 36–38g yield. Flow first.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 29,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 29,\n        \"shots_pulled\": 7,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Grind 29 confirmed dialed — even flow, two consecutive clean shots. Do not go below 29. Balance 2–3 with quick-fade sourness is bean character, not extraction fault.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast. Never fully dialed — spent too long in fast range.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-05-30 14:31:44"
    },
    {
      "id": 21,
      "shotId": 42,
      "analysisMode": "recent",
      "summary": "Shot 4 on Brazil Cerrado at grind 39 — still choked and over-extracted at 60s, yield 33.8g only because the machine timed out. Flow didn't start until ~15s and ran single-spout the rest of the pull. This bean is resisting every setting from 28–39. The pattern is unambiguous: you need a dramatically coarser grind.",
      "numbers": "60s is Very Slow by a wide margin — industry standard flags anything over 45s as severely over-extracted. Ratio of 1.85 is Short, but meaningless here since yield was just accumulation over a minute-long choke. Balance 6 (Bitter) matches the over-extraction. Notes confirm the numbers: slow drip start at 15s, single-spout flow, bitter even with milk. No contradictions — everything points the same direction.",
      "recommendationAction": "Jump to grind 45. Do not stop at 41, 42, or 43 — this bean has shown zero response to incremental changes across 11 settings. One big jump, target 36–38g yield, stop the shot manually at 30–35s if it's flowing.",
      "recommendationReason": "Brazil natural process beans are dense and resist flow. Four shots across settings 28–39 have all choked or run 60s with restricted, uneven output. Incremental steps are not working. Grind 45 is the minimum viable starting point for this bean — you may need to go even coarser. Flow normalization is still the only goal. Do not evaluate taste until you have a shot in the 25–35s window.",
      "beanContext": "Brazil Cerrado natural process at 8 days post-roast is technically in peak window, but freshness isn't the issue here — natural process beans are notoriously dense and require much coarser grinds than washed or EA Washed decaf beans. Your previous reference points (Ándale at 33, Decaf Huila at 29) are irrelevant for this bean. Flavor notes say 'balanced, creamy, soft' — that character won't show until flow is normalized. Bitterness right now is purely a choke artifact, not bean character.",
      "progressNote": "Four shots into Brazil Cerrado and the dial-in is still in flow normalization mode — that's not a failure, it's a genuinely difficult bean. The important pattern: you've now confirmed the entire 28–39 range is unusable, which is real data. Grind 45 is the correct next step and should have been attempted after shot 1 on this bag.",
      "overallVerdict": "problem",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 4 on Brazil Cerrado at grind 39 — still choked and over-extracted at 60s, yield 33.8g only because the machine timed out. Flow didn't start until ~15s and ran single-spout the rest of the pull. This bean is resisting every setting from 28–39. The pattern is unambiguous: you need a dramatically coarser grind.\",\n  \"numbers\": \"60s is Very Slow by a wide margin — industry standard flags anything over 45s as severely over-extracted. Ratio of 1.85 is Short, but meaningless here since yield was just accumulation over a minute-long choke. Balance 6 (Bitter) matches the over-extraction. Notes confirm the numbers: slow drip start at 15s, single-spout flow, bitter even with milk. No contradictions — everything points the same direction.\",\n  \"recommendation\": {\n    \"action\": \"Jump to grind 45. Do not stop at 41, 42, or 43 — this bean has shown zero response to incremental changes across 11 settings. One big jump, target 36–38g yield, stop the shot manually at 30–35s if it's flowing.\",\n    \"reason\": \"Brazil natural process beans are dense and resist flow. Four shots across settings 28–39 have all choked or run 60s with restricted, uneven output. Incremental steps are not working. Grind 45 is the minimum viable starting point for this bean — you may need to go even coarser. Flow normalization is still the only goal. Do not evaluate taste until you have a shot in the 25–35s window.\"\n  },\n  \"bean_context\": \"Brazil Cerrado natural process at 8 days post-roast is technically in peak window, but freshness isn't the issue here — natural process beans are notoriously dense and require much coarser grinds than washed or EA Washed decaf beans. Your previous reference points (Ándale at 33, Decaf Huila at 29) are irrelevant for this bean. Flavor notes say 'balanced, creamy, soft' — that character won't show until flow is normalized. Bitterness right now is purely a choke artifact, not bean character.\",\n  \"progress_note\": \"Four shots into Brazil Cerrado and the dial-in is still in flow normalization mode — that's not a failure, it's a genuinely difficult bean. The important pattern: you've now confirmed the entire 28–39 range is unusable, which is real data. Grind 45 is the correct next step and should have been attempted after shot 1 on this bag.\",\n  \"overall_verdict\": \"problem\",\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Brazil Cerrado flow normalization. Entire range 28–39 confirmed choked or 60s across 4 shots. Next shot: grind 45, target 36–38g yield, stop manually at 30–35s if flowing. No taste evaluation until shot is in range.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale produced best results (31s, balance 2, good with milk). On Decaf Huila: grind 28 and 28.5 both produce early uneven flow (left spout lag) — confirmed twice each, do not go finer than 29. Grind 29 confirmed dialed on Decaf Huila — two consecutive clean even-flow shots. Quick-fading acidity at balance 2–3 is likely bean character on this bright EA Washed decaf, not an extraction flaw. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–39 confirmed across 4 shots — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 45.\",\n    \"last_recommendation\": \"Brazil Cerrado: jump to grind 45, target 36–38g yield, stop manually at 30–35s if flowing. Flow normalization only — do not adjust for taste until shot runs in range.\",\n    \"last_analysis_date\": \"2026-05-30T14:09:00.000Z\",\n    \"last_analyzed_shot_id\": 42,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 39,\n        \"shots_pulled\": 4,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"All settings 28–39 choked or ran 60s across 4 shots. Do not go below 45. Flow first, no taste eval yet.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 29,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 29,\n        \"shots_pulled\": 7,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Grind 29 confirmed dialed — even flow, two consecutive clean shots. Do not go below 29. Balance 2–3 with quick-fade sourness is bean character, not extraction fault.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast. Never fully dialed — spent too long in fast.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-05-31 03:55:58"
    },
    {
      "id": 22,
      "shotId": 47,
      "analysisMode": "recent",
      "summary": "Grind 41.5 broke the logjam — 34 seconds, 2.01 ratio, first in-range shot on this bean after five choked or extreme pulls. Flow was bilateral and even by 23 seconds. Balance reads sour (2) and you flagged it as acidic and bright, which is worth unpacking given how natural process Brazil Cerrados typically taste.",
      "numbers": "34s Normal, 2.01 ratio Normal — both squarely in range. This is the first technically valid shot on this bean. Balance 2 (Sour) with quality rated 2/5. Notably, grind 45 yesterday ran in 15s Very Fast with very sour lingering flavor, and today grind 41.5 ran 34s Normal — a 19-second jump from a 3.5-click difference, which tells you this bean is extremely sensitive to grind changes in the 40s range. The sourness here is worth investigating: a 34s shot with even flow on a natural-process Brazil should lean sweet and chocolatey, not bright and acidic. That gap between expected flavor and actual flavor is the key data point.",
      "recommendationAction": "Go 2 clicks finer to grind 39.5, keep same dose (18.2–18.3g), target 36–38g yield, let it run to completion — do not stop manually.",
      "recommendationReason": "34s is solid and you finally have even flow, but balance 2 with lingering acidity on a bean described as 'balanced, creamy, soft' with baker's chocolate and dried apricot suggests mild under-extraction despite the good time. Natural process beans can mask under-extraction behind apparent brightness — the sugars develop late. A small step finer (39.5) should push time slightly toward 36–38s and develop more of the sweetness and body this bean promises. Do not jump all the way to 39 — your shot history shows that setting choked this bean. 39.5 is a cautious probe of that lower edge.",
      "beanContext": "Brazil Cerrado natural, 8 days off roast — right in the estimated peak window. Natural process beans at 8 days are typically showing good sugar development. The flavor notes (baker's chocolate, dried apricot, walnut, creamy) strongly suggest this should not be reading as acidic and bright — that profile is more consistent with a washed light roast. This mismatch is a diagnostic signal: the shot is technically in range but extraction is likely still slightly light on the flavor curve. One more click finer should unlock more of what this bean is supposed to taste like. Worth noting: you mentioned 'based on the flow I would have expected more bitter flavors' — trust that instinct. Even flow with sour output on a low-acid natural bean means you need slightly more extraction, not less.",
      "progressNote": "Shot 31 marks your first technically valid pull on the hardest bean you've encountered so far — a natural process that choked at every setting below 39 and blew past at 45. Getting a 34s even-flow shot on shot 6 of a difficult bean is a real win. The fact that you're now parsing flavor nuance ('I expected bitter but got sour') rather than just tracking whether coffee came out at all is a meaningful step forward.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Grind 41.5 broke the logjam — 34 seconds, 2.01 ratio, first in-range shot on this bean after five choked or extreme pulls. Flow was bilateral and even by 23 seconds. Balance reads sour (2) and you flagged it as acidic and bright, which is worth unpacking given how natural process Brazil Cerrados typically taste.\",\n\n  \"numbers\": \"34s Normal, 2.01 ratio Normal — both squarely in range. This is the first technically valid shot on this bean. Balance 2 (Sour) with quality rated 2/5. Notably, grind 45 yesterday ran in 15s Very Fast with very sour lingering flavor, and today grind 41.5 ran 34s Normal — a 19-second jump from a 3.5-click difference, which tells you this bean is extremely sensitive to grind changes in the 40s range. The sourness here is worth investigating: a 34s shot with even flow on a natural-process Brazil should lean sweet and chocolatey, not bright and acidic. That gap between expected flavor and actual flavor is the key data point.\",\n\n  \"recommendation\": {\n    \"action\": \"Go 2 clicks finer to grind 39.5, keep same dose (18.2–18.3g), target 36–38g yield, let it run to completion — do not stop manually.\",\n    \"reason\": \"34s is solid and you finally have even flow, but balance 2 with lingering acidity on a bean described as 'balanced, creamy, soft' with baker's chocolate and dried apricot suggests mild under-extraction despite the good time. Natural process beans can mask under-extraction behind apparent brightness — the sugars develop late. A small step finer (39.5) should push time slightly toward 36–38s and develop more of the sweetness and body this bean promises. Do not jump all the way to 39 — your shot history shows that setting choked this bean. 39.5 is a cautious probe of that lower edge.\"\n  },\n\n  \"bean_context\": \"Brazil Cerrado natural, 8 days off roast — right in the estimated peak window. Natural process beans at 8 days are typically showing good sugar development. The flavor notes (baker's chocolate, dried apricot, walnut, creamy) strongly suggest this should not be reading as acidic and bright — that profile is more consistent with a washed light roast. This mismatch is a diagnostic signal: the shot is technically in range but extraction is likely still slightly light on the flavor curve. One more click finer should unlock more of what this bean is supposed to taste like. Worth noting: you mentioned 'based on the flow I would have expected more bitter flavors' — trust that instinct. Even flow with sour output on a low-acid natural bean means you need slightly more extraction, not less.\",\n\n  \"progress_note\": \"Shot 31 marks your first technically valid pull on the hardest bean you've encountered so far — a natural process that choked at every setting below 39 and blew past at 45. Getting a 34s even-flow shot on shot 6 of a difficult bean is a real win. The fact that you're now parsing flavor nuance ('I expected bitter but got sour') rather than just tracking whether coffee came out at all is a meaningful step forward.\",\n\n  \"overall_verdict\": \"needs_work\",\n\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Brazil Cerrado flavor dialing. First in-range shot at 41.5 (34s, ratio 2.01, balance 2 sour). Acidity/brightness unexpected for natural process low-acid bean — slight under-extraction likely. Next: grind 39.5, target 36–38g yield, run to completion, evaluate sweetness development.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale produced best results (31s, balance 2, good with milk). On Decaf Huila: grind 28 and 28.5 both produce early uneven flow (left spout lag) — confirmed twice each, do not go finer than 29. Grind 29 confirmed dialed on Decaf Huila — two consecutive clean even-flow shots. Quick-fading acidity at balance 2–3 is likely bean character on this bright EA Washed decaf, not an extraction flaw. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–39 confirmed across 4 shots — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 39.5. Grind 45 ran 15s Very Fast on Brazil Cerrado — too coarse. Grind 41.5 ran 34s Normal with even flow — first valid shot. Bean is extremely sensitive in the 39–45 range; small steps only. Sourness at 41.5 likely mild under-extraction despite good time — natural process low-acid beans can read bright when slightly under-extracted.\",\n    \"last_recommendation\": \"Brazil Cerrado: grind 39.5, dose 18.2–18.3g, target 36–38g yield, run to completion. Looking for sweetness/chocolate to develop over balance 2 sour.\",\n    \"last_analysis_date\": \"2026-05-31T14:14:00.000Z\",\n    \"last_analyzed_shot_id\": 47,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 41.5,\n        \"shots_pulled\": 6,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Below 39 choked; 45 ran 15s. Grind 41.5 = 34s even flow but sour — slight under-extraction. Try 39.5 next.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 29,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 29,\n        \"shots_pulled\": 7,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Grind 29 confirmed dialed — even flow, two consecutive clean shots. Do not go below 29. Balance 2–3 with quick-fade sourness is bean character, not extraction fault.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast. Never fully dialed — spent too long in fast range.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-05-31 14:31:18"
    },
    {
      "id": 23,
      "shotId": 52,
      "analysisMode": "recent",
      "summary": "Breakthrough shot. Grind 42, 28 seconds, ratio 2.26 Normal, balance 4 Balanced — Diego's first balanced score on the Brazil Cerrado and his best quality rating (4 stars) in a long time. Even bilateral flow from 10 seconds, no lingering acidity or bitterness. This is what this bean is supposed to taste like.",
      "numbers": "Time at 28s sits at the fast end of Normal but is consistent with the even flow description — no channeling signs, no spout dropout, no puck issues. Ratio 2.26 is squarely Normal. Balance 4 is the target. The numbers and the taste notes are in full agreement here: clean extraction, balanced cup, well-developed chocolate/walnut character from a natural process bean that has been fighting you for nine shots.",
      "recommendationAction": "Lock in grind 42, dose 18g, target 36–40g yield. Pull it again identically.",
      "recommendationReason": "You found it. The only risk now is chasing a better shot and losing the dial. Grind 41 choked 20 minutes ago — 42 is a narrow sweet spot on this bean. Don't move anything. Pull this again and confirm the result is repeatable before considering any micro-adjustment.",
      "beanContext": "Nine shots to crack this bean, which is completely fair given how compressed its extraction window is (39 choked, 45 ran 15s, 41 choked again today). At 9 days post-roast it's still in peak window — no freshness concerns. The balanced, non-lingering cup at grind 42 is consistent with the baker's chocolate and walnut profile. The bean is delivering what it promised.",
      "progressNote": "Shot quality 4 is your personal best rating and your first balance 4 across 36 total pulls. The pattern of the last few sessions — methodical narrowing, small steps, not panicking when 41 choked — paid off directly here.",
      "overallVerdict": "great",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Breakthrough shot. Grind 42, 28 seconds, ratio 2.26 Normal, balance 4 Balanced — Diego's first balanced score on the Brazil Cerrado and his best quality rating (4 stars) in a long time. Even bilateral flow from 10 seconds, no lingering acidity or bitterness. This is what this bean is supposed to taste like.\",\n  \"numbers\": \"Time at 28s sits at the fast end of Normal but is consistent with the even flow description — no channeling signs, no spout dropout, no puck issues. Ratio 2.26 is squarely Normal. Balance 4 is the target. The numbers and the taste notes are in full agreement here: clean extraction, balanced cup, well-developed chocolate/walnut character from a natural process bean that has been fighting you for nine shots.\",\n  \"recommendation\": {\n    \"action\": \"Lock in grind 42, dose 18g, target 36–40g yield. Pull it again identically.\",\n    \"reason\": \"You found it. The only risk now is chasing a better shot and losing the dial. Grind 41 choked 20 minutes ago — 42 is a narrow sweet spot on this bean. Don't move anything. Pull this again and confirm the result is repeatable before considering any micro-adjustment.\"\n  },\n  \"bean_context\": \"Nine shots to crack this bean, which is completely fair given how compressed its extraction window is (39 choked, 45 ran 15s, 41 choked again today). At 9 days post-roast it's still in peak window — no freshness concerns. The balanced, non-lingering cup at grind 42 is consistent with the baker's chocolate and walnut profile. The bean is delivering what it promised.\",\n  \"progress_note\": \"Shot quality 4 is your personal best rating and your first balance 4 across 36 total pulls. The pattern of the last few sessions — methodical narrowing, small steps, not panicking when 41 choked — paid off directly here.\",\n  \"overall_verdict\": \"great\",\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Brazil Cerrado dialed in at grind 42. Confirm repeatability — pull identical shot before any adjustment. Do not move grind.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale produced best results (31s, balance 2, good with milk). On Decaf Huila: grind 28 and 28.5 both produce early uneven flow (left spout lag) — confirmed twice each, do not go finer than 29. Grind 29 confirmed dialed on Decaf Huila — two consecutive clean even-flow shots. Quick-fading acidity at balance 2–3 is likely bean character on this bright EA Washed decaf, not an extraction flaw. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 41 choked again on 2026-06-01 even after 41.5 ran clean — window is narrow and inconsistent below 42. Grind 42 = 28s Normal, balance 4, 4 stars, even bilateral flow — confirmed sweet spot. Grind 42 is extremely sensitive; do not go finer.\",\n    \"last_recommendation\": \"Brazil Cerrado: hold grind 42, dose 18g, target 36–40g yield. Pull identically to confirm repeatability.\",\n    \"last_analysis_date\": \"2026-06-01T16:09:00.000Z\",\n    \"last_analyzed_shot_id\": 52,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 42,\n        \"shots_pulled\": 9,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Choked below 42; 45 ran 15s. Grind 42 = 28s, balance 4, 4 stars, even flow — first confirmed balanced shot. Confirm repeatability.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 29,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 29,\n        \"shots_pulled\": 7,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Grind 29 confirmed dialed — even flow, two consecutive clean shots. Do not go below 29. Balance 2–3 with quick-fade sourness is bean character, not extraction fault.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast. Never fully dialed — spent too long in fast zone.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-06-01 16:24:57"
    },
    {
      "id": 24,
      "shotId": 52,
      "analysisMode": "recent",
      "summary": "Grind 42 confirmed repeatable — 28 seconds, 2.26 ratio, balance 4, clean bilateral flow, no lingering acidity or bitterness. This is back-to-back balanced shots at identical settings. Brazil Cerrado is dialed in.",
      "numbers": "Time (28s) and ratio (2.26) both land squarely in Normal range. Balance 4 with no finish complaints matches the bean's described profile — balanced, creamy, soft. The 8g drip lag is normal Bambino behavior. Everything lines up.",
      "recommendationAction": "Lock grind 42, dose 18g, target 37–41g yield. Pull identically every time. Do not touch the grinder.",
      "recommendationReason": "Two consecutive balanced shots at identical settings on a notoriously sensitive bean is the definition of dialed in. Any adjustment now is chasing a problem that doesn't exist.",
      "beanContext": "Baker's chocolate, dried apricot, walnut — balanced and creamy per the roaster, and that's exactly what you're tasting. At 9 days post-roast this natural process bean is well within its peak window. No extraction concerns, no freshness concerns. The bean is performing as described.",
      "progressNote": "Back-to-back balance 4 shots on a bean that choked or ran wild at every setting from 28–41.5 — this is a real dialing-in win. Your patience grinding through that range paid off.",
      "overallVerdict": "great",
      "isStable": false,
      "rawResponse": "{\"summary\":\"Grind 42 confirmed repeatable — 28 seconds, 2.26 ratio, balance 4, clean bilateral flow, no lingering acidity or bitterness. This is back-to-back balanced shots at identical settings. Brazil Cerrado is dialed in.\",\"numbers\":\"Time (28s) and ratio (2.26) both land squarely in Normal range. Balance 4 with no finish complaints matches the bean's described profile — balanced, creamy, soft. The 8g drip lag is normal Bambino behavior. Everything lines up.\",\"recommendation\":{\"action\":\"Lock grind 42, dose 18g, target 37–41g yield. Pull identically every time. Do not touch the grinder.\",\"reason\":\"Two consecutive balanced shots at identical settings on a notoriously sensitive bean is the definition of dialed in. Any adjustment now is chasing a problem that doesn't exist.\"},\"bean_context\":\"Baker's chocolate, dried apricot, walnut — balanced and creamy per the roaster, and that's exactly what you're tasting. At 9 days post-roast this natural process bean is well within its peak window. No extraction concerns, no freshness concerns. The bean is performing as described.\",\"progress_note\":\"Back-to-back balance 4 shots on a bean that choked or ran wild at every setting from 28–41.5 — this is a real dialing-in win. Your patience grinding through that range paid off.\",\"overall_verdict\":\"great\",\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Brazil Cerrado dialed in at grind 42. Hold settings — do not adjust. Pull identically each session.\",\"known_patterns\":\"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale produced best results (31s, balance 2, good with milk). On Decaf Huila: grind 28 and 28.5 both produce early uneven flow (left spout lag) — confirmed twice each, do not go finer than 29. Grind 29 confirmed dialed on Decaf Huila — two consecutive clean even-flow shots. Quick-fading acidity at balance 2–3 is likely bean character on this bright EA Washed decaf, not an extraction flaw. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28s Normal, balance 4, 4 stars, even bilateral flow — confirmed dialed in across two consecutive shots.\",\"last_recommendation\":\"Brazil Cerrado: hold grind 42, dose 18g, target 37–41g yield. Pull identically — do not touch the grinder.\",\"last_analysis_date\":\"2026-06-01T16:09:00.000Z\",\"last_analyzed_shot_id\":52,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":39,\"current_grind\":42,\"shots_pulled\":9,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28s, balance 4. Two consecutive clean shots. Do not go finer than 42 — chokes below that.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialed_in\",\"dialed_in_grind\":29,\"dialed_in_yield_g\":37,\"current_grind\":29,\"shots_pulled\":7,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Grind 29 confirmed dialed — even flow, two consecutive clean shots. Do not go below 29. Balance 2–3 with quick-fade sourness is bean character, not extraction fault.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast. Never fully dialed — spent too long in fast range.\"}]}}",
      "createdAt": "2026-06-01 16:30:09"
    },
    {
      "id": 25,
      "shotId": 53,
      "analysisMode": "recent",
      "summary": "Clean shot at grind 28 — 27 seconds, balance 3, 4 stars, and Diego's own note calls it the best decaf yet. Flow was mostly bilateral with only minor left-side wobble mid-pull. The numbers and the taste are finally aligned.",
      "numbers": "Time (27s) and ratio (2.02) both land Normal. Balance 3 (Slightly Sour) matches what we'd expect from this bright EA Washed Pink Bourbon — the quick fade confirms it's bean character, not an extraction problem. The 4-star quality rating is the highest this bag has seen.",
      "recommendationAction": "Hold grind 28, dose 18g, target 36–38g yield. Pull identically.",
      "recommendationReason": "This is your dialed-in setting for the Decaf Huila. The slight sourness that resolves quickly is this bean's signature — chasing a more neutral balance by going coarser risks losing the brightness that makes it interesting. Stop adjusting.",
      "beanContext": "At 14 days post-roast this EA Washed decaf is right in its peak window. The bright acidity, quick fade, and ganache/orange character are all consistent with what this bean is supposed to deliver. The previous context note said 'do not go below 29' — but two clean shots at 28 with good results suggest 28 is actually the sweet spot. Updating accordingly.",
      "progressNote": "Four stars on a decaf that gave you nothing but trouble early on — that's a real turnaround. Your note about stirring before tasting and distinguishing bean character from extraction flaws shows the palate work is paying off.",
      "overallVerdict": "great",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Clean shot at grind 28 — 27 seconds, balance 3, 4 stars, and Diego's own note calls it the best decaf yet. Flow was mostly bilateral with only minor left-side wobble mid-pull. The numbers and the taste are finally aligned.\",\n  \"numbers\": \"Time (27s) and ratio (2.02) both land Normal. Balance 3 (Slightly Sour) matches what we'd expect from this bright EA Washed Pink Bourbon — the quick fade confirms it's bean character, not an extraction problem. The 4-star quality rating is the highest this bag has seen.\",\n  \"recommendation\": {\n    \"action\": \"Hold grind 28, dose 18g, target 36–38g yield. Pull identically.\",\n    \"reason\": \"This is your dialed-in setting for the Decaf Huila. The slight sourness that resolves quickly is this bean's signature — chasing a more neutral balance by going coarser risks losing the brightness that makes it interesting. Stop adjusting.\"\n  },\n  \"bean_context\": \"At 14 days post-roast this EA Washed decaf is right in its peak window. The bright acidity, quick fade, and ganache/orange character are all consistent with what this bean is supposed to deliver. The previous context note said 'do not go below 29' — but two clean shots at 28 with good results suggest 28 is actually the sweet spot. Updating accordingly.\",\n  \"progress_note\": \"Four stars on a decaf that gave you nothing but trouble early on — that's a real turnaround. Your note about stirring before tasting and distinguishing bean character from extraction flaws shows the palate work is paying off.\",\n  \"overall_verdict\": \"great\",\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Decaf Huila dialed in at grind 28. Hold settings — do not adjust. Pull identically each session.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale produced best results (31s, balance 2, good with milk). On Decaf Huila: grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Previous note said floor was 29 but 28 produced two clean results. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28s Normal, balance 4, 4 stars, even bilateral flow — confirmed dialed in across two consecutive shots.\",\n    \"last_recommendation\": \"Decaf Huila: hold grind 28, dose 18g, target 36–38g yield. Pull identically — do not touch the grinder.\",\n    \"last_analysis_date\": \"2026-06-01T19:19:00.000Z\",\n    \"last_analyzed_shot_id\": 53,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 39,\n        \"current_grind\": 42,\n        \"shots_pulled\": 9,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28s, balance 4. Two consecutive clean shots. Do not go finer than 42 — chokes below that.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 8,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Dialed in: grind 28, 27s, balance 3, 4 stars. Quick-fade sourness is bean character. Do not adjust.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast. Never fully dialed — spent too long in fast range.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-06-01 19:34:23"
    },
    {
      "id": 26,
      "shotId": 54,
      "analysisMode": "recent",
      "summary": "Grind 42, 18.1g in, 36g out in 32 seconds — Normal time, technically Short ratio but very close to the Normal boundary. Balance logged at 3 (Slightly Sour), 3 stars. The flow note is the key detail here: left-only flow from ~10–25s before evening out suggests a mild channel that resolved mid-shot.",
      "numbers": "Time (32s) and ratio (1.99) are both solid — the ratio reads Short by a fraction of a gram, but at 1.99 it's essentially Normal. Balance 3 is consistent with this bean's confirmed character. The slightly sour read today is likely the same quick-fade brightness you've documented before on this natural process bean. The asymmetric flow (left spout only for ~15 seconds) is worth noting — it didn't torpedo the shot, but it's a puck prep signal.",
      "recommendationAction": "Keep grind 42. On the next shot, slow down your WDT and pay close attention to evenness across the full puck surface — the left-side-only flow from 10–25s suggests the distribution wasn't fully uniform before tamping.",
      "recommendationReason": "The grind setting is confirmed dialed in across three clean shots. Time and ratio landed in range. The mid-shot channel is the one variable to address, and it's a prep artifact, not a grind issue. Extra attention on WDT coverage — especially edges — should close that asymmetric flow.",
      "beanContext": "Day 11 post-roast on a natural process Cerrado, which puts you solidly in the peak window. The Slightly Sour read at balance 3 is consistent with what you've seen before on this bean — natural process brightness that fades rather than lingers. No freshness concern here.",
      "progressNote": "This is your third consecutive Normal-time shot at grind 42 — the dialing-in phase on this bean is effectively done. The slight channel today is minor and didn't break the shot. Focus is shifting from 'find the grind' to 'nail the prep every time.'",
      "overallVerdict": "good",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Grind 42, 18.1g in, 36g out in 32 seconds — Normal time, technically Short ratio but very close to the Normal boundary. Balance logged at 3 (Slightly Sour), 3 stars. The flow note is the key detail here: left-only flow from ~10–25s before evening out suggests a mild channel that resolved mid-shot.\",\n  \"numbers\": \"Time (32s) and ratio (1.99) are both solid — the ratio reads Short by a fraction of a gram, but at 1.99 it's essentially Normal. Balance 3 is consistent with this bean's confirmed character. The slightly sour read today is likely the same quick-fade brightness you've documented before on this natural process bean. The asymmetric flow (left spout only for ~15 seconds) is worth noting — it didn't torpedo the shot, but it's a puck prep signal.\",\n  \"recommendation\": {\n    \"action\": \"Keep grind 42. On the next shot, slow down your WDT and pay close attention to evenness across the full puck surface — the left-side-only flow from 10–25s suggests the distribution wasn't fully uniform before tamping.\",\n    \"reason\": \"The grind setting is confirmed dialed in across three clean shots. Time and ratio landed in range. The mid-shot channel is the one variable to address, and it's a prep artifact, not a grind issue. Extra attention on WDT coverage — especially edges — should close that asymmetric flow.\"\n  },\n  \"bean_context\": \"Day 11 post-roast on a natural process Cerrado, which puts you solidly in the peak window. The Slightly Sour read at balance 3 is consistent with what you've seen before on this bean — natural process brightness that fades rather than lingers. No freshness concern here.\",\n  \"progress_note\": \"This is your third consecutive Normal-time shot at grind 42 — the dialing-in phase on this bean is effectively done. The slight channel today is minor and didn't break the shot. Focus is shifting from 'find the grind' to 'nail the prep every time.'\",\n  \"overall_verdict\": \"good\",\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Brazil Cerrado dialed in at grind 42. Hold settings. Focus on puck prep consistency — even WDT coverage to eliminate asymmetric flow.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale produced best results (31s, balance 2, good with milk). On Decaf Huila: grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Previous note said floor was 29 but 28 produced two clean results. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact.\",\n    \"last_recommendation\": \"Brazil Cerrado: hold grind 42, dose 18g, target 36–40g yield. Focus on thorough even WDT coverage. Do not adjust grind.\",\n    \"last_analysis_date\": \"2026-06-03T13:51:00.000Z\",\n    \"last_analyzed_shot_id\": 54,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 8,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Dialed in: grind 28, 27s, balance 3, 4 stars. Quick-fade sourness is bean character. Do not adjust.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast. Never fully dialed — spent too long in fast zone.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-06-03 22:07:43"
    },
    {
      "id": 27,
      "shotId": 55,
      "analysisMode": "recent",
      "summary": "Shot 39 on the Decaf Huila: grind 28, 25s, balance 2, 3 stars. Time is at the bottom edge of Normal but the flow was described as fast and the sourness lingered — Diego's own note calls it under-extracted. This contradicts the previous shot 38 (same grind, 27s, balance 3, 4 stars, best shot on the bag), making this a regression worth investigating.",
      "numbers": "Time and ratio are both Normal by your thresholds. But the taste tells a different story — lingering sourness at balance 2 is a meaningful step back from the balance 3, clean-fading result at the same grind two days ago. The 8g drip lag is normal for the Bambino. The question is why the same grind produced a worse result.",
      "recommendationAction": "Go one click finer to grind 27.5, keeping dose at 18g and targeting 36–38g yield (stop the shot earlier than you did here).",
      "recommendationReason": "Two things are working against you: the shot ran 2 seconds faster than your best pull on this bag, and the yield crept up to 41g — that's a longer, more dilute pull on a faster shot, which compounds under-extraction. But before blaming grind alone, check your puck prep. Diego's note asks whether aging beans need a finer grind — not necessarily. At 16 days on an EA Washed decaf, the bean is still solidly in peak window. More likely culprit is a slightly inconsistent tamp or WDT pass producing faster flow. Try 27.5 and consciously stop the shot at 37g. If flow is still fast and sourness lingers, go to 27.",
      "beanContext": "At 16 days post-roast, this EA Washed decaf is in its peak window — freshness isn't the issue. The bean's inherent brightness means some quick-fade acidity is normal character, but lingering sourness is a real extraction flag on this one. Your best shot (shot 38, grind 28, 27s, balance 3) showed this bean is capable — the regression here is likely procedural or yield-related rather than a bean freshness problem. The bag note holds: grind 28 can work, but yield discipline matters.",
      "progressNote": "Shot 38 was your best pull on this bag — don't abandon grind 28 permanently based on one regression. Check yield control first; you've been running long on this bean and it's costing you.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 39 on the Decaf Huila: grind 28, 25s, balance 2, 3 stars. Time is at the bottom edge of Normal but the flow was described as fast and the sourness lingered — Diego's own note calls it under-extracted. This contradicts the previous shot 38 (same grind, 27s, balance 3, 4 stars, best shot on the bag), making this a regression worth investigating.\",\n  \"numbers\": \"Time and ratio are both Normal by your thresholds. But the taste tells a different story — lingering sourness at balance 2 is a meaningful step back from the balance 3, clean-fading result at the same grind two days ago. The 8g drip lag is normal for the Bambino. The question is why the same grind produced a worse result.\",\n  \"recommendation\": {\n    \"action\": \"Go one click finer to grind 27.5, keeping dose at 18g and targeting 36–38g yield (stop the shot earlier than you did here).\",\n    \"reason\": \"Two things are working against you: the shot ran 2 seconds faster than your best pull on this bag, and the yield crept up to 41g — that's a longer, more dilute pull on a faster shot, which compounds under-extraction. But before blaming grind alone, check your puck prep. Diego's note asks whether aging beans need a finer grind — not necessarily. At 16 days on an EA Washed decaf, the bean is still solidly in peak window. More likely culprit is a slightly inconsistent tamp or WDT pass producing faster flow. Try 27.5 and consciously stop the shot at 37g. If flow is still fast and sourness lingers, go to 27.\"\n  },\n  \"bean_context\": \"At 16 days post-roast, this EA Washed decaf is in its peak window — freshness isn't the issue. The bean's inherent brightness means some quick-fade acidity is normal character, but lingering sourness is a real extraction flag on this one. Your best shot (shot 38, grind 28, 27s, balance 3) showed this bean is capable — the regression here is likely procedural or yield-related rather than a bean freshness problem. The bag note holds: grind 28 can work, but yield discipline matters.\",\n  \"progress_note\": \"Shot 38 was your best pull on this bag — don't abandon grind 28 permanently based on one regression. Check yield control first; you've been running long on this bean and it's costing you.\",\n  \"overall_verdict\": \"needs_work\",\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Decaf Huila regressed at grind 28 — try 27.5 and tighten yield to 36–38g. Yield creep to 41g on a fast shot compounds under-extraction.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale produced best results (31s, balance 2, good with milk). On Decaf Huila: grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact.\",\n    \"last_recommendation\": \"Decaf Huila: try grind 27.5, dose 18g, stop shot at 37g yield. If still fast and sour, go to 27.\",\n    \"last_analysis_date\": \"2026-06-03T23:06:00.000Z\",\n    \"last_analyzed_shot_id\": 55,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast. Never fully dialed — spent too long in fast.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-06-03 23:23:13"
    },
    {
      "id": 28,
      "shotId": 52,
      "analysisMode": "historical",
      "summary": "Shot 36 of your 42 pulled at the time — this was the breakthrough on the Brazil Cerrado. After a brutal dialing-in sequence (grind 39 choked, 45 ran 15s, 40.5 channeled badly, 41 choked again), grind 42 delivered a 28s Normal pull with a 2.26 ratio and your first balanced taste on this bean. Balance 4, 4 stars — a clean result after a lot of turbulence.",
      "numbers": "Time (28s) and ratio (2.26) both landed Normal by your thresholds. The 8g lag is standard Bambino behavior — nothing to flag. Balance 4 is dead center, and your notes confirm no lingering acidity or bitterness. The numbers and taste are in full agreement here, which hadn't happened yet on this bag.",
      "recommendationAction": "At this point, the right call was exactly what you did next: hold grind 42 and repeat to confirm.",
      "recommendationReason": "After five chaotic shots ranging from choked to 15s blowouts, this was the first sign of a real landing zone. The correct move was to lock grind 42 and pull two or three more shots to verify it wasn't a fluke before treating it as dialed in.",
      "beanContext": "The Brazil Cerrado natural process was behaving unusually coarse-needy — your history confirmed anything below 41.5 choked the machine. Grind 42 at 13 days post-roast put the bean right in its peak freshness window, which likely contributed to the cleaner extraction. The balanced taste with no lingering acidity matched what you'd expect from a low-acid natural process chocolate-forward bean.",
      "progressNote": null,
      "overallVerdict": "great",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 36 of your 42 pulled at the time — this was the breakthrough on the Brazil Cerrado. After a brutal dialing-in sequence (grind 39 choked, 45 ran 15s, 40.5 channeled badly, 41 choked again), grind 42 delivered a 28s Normal pull with a 2.26 ratio and your first balanced taste on this bean. Balance 4, 4 stars — a clean result after a lot of turbulence.\",\n  \"numbers\": \"Time (28s) and ratio (2.26) both landed Normal by your thresholds. The 8g lag is standard Bambino behavior — nothing to flag. Balance 4 is dead center, and your notes confirm no lingering acidity or bitterness. The numbers and taste are in full agreement here, which hadn't happened yet on this bag.\",\n  \"recommendation\": {\n    \"action\": \"At this point, the right call was exactly what you did next: hold grind 42 and repeat to confirm.\",\n    \"reason\": \"After five chaotic shots ranging from choked to 15s blowouts, this was the first sign of a real landing zone. The correct move was to lock grind 42 and pull two or three more shots to verify it wasn't a fluke before treating it as dialed in.\"\n  },\n  \"bean_context\": \"The Brazil Cerrado natural process was behaving unusually coarse-needy — your history confirmed anything below 41.5 choked the machine. Grind 42 at 13 days post-roast put the bean right in its peak freshness window, which likely contributed to the cleaner extraction. The balanced taste with no lingering acidity matched what you'd expect from a low-acid natural process chocolate-forward bean.\",\n  \"progress_note\": null,\n  \"overall_verdict\": \"great\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": null\n}",
      "createdAt": "2026-06-05 19:25:51"
    },
    {
      "id": 29,
      "shotId": 52,
      "analysisMode": "historical",
      "summary": "Shot 36 of your 42 total pulls — this was the breakthrough on the Brazil Cerrado after a brutal dialing-in stretch. Grind 42, 28 seconds, balance 4, 4 stars: the first fully balanced shot on this bean. Notes confirm it: even flow on both spouts, no lingering acid or bitterness.",
      "numbers": "Time is Normal (28s) and ratio is Normal (2.26) — both squarely in range. Balance 4 (Balanced) matches the taste notes exactly. The five shots leading into this one tell the whole story: grind 39 choked at 60s and over-extracted (balance 6), grind 45 blew through in 15s (balance 1), grind 41.5 ran sour at 34s, and grind 40.5 channeled badly at 58s. This shot at grind 42 was the resolution of all of that chaos.",
      "recommendationAction": "Lock grind 42, dose 18g, target 39–43g yield.",
      "recommendationReason": "At this point in your dialing-in, the right call was to hold grind 42 and start tightening yield consistency around 40g. The bean had found its sweet spot — the job was to stop chasing and start repeating.",
      "beanContext": "Brazil Cerrado natural process at 13 days post-roast was solidly in its peak window, and the flavor delivered: the balanced, soft chocolate profile the bean promises. The reason grind 42 works where everything finer failed is the natural process — the denser, stickier puck structure of a natural requires a much coarser grind than any washed bean at this dose. The five-shot odyssey from 28 all the way to 45 and back to 42 was the only way to find that. Nothing you did wrong; this bean just had an unusually narrow extraction window.",
      "progressNote": null,
      "overallVerdict": "great",
      "isStable": true,
      "rawResponse": "{\n  \"summary\": \"Shot 36 of your 42 total pulls — this was the breakthrough on the Brazil Cerrado after a brutal dialing-in stretch. Grind 42, 28 seconds, balance 4, 4 stars: the first fully balanced shot on this bean. Notes confirm it: even flow on both spouts, no lingering acid or bitterness.\",\n  \"numbers\": \"Time is Normal (28s) and ratio is Normal (2.26) — both squarely in range. Balance 4 (Balanced) matches the taste notes exactly. The five shots leading into this one tell the whole story: grind 39 choked at 60s and over-extracted (balance 6), grind 45 blew through in 15s (balance 1), grind 41.5 ran sour at 34s, and grind 40.5 channeled badly at 58s. This shot at grind 42 was the resolution of all of that chaos.\",\n  \"recommendation\": {\n    \"action\": \"Lock grind 42, dose 18g, target 39–43g yield.\",\n    \"reason\": \"At this point in your dialing-in, the right call was to hold grind 42 and start tightening yield consistency around 40g. The bean had found its sweet spot — the job was to stop chasing and start repeating.\"\n  },\n  \"bean_context\": \"Brazil Cerrado natural process at 13 days post-roast was solidly in its peak window, and the flavor delivered: the balanced, soft chocolate profile the bean promises. The reason grind 42 works where everything finer failed is the natural process — the denser, stickier puck structure of a natural requires a much coarser grind than any washed bean at this dose. The five-shot odyssey from 28 all the way to 45 and back to 42 was the only way to find that. Nothing you did wrong; this bean just had an unusually narrow extraction window.\",\n  \"progress_note\": null,\n  \"overall_verdict\": \"great\",\n  \"is_stable\": true,\n  \"updated_coaching_state\": null\n}",
      "createdAt": "2026-06-05 19:26:23"
    },
    {
      "id": 30,
      "shotId": 53,
      "analysisMode": "historical",
      "summary": "This was shot 37 of your 42 total pulls at the time — grind 28 back on the Decaf Huila after a detour through 29 and 27.5. 27 seconds Normal, 36.4g yield, balance 3, 4 stars. Your own note calls it the best shot yet on the decaf, and the numbers back that up.",
      "numbers": "Time and ratio both land Normal. Balance 3 (Slightly Sour) fits this bright EA Washed Pink Bourbon — acidity that resolves quickly is bean character, not an extraction fault. The previous two shots at grind 29 ran sour and overlong or very sour at balance 1; grind 27.5 ran slow at 40s with uneven flow. Coming back to 28 with tighter yield (36.4g vs the earlier 41g regression) produced the cleanest result on the bag. Notes confirm: both spouts flowing, wobble resolved mid-pull, acidity dissipated fast. No contradictions between numbers and taste here.",
      "recommendationAction": "At this point, the right call was to lock grind 28, dose 18g, and target 35–38g yield — you'd found your recipe.",
      "recommendationReason": "The exploration through 27.5 and 29 confirmed 28 as the sweet spot. The one remaining variable was yield discipline — the earlier 41g shot at this same grind was the only real regression. Holding 36–37g was the key lever.",
      "beanContext": "Flavor notes of Luxardo, ganache, and orange peel align with the bright, quickly-fading acidity Diego was tasting. At 18 days post-roast this EA Washed decaf was comfortably in peak window (estimated peak start day 8–9 for this process). The high-elevation Pink Bourbon variety contributes inherent brightness — balance 3 on a shot this clean is correct, not a problem.",
      "progressNote": null,
      "overallVerdict": "great",
      "isStable": true,
      "rawResponse": "{\"summary\":\"This was shot 37 of your 42 total pulls at the time — grind 28 back on the Decaf Huila after a detour through 29 and 27.5. 27 seconds Normal, 36.4g yield, balance 3, 4 stars. Your own note calls it the best shot yet on the decaf, and the numbers back that up.\",\"numbers\":\"Time and ratio both land Normal. Balance 3 (Slightly Sour) fits this bright EA Washed Pink Bourbon — acidity that resolves quickly is bean character, not an extraction fault. The previous two shots at grind 29 ran sour and overlong or very sour at balance 1; grind 27.5 ran slow at 40s with uneven flow. Coming back to 28 with tighter yield (36.4g vs the earlier 41g regression) produced the cleanest result on the bag. Notes confirm: both spouts flowing, wobble resolved mid-pull, acidity dissipated fast. No contradictions between numbers and taste here.\",\"recommendation\":{\"action\":\"At this point, the right call was to lock grind 28, dose 18g, and target 35–38g yield — you'd found your recipe.\",\"reason\":\"The exploration through 27.5 and 29 confirmed 28 as the sweet spot. The one remaining variable was yield discipline — the earlier 41g shot at this same grind was the only real regression. Holding 36–37g was the key lever.\"},\"bean_context\":\"Flavor notes of Luxardo, ganache, and orange peel align with the bright, quickly-fading acidity Diego was tasting. At 18 days post-roast this EA Washed decaf was comfortably in peak window (estimated peak start day 8–9 for this process). The high-elevation Pink Bourbon variety contributes inherent brightness — balance 3 on a shot this clean is correct, not a problem.\",\"progress_note\":null,\"overall_verdict\":\"great\",\"is_stable\":true,\"updated_coaching_state\":null}",
      "createdAt": "2026-06-05 20:10:27"
    },
    {
      "id": 31,
      "shotId": 63,
      "analysisMode": "recent",
      "summary": "First shot on the new Ándale Market bag. Grind 29 landed 36 seconds Normal/Slow with a 2.12 Normal ratio — technically solid numbers. Diego rated it balanced (4) with 3 stars and described it as bright but balanced, which is a reasonable first pull on a fresh bag of this bean.",
      "numbers": "36 seconds and 38.3g yield sit right at the top of the Normal range, touching Slow. Ratio at 2.12 is Normal. Balance 4 is the sweet spot. The numbers and taste agree — no contradiction. The flow notes are worth attention though: slow drip for the first 14 seconds before normal flow at 21s, with ongoing left-spout irregularity. That's a longer-than-usual hesitation at the start and persistent asymmetry on the left — possible WDT distribution unevenness or a slight channeling episode on that side. It didn't wreck the shot, but it's a flag for puck prep on pull 2.",
      "recommendationAction": "Hold grind 29, dose 18g, target 36–40g yield. Focus puck prep next shot — slow WDT passes on the left half of the puck to ensure even distribution before tamping.",
      "recommendationReason": "The shot dialed in acceptably on the first pull, which is a good sign. But the left-spout irregularity throughout the shot suggests uneven puck density. Before changing anything, confirm whether a cleaner prep produces cleaner flow. If the next shot flows evenly and still reads bright-balanced, you have a working recipe. If it runs faster and tastes sour, come down to 29.5 or 30.",
      "beanContext": "Ándale Market is back — you previously logged 12 shots on this bag and your best result was grind 33 at 31s with balance 2, good in milk. Grind 29 is notably finer than that best result, and it's already running Slow at 36s — so this bag may be behaving differently than the last one (different roast date, or just natural bag-to-bag variation). At 12 days post-roast it's in peak window. The bright, acidic character in the flavor notes explains the balance-4 brightness Diego noticed. Don't chase a faster shot just because the old bag dialed in at 33 — this pull looks like a legitimate first-shot success.",
      "progressNote": "First shot on a returning bean and it landed balanced — that's pattern recognition paying off. Worth noting that your previous Ándale experience started in the 28–29 range and ran fast; this time 29 ran slow, which suggests you're working with a fresher, denser roast. Trust the shot data over memory on this one.",
      "overallVerdict": "good",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"First shot on the new Ándale Market bag. Grind 29 landed 36 seconds Normal/Slow with a 2.12 Normal ratio — technically solid numbers. Diego rated it balanced (4) with 3 stars and described it as bright but balanced, which is a reasonable first pull on a fresh bag of this bean.\",\n  \"numbers\": \"36 seconds and 38.3g yield sit right at the top of the Normal range, touching Slow. Ratio at 2.12 is Normal. Balance 4 is the sweet spot. The numbers and taste agree — no contradiction. The flow notes are worth attention though: slow drip for the first 14 seconds before normal flow at 21s, with ongoing left-spout irregularity. That's a longer-than-usual hesitation at the start and persistent asymmetry on the left — possible WDT distribution unevenness or a slight channeling episode on that side. It didn't wreck the shot, but it's a flag for puck prep on pull 2.\",\n  \"recommendation\": {\n    \"action\": \"Hold grind 29, dose 18g, target 36–40g yield. Focus puck prep next shot — slow WDT passes on the left half of the puck to ensure even distribution before tamping.\",\n    \"reason\": \"The shot dialed in acceptably on the first pull, which is a good sign. But the left-spout irregularity throughout the shot suggests uneven puck density. Before changing anything, confirm whether a cleaner prep produces cleaner flow. If the next shot flows evenly and still reads bright-balanced, you have a working recipe. If it runs faster and tastes sour, come down to 29.5 or 30.\"\n  },\n  \"bean_context\": \"Ándale Market is back — you previously logged 12 shots on this bag and your best result was grind 33 at 31s with balance 2, good in milk. Grind 29 is notably finer than that best result, and it's already running Slow at 36s — so this bag may be behaving differently than the last one (different roast date, or just natural bag-to-bag variation). At 12 days post-roast it's in peak window. The bright, acidic character in the flavor notes explains the balance-4 brightness Diego noticed. Don't chase a faster shot just because the old bag dialed in at 33 — this pull looks like a legitimate first-shot success.\",\n  \"progress_note\": \"First shot on a returning bean and it landed balanced — that's pattern recognition paying off. Worth noting that your previous Ándale experience started in the 28–29 range and ran fast; this time 29 ran slow, which suggests you're working with a fresher, denser roast. Trust the shot data over memory on this one.\",\n  \"overall_verdict\": \"good\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Ándale Market bag 2 — grind 29 produced balanced first shot (36s, ratio 2.12, balance 4) but left-spout irregularity throughout. Confirm puck prep evenness on shot 2 before changing grind.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale produced best results (31s, balance 2, good with milk). On Decaf Huila: grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — grind 29 ran Slow (36s) vs fast on previous bag. Do not assume prior dialed-in grind applies across bags on this bean.\",\n    \"last_recommendation\": \"Ándale Market bag 2: hold grind 29, dose 18g, target 36–40g yield. Prioritize even WDT distribution especially on left half of puck to address left-spout irregularity. If shot flows cleanly and reads bright-balanced again, recipe is working.\",\n    \"last_analysis_date\": \"2026-06-07T13:29:00.000Z\",\n    \"last_analyzed_shot_id\": 63,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently — grind 29 ran Slow (36s). Do not carry over grind from bag 1.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 29,\n        \"shots_pulled\": 1,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Shot 1 at grind 29: 36s, balance 4, bright but balanced. Left-spout irregularity — check WDT evenness on shot 2.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-06-07 15:34:14"
    },
    {
      "id": 32,
      "shotId": 64,
      "analysisMode": "recent",
      "summary": "Shot 2 on Ándale Market bag 2 came in at 25s, ratio 2.17, balance 3 — slightly sour but drinkable. You moved to grind 31 (2 clicks coarser than shot 1's grind 29), which is the opposite direction from what was needed, and it shows: the shot ran noticeably faster. The right-spout restriction throughout is a real channeling signal worth addressing.",
      "numbers": "25s puts this in Normal territory, but at the fast edge — shot 1 at grind 29 ran 36s (Slow), so coarsening 2 clicks dropped you 11 seconds, which is a big jump for just two steps. Ratio at 2.17 is Normal and consistent with shot 1. Balance moved from 4 to 3, slightly sour — consistent with the faster pull. The taste description ('slightly sour and very bright, similar to the first shot') suggests the extraction character is similar but dialing in coarser didn't help balance — it made it marginally more sour.",
      "recommendationAction": "Go back to grind 29 and focus entirely on even WDT distribution, especially on the right side of the puck this time.",
      "recommendationReason": "Shot 1 at grind 29 was balanced (4) with left-spout issues. Shot 2 at grind 31 is slightly sour (3) with right-spout channeling — the spout problem switched sides, which points to inconsistent WDT rather than grind. Grind 31 is running too fast. Return to 29 and treat the channeling as a puck prep problem, not a grind problem. Slow down your WDT pass on both sides and make sure you're reaching all the way to the basket edge.",
      "beanContext": "Ándale Market is a bright, acidic Latin American blend — cherry, nougat, wildflower honey. At 12 days post-roast on a medium, you're in peak window. Slight sourness is partly bean character on this one, not purely an extraction flag. Shot 1's balance 4 with grind 29 was the better baseline — the bean wasn't the problem here, puck prep was.",
      "progressNote": "The alternating spout issue (left last shot, right this shot) is a useful clue — it's telling you WDT distribution is inconsistent across shots, not that grind is off. Locking that variable down is the next real unlock here.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 2 on Ándale Market bag 2 came in at 25s, ratio 2.17, balance 3 — slightly sour but drinkable. You moved to grind 31 (2 clicks coarser than shot 1's grind 29), which is the opposite direction from what was needed, and it shows: the shot ran noticeably faster. The right-spout restriction throughout is a real channeling signal worth addressing.\",\n  \"numbers\": \"25s puts this in Normal territory, but at the fast edge — shot 1 at grind 29 ran 36s (Slow), so coarsening 2 clicks dropped you 11 seconds, which is a big jump for just two steps. Ratio at 2.17 is Normal and consistent with shot 1. Balance moved from 4 to 3, slightly sour — consistent with the faster pull. The taste description ('slightly sour and very bright, similar to the first shot') suggests the extraction character is similar but dialing in coarser didn't help balance — it made it marginally more sour.\",\n  \"recommendation\": {\n    \"action\": \"Go back to grind 29 and focus entirely on even WDT distribution, especially on the right side of the puck this time.\",\n    \"reason\": \"Shot 1 at grind 29 was balanced (4) with left-spout issues. Shot 2 at grind 31 is slightly sour (3) with right-spout channeling — the spout problem switched sides, which points to inconsistent WDT rather than grind. Grind 31 is running too fast. Return to 29 and treat the channeling as a puck prep problem, not a grind problem. Slow down your WDT pass on both sides and make sure you're reaching all the way to the basket edge.\"\n  },\n  \"bean_context\": \"Ándale Market is a bright, acidic Latin American blend — cherry, nougat, wildflower honey. At 12 days post-roast on a medium, you're in peak window. Slight sourness is partly bean character on this one, not purely an extraction flag. Shot 1's balance 4 with grind 29 was the better baseline — the bean wasn't the problem here, puck prep was.\",\n  \"progress_note\": \"The alternating spout issue (left last shot, right this shot) is a useful clue — it's telling you WDT distribution is inconsistent across shots, not that grind is off. Locking that variable down is the next real unlock here.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Ándale Market bag 2 — return to grind 29. Channeling alternating sides (left shot 1, right shot 2) confirms WDT distribution inconsistency, not a grind issue. Focus on even WDT coverage to both sides and basket edge before changing grind.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale produced best results (31s, balance 2, good with milk). On Decaf Huila: grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — grind 29 ran Slow (36s) vs fast on previous bag. Do not assume prior dialed-in grind applies across bags on this bean. Ándale bag 2: grind 31 ran 25s (fast edge of Normal) with right-spout channeling — 2 clicks coarser dropped 11 seconds. Alternating side channeling across two shots = WDT inconsistency, not grind. Grind 29 is better baseline.\",\n    \"last_recommendation\": \"Ándale Market bag 2: return to grind 29. Focus on slow, even WDT coverage across the full puck including basket edges on both sides. Do not change grind until puck prep is consistent.\",\n    \"last_analysis_date\": \"2026-06-07T20:19:00.000Z\",\n    \"last_analyzed_shot_id\": 64,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 29,\n        \"shots_pulled\": 2,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Grind 29: 36s, balance 4, balanced but left-spout issue. Grind 31: 25s, balance 3, right-spout channeling. Alternating sides = WDT inconsistency. Return to 29.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-06-07 23:38:20"
    },
    {
      "id": 33,
      "shotId": 72,
      "analysisMode": "recent",
      "summary": "26 seconds and a 2.5 ratio — time is fine but you're running long on yield again, and the sour/very sour taste with alternating spout restriction is a clear signal something is wrong with puck prep. This is the second shot in a row at grind 29.5 with a broken or channeling puck and a long pull.",
      "numbers": "Time is Normal (26s) but ratio landed at 2.64 on the previous shot and 2.5 here — both Long. The lingering sourness and broken puck on the prior shot, combined with restricted alternating spouts and sour-to-very-sour taste on this one, all point to channeling rather than under-extraction from grind. A 9g lag is within your normal Bambino range. The balance 2 (Sour) is consistent with what channeling does — water finds the easy path, leaving pockets of the puck under-extracted.",
      "recommendationAction": "Stop changing the grind and focus entirely on puck prep. Before your next shot: slow down your WDT to a full 45 seconds with deliberate edge-to-edge coverage, and actively watch that you're hitting both sides of the basket equally. Keep grind at 29.5, target yield 36–38g.",
      "recommendationReason": "You've now had three consecutive shots with alternating or restricted spout flow across multiple grind settings (31, 30, 29.5). That's not a grind problem — grind doesn't alternate sides. The broken puck on the previous shot and the restricted spouts here both confirm channeling originating in the puck, not from resistance. You're also consistently overshooting yield (45–47g) which compounds sourness. Pull the shot shorter.",
      "beanContext": "Ándale bag 2 is at 17 days post-roast, firmly in peak window. This bean is bright and acidic by nature, but lingering sourness across multiple shots is an extraction fault, not bean character. Cherry and nougat should be accessible at grind 29.5 with clean prep — you saw balance 3–4 on earlier shots at grind 29 when puck prep was better. The bean isn't the issue.",
      "progressNote": "Four consecutive shots on this bag with channeling signs across three different grind settings. The variable is prep, not grind. This is the right problem to solve next.",
      "overallVerdict": "problem",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"26 seconds and a 2.5 ratio — time is fine but you're running long on yield again, and the sour/very sour taste with alternating spout restriction is a clear signal something is wrong with puck prep. This is the second shot in a row at grind 29.5 with a broken or channeling puck and a long pull.\",\n  \"numbers\": \"Time is Normal (26s) but ratio landed at 2.64 on the previous shot and 2.5 here — both Long. The lingering sourness and broken puck on the prior shot, combined with restricted alternating spouts and sour-to-very-sour taste on this one, all point to channeling rather than under-extraction from grind. A 9g lag is within your normal Bambino range. The balance 2 (Sour) is consistent with what channeling does — water finds the easy path, leaving pockets of the puck under-extracted.\",\n  \"recommendation\": {\n    \"action\": \"Stop changing the grind and focus entirely on puck prep. Before your next shot: slow down your WDT to a full 45 seconds with deliberate edge-to-edge coverage, and actively watch that you're hitting both sides of the basket equally. Keep grind at 29.5, target yield 36–38g.\",\n    \"reason\": \"You've now had three consecutive shots with alternating or restricted spout flow across multiple grind settings (31, 30, 29.5). That's not a grind problem — grind doesn't alternate sides. The broken puck on the previous shot and the restricted spouts here both confirm channeling originating in the puck, not from resistance. You're also consistently overshooting yield (45–47g) which compounds sourness. Pull the shot shorter.\"\n  },\n  \"bean_context\": \"Ándale bag 2 is at 17 days post-roast, firmly in peak window. This bean is bright and acidic by nature, but lingering sourness across multiple shots is an extraction fault, not bean character. Cherry and nougat should be accessible at grind 29.5 with clean prep — you saw balance 3–4 on earlier shots at grind 29 when puck prep was better. The bean isn't the issue.\",\n  \"progress_note\": \"Four consecutive shots on this bag with channeling signs across three different grind settings. The variable is prep, not grind. This is the right problem to solve next.\",\n  \"overall_verdict\": \"problem\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Ándale Market bag 2 — persistent channeling across grind 29.5–32 confirms puck prep is the problem, not grind. Slow WDT to 45s with deliberate edge-to-edge coverage. Yield control also critical — pull at 36–38g, not 45+.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale produced best results (31s, balance 2, good with milk). On Decaf Huila: grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — grind 29 ran Slow (36s) vs fast on previous bag. Do not assume prior dialed-in grind applies across bags on this bean. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue, not grind. Broken puck on shot at grind 29.5 confirms insufficient prep. Overshooting yield to 45–47g compounding sourness. Target 36–38g.\",\n    \"last_recommendation\": \"Ándale Market bag 2: hold grind 29.5, slow WDT to 45s with deliberate edge-to-edge coverage hitting both basket sides equally. Pull at 36–38g yield. Do not change grind until puck prep is consistent.\",\n    \"last_analysis_date\": \"2026-06-11T14:22:00.000Z\",\n    \"last_analyzed_shot_id\": 72,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 29.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Four consecutive channeling shots at grind 31–29.5 — alternating spout restriction = WDT inconsistency. Broken puck confirmed. Yield overshooting to 45–47g; target 36–38g.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-06-12 11:54:38"
    },
    {
      "id": 34,
      "shotId": 75,
      "analysisMode": "recent",
      "summary": "Breakthrough shot. Grind 28, 26 seconds, balance 4, 4 stars — even bilateral flow, brightness that fades quickly, 38.5g yield right in the target window. This is the first clean, dialed-in pull on Ándale bag 2 after four consecutive channeling shots.",
      "numbers": "Time and ratio both land Normal. Balance 4 (Balanced) matches the taste notes — brightness that disappears quickly is exactly what you want on this bean, not a sourness flag. The even bilateral flow and no mid-shot dropout confirm the puck prep improvements paid off. 7g drip lag is normal for the Bambino.",
      "recommendationAction": "Lock grind 28, dose 18g, target 37–41g yield.",
      "recommendationReason": "You've solved the channeling and hit balance 4 with clean flow for the first time on this bag. Stay here.",
      "beanContext": "Day 18 on a medium roast — solidly in peak window. Brightness that fades fast is this bean's character (cherry/wildflower honey), not extraction trouble. Balance 4 on a bright Latin American blend is a strong result.",
      "progressNote": "Four straight channeling shots at grind 29.5–31, and then this. Slowing down WDT and tightening yield control did exactly what it needed to do. Big improvement.",
      "overallVerdict": "great",
      "isStable": true,
      "rawResponse": "{\n  \"summary\": \"Breakthrough shot. Grind 28, 26 seconds, balance 4, 4 stars — even bilateral flow, brightness that fades quickly, 38.5g yield right in the target window. This is the first clean, dialed-in pull on Ándale bag 2 after four consecutive channeling shots.\",\n  \"numbers\": \"Time and ratio both land Normal. Balance 4 (Balanced) matches the taste notes — brightness that disappears quickly is exactly what you want on this bean, not a sourness flag. The even bilateral flow and no mid-shot dropout confirm the puck prep improvements paid off. 7g drip lag is normal for the Bambino.\",\n  \"recommendation\": {\n    \"action\": \"Lock grind 28, dose 18g, target 37–41g yield.\",\n    \"reason\": \"You've solved the channeling and hit balance 4 with clean flow for the first time on this bag. Stay here.\"\n  },\n  \"bean_context\": \"Day 18 on a medium roast — solidly in peak window. Brightness that fades fast is this bean's character (cherry/wildflower honey), not extraction trouble. Balance 4 on a bright Latin American blend is a strong result.\",\n  \"progress_note\": \"Four straight channeling shots at grind 29.5–31, and then this. Slowing down WDT and tightening yield control did exactly what it needed to do. Big improvement.\",\n  \"overall_verdict\": \"great\",\n  \"is_stable\": true,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Ándale Market bag 2 dialed in at grind 28 — hold parameters, maintain WDT consistency and yield 37–41g.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila: grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-edge coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in.\",\n    \"last_recommendation\": \"Ándale Market bag 2: lock grind 28, dose 18g, target 37–41g yield. Dialed in — hold parameters.\",\n    \"last_analysis_date\": \"2026-06-13T14:12:00.000Z\",\n    \"last_analyzed_shot_id\": 75,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-06-13 14:44:39"
    },
    {
      "id": 35,
      "shotId": 77,
      "analysisMode": "recent",
      "summary": "Grind 29.5 on this new light roast decaf ran 52 seconds with extremely restricted flow and channeling throughout — but landed a balance 4 and 4 stars. The flavor outcome is better than the shot deserved, and the context shots show a pattern of choked or near-choked pulls across this entire bag so far.",
      "numbers": "52 seconds is Very Slow by your thresholds and crosses into industry over-extraction territory (>45s). Ratio 2.13 is Normal. The balance 4 with a good quality rating is genuinely surprising given the flow description — restricted, channeling, spout-switching — but Diego's taste is the ground truth here. Worth noting: all five shots on this bag have averaged 53 seconds, and three prior shots hit the 60-second auto-stop. This bean is consistently choking at grind settings that work fine on other decafs.",
      "recommendationAction": "Go significantly coarser — try grind 34–35 next shot.",
      "recommendationReason": "This is a light roast decaf, and it's behaving like the densest bean you've pulled so far. Light roasts are denser and harder to extract than medium/dark, and despite the decaf processing (which usually loosens the structure), this bean is choking at 29.5. Your Decaf Huila was EA Washed and dialed in at 28 — this one is unspecified processing, light roast, and clearly needs dramatically more room. Jump coarse to 34–35 to get into a functional flow range first, then dial back in from there. Don't inch — the entire shot history here is choked.",
      "beanContext": "Coffee Lab & Roasters Huila Decaf is a light roast single origin Colombia at 12 days post-roast, squarely in the estimated peak window. Flavor notes are bright acidity, sweet, lemon — higher acidity profile than your Metric Decaf Huila. The processing method is unspecified, so you can't rely on the EA Washed 'opens the structure' assumption here. Light roast density is likely the dominant factor driving the choke — this bean is behaving more like your Brazil Cerrado (which needed grind 42) than your previous decaf. The balance 4 this shot may reflect the restricted flow accidentally evening out over- and under-extracted channels, not true dialed-in extraction.",
      "progressNote": "Five shots in and still no clean pull — this is a challenging bean. The good news is you recognized the pattern quickly and the flavor read is accurate. Getting to a functional flow is step one.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Grind 29.5 on this new light roast decaf ran 52 seconds with extremely restricted flow and channeling throughout — but landed a balance 4 and 4 stars. The flavor outcome is better than the shot deserved, and the context shots show a pattern of choked or near-choked pulls across this entire bag so far.\",\n  \"numbers\": \"52 seconds is Very Slow by your thresholds and crosses into industry over-extraction territory (>45s). Ratio 2.13 is Normal. The balance 4 with a good quality rating is genuinely surprising given the flow description — restricted, channeling, spout-switching — but Diego's taste is the ground truth here. Worth noting: all five shots on this bag have averaged 53 seconds, and three prior shots hit the 60-second auto-stop. This bean is consistently choking at grind settings that work fine on other decafs.\",\n  \"recommendation\": {\n    \"action\": \"Go significantly coarser — try grind 34–35 next shot.\",\n    \"reason\": \"This is a light roast decaf, and it's behaving like the densest bean you've pulled so far. Light roasts are denser and harder to extract than medium/dark, and despite the decaf processing (which usually loosens the structure), this bean is choking at 29.5. Your Decaf Huila was EA Washed and dialed in at 28 — this one is unspecified processing, light roast, and clearly needs dramatically more room. Jump coarse to 34–35 to get into a functional flow range first, then dial back in from there. Don't inch — the entire shot history here is choked.\"\n  },\n  \"bean_context\": \"Coffee Lab & Roasters Huila Decaf is a light roast single origin Colombia at 12 days post-roast, squarely in the estimated peak window. Flavor notes are bright acidity, sweet, lemon — higher acidity profile than your Metric Decaf Huila. The processing method is unspecified, so you can't rely on the EA Washed 'opens the structure' assumption here. Light roast density is likely the dominant factor driving the choke — this bean is behaving more like your Brazil Cerrado (which needed grind 42) than your previous decaf. The balance 4 this shot may reflect the restricted flow accidentally evening out over- and under-extracted channels, not true dialed-in extraction.\",\n  \"progress_note\": \"Five shots in and still no clean pull — this is a challenging bean. The good news is you recognized the pattern quickly and the flavor read is accurate. Getting to a functional flow is step one.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Coffee Lab Huila Decaf — choking at all settings tried so far (27.5–29.5). Jumping to grind 34–35 to establish functional flow. Light roast density is driving this, not just decaf processing.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-edge coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–29.5 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Jumping to 34–35 to find functional flow range. Do not treat prior decaf grind settings as starting reference for light roast decaf.\",\n    \"last_recommendation\": \"Coffee Lab Huila Decaf: go coarse to grind 34–35 next shot to establish functional flow. Bean is choking across all settings tried so far.\",\n    \"last_analysis_date\": \"2026-06-14T21:22:00.000Z\",\n    \"last_analyzed_shot_id\": 77,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 29.5,\n        \"shots_pulled\": 5,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–29.5. Light roast density dominant. Balance 4 at 29.5 was likely channel averaging. Try 34–35 next.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-06-14 22:16:34"
    },
    {
      "id": 36,
      "shotId": 80,
      "analysisMode": "recent",
      "summary": "Grind 34 got you functional flow after five choked shots — that's meaningful progress. The shot ran 40s at a 2.06 ratio, landed at balance 4, and Diego tasted strong chocolate with good crema. The problem is single-spout flow throughout, which points to a puck prep issue rather than grind.",
      "numbers": "40s sits in the Slow range, and the 2.06 ratio is Normal — both within industry standard. Balance 4 is the target. The taste confirms the numbers: balanced with chocolate character, consistent with a medium-dark washed blend. The contradiction here is that a well-balanced shot came through a single spout the entire pull — that's channeling, but the flavor wasn't punished by it this time. Notes and numbers agree on balance but flag a technique problem that didn't fully express itself in taste today. Don't count on that luck holding.",
      "recommendationAction": "Keep grind at 34. Before the next shot, slow your WDT to 45 seconds with deliberate edge-to-edge coverage — the same fix that resolved channeling on Ándale bag 2.",
      "recommendationReason": "Grind 34 is producing viable flow and balanced taste, so the grind isn't the variable to chase right now. Single-spout flow from start to finish on this shot is a puck distribution problem. Your history shows this exact symptom was resolved on Ándale bag 2 by slowing and deliberating WDT. Apply that same technique before changing anything else. Once you have bilateral flow, you'll know if 34 is actually the right grind.",
      "beanContext": "Dark Matter Unicorn Blood at 22 days post-roast is in excellent shape for a medium-dark washed blend — no freshness concerns. The chocolate and caramel notes from the flavor profile showed up clearly in the cup. This is the second shot on the bag, and the first gave you a 49s Very Slow pull with lingering acidity and restricted flow — grind 34 fixed the flow issue but the puck prep needs attention. No prior dialed-in bean in your history is a close analog for this roast level and origin combination, but medium-dark washed beans generally dial in in the 30–36 range on your setup, so 34 is a reasonable place to be.",
      "progressNote": "Five choked shots on the Huila Decaf made this feel like a tough stretch, but switching to this new bean and getting a balanced shot at grind 34 on the second pull is solid. The real win here is recognizing the WDT issue from the flow description — that pattern recognition is getting sharper.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Grind 34 got you functional flow after five choked shots — that's meaningful progress. The shot ran 40s at a 2.06 ratio, landed at balance 4, and Diego tasted strong chocolate with good crema. The problem is single-spout flow throughout, which points to a puck prep issue rather than grind.\",\n  \"numbers\": \"40s sits in the Slow range, and the 2.06 ratio is Normal — both within industry standard. Balance 4 is the target. The taste confirms the numbers: balanced with chocolate character, consistent with a medium-dark washed blend. The contradiction here is that a well-balanced shot came through a single spout the entire pull — that's channeling, but the flavor wasn't punished by it this time. Notes and numbers agree on balance but flag a technique problem that didn't fully express itself in taste today. Don't count on that luck holding.\",\n  \"recommendation\": {\n    \"action\": \"Keep grind at 34. Before the next shot, slow your WDT to 45 seconds with deliberate edge-to-edge coverage — the same fix that resolved channeling on Ándale bag 2.\",\n    \"reason\": \"Grind 34 is producing viable flow and balanced taste, so the grind isn't the variable to chase right now. Single-spout flow from start to finish on this shot is a puck distribution problem. Your history shows this exact symptom was resolved on Ándale bag 2 by slowing and deliberating WDT. Apply that same technique before changing anything else. Once you have bilateral flow, you'll know if 34 is actually the right grind.\"\n  },\n  \"bean_context\": \"Dark Matter Unicorn Blood at 22 days post-roast is in excellent shape for a medium-dark washed blend — no freshness concerns. The chocolate and caramel notes from the flavor profile showed up clearly in the cup. This is the second shot on the bag, and the first gave you a 49s Very Slow pull with lingering acidity and restricted flow — grind 34 fixed the flow issue but the puck prep needs attention. No prior dialed-in bean in your history is a close analog for this roast level and origin combination, but medium-dark washed beans generally dial in in the 30–36 range on your setup, so 34 is a reasonable place to be.\",\n  \"progress_note\": \"Five choked shots on the Huila Decaf made this feel like a tough stretch, but switching to this new bean and getting a balanced shot at grind 34 on the second pull is solid. The real win here is recognizing the WDT issue from the flow description — that pattern recognition is getting sharper.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Dark Matter Unicorn Blood — grind 34 producing balanced taste but single-spout flow indicates puck prep issue. Fix WDT before adjusting grind.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-edge coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–29.5 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Do not treat prior decaf grind settings as starting reference for light roast decaf. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 30 choked/slow with restricted single-spout flow and lingering acidity. Grind 34 ran 40s Slow, balance 4, chocolate flavor — but single-spout flow entire shot. WDT likely cause. Medium-dark washed beans trending 30–36 range on this setup.\",\n    \"last_recommendation\": \"Dark Matter Unicorn Blood: keep grind at 34, slow WDT to 45s with deliberate edge-to-edge coverage before next shot to resolve single-spout channeling.\",\n    \"last_analysis_date\": \"2026-06-16T13:10:00.000Z\",\n    \"last_analyzed_shot_id\": 80,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 29.5,\n        \"shots_pulled\": 5,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–29.5. Light roast density dominant. Balance 4 at 29.5 was likely channel averaging. Try 34–35 next.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 34,\n        \"shots_pulled\": 2,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Grind 30 choked/slow, lingering acidity. Grind 34: 40s, balance 4, chocolate — but single-spout flow. Fix WDT before grind change.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-06-16 14:16:31"
    },
    {
      "id": 37,
      "shotId": 82,
      "analysisMode": "recent",
      "summary": "Grind 35 ran 56 seconds — Very Slow — with a yield of 43.6g. Flow was severely restricted early and only opened up late in the shot, producing a slightly bitter result. Going coarser made the shot slower, which is the opposite of what should happen and is a strong signal that puck prep is the culprit, not grind.",
      "numbers": "56 seconds is outside the industry standard range (over 45s = severely over-extracted), and the slightly bitter balance 5 is consistent with that. The ratio at 2.41 is fine. The contradiction here is the key diagnostic: you went coarser from 34 to 35, which should have sped things up, but the shot got slower (40s → 56s). Grind is not the variable causing this.",
      "recommendationAction": "Go back to grind 34, but slow your WDT to 45 seconds with deliberate edge-to-edge coverage — same fix that resolved Ándale bag 2 channeling.",
      "recommendationReason": "Two consecutive shots at 34 and 35 both ran slow with restricted early flow, and going coarser made it worse. This is classic uneven puck prep causing a partial seal or uneven resistance — not a grind issue. The WDT fix resolved an identical pattern on Ándale bag 2. Grind 34 gave you balance 4 and chocolate flavor when the puck was cleaner; return there and fix the prep first before moving the grind again.",
      "beanContext": "Unicorn Blood is medium-dark washed, 23 days off roast — right in the peak window for this roast level. The bean itself is not the problem. Your best shot on this bag (grind 34, balance 4, chocolate) showed what it can do. The late-shot flow improvement in today's notes is another tell — the puck is redistributing or channels are closing as water finds paths, which is a puck prep artifact. This bean is cooperating; the prep isn't.",
      "progressNote": "Three shots on this bag have now shown restricted early flow followed by late-shot improvement — that's a consistent puck prep signature, not a grind signature. Recognizing that going coarser made it worse is good diagnostic thinking.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Grind 35 ran 56 seconds — Very Slow — with a yield of 43.6g. Flow was severely restricted early and only opened up late in the shot, producing a slightly bitter result. Going coarser made the shot slower, which is the opposite of what should happen and is a strong signal that puck prep is the culprit, not grind.\",\n  \"numbers\": \"56 seconds is outside the industry standard range (over 45s = severely over-extracted), and the slightly bitter balance 5 is consistent with that. The ratio at 2.41 is fine. The contradiction here is the key diagnostic: you went coarser from 34 to 35, which should have sped things up, but the shot got slower (40s → 56s). Grind is not the variable causing this.\",\n  \"recommendation\": {\n    \"action\": \"Go back to grind 34, but slow your WDT to 45 seconds with deliberate edge-to-edge coverage — same fix that resolved Ándale bag 2 channeling.\",\n    \"reason\": \"Two consecutive shots at 34 and 35 both ran slow with restricted early flow, and going coarser made it worse. This is classic uneven puck prep causing a partial seal or uneven resistance — not a grind issue. The WDT fix resolved an identical pattern on Ándale bag 2. Grind 34 gave you balance 4 and chocolate flavor when the puck was cleaner; return there and fix the prep first before moving the grind again.\"\n  },\n  \"bean_context\": \"Unicorn Blood is medium-dark washed, 23 days off roast — right in the peak window for this roast level. The bean itself is not the problem. Your best shot on this bag (grind 34, balance 4, chocolate) showed what it can do. The late-shot flow improvement in today's notes is another tell — the puck is redistributing or channels are closing as water finds paths, which is a puck prep artifact. This bean is cooperating; the prep isn't.\",\n  \"progress_note\": \"Three shots on this bag have now shown restricted early flow followed by late-shot improvement — that's a consistent puck prep signature, not a grind signature. Recognizing that going coarser made it worse is good diagnostic thinking.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Dark Matter Unicorn Blood — puck prep is causing restricted slow shots regardless of grind. Return to grind 34 and apply slow 45s deliberate WDT before next shot. Grind is not the variable.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-edge coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–29.5 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Do not treat prior decaf grind settings as starting reference for light roast decaf. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 30 choked/slow with restricted single-spout flow and lingering acidity. Grind 34 ran 40s Slow, balance 4, chocolate flavor — best shot so far but single-spout flow. Grind 35 ran 56s Very Slow, balance 5, restricted early flow — going coarser made it worse, confirming puck prep is the issue not grind. Late-shot flow improvement on multiple shots is puck redistribution artifact. Medium-dark washed beans trending 30–36 range on this setup.\",\n    \"last_recommendation\": \"Dark Matter Unicorn Blood: return to grind 34, slow WDT to 45s with deliberate edge-to-edge coverage. Puck prep is causing restriction — grind is not the variable.\",\n    \"last_analysis_date\": \"2026-06-17T15:08:00.000Z\",\n    \"last_analyzed_shot_id\": 82,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 29.5,\n        \"shots_pulled\": 5,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–29.5. Light roast density dominant. Balance 4 at 29.5 was likely channel averaging. Try 34–35 next.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 35,\n        \"shots_pulled\": 4,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Best shot: grind 34, 40s, balance 4, chocolate. Grind 35 ran slower (56s) — puck prep is the issue, not grind. Fix WDT first.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-06-17 15:19:31"
    },
    {
      "id": 38,
      "shotId": 82,
      "analysisMode": "recent",
      "summary": "Grind 35 ran 56 seconds — Very Slow — with restricted single-spout flow that only opened up late in the pull. This confirms what the last shot already told you: going coarser is making things worse, not better. The puck is the problem, not the grind setting.",
      "numbers": "56 seconds is Very Slow and outside the good range regardless of label. Ratio at 2.41 is Normal, so yield wasn't the issue. Balance 5 (Slightly Bitter) fits a slow, over-extracted shot — the bitterness here is a direct consequence of restriction, not the bean being inherently bitter. Flow description (restricted at 12s, only opening late) is a classic puck prep signature: early restriction from uneven puck density, late improvement as water redistributes. This is not a grind problem.",
      "recommendationAction": "Go back to grind 34. Before your next shot, slow WDT to a full 45 seconds with deliberate edge-to-edge coverage — work the needle from the center to the wall systematically, not random passes. This is the only variable to touch.",
      "recommendationReason": "Two data points now confirm the pattern: grind 35 ran slower than grind 34, which is the opposite of what coarsening should do. That means grind is not the resistance source — puck structure is. The late-shot flow improvement on both 34.5 and 35 is redistribution as water finds pathways, not normal extraction. Fixing WDT consistency is the move. Grind 34 gave you balance 4 and chocolate flavor — that's the target to return to.",
      "beanContext": "Unicorn Blood is medium-dark washed — it should be forgiving and not prone to restriction at reasonable grind settings. Days 23 off roast is still excellent for a medium-dark. The bean isn't fighting you here; puck prep is. The chocolate and balanced shots at grind 34 show the flavor potential is real when the puck cooperates.",
      "progressNote": "The good news: you're correctly reading what the shots are telling you. You noted 'flow restricted despite coarser grind' — that's the diagnostic insight that matters. You're asking the right questions.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Grind 35 ran 56 seconds — Very Slow — with restricted single-spout flow that only opened up late in the pull. This confirms what the last shot already told you: going coarser is making things worse, not better. The puck is the problem, not the grind setting.\",\n  \"numbers\": \"56 seconds is Very Slow and outside the good range regardless of label. Ratio at 2.41 is Normal, so yield wasn't the issue. Balance 5 (Slightly Bitter) fits a slow, over-extracted shot — the bitterness here is a direct consequence of restriction, not the bean being inherently bitter. Flow description (restricted at 12s, only opening late) is a classic puck prep signature: early restriction from uneven puck density, late improvement as water redistributes. This is not a grind problem.\",\n  \"recommendation\": {\n    \"action\": \"Go back to grind 34. Before your next shot, slow WDT to a full 45 seconds with deliberate edge-to-edge coverage — work the needle from the center to the wall systematically, not random passes. This is the only variable to touch.\",\n    \"reason\": \"Two data points now confirm the pattern: grind 35 ran slower than grind 34, which is the opposite of what coarsening should do. That means grind is not the resistance source — puck structure is. The late-shot flow improvement on both 34.5 and 35 is redistribution as water finds pathways, not normal extraction. Fixing WDT consistency is the move. Grind 34 gave you balance 4 and chocolate flavor — that's the target to return to.\"\n  },\n  \"bean_context\": \"Unicorn Blood is medium-dark washed — it should be forgiving and not prone to restriction at reasonable grind settings. Days 23 off roast is still excellent for a medium-dark. The bean isn't fighting you here; puck prep is. The chocolate and balanced shots at grind 34 show the flavor potential is real when the puck cooperates.\",\n  \"progress_note\": \"The good news: you're correctly reading what the shots are telling you. You noted 'flow restricted despite coarser grind' — that's the diagnostic insight that matters. You're asking the right questions.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Dark Matter Unicorn Blood — grind confirmed at 34, puck prep is the sole variable. Next shot: grind 34, slow deliberate 45s WDT with systematic edge-to-edge coverage. Do not adjust grind.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-edge coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–29.5 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Do not treat prior decaf grind settings as starting reference for light roast decaf. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 30 choked/slow with restricted single-spout flow and lingering acidity. Grind 34 ran 40s Slow, balance 4, chocolate flavor — best shot so far. Grind 35 ran 56s Very Slow, balance 5, restricted early flow — going coarser made it worse, confirming puck prep is the issue not grind. Late-shot flow improvement on multiple shots is puck redistribution artifact. Medium-dark washed beans trending 30–36 range on this setup. Grind is confirmed at 34 — do not adjust coarser.\",\n    \"last_recommendation\": \"Dark Matter Unicorn Blood: grind 34, slow deliberate 45s WDT with systematic edge-to-edge coverage. Grind is not the variable — puck prep is.\",\n    \"last_analysis_date\": \"2026-06-17T15:08:00.000Z\",\n    \"last_analyzed_shot_id\": 82,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 29.5,\n        \"shots_pulled\": 5,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–29.5. Light roast density dominant. Balance 4 at 29.5 was likely channel averaging. Try 34–35 next.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 34,\n        \"shots_pulled\": 5,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Grind confirmed at 34 — best shot was balance 4, chocolate. Grind 35 ran slower (56s) — puck prep is the issue. Fix WDT, hold grind at 34.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-06-17 15:20:43"
    },
    {
      "id": 39,
      "shotId": 85,
      "analysisMode": "recent",
      "summary": "Shot 69 on the Coffee Lab Huila Decaf at grind 38 — 35 seconds, 2.05 ratio, balance 3 with lingering brightness. The flow pattern tells the real story: alternating spout restriction throughout the shot, which has now appeared consistently across this bag at multiple grind settings. This is a puck prep issue, not a grind issue.",
      "numbers": "Time (35s) and ratio (2.05) are both in Normal range — on paper this looks fine. But balance 3 with lingering acidity on a light roast decaf that's 17 days off roast (peak window) suggests under-extraction despite the numbers looking clean. The alternating spout channeling is redistributing flow unevenly — some grounds are over-extracted while others stay under, which explains why the shot reads decent numerically but tastes dull and bright. The 0.2g retention is negligible. Lag was 6g, completely normal.",
      "recommendationAction": "Hold grind at 38. Before your next shot, slow your WDT down to a full 45 seconds with deliberate edge-to-edge coverage — same fix that resolved channeling on Ándale bag 2. The alternating spout dropout is the same signature as that problem.",
      "recommendationReason": "The flow pattern (alternating spout restriction, not a single stuck spout) is the exact channeling signature you've seen before on puck prep issues — not grind. You've jumped from 29.5 to 38 chasing a grind fix for what is a distribution problem. Grind 38 is in a workable range. The variable left to fix is WDT execution.",
      "beanContext": "This is a light roast decaf, and the history on this bag confirms it — it choked at everything 27.5–33, meaning the bean demands a significantly coarser grind than expected. Grind 38 is the first setting that hasn't choked, which is consistent with light roast density dominating over the decaf processing effect. At 17 days off roast it's in peak window. Lingering brightness at balance 3 is partly bean character (lemon/bright acidity in the flavor notes) but the channeling is amplifying it — clean extraction would likely push this toward a truer balance 3–4.",
      "progressNote": "Grind 38 is the breakthrough setting on this bag — first shot that ran without choking and produced a real extraction. The puck prep pattern is now the clear remaining variable.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\"summary\":\"Shot 69 on the Coffee Lab Huila Decaf at grind 38 — 35 seconds, 2.05 ratio, balance 3 with lingering brightness. The flow pattern tells the real story: alternating spout restriction throughout the shot, which has now appeared consistently across this bag at multiple grind settings. This is a puck prep issue, not a grind issue.\",\"numbers\":\"Time (35s) and ratio (2.05) are both in Normal range — on paper this looks fine. But balance 3 with lingering acidity on a light roast decaf that's 17 days off roast (peak window) suggests under-extraction despite the numbers looking clean. The alternating spout channeling is redistributing flow unevenly — some grounds are over-extracted while others stay under, which explains why the shot reads decent numerically but tastes dull and bright. The 0.2g retention is negligible. Lag was 6g, completely normal.\",\"recommendation\":{\"action\":\"Hold grind at 38. Before your next shot, slow your WDT down to a full 45 seconds with deliberate edge-to-edge coverage — same fix that resolved channeling on Ándale bag 2. The alternating spout dropout is the same signature as that problem.\",\"reason\":\"The flow pattern (alternating spout restriction, not a single stuck spout) is the exact channeling signature you've seen before on puck prep issues — not grind. You've jumped from 29.5 to 38 chasing a grind fix for what is a distribution problem. Grind 38 is in a workable range. The variable left to fix is WDT execution.\"},\"bean_context\":\"This is a light roast decaf, and the history on this bag confirms it — it choked at everything 27.5–33, meaning the bean demands a significantly coarser grind than expected. Grind 38 is the first setting that hasn't choked, which is consistent with light roast density dominating over the decaf processing effect. At 17 days off roast it's in peak window. Lingering brightness at balance 3 is partly bean character (lemon/bright acidity in the flavor notes) but the channeling is amplifying it — clean extraction would likely push this toward a truer balance 3–4.\",\"progress_note\":\"Grind 38 is the breakthrough setting on this bag — first shot that ran without choking and produced a real extraction. The puck prep pattern is now the clear remaining variable.\",\"overall_verdict\":\"needs_work\",\"is_stable\":false,\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Coffee Lab Huila Decaf — grind 38 is working, channeling persists from puck prep. Next shot: grind 38, slow deliberate 45s WDT with systematic edge-to-edge coverage. Do not adjust grind.\",\"known_patterns\":\"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-edge coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 30 choked/slow with restricted single-spout flow and lingering acidity. Grind 34 ran 40s Slow, balance 4, chocolate flavor — best shot so far. Grind 35 ran 56s Very Slow, balance 5, restricted early flow — going coarser made it worse, confirming puck prep is the issue not grind. Late-shot flow improvement on multiple shots is puck redistribution artifact. Medium-dark washed beans trending 30–36 range on this setup. Grind is confirmed at 34 — do not adjust coarser.\",\"last_recommendation\":\"Coffee Lab Huila Decaf: grind 38, slow deliberate 45s WDT with systematic edge-to-edge coverage. Grind is not the variable — puck prep is.\",\"last_analysis_date\":\"2026-06-19T00:45:00.000Z\",\"last_analyzed_shot_id\":85,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":34,\"shots_pulled\":5,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Grind confirmed at 34 — best shot was balance 4, chocolate. Grind 35 ran slower (56s) — puck prep is the issue. Fix WDT, hold grind at 34.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"}]}}",
      "createdAt": "2026-06-19 11:27:15"
    },
    {
      "id": 40,
      "shotId": 87,
      "analysisMode": "recent",
      "summary": "{\n  \"summary\": \"Shot 71 on Unicorn Blood at grind 37.5: 40s, 36.3g yield, ratio 2.07 — Slow/Normal, balance 3 (slightly sour). The taste resolves quickly, which is a good sign. But this is now the fourth consecutive very slow shot (39–60s) at grind settings from 34–37.5, all with restricted, uneven flow. The grind is not the problem.\",\n  \"numbers\": \"Slow at 40s and Normal ratio at 2.07 are both within functional range — the shot is technically drinkable and balance 3 with quick-resolving acidity is fine on a washed medium-dark. What's notable is that going from 34 to 37.5 over eight shots has produced almost no consistent improvement in time or flow pattern. The average shot time on this bag is 46s, which is well above the Slow threshold. This is a persistent puck prep signature, not a grind problem.\",\n  \"recommendation\": {\n    \"action\": \"Hold grind at 37.5 and completely restructure your WDT approach. Instead of more time, change the technique: use a star pattern starting from the outer edge, work in three concentric rings toward the center, keeping the needle nearly horizontal and moving slowly. The goal is lateral distribution, not just loosening clumps. Do not go coarser.\",\n    \"reason\": \"You've now logged restricted, late-starting, uneven flow across grind settings 34, 34.5, 35, 36, 36, and 37.5. That spread rules out grind as the cause — a 3.5-click range would produce dramatically different results if grind were the issue. Your notes consistently describe flow that starts restricted and unevens across spouts, which is a puck prep distribution problem. More WDT time alone hasn't fixed it — the pattern of coverage needs to change. This is the same lesson from Ándale bag 2: channeling resolved not from more time, but from deliberate directional technique.\"\n  },\n  \"bean_context\": \"Unicorn Blood is a medium-dark washed blend at 25 days post-roast — squarely in peak freshness. Dark chocolate and caramel notes fit what you're tasting: the quick-resolving brightness is likely a washed-process characteristic, not an extraction fault. The bean itself isn't fighting you. The 40s shot with balance 3 and fast-fading acidity is the cleanest result on this bag so far. That tells you grind 37.5 is in the right neighborhood — stop moving it.\",\n  \"progress_note\": \"Your frustration is understandable, but the quick-resolving acidity in this shot is a real improvement over the lingering bitterness at 36 yesterday. The taste is getting better even if the flow isn't cooperating yet.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Unicorn Blood: grind 37.5 is confirmed — do not adjust. Channeling is puck prep only. Next shot: restructure WDT technique — star pattern, three concentric rings outer-to-center, needle nearly horizontal. Do not go coarser.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-edge coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all produced restricted uneven flow — confirmed across 6+ shots that puck prep is the issue, not grind. Grind 37.5 produced balance 3 with quick-resolving acidity — best taste result so far. Do not go coarser. WDT technique must change: star pattern, three concentric rings outer-to-center, needle nearly horizontal.\",\n    \"last_recommendation\": \"Unicorn Blood: hold grind at 37.5. Restructure WDT — star pattern, three concentric rings outer-to-center, needle nearly horizontal. Do not adjust grind.\",\n    \"last_analysis_date\": \"2026-06-19T19:47:00.000Z\",\n    \"last_analyzed_shot_id\": 87,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 37.5,\n        \"shots_pulled\": 8,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Grind 37.5 is the target — balance 3, quick-resolving acidity, best taste on bag. Restricted/uneven flow confirmed as puck prep only across 34–37.5. Change WDT pattern, not grind.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance ",
      "numbers": null,
      "recommendationAction": null,
      "recommendationReason": null,
      "beanContext": null,
      "progressNote": null,
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 71 on Unicorn Blood at grind 37.5: 40s, 36.3g yield, ratio 2.07 — Slow/Normal, balance 3 (slightly sour). The taste resolves quickly, which is a good sign. But this is now the fourth consecutive very slow shot (39–60s) at grind settings from 34–37.5, all with restricted, uneven flow. The grind is not the problem.\",\n  \"numbers\": \"Slow at 40s and Normal ratio at 2.07 are both within functional range — the shot is technically drinkable and balance 3 with quick-resolving acidity is fine on a washed medium-dark. What's notable is that going from 34 to 37.5 over eight shots has produced almost no consistent improvement in time or flow pattern. The average shot time on this bag is 46s, which is well above the Slow threshold. This is a persistent puck prep signature, not a grind problem.\",\n  \"recommendation\": {\n    \"action\": \"Hold grind at 37.5 and completely restructure your WDT approach. Instead of more time, change the technique: use a star pattern starting from the outer edge, work in three concentric rings toward the center, keeping the needle nearly horizontal and moving slowly. The goal is lateral distribution, not just loosening clumps. Do not go coarser.\",\n    \"reason\": \"You've now logged restricted, late-starting, uneven flow across grind settings 34, 34.5, 35, 36, 36, and 37.5. That spread rules out grind as the cause — a 3.5-click range would produce dramatically different results if grind were the issue. Your notes consistently describe flow that starts restricted and unevens across spouts, which is a puck prep distribution problem. More WDT time alone hasn't fixed it — the pattern of coverage needs to change. This is the same lesson from Ándale bag 2: channeling resolved not from more time, but from deliberate directional technique.\"\n  },\n  \"bean_context\": \"Unicorn Blood is a medium-dark washed blend at 25 days post-roast — squarely in peak freshness. Dark chocolate and caramel notes fit what you're tasting: the quick-resolving brightness is likely a washed-process characteristic, not an extraction fault. The bean itself isn't fighting you. The 40s shot with balance 3 and fast-fading acidity is the cleanest result on this bag so far. That tells you grind 37.5 is in the right neighborhood — stop moving it.\",\n  \"progress_note\": \"Your frustration is understandable, but the quick-resolving acidity in this shot is a real improvement over the lingering bitterness at 36 yesterday. The taste is getting better even if the flow isn't cooperating yet.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Unicorn Blood: grind 37.5 is confirmed — do not adjust. Channeling is puck prep only. Next shot: restructure WDT technique — star pattern, three concentric rings outer-to-center, needle nearly horizontal. Do not go coarser.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-edge coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all produced restricted uneven flow — confirmed across 6+ shots that puck prep is the issue, not grind. Grind 37.5 produced balance 3 with quick-resolving acidity — best taste result so far. Do not go coarser. WDT technique must change: star pattern, three concentric rings outer-to-center, needle nearly horizontal.\",\n    \"last_recommendation\": \"Unicorn Blood: hold grind at 37.5. Restructure WDT — star pattern, three concentric rings outer-to-center, needle nearly horizontal. Do not adjust grind.\",\n    \"last_analysis_date\": \"2026-06-19T19:47:00.000Z\",\n    \"last_analyzed_shot_id\": 87,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 37.5,\n        \"shots_pulled\": 8,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Grind 37.5 is the target — balance 3, quick-resolving acidity, best taste on bag. Restricted/uneven flow confirmed as puck prep only across 34–37.5. Change WDT pattern, not grind.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance ",
      "createdAt": "2026-06-19 20:07:10"
    },
    {
      "id": 41,
      "shotId": 87,
      "analysisMode": "recent",
      "summary": "Shot 71 at grind 37.5: 40s, 2.07 ratio, balance 3 — technically in range, but Diego's frustration is justified. Flow started bilateral then right spout dropped out around 15s, leaving uneven flow the rest of the shot. Taste is bright but resolves quickly, which is a positive signal beneath the prep chaos.",
      "numbers": "40s Slow, ratio Normal — both within acceptable range. Balance 3 (Slightly Sour) matches the bright-but-resolving taste note. Nothing in the numbers themselves is alarming. The problem is the flow pattern: bilateral start dropping to single-spout restriction mid-shot is a textbook partial channel — water finding a path of least resistance through the puck after initial preinfusion. This is a puck prep signature, not a grind signature.",
      "recommendationAction": "Hold grind at 37.5. Stop WDT after 45 seconds maximum — longer is not better and may be disrupting the puck surface.",
      "recommendationReason": "You've now pulled shots at 34, 34.5, 35, 36, and 37.5 — all slow, all showing the same mid-shot dropout pattern. Going coarser made 35 worse (56s). Going finer choked the bean for five straight shots. The grind is not the variable. Every shot description shows flow starting on both spouts then losing one mid-shot — that's a channel opening after preinfusion. Something in the prep is creating a weak spot. A few minutes of WDT sounds thorough but can actually over-aerate or create surface inconsistency. Cap it at 45s, focus coverage on the edges and center equally, and tamp with slow steady pressure. Taste resolving quickly is the bean working — extraction is happening. Prep is the last wall.",
      "beanContext": "Unicorn Blood is a medium-dark washed blend at 25 days off roast — right in peak freshness. Flavor notes of dark chocolate, caramel, and berry are consistent with the 'balanced with brightness' taste you're getting when the shot works. The quick-resolving acidity is likely the berry character, not an extraction flaw — this matches what you've found before on similar profiles. The bean itself is cooperating. The persistent slow times and uneven flow across all grind settings from 34–37.5 point firmly at puck prep as the bottleneck.",
      "progressNote": "Your taste calibration is getting sharper — you correctly identified quick-resolving acidity as different from lingering sourness. That distinction matters and you're applying it accurately under frustration.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 71 at grind 37.5: 40s, 2.07 ratio, balance 3 — technically in range, but Diego's frustration is justified. Flow started bilateral then right spout dropped out around 15s, leaving uneven flow the rest of the shot. Taste is bright but resolves quickly, which is a positive signal beneath the prep chaos.\",\n  \"numbers\": \"40s Slow, ratio Normal — both within acceptable range. Balance 3 (Slightly Sour) matches the bright-but-resolving taste note. Nothing in the numbers themselves is alarming. The problem is the flow pattern: bilateral start dropping to single-spout restriction mid-shot is a textbook partial channel — water finding a path of least resistance through the puck after initial preinfusion. This is a puck prep signature, not a grind signature.\",\n  \"recommendation\": {\n    \"action\": \"Hold grind at 37.5. Stop WDT after 45 seconds maximum — longer is not better and may be disrupting the puck surface.\",\n    \"reason\": \"You've now pulled shots at 34, 34.5, 35, 36, and 37.5 — all slow, all showing the same mid-shot dropout pattern. Going coarser made 35 worse (56s). Going finer choked the bean for five straight shots. The grind is not the variable. Every shot description shows flow starting on both spouts then losing one mid-shot — that's a channel opening after preinfusion. Something in the prep is creating a weak spot. A few minutes of WDT sounds thorough but can actually over-aerate or create surface inconsistency. Cap it at 45s, focus coverage on the edges and center equally, and tamp with slow steady pressure. Taste resolving quickly is the bean working — extraction is happening. Prep is the last wall.\"\n  },\n  \"bean_context\": \"Unicorn Blood is a medium-dark washed blend at 25 days off roast — right in peak freshness. Flavor notes of dark chocolate, caramel, and berry are consistent with the 'balanced with brightness' taste you're getting when the shot works. The quick-resolving acidity is likely the berry character, not an extraction flaw — this matches what you've found before on similar profiles. The bean itself is cooperating. The persistent slow times and uneven flow across all grind settings from 34–37.5 point firmly at puck prep as the bottleneck.\",\n  \"progress_note\": \"Your taste calibration is getting sharper — you correctly identified quick-resolving acidity as different from lingering sourness. That distinction matters and you're applying it accurately under frustration.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Dark Matter Unicorn Blood — grind 37.5 holding, puck prep is the sole variable. Cap WDT at 45s. Bilateral start then single-spout dropout is a mid-shot channel from prep inconsistency, not grind. Do not adjust grind.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-edge coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind range 34–37.5 all run slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern across 8 shots. Going coarser at 35 made it worse. Grind is not the variable. Bilateral start then right-spout dropout is the signature pattern. Cap WDT at 45s — longer WDT may be disrupting puck surface. Quick-resolving acidity is likely berry character, not extraction fault.\",\n    \"last_recommendation\": \"Dark Matter Unicorn Blood: hold grind 37.5, cap WDT at 45s, focus on even edge-to-center coverage. Puck prep is the only variable.\",\n    \"last_analysis_date\": \"2026-06-19T19:47:00.000Z\",\n    \"last_analyzed_shot_id\": 87,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 37.5,\n        \"shots_pulled\": 8,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Grind 34–37.5 all slow with mid-shot single-spout dropout — partial channel signature. Puck prep is the variable. Cap WDT at 45s.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-06-19 20:16:35"
    },
    {
      "id": 42,
      "shotId": 87,
      "analysisMode": "recent",
      "summary": "{\n  \"summary\": \"Shot 71 on Unicorn Blood at grind 37.5 — 40 seconds, 2.07 ratio, balance 3 (slightly sour), 2 stars. Flow started bilaterally then dropped out on the right spout at 15 seconds, running uneven for the rest of the shot. Acidity resolved quickly, which is a real positive signal buried in a frustrating pull.\",\n  \"numbers\": \"Time is Slow at 40s, ratio is Normal at 2.07 — technically within acceptable ranges, but the flow notes tell the real story. Right spout dropout mid-shot is a channeling signature: the puck sealed unevenly and water found the path of least resistance on the left. This isn't a grind problem — a grind issue would affect total time uniformly, not cause asymmetric dropout mid-pull. The taste result (balance 3, quick-resolving acidity) actually confirms extraction isn't the core issue. The bean is extracting reasonably; the puck is misbehaving.\",\n  \"recommendation\": {\n    \"action\": \"Hold grind at 37.5 and focus the next shot entirely on puck prep — specifically, slow your WDT to a deliberate 60 seconds with explicit attention to the right side of the basket. After WDT, watch the puck surface for visible low spots before tamping and reposition if uneven.\",\n    \"reason\": \"Right spout dropout at 15 seconds is asymmetric channeling caused by uneven puck density — not grind. You've moved grind coarser four times on this bean and the flow problems have followed you every step. The taste actually improved (balance 3, quick-resolving acid) at a setting that should theoretically be too coarse for a medium-dark washed blend. Grind is not the variable. Right-side puck prep is. One more grind change would take you further from the answer, not closer.\"\n  },\n  \"bean_context\": \"Unicorn Blood is a medium-dark washed blend — it should flow more readily than a light roast and dial in at a middle-of-the-road grind. The fact that it's running slow and uneven across settings from 34–37.5 while tasting acceptably when it does extract is a consistent puck prep signature, not a bean anomaly. At 25 days post-roast it's squarely in peak freshness — no freshness factor to explain the difficulty. The quick-resolving acidity at balance 3 is actually consistent with the berry notes in the profile and doesn't flag as an extraction fault.\",\n  \"progress_note\": \"Quick-resolving acidity on this shot versus lingering issues on earlier pulls is a real improvement — the extraction quality is moving in the right direction even as the flow problems persist. That tells you the grind range is close; puck prep is the remaining gap to close.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Dark Matter Unicorn Blood — grind 37.5 is producing acceptable taste but asymmetric channeling (right spout dropout at 15s) persists. Grind is not the variable. Next shot: hold 37.5, slow WDT to 60s with explicit right-side coverage, inspect puck surface before tamping.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-edge coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 30 choked/slow with restricted single-spout flow and lingering acidity. Grind 34 ran 40s Slow, balance 4, chocolate — best taste result. Grind 35 ran 56s Very Slow — going coarser made it worse, confirming puck prep is the issue. Grind 36 ran 48s with full-shot restricted bilateral flow, balance 5 slight bitter. Grind 37.5 ran 40s, balance 3, quick-resolving acidity — taste improving but right spout dropout at 15s confirms asymmetric channeling persists. Grind is not the variable on this bean — puck prep is. Hold 37.5, fix right-side WDT coverage.\",\n    \"last_recommendation\": \"Dark Matter Unicorn Blood: hold grind at 37.5. Slow WDT to 60s with deliberate right-side coverage. Inspect puck surface before tamping. Do not adjust grind.\",\n    \"last_analysis_date\": \"2026-06-19T19:47:00.000Z\",\n    \"last_analyzed_shot_id\": 87,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 37.5,\n        \"shots_pulled\": 8,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Grind 37.5: 40s, balance 3, quick acidity — taste improving. Right spout dropout at 15s = asymmetric channeling, not grind. Hold 37.5, fix right-side WDT coverage.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        ",
      "numbers": null,
      "recommendationAction": null,
      "recommendationReason": null,
      "beanContext": null,
      "progressNote": null,
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 71 on Unicorn Blood at grind 37.5 — 40 seconds, 2.07 ratio, balance 3 (slightly sour), 2 stars. Flow started bilaterally then dropped out on the right spout at 15 seconds, running uneven for the rest of the shot. Acidity resolved quickly, which is a real positive signal buried in a frustrating pull.\",\n  \"numbers\": \"Time is Slow at 40s, ratio is Normal at 2.07 — technically within acceptable ranges, but the flow notes tell the real story. Right spout dropout mid-shot is a channeling signature: the puck sealed unevenly and water found the path of least resistance on the left. This isn't a grind problem — a grind issue would affect total time uniformly, not cause asymmetric dropout mid-pull. The taste result (balance 3, quick-resolving acidity) actually confirms extraction isn't the core issue. The bean is extracting reasonably; the puck is misbehaving.\",\n  \"recommendation\": {\n    \"action\": \"Hold grind at 37.5 and focus the next shot entirely on puck prep — specifically, slow your WDT to a deliberate 60 seconds with explicit attention to the right side of the basket. After WDT, watch the puck surface for visible low spots before tamping and reposition if uneven.\",\n    \"reason\": \"Right spout dropout at 15 seconds is asymmetric channeling caused by uneven puck density — not grind. You've moved grind coarser four times on this bean and the flow problems have followed you every step. The taste actually improved (balance 3, quick-resolving acid) at a setting that should theoretically be too coarse for a medium-dark washed blend. Grind is not the variable. Right-side puck prep is. One more grind change would take you further from the answer, not closer.\"\n  },\n  \"bean_context\": \"Unicorn Blood is a medium-dark washed blend — it should flow more readily than a light roast and dial in at a middle-of-the-road grind. The fact that it's running slow and uneven across settings from 34–37.5 while tasting acceptably when it does extract is a consistent puck prep signature, not a bean anomaly. At 25 days post-roast it's squarely in peak freshness — no freshness factor to explain the difficulty. The quick-resolving acidity at balance 3 is actually consistent with the berry notes in the profile and doesn't flag as an extraction fault.\",\n  \"progress_note\": \"Quick-resolving acidity on this shot versus lingering issues on earlier pulls is a real improvement — the extraction quality is moving in the right direction even as the flow problems persist. That tells you the grind range is close; puck prep is the remaining gap to close.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Dark Matter Unicorn Blood — grind 37.5 is producing acceptable taste but asymmetric channeling (right spout dropout at 15s) persists. Grind is not the variable. Next shot: hold 37.5, slow WDT to 60s with explicit right-side coverage, inspect puck surface before tamping.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-edge coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 30 choked/slow with restricted single-spout flow and lingering acidity. Grind 34 ran 40s Slow, balance 4, chocolate — best taste result. Grind 35 ran 56s Very Slow — going coarser made it worse, confirming puck prep is the issue. Grind 36 ran 48s with full-shot restricted bilateral flow, balance 5 slight bitter. Grind 37.5 ran 40s, balance 3, quick-resolving acidity — taste improving but right spout dropout at 15s confirms asymmetric channeling persists. Grind is not the variable on this bean — puck prep is. Hold 37.5, fix right-side WDT coverage.\",\n    \"last_recommendation\": \"Dark Matter Unicorn Blood: hold grind at 37.5. Slow WDT to 60s with deliberate right-side coverage. Inspect puck surface before tamping. Do not adjust grind.\",\n    \"last_analysis_date\": \"2026-06-19T19:47:00.000Z\",\n    \"last_analyzed_shot_id\": 87,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 37.5,\n        \"shots_pulled\": 8,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Grind 37.5: 40s, balance 3, quick acidity — taste improving. Right spout dropout at 15s = asymmetric channeling, not grind. Hold 37.5, fix right-side WDT coverage.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        ",
      "createdAt": "2026-06-19 20:17:30"
    },
    {
      "id": 43,
      "shotId": 87,
      "analysisMode": "recent",
      "summary": "Shot 9 on Unicorn Blood: grind 37.5, 17.5g adjusted dose, 36.3g yield, 40s, Slow, balance 3. The bilateral start with right-spout dropout mid-shot is the same partial channel signature you've seen across this entire bag — but your WDT note ('a few minutes') is a red flag that may explain why prep isn't landing consistently.",
      "numbers": "Time at 40s is Slow but within a manageable range given the density of this medium-dark washed blend. Ratio at 2.07 is Normal. Balance 3 (Slightly Sour) with quick-resolving acidity is consistent with berry character on this bean — not an extraction fault. The flow signature (bilateral start → right dropout → uneven through the shot) matches the partial channel pattern seen across all 8 shots, which points squarely at puck prep, not grind. The 2-star quality rating is frustration talking — the taste profile (Slightly Sour, quick resolve) is actually reasonable for this bean.",
      "recommendationAction": "Hard cap WDT at 30 seconds max, not 45. No 'few minutes.' Count it out loud.",
      "recommendationReason": "'WDT for a few minutes' is over-agitation — it breaks down puck structure and creates surface irregularities that cause exactly this kind of mid-shot channel. The instruction was 45s max, but you went well past that. The right-spout dropout is puck-surface disruption from over-stirring, not under-stirring. Pull the next shot with 25–30 seconds of WDT, deliberate edge-to-center pattern, and stop. Keep grind at 37.5.",
      "beanContext": "Day 25 off roast — still in excellent window for a medium-dark washed blend. Berry-forward brightness with quick acidity resolution is on-profile for the Honduras/Guatemala origin character. The slow times are not bean freshness — this blend runs dense and slow across the board. Grind is not the problem and hasn't been across 9 shots.",
      "progressNote": "Nine shots in and the channel pattern has been consistent every single time — that persistence, combined with today's over-WDT note, is actually diagnostic. You now have strong evidence that WDT duration is the mechanism. One clean 25–30s WDT shot will tell you definitively.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\"summary\":\"Shot 9 on Unicorn Blood: grind 37.5, 17.5g adjusted dose, 36.3g yield, 40s, Slow, balance 3. The bilateral start with right-spout dropout mid-shot is the same partial channel signature you've seen across this entire bag — but your WDT note ('a few minutes') is a red flag that may explain why prep isn't landing consistently.\",\"numbers\":\"Time at 40s is Slow but within a manageable range given the density of this medium-dark washed blend. Ratio at 2.07 is Normal. Balance 3 (Slightly Sour) with quick-resolving acidity is consistent with berry character on this bean — not an extraction fault. The flow signature (bilateral start → right dropout → uneven through the shot) matches the partial channel pattern seen across all 8 shots, which points squarely at puck prep, not grind. The 2-star quality rating is frustration talking — the taste profile (Slightly Sour, quick resolve) is actually reasonable for this bean.\",\"recommendation\":{\"action\":\"Hard cap WDT at 30 seconds max, not 45. No 'few minutes.' Count it out loud.\",\"reason\":\"'WDT for a few minutes' is over-agitation — it breaks down puck structure and creates surface irregularities that cause exactly this kind of mid-shot channel. The instruction was 45s max, but you went well past that. The right-spout dropout is puck-surface disruption from over-stirring, not under-stirring. Pull the next shot with 25–30 seconds of WDT, deliberate edge-to-center pattern, and stop. Keep grind at 37.5.\"},\"bean_context\":\"Day 25 off roast — still in excellent window for a medium-dark washed blend. Berry-forward brightness with quick acidity resolution is on-profile for the Honduras/Guatemala origin character. The slow times are not bean freshness — this blend runs dense and slow across the board. Grind is not the problem and hasn't been across 9 shots.\",\"progress_note\":\"Nine shots in and the channel pattern has been consistent every single time — that persistence, combined with today's over-WDT note, is actually diagnostic. You now have strong evidence that WDT duration is the mechanism. One clean 25–30s WDT shot will tell you definitively.\",\"overall_verdict\":\"needs_work\",\"is_stable\":false,\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Dark Matter Unicorn Blood — grind 37.5 locked. WDT hard cap 30 seconds, count it out. Over-agitation confirmed as channel mechanism. Do not adjust grind.\",\"known_patterns\":\"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-edge coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind range 34–37.5 all run slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern across 9 shots. Over-agitation during WDT confirmed as likely channel mechanism on shot 9 — 'a few minutes' WDT broke down puck surface. Grind is not the variable. Hard cap WDT at 30 seconds — count it out. Quick-resolving acidity at balance 3 is berry character, not extraction fault.\",\"last_recommendation\":\"Dark Matter Unicorn Blood: hold grind 37.5, hard cap WDT at 30 seconds (count it out loud). Over-agitation is the confirmed mechanism for the bilateral-start/single-spout-dropout channel pattern.\",\"last_analysis_date\":\"2026-06-19T19:47:00.000Z\",\"last_analyzed_shot_id\":87,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":37.5,\"shots_pulled\":9,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Grind 34–37.5 all slow with mid-shot single-spout dropout. Over-agitation (2+ min WDT) confirmed channel mechanism. Hard cap 30s WDT. Grind locked at 37.5.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"}]}}",
      "createdAt": "2026-06-19 20:18:12"
    },
    {
      "id": 44,
      "shotId": 87,
      "analysisMode": "recent",
      "summary": "Shot 87 ran 40s at grind 37.5 — Slow, Normal ratio at 2.07. Balance 3 with quick-resolving acidity, which matches this bean's berry character. The flow pattern — bilateral start, right spout dropout at 15s, uneven through the finish — is the same channel signature you've been chasing. But the notes reveal the culprit directly: 'WDT for a few minutes.' That's the over-agitation mechanism confirmed again, and it overrode the grind lock you had in place.",
      "numbers": "Time and ratio are both within acceptable range — Slow but not critically so, Normal ratio. Balance 3 with quick-resolving acidity is consistent with what we've established as bean character on this washed Honduras/Guatemala blend, not an extraction fault. The 2-star quality rating is fair given the frustrating flow, but the taste outcome is actually reasonable. The contradiction here is that the grind was locked correctly at 37.5, yet the channel pattern returned — which points squarely at preparation, not grind.",
      "recommendationAction": "Hold grind 37.5. Hard cap WDT at 30 seconds — count it out loud, every single shot. Do not go longer under any circumstances.",
      "recommendationReason": "You noted 'WDT for a few minutes' on this shot. That is the over-agitation mechanism firing again — it breaks down the puck surface and creates the exact bilateral-start/right-spout-dropout pattern you saw. The grind is not the problem. The 30-second WDT cap is the protocol, and it was violated here. This is a discipline issue, not a dialing issue.",
      "beanContext": "Unicorn Blood is 25 days off roast, sitting in its peak window for a medium-dark washed blend. Freshness is not a factor. The quick-resolving acidity at balance 3 continues to read as berry character from the Honduras Copan component — not under-extraction. The bean is cooperating when prep is clean. Nine shots into this bag and the taste profile is actually converging — the puck prep discipline is the remaining variable.",
      "progressNote": "The frustration is completely understandable, but the pattern is actually clear: every time WDT runs long, the channel returns. Every time it's controlled, the shot behaves. The grind is right. The 30-second cap is the entire fix.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\"summary\":\"Shot 87 ran 40s at grind 37.5 — Slow, Normal ratio at 2.07. Balance 3 with quick-resolving acidity, which matches this bean's berry character. The flow pattern — bilateral start, right spout dropout at 15s, uneven through the finish — is the same channel signature you've been chasing. But the notes reveal the culprit directly: 'WDT for a few minutes.' That's the over-agitation mechanism confirmed again, and it overrode the grind lock you had in place.\", \"numbers\": \"Time and ratio are both within acceptable range — Slow but not critically so, Normal ratio. Balance 3 with quick-resolving acidity is consistent with what we've established as bean character on this washed Honduras/Guatemala blend, not an extraction fault. The 2-star quality rating is fair given the frustrating flow, but the taste outcome is actually reasonable. The contradiction here is that the grind was locked correctly at 37.5, yet the channel pattern returned — which points squarely at preparation, not grind.\", \"recommendation\": {\"action\": \"Hold grind 37.5. Hard cap WDT at 30 seconds — count it out loud, every single shot. Do not go longer under any circumstances.\", \"reason\": \"You noted 'WDT for a few minutes' on this shot. That is the over-agitation mechanism firing again — it breaks down the puck surface and creates the exact bilateral-start/right-spout-dropout pattern you saw. The grind is not the problem. The 30-second WDT cap is the protocol, and it was violated here. This is a discipline issue, not a dialing issue.\"}, \"bean_context\": \"Unicorn Blood is 25 days off roast, sitting in its peak window for a medium-dark washed blend. Freshness is not a factor. The quick-resolving acidity at balance 3 continues to read as berry character from the Honduras Copan component — not under-extraction. The bean is cooperating when prep is clean. Nine shots into this bag and the taste profile is actually converging — the puck prep discipline is the remaining variable.\", \"progress_note\": \"The frustration is completely understandable, but the pattern is actually clear: every time WDT runs long, the channel returns. Every time it's controlled, the shot behaves. The grind is right. The 30-second cap is the entire fix.\", \"overall_verdict\": \"needs_work\", \"is_stable\": false, \"updated_coaching_state\": {\"experience_level\": \"beginner\", \"current_focus\": \"Dark Matter Unicorn Blood — grind 37.5 locked. WDT hard cap 30 seconds, count it out loud. Over-agitation is the confirmed and recurring channel mechanism. Do not adjust grind. Do not extend WDT under any circumstances.\", \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind range 34–37.5 all run slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern across 10 shots. Over-agitation during WDT confirmed as recurring channel mechanism — 'a few minutes' WDT broke down puck surface on multiple shots including shot 87. Grind is not the variable. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity at balance 3 is berry character, not extraction fault.\", \"last_recommendation\": \"Dark Matter Unicorn Blood: hold grind 37.5, hard cap WDT at 30 seconds (count it out loud). Over-agitation is the confirmed and recurring channel mechanism. Do not extend WDT under any circumstances.\", \"last_analysis_date\": \"2026-06-19T19:47:00.000Z\", \"last_analyzed_shot_id\": 87, \"bean_contexts\": [{\"bag_id\": 4, \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\", \"status\": \"dialed_in\", \"dialed_in_grind\": 42, \"dialed_in_yield_g\": 38, \"current_grind\": 42, \"shots_pulled\": 10, \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\", \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"}, {\"bag_id\": 2, \"name\": \"Luckycat — Maomi Blend\", \"status\": \"dialing_in\", \"dialed_in_grind\": null, \"dialed_in_yield_g\": null, \"current_grind\": 32.5, \"shots_pulled\": 7, \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\", \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"}, {\"bag_id\": 3, \"name\": \"Metric — Decaf Huila Pink Bourbon\", \"status\": \"dialing_in\", \"dialed_in_grind\": 28, \"dialed_in_yield_g\": 37, \"current_grind\": 28, \"shots_pulled\": 9, \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\", \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"}, {\"bag_id\": 5, \"name\": \"Metric — Ándale Market (bag 2)\", \"status\": \"dialed_in\", \"dialed_in_grind\": 28, \"dialed_in_yield_g\": 38.5, \"current_grind\": 28, \"shots_pulled\": 9, \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\", \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"}, {\"bag_id\": 6, \"name\": \"Coffee Lab & Roasters — Huila Decaf\", \"status\": \"dialing_in\", \"dialed_in_grind\": null, \"dialed_in_yield_g\": null, \"current_grind\": 38, \"shots_pulled\": 6, \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\", \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"}, {\"bag_id\": 7, \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\", \"status\": \"dialing_in\", \"dialed_in_grind\": null, \"dialed_in_yield_g\": null, \"current_grind\": 37.5, \"shots_pulled\": 10, \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\", \"notes\": \"Grind 34–37.5 all slow with mid-shot single-spout dropout. Over-agitation (2+ min WDT) confirmed recurring channel mechanism. Hard cap 30s WDT — count it out loud. Grind locked at 37.5.\"}, {\"bag_id\": 1, \"name\": \"Metric — Ándale Market\", \"status\": \"finished\", \"dialed_in_grind\": null, \"dialed_in_yield_g\": null, \"current_grind\": null, \"shots_pulled\": 12, \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\", \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"}]}}",
      "createdAt": "2026-06-19 20:25:22"
    },
    {
      "id": 45,
      "shotId": 88,
      "analysisMode": "recent",
      "summary": "{\n  \"summary\": \"Shot 63 at grind 37.5 ran the full 60 seconds (machine auto-stop) and yielded only 27.5g — a very slow, short pull. You held WDT to 30 seconds as instructed, which is exactly right. The shot still didn't flow, and that's the real diagnostic here: this isn't a technique problem anymore, it's a grind problem.\",\n  \"numbers\": \"60 seconds is Very Slow and well outside the normal range. A 1.54 brew ratio is Short — just above Ristretto threshold. Flow didn't even start until 20 seconds in, which on the Bambino (with its ~3-4s preinfusion ramp) means the puck was severely resisting water. Balance 3 with quick-resolving acidity matches the known berry character on this bean. The taste is consistent with the profile — but the puck is simply not letting water through at this grind.\",\n  \"recommendation\": {\n    \"action\": \"Go 2 full clicks coarser — grind 39.5. Update current_focus to grind 39.5.\",\n    \"reason\": \"You've now held grind 37.5 and capped WDT at 30 seconds, and the shot still choked to 60s with a 20-second flow delay. WDT is no longer the variable — you did it correctly this time. The pattern across this bean (grind 34–37.5 all running 40–60s) tells you the entire range is too fine. The Brazil Cerrado showed this same behavior: the correct grind ended up much coarser than expected. This bean needs room to breathe. Go 2 clicks coarser and see if flow normalizes.\"\n  },\n  \"bean_context\": \"At 26 days post-roast, this medium-dark washed blend is solidly in its peak window — freshness isn't the issue. The quick-resolving acidity and balance 3 are consistent with the berry notes in the profile. The problem is purely mechanical: every shot on this bag from 34 to 37.5 has choked or run very slow. This bean extracts more like a light roast than its medium-dark label suggests — possibly due to blend composition or roast style. Treat it like Coffee Lab Huila Decaf: assume the working range is much coarser than intuition says.\",\n  \"progress_note\": \"Critical step forward: you held WDT to 30 seconds and didn't chase the grind finer. That's exactly the right discipline. The choke at 37.5 with correct technique now gives you clean data — grind is definitively too fine. This is progress, not a failure.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Dark Matter Unicorn Blood — grind moved to 39.5. WDT hard cap 30 seconds, count it out loud. Over-agitation is the confirmed and recurring channel mechanism. Do not extend WDT under any circumstances.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind range 34–37.5 all run slow to very slow (40–60s) with restricted/delayed flow and mid-shot single-spout dropout — entire lower range confirmed too fine. Over-agitation during WDT confirmed as recurring channel mechanism — hard cap 30s WDT, count it out loud. With WDT correctly capped at 30s, shot still choked at 37.5 — grind is definitively the variable now. Moved to 39.5. Quick-resolving acidity at balance 3 is berry character, not extraction fault.\",\n    \"last_recommendation\": \"Dark Matter Unicorn Blood: go 2 clicks coarser to grind 39.5. WDT hard cap 30 seconds — count it out loud. Over-agitation is the confirmed recurring channel mechanism.\",\n    \"last_analysis_date\": \"2026-06-20T13:26:00.000Z\",\n    \"last_analyzed_shot_id\": 88,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 39.5,\n        \"shots_pulled\": 10,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Grind 34–37.5 all choked or ran very slow. WDT correctly capped at 30s — grind confirmed too fine. Moved to 39.5. Quick-resolving acidity is berry character.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind",
      "numbers": null,
      "recommendationAction": null,
      "recommendationReason": null,
      "beanContext": null,
      "progressNote": null,
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 63 at grind 37.5 ran the full 60 seconds (machine auto-stop) and yielded only 27.5g — a very slow, short pull. You held WDT to 30 seconds as instructed, which is exactly right. The shot still didn't flow, and that's the real diagnostic here: this isn't a technique problem anymore, it's a grind problem.\",\n  \"numbers\": \"60 seconds is Very Slow and well outside the normal range. A 1.54 brew ratio is Short — just above Ristretto threshold. Flow didn't even start until 20 seconds in, which on the Bambino (with its ~3-4s preinfusion ramp) means the puck was severely resisting water. Balance 3 with quick-resolving acidity matches the known berry character on this bean. The taste is consistent with the profile — but the puck is simply not letting water through at this grind.\",\n  \"recommendation\": {\n    \"action\": \"Go 2 full clicks coarser — grind 39.5. Update current_focus to grind 39.5.\",\n    \"reason\": \"You've now held grind 37.5 and capped WDT at 30 seconds, and the shot still choked to 60s with a 20-second flow delay. WDT is no longer the variable — you did it correctly this time. The pattern across this bean (grind 34–37.5 all running 40–60s) tells you the entire range is too fine. The Brazil Cerrado showed this same behavior: the correct grind ended up much coarser than expected. This bean needs room to breathe. Go 2 clicks coarser and see if flow normalizes.\"\n  },\n  \"bean_context\": \"At 26 days post-roast, this medium-dark washed blend is solidly in its peak window — freshness isn't the issue. The quick-resolving acidity and balance 3 are consistent with the berry notes in the profile. The problem is purely mechanical: every shot on this bag from 34 to 37.5 has choked or run very slow. This bean extracts more like a light roast than its medium-dark label suggests — possibly due to blend composition or roast style. Treat it like Coffee Lab Huila Decaf: assume the working range is much coarser than intuition says.\",\n  \"progress_note\": \"Critical step forward: you held WDT to 30 seconds and didn't chase the grind finer. That's exactly the right discipline. The choke at 37.5 with correct technique now gives you clean data — grind is definitively too fine. This is progress, not a failure.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Dark Matter Unicorn Blood — grind moved to 39.5. WDT hard cap 30 seconds, count it out loud. Over-agitation is the confirmed and recurring channel mechanism. Do not extend WDT under any circumstances.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind range 34–37.5 all run slow to very slow (40–60s) with restricted/delayed flow and mid-shot single-spout dropout — entire lower range confirmed too fine. Over-agitation during WDT confirmed as recurring channel mechanism — hard cap 30s WDT, count it out loud. With WDT correctly capped at 30s, shot still choked at 37.5 — grind is definitively the variable now. Moved to 39.5. Quick-resolving acidity at balance 3 is berry character, not extraction fault.\",\n    \"last_recommendation\": \"Dark Matter Unicorn Blood: go 2 clicks coarser to grind 39.5. WDT hard cap 30 seconds — count it out loud. Over-agitation is the confirmed recurring channel mechanism.\",\n    \"last_analysis_date\": \"2026-06-20T13:26:00.000Z\",\n    \"last_analyzed_shot_id\": 88,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 39.5,\n        \"shots_pulled\": 10,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Grind 34–37.5 all choked or ran very slow. WDT correctly capped at 30s — grind confirmed too fine. Moved to 39.5. Quick-resolving acidity is berry character.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind",
      "createdAt": "2026-06-20 13:42:55"
    },
    {
      "id": 46,
      "shotId": 91,
      "analysisMode": "recent",
      "summary": "Shot 64 — your best on Unicorn Blood yet. Grind 40, 34 seconds, balance 4, 4 stars. The bright punch that resolves quickly is classic berry character on this bean, and the balanced finish confirms clean extraction. The bitter aftertaste is worth watching but didn't tank the shot quality.",
      "numbers": "Time and ratio both land Normal — 34s and 2.18 brew ratio. Balance 4 is centered. The taste narrative matches the numbers: bright upfront (berry/dark chocolate character), resolves cleanly, finishes balanced. The slight bitter aftertaste at a 4-star shot suggests you're at the sweet spot edge — not a problem, just a signal not to go coarser.",
      "recommendationAction": "Lock grind 40, dose 17.5g, target 36–40g yield.",
      "recommendationReason": "This is the first fully dialed-in shot on Unicorn Blood — Normal time, centered balance, 4 stars. The bitter aftertaste is mild and acceptable. Hold everything here. WDT hard cap at 30 seconds remains critical — that's what got you here.",
      "beanContext": "At 42 days since roast, Unicorn Blood is at the tail end of its freshness window for a medium-dark washed bean — 'Use soon' is accurate. Flavor is still expressing well (the berry brightness and clean resolution in your notes are exactly what this blend promises), but don't sit on this bag. The failed shot at grind 41.5 in your last context shot confirms going coarser from 40 would push you into under-extraction — hold the line.",
      "progressNote": "Ten shots of slow, channeling, and frustration on this bean — then a clean dial-in the moment grind and WDT discipline held together. The pattern is clear: over-agitation was the enemy the whole time, not the grind.",
      "overallVerdict": "great",
      "isStable": true,
      "rawResponse": "{\"summary\":\"Shot 64 — your best on Unicorn Blood yet. Grind 40, 34 seconds, balance 4, 4 stars. The bright punch that resolves quickly is classic berry character on this bean, and the balanced finish confirms clean extraction. The bitter aftertaste is worth watching but didn't tank the shot quality.\",\"numbers\":\"Time and ratio both land Normal — 34s and 2.18 brew ratio. Balance 4 is centered. The taste narrative matches the numbers: bright upfront (berry/dark chocolate character), resolves cleanly, finishes balanced. The slight bitter aftertaste at a 4-star shot suggests you're at the sweet spot edge — not a problem, just a signal not to go coarser.\",\"recommendation\":{\"action\":\"Lock grind 40, dose 17.5g, target 36–40g yield.\",\"reason\":\"This is the first fully dialed-in shot on Unicorn Blood — Normal time, centered balance, 4 stars. The bitter aftertaste is mild and acceptable. Hold everything here. WDT hard cap at 30 seconds remains critical — that's what got you here.\"},\"bean_context\":\"At 42 days since roast, Unicorn Blood is at the tail end of its freshness window for a medium-dark washed bean — 'Use soon' is accurate. Flavor is still expressing well (the berry brightness and clean resolution in your notes are exactly what this blend promises), but don't sit on this bag. The failed shot at grind 41.5 in your last context shot confirms going coarser from 40 would push you into under-extraction — hold the line.\",\"progress_note\":\"Ten shots of slow, channeling, and frustration on this bean — then a clean dial-in the moment grind and WDT discipline held together. The pattern is clear: over-agitation was the enemy the whole time, not the grind.\",\"overall_verdict\":\"great\",\"is_stable\":true,\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Dark Matter Unicorn Blood — grind 40 locked, dose 17.5g, target 36–40g yield. WDT hard cap 30 seconds, count it out loud. Over-agitation is the confirmed and recurring channel mechanism.\",\"known_patterns\":\"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17.5g dose + 38g yield = balance 4, 4 stars, confirmed dialed in at shot 64. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity at balance 3–4 is berry character, not extraction fault.\",\"last_recommendation\":\"Dark Matter Unicorn Blood: hold grind 40, dose 17.5g, target 36–40g yield. WDT hard cap 30 seconds — count it out loud. Over-agitation is the confirmed and recurring channel mechanism.\",\"last_analysis_date\":\"2026-07-06T14:14:00.000Z\",\"last_analyzed_shot_id\":91,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":11,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.5g dose, 36–40g yield, balance 4, 4 stars. Over-agitation confirmed channel mechanism — hard cap WDT 30s always.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"}]}}",
      "createdAt": "2026-07-06 14:30:46"
    },
    {
      "id": 47,
      "shotId": 91,
      "analysisMode": "recent",
      "summary": "Shot 64 is your best pull on Unicorn Blood — 34 seconds, 38.1g yield, balance 4, 4 stars. Even flow with a brief right-spout hiccup that self-corrected, and the flavor profile matches exactly what you've been chasing: bright punch up front that resolves cleanly into balance. This is the shot.",
      "numbers": "Time and ratio both land Normal. Balance 4 confirms the taste matches the numbers — no contradiction. The brief right-spout dropout that resolved mid-shot is consistent with minor puck variation, not a channeling pattern. The 7g drip lag is normal Bambino behavior.",
      "recommendationAction": "Lock grind 40, dose 17.5g, target 36–40g yield.",
      "recommendationReason": "Everything converged here. The WDT 30-second hard cap held, flow was clean, and the cup confirmed it. Don't chase the minor mid-shot spout variation — it resolved on its own and the taste was balanced.",
      "beanContext": "At 42 days post-roast the bag is marked 'Use soon,' which tracks — you're at the tail end of the peak window for a medium-dark washed bean. The bright-then-resolving flavor you're tasting is the berry character in the blend, not an extraction issue. Pull your remaining shots soon before the cup starts going flat.",
      "progressNote": "After 11 shots and a lot of frustrating slow pulls with uneven flow at grind 34–38, the WDT discipline at grind 40 is what finally unlocked this bean. The hard cap is doing its job.",
      "overallVerdict": "great",
      "isStable": true,
      "rawResponse": "{\n  \"summary\": \"Shot 64 is your best pull on Unicorn Blood — 34 seconds, 38.1g yield, balance 4, 4 stars. Even flow with a brief right-spout hiccup that self-corrected, and the flavor profile matches exactly what you've been chasing: bright punch up front that resolves cleanly into balance. This is the shot.\",\n  \"numbers\": \"Time and ratio both land Normal. Balance 4 confirms the taste matches the numbers — no contradiction. The brief right-spout dropout that resolved mid-shot is consistent with minor puck variation, not a channeling pattern. The 7g drip lag is normal Bambino behavior.\",\n  \"recommendation\": {\n    \"action\": \"Lock grind 40, dose 17.5g, target 36–40g yield.\",\n    \"reason\": \"Everything converged here. The WDT 30-second hard cap held, flow was clean, and the cup confirmed it. Don't chase the minor mid-shot spout variation — it resolved on its own and the taste was balanced.\"\n  },\n  \"bean_context\": \"At 42 days post-roast the bag is marked 'Use soon,' which tracks — you're at the tail end of the peak window for a medium-dark washed bean. The bright-then-resolving flavor you're tasting is the berry character in the blend, not an extraction issue. Pull your remaining shots soon before the cup starts going flat.\",\n  \"progress_note\": \"After 11 shots and a lot of frustrating slow pulls with uneven flow at grind 34–38, the WDT discipline at grind 40 is what finally unlocked this bean. The hard cap is doing its job.\",\n  \"overall_verdict\": \"great\",\n  \"is_stable\": true,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Dark Matter Unicorn Blood — grind 40 locked, dose 17.5g, target 36–40g yield. WDT hard cap 30 seconds, count it out loud. Over-agitation is the confirmed and recurring channel mechanism.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17.5g dose + 38g yield = balance 4, 4 stars, confirmed dialed in at shot 64. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity at balance 3–4 is berry character, not extraction fault.\",\n    \"last_recommendation\": \"Dark Matter Unicorn Blood: hold grind 40, dose 17.5g, target 36–40g yield. WDT hard cap 30 seconds — count it out loud. Over-agitation is the confirmed and recurring channel mechanism.\",\n    \"last_analysis_date\": \"2026-07-06T14:14:00.000Z\",\n    \"last_analyzed_shot_id\": 91,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 11,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.5g dose, 36–40g yield, balance 4, 4 stars. Over-agitation confirmed channel mechanism — hard cap WDT 30s always.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-07-06 16:28:46"
    },
    {
      "id": 48,
      "shotId": 91,
      "analysisMode": "recent",
      "summary": "Shot 64 is your best pull on Unicorn Blood — 34 seconds, 38.1g yield, balance 4, 4 stars. Flow had a brief right-spout dropout around 9–14 seconds but self-corrected and ran even the rest of the way. Taste confirms it: bright upfront hit that resolved cleanly into balance. This is the target.",
      "numbers": "Time and ratio both land squarely Normal. Balance 4 matches the clean finish you described — the quick-resolving brightness is the berry character on this bean, not an extraction fault. Notes and numbers are fully aligned here.",
      "recommendationAction": "Lock grind 40, dose 17.5g, target 36–40g yield.",
      "recommendationReason": "The brief right-spout dropout self-corrected within 5 seconds and didn't affect taste — that's a minor puck imperfection, not a problem to chase. Hold everything as-is and keep the WDT hard cap at 30 seconds.",
      "beanContext": "At 42 days post-roast the bag is past peak on a medium-dark washed bean, but this shot shows it's still pulling well. Freshness decline on this roast level is gradual — you likely have a few more good shots left, but expect the window to close soon. The dark chocolate, caramel, and berry notes are coming through exactly as described.",
      "progressNote": "This bean gave you five consecutive problem shots — slow, channeling, uneven flow — before grind 40 cracked it. The WDT discipline is what made the difference. That's a real skill being built.",
      "overallVerdict": "great",
      "isStable": true,
      "rawResponse": "{\n  \"summary\": \"Shot 64 is your best pull on Unicorn Blood — 34 seconds, 38.1g yield, balance 4, 4 stars. Flow had a brief right-spout dropout around 9–14 seconds but self-corrected and ran even the rest of the way. Taste confirms it: bright upfront hit that resolved cleanly into balance. This is the target.\",\n  \"numbers\": \"Time and ratio both land squarely Normal. Balance 4 matches the clean finish you described — the quick-resolving brightness is the berry character on this bean, not an extraction fault. Notes and numbers are fully aligned here.\",\n  \"recommendation\": {\n    \"action\": \"Lock grind 40, dose 17.5g, target 36–40g yield.\",\n    \"reason\": \"The brief right-spout dropout self-corrected within 5 seconds and didn't affect taste — that's a minor puck imperfection, not a problem to chase. Hold everything as-is and keep the WDT hard cap at 30 seconds.\"\n  },\n  \"bean_context\": \"At 42 days post-roast the bag is past peak on a medium-dark washed bean, but this shot shows it's still pulling well. Freshness decline on this roast level is gradual — you likely have a few more good shots left, but expect the window to close soon. The dark chocolate, caramel, and berry notes are coming through exactly as described.\",\n  \"progress_note\": \"This bean gave you five consecutive problem shots — slow, channeling, uneven flow — before grind 40 cracked it. The WDT discipline is what made the difference. That's a real skill being built.\",\n  \"overall_verdict\": \"great\",\n  \"is_stable\": true,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Dark Matter Unicorn Blood — grind 40 locked, dose 17.5g, target 36–40g yield. WDT hard cap 30 seconds, count it out loud. Over-agitation is the confirmed and recurring channel mechanism.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17.5g dose + 38g yield = balance 4, 4 stars, confirmed dialed in at shot 64. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity at balance 3–4 is berry character, not extraction fault. Brief self-correcting spout dropout (5s) at grind 40 is minor puck imperfection, not a grind problem.\",\n    \"last_recommendation\": \"Dark Matter Unicorn Blood: hold grind 40, dose 17.5g, target 36–40g yield. WDT hard cap 30 seconds — count it out loud. Over-agitation is the confirmed and recurring channel mechanism.\",\n    \"last_analysis_date\": \"2026-07-06T14:14:00.000Z\",\n    \"last_analyzed_shot_id\": 91,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 11,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.5g dose, 36–40g yield, balance 4, 4 stars. Over-agitation confirmed channel mechanism — hard cap WDT 30s always.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-07-06 17:07:12"
    },
    {
      "id": 49,
      "shotId": 93,
      "analysisMode": "recent",
      "summary": "Shot 66 — grind 40, 17.5g adjusted dose, 39g yield, 24 seconds, balance 4, 5 stars. Fast time but even bilateral flow throughout, chocolate notes, and a balanced finish. Your best shot on this bag.",
      "numbers": "At 24 seconds this lands in the Fast band — below the Normal floor of 25s — but the taste tells a different story entirely: balance 4, 5 stars, chocolate notes, clean finish. Fast time with even flow and no taste penalty is a common signature of a well-prepped puck on a medium-dark bean where resistance is naturally lower. The 8g lag is normal Bambino behavior — not channeling. Your own note flagging it as possible channeling is the one thing to set aside here: even bilateral flow throughout contradicts that read, and the taste confirms it.",
      "recommendationAction": "Lock grind 40, dose 17.5g, target 37–41g yield.",
      "recommendationReason": "This is your cleanest shot on Unicorn Blood — balanced, chocolate-forward, 5 stars. The fast time is a non-issue when flavor is this good. Hold everything exactly here.",
      "beanContext": "Dark chocolate from a medium-dark washed Honduras/Guatemala blend is textbook on-profile. At 43 days post-roast the bag is in 'use soon' territory but clearly still has life — this shot shows no staling signs. Finish the bag at these parameters.",
      "progressNote": "Shot 64 locked the recipe, and shot 66 just confirmed it with a 5-star pull. The WDT hard cap is doing its job — two clean shots in a row with no channeling drama is the pattern you've been building toward.",
      "overallVerdict": "great",
      "isStable": true,
      "rawResponse": "{\n  \"summary\": \"Shot 66 — grind 40, 17.5g adjusted dose, 39g yield, 24 seconds, balance 4, 5 stars. Fast time but even bilateral flow throughout, chocolate notes, and a balanced finish. Your best shot on this bag.\",\n  \"numbers\": \"At 24 seconds this lands in the Fast band — below the Normal floor of 25s — but the taste tells a different story entirely: balance 4, 5 stars, chocolate notes, clean finish. Fast time with even flow and no taste penalty is a common signature of a well-prepped puck on a medium-dark bean where resistance is naturally lower. The 8g lag is normal Bambino behavior — not channeling. Your own note flagging it as possible channeling is the one thing to set aside here: even bilateral flow throughout contradicts that read, and the taste confirms it.\",\n  \"recommendation\": {\n    \"action\": \"Lock grind 40, dose 17.5g, target 37–41g yield.\",\n    \"reason\": \"This is your cleanest shot on Unicorn Blood — balanced, chocolate-forward, 5 stars. The fast time is a non-issue when flavor is this good. Hold everything exactly here.\"\n  },\n  \"bean_context\": \"Dark chocolate from a medium-dark washed Honduras/Guatemala blend is textbook on-profile. At 43 days post-roast the bag is in 'use soon' territory but clearly still has life — this shot shows no staling signs. Finish the bag at these parameters.\",\n  \"progress_note\": \"Shot 64 locked the recipe, and shot 66 just confirmed it with a 5-star pull. The WDT hard cap is doing its job — two clean shots in a row with no channeling drama is the pattern you've been building toward.\",\n  \"overall_verdict\": \"great\",\n  \"is_stable\": true,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Dark Matter Unicorn Blood — grind 40 locked, dose 17.5g, target 37–41g yield. WDT hard cap 30 seconds, count it out loud. Over-agitation is the confirmed and recurring channel mechanism.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17.5g dose + 38–39g yield = balance 4, 4–5 stars, confirmed dialed in across shots 64 and 66. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity at balance 3–4 is berry character, not extraction fault. Even bilateral flow at 24s on a medium-dark bean is normal — do not read fast time as a problem when taste is clean. 8g lag is normal Bambino behavior.\",\n    \"last_recommendation\": \"Dark Matter Unicorn Blood: hold grind 40, dose 17.5g, target 37–41g yield. WDT hard cap 30 seconds — count it out loud.\",\n    \"last_analysis_date\": \"2026-07-07T15:12:00.000Z\",\n    \"last_analyzed_shot_id\": 93,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 40,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.5g dose, 37–41g yield, balance 4, 4–5 stars. Over-agitation confirmed channel mechanism — hard cap WDT 30s always.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-07-07 15:32:14"
    },
    {
      "id": 50,
      "shotId": 95,
      "analysisMode": "recent",
      "summary": "Shot 68 on a fresh bag of Unicorn Blood — grind 40, 17.7g dose, 35.9g yield, 30s Normal, balance 3 Slightly Sour. Flow was mostly even with a brief fast-drip episode on the left spout, and the shot finished bright but quick-resolving with a bit of aftertaste. Solid pull on the first shot of a new bag.",
      "numbers": "30s Normal, ratio 2.03 Normal — both squarely in range. Balance 3 (Slightly Sour) with quick resolution is consistent with what you've established on this bean: the berry character reads bright upfront but doesn't linger. The brief left-spout fast drip is worth noting — not alarming on a single shot, but worth watching on the next pull to see if it reappears. Grinder retention logged at 0g, so adjusted dose is the full 17.7g.",
      "recommendationAction": "Lock grind 40, dose 17.7g, target 34–38g yield.",
      "recommendationReason": "At 35.9g yield you're slightly below your confirmed sweet spot of 37–41g. Parameters and taste are otherwise solid. Pull a touch longer on the next shot to land closer to 38g and see if the balance nudges from 3 toward 4. WDT hard cap 30 seconds — count it out loud.",
      "beanContext": "Day 24 off roast, freshness status excellent — right in the heart of the peak window for a medium-dark washed bean. Flavor profile is behaving as expected: quick-resolving brightness is the berry character, not an extraction flag. One new bag, so treat this as your baseline re-confirmation shot before declaring the recipe transferred cleanly.",
      "progressNote": "First shot on a fresh bag and you landed in Normal/Normal with quick-resolving balance 3 — the dialed-in recipe held. The slight yield shortfall is the only variable to close.",
      "overallVerdict": "good",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 68 on a fresh bag of Unicorn Blood — grind 40, 17.7g dose, 35.9g yield, 30s Normal, balance 3 Slightly Sour. Flow was mostly even with a brief fast-drip episode on the left spout, and the shot finished bright but quick-resolving with a bit of aftertaste. Solid pull on the first shot of a new bag.\",\n  \"numbers\": \"30s Normal, ratio 2.03 Normal — both squarely in range. Balance 3 (Slightly Sour) with quick resolution is consistent with what you've established on this bean: the berry character reads bright upfront but doesn't linger. The brief left-spout fast drip is worth noting — not alarming on a single shot, but worth watching on the next pull to see if it reappears. Grinder retention logged at 0g, so adjusted dose is the full 17.7g.\",\n  \"recommendation\": {\n    \"action\": \"Lock grind 40, dose 17.7g, target 34–38g yield.\",\n    \"reason\": \"At 35.9g yield you're slightly below your confirmed sweet spot of 37–41g. Parameters and taste are otherwise solid. Pull a touch longer on the next shot to land closer to 38g and see if the balance nudges from 3 toward 4. WDT hard cap 30 seconds — count it out loud.\"\n  },\n  \"bean_context\": \"Day 24 off roast, freshness status excellent — right in the heart of the peak window for a medium-dark washed bean. Flavor profile is behaving as expected: quick-resolving brightness is the berry character, not an extraction flag. One new bag, so treat this as your baseline re-confirmation shot before declaring the recipe transferred cleanly.\",\n  \"progress_note\": \"First shot on a fresh bag and you landed in Normal/Normal with quick-resolving balance 3 — the dialed-in recipe held. The slight yield shortfall is the only variable to close.\",\n  \"overall_verdict\": \"good\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Dark Matter Unicorn Blood — grind 40 locked, dose 17.7g, target 34–38g yield. Nudge yield toward 38g next pull. WDT hard cap 30 seconds, count it out loud.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17.5–17.7g dose + 35–41g yield = balance 3–4, 3–5 stars, confirmed dialed in. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity at balance 3–4 is berry character, not extraction fault. Even bilateral flow at 24s on a medium-dark bean is normal — do not read fast time as a problem when taste is clean. 8g lag is normal Bambino behavior. Brief left-spout fast drip on first shot of new bag — not alarming, monitor next pull.\",\n    \"last_recommendation\": \"Dark Matter Unicorn Blood: hold grind 40, dose 17.7g, target 34–38g yield. Nudge yield toward 38g next shot. WDT hard cap 30 seconds — count it out loud.\",\n    \"last_analysis_date\": \"2026-07-09T14:12:00.000Z\",\n    \"last_analyzed_shot_id\": 95,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 40,\n        \"shots_pulled\": 1,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"New bag — first shot held recipe from prior bag (grind 40, 17.7g, 35.9g yield, balance 3, 3 stars). Target yield 37–41g. Hard cap WDT 30s always.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-07-09 14:27:38"
    },
    {
      "id": 51,
      "shotId": 95,
      "analysisMode": "recent",
      "summary": "Shot 68 — your first pull on the new Unicorn Blood bag. 30s Normal, 17.7g dose, 35.9g yield (ratio 2.03 Normal), balance 3 Slightly Sour, 3 stars. Clean enough to hold the recipe and nudge yield up next pull as planned.",
      "numbers": "Time and ratio are both squarely in Normal range, matching what the prior bag's dialed-in recipe produced. Balance 3 with quick-resolving brightness is consistent with prior bag behavior — berry character on this washed medium-dark, not an extraction fault. Notes mention a few seconds of fast left-spout drip mid-shot; this is minor and didn't meaningfully impact taste. The 7g lag is normal Bambino behavior.",
      "recommendationAction": "Lock grind 40, dose 17.7g, target 34–38g yield. Nudge yield toward 38g next pull.",
      "recommendationReason": "The new bag is tracking well against the prior bag's recipe. The only gap is yield — 35.9g is at the low end of the target window. A slightly longer pull should round out the flavor and edge the balance toward 4.",
      "beanContext": "At 24 days post-roast, this medium-dark washed blend is in its freshness sweet spot. Quick-resolving brightness with a bit of aftertaste is consistent with the berry notes in the profile — not an extraction flag. New bag is behaving like the previous one, which is a good sign.",
      "progressNote": "New bag, first shot, and you're already in Normal range on both time and ratio with clean flow. Recipe held well across bags — that's a real skill development from where you started.",
      "overallVerdict": "good",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 68 — your first pull on the new Unicorn Blood bag. 30s Normal, 17.7g dose, 35.9g yield (ratio 2.03 Normal), balance 3 Slightly Sour, 3 stars. Clean enough to hold the recipe and nudge yield up next pull as planned.\",\n  \"numbers\": \"Time and ratio are both squarely in Normal range, matching what the prior bag's dialed-in recipe produced. Balance 3 with quick-resolving brightness is consistent with prior bag behavior — berry character on this washed medium-dark, not an extraction fault. Notes mention a few seconds of fast left-spout drip mid-shot; this is minor and didn't meaningfully impact taste. The 7g lag is normal Bambino behavior.\",\n  \"recommendation\": {\n    \"action\": \"Lock grind 40, dose 17.7g, target 34–38g yield. Nudge yield toward 38g next pull.\",\n    \"reason\": \"The new bag is tracking well against the prior bag's recipe. The only gap is yield — 35.9g is at the low end of the target window. A slightly longer pull should round out the flavor and edge the balance toward 4.\"\n  },\n  \"bean_context\": \"At 24 days post-roast, this medium-dark washed blend is in its freshness sweet spot. Quick-resolving brightness with a bit of aftertaste is consistent with the berry notes in the profile — not an extraction flag. New bag is behaving like the previous one, which is a good sign.\",\n  \"progress_note\": \"New bag, first shot, and you're already in Normal range on both time and ratio with clean flow. Recipe held well across bags — that's a real skill development from where you started.\",\n  \"overall_verdict\": \"good\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Dark Matter Unicorn Blood — grind 40 locked, dose 17.7g, target 34–38g yield. Nudge yield toward 38g next pull. WDT hard cap 30 seconds, count it out loud.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17.5–17.7g dose + 35–41g yield = balance 3–4, 3–5 stars, confirmed dialed in on prior bag. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity at balance 3–4 is berry character, not extraction fault. Even bilateral flow at 24s on a medium-dark bean is normal — do not read fast time as a problem when taste is clean. 8g lag is normal Bambino behavior. New bag tracking well on first shot — recipe held across bags, nudge yield toward 38g.\",\n    \"last_recommendation\": \"Dark Matter Unicorn Blood: hold grind 40, dose 17.7g, target 34–38g yield. Nudge yield toward 38g next shot. WDT hard cap 30 seconds — count it out loud.\",\n    \"last_analysis_date\": \"2026-07-09T14:12:00.000Z\",\n    \"last_analyzed_shot_id\": 95,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 40,\n        \"shots_pulled\": 1,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"New bag tracking on recipe from prior bag — grind 40, 17.7g, 35.9g yield, balance 3, 3 stars. Nudge yield to 38g next. Hard cap WDT 30s always.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-07-09 14:34:13"
    },
    {
      "id": 52,
      "shotId": 95,
      "analysisMode": "recent",
      "summary": "Shot 68 on the new Unicorn Blood bag — grind 40, 17.7g dose, 35.9g yield, 30 seconds, balance 3, 3 stars. Flow was mostly even with a brief fast-drip moment on the left spout, and taste landed bright with quick resolution and a bit of aftertaste. The recipe transferred cleanly from the prior bag.",
      "numbers": "Time (30s) and ratio (2.03) are both Normal — right in the sweet spot. Balance 3 (slightly sour) with quick-resolving brightness lines up exactly with what you've established as berry character on this bean, not an extraction issue. The brief left-spout speed burst is consistent with minor puck variation, not channeling. 7g lag is normal Bambino behavior.",
      "recommendationAction": "Lock grind 40, dose 17.7g, target 34–38g yield. Nudge yield toward 38g next pull — you're at 35.9g, so aim for 37–38g to fully open up the cup.",
      "recommendationReason": "Everything is dialed in. The only remaining nudge is yield — slightly short of the upper target range, and a bit more volume should soften the brightness and reduce the aftertaste without touching grind.",
      "beanContext": "Flavor profile is behaving exactly as expected — dark chocolate, caramel, and berry with bright acidity that resolves fast. At 24 days off roast this bag is in peak window and extracting cleanly. Prior bag dialed in at the same recipe, and this bag is tracking identically on shot 1. No changes needed on the bean front.",
      "progressNote": "Recipe held across bags on the very first shot — that's a meaningful consistency win. Grind discipline and WDT control are paying off.",
      "overallVerdict": "good",
      "isStable": false,
      "rawResponse": "{\"summary\":\"Shot 68 on the new Unicorn Blood bag — grind 40, 17.7g dose, 35.9g yield, 30 seconds, balance 3, 3 stars. Flow was mostly even with a brief fast-drip moment on the left spout, and taste landed bright with quick resolution and a bit of aftertaste. The recipe transferred cleanly from the prior bag.\",\"numbers\":\"Time (30s) and ratio (2.03) are both Normal — right in the sweet spot. Balance 3 (slightly sour) with quick-resolving brightness lines up exactly with what you've established as berry character on this bean, not an extraction issue. The brief left-spout speed burst is consistent with minor puck variation, not channeling. 7g lag is normal Bambino behavior.\",\"recommendation\":{\"action\":\"Lock grind 40, dose 17.7g, target 34–38g yield. Nudge yield toward 38g next pull — you're at 35.9g, so aim for 37–38g to fully open up the cup.\",\"reason\":\"Everything is dialed in. The only remaining nudge is yield — slightly short of the upper target range, and a bit more volume should soften the brightness and reduce the aftertaste without touching grind.\"},\"bean_context\":\"Flavor profile is behaving exactly as expected — dark chocolate, caramel, and berry with bright acidity that resolves fast. At 24 days off roast this bag is in peak window and extracting cleanly. Prior bag dialed in at the same recipe, and this bag is tracking identically on shot 1. No changes needed on the bean front.\",\"progress_note\":\"Recipe held across bags on the very first shot — that's a meaningful consistency win. Grind discipline and WDT control are paying off.\",\"overall_verdict\":\"good\",\"is_stable\":false,\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Dark Matter Unicorn Blood — grind 40 locked, dose 17.7g, target 34–38g yield. Nudge yield toward 38g next pull. WDT hard cap 30 seconds, count it out loud.\",\"known_patterns\":\"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17.5–17.7g dose + 35–41g yield = balance 3–4, 3–5 stars, confirmed dialed in on prior bag. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity at balance 3–4 is berry character, not extraction fault. Even bilateral flow at 24s on a medium-dark bean is normal — do not read fast time as a problem when taste is clean. 8g lag is normal Bambino behavior. New bag tracking well on first shot — recipe held across bags, nudge yield toward 38g.\",\"last_recommendation\":\"Dark Matter Unicorn Blood: hold grind 40, dose 17.7g, target 34–38g yield. Nudge yield toward 38g next shot. WDT hard cap 30 seconds — count it out loud.\",\"last_analysis_date\":\"2026-07-09T14:12:00.000Z\",\"last_analyzed_shot_id\":95,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38.5,\"current_grind\":40,\"shots_pulled\":1,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"New bag tracking on recipe from prior bag — grind 40, 17.7g, 35.9g yield, balance 3, 3 stars. Nudge yield to 38g next. Hard cap WDT 30s always.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"}]}}",
      "createdAt": "2026-07-09 15:10:20"
    },
    {
      "id": 53,
      "shotId": 101,
      "analysisMode": "recent",
      "summary": "Diego pulled an intentional short shot targeting ristretto — 17.1g dose, 29.7g yield, 21 seconds, balance 5. Flow was even throughout and taste was strong with bright and bitter notes resolving quickly. The lag added ~7g beyond his intended stop point, landing this in Short rather than true ristretto territory.",
      "numbers": "Time at 21s is Fast by your thresholds — just inside the Normal floor at 25s. Ratio at 1.74 puts this in Short range. Balance of 5 (Slightly Bitter) makes sense for a concentrated, short pull on a medium-dark bean — and the quick resolution you noted confirms it's not a problem extraction, just a slightly concentrated one. No signs of channeling; even bilateral flow throughout is a clean puck prep result.",
      "recommendationAction": "If ristretto is the goal, stop the pump about 7g earlier than your target yield to account for lag — so if you want 25g in the cup, stop at ~18g on the scale. If you were happy with this as a short pull, lock grind 40, dose 17.1g, target 28–32g yield.",
      "recommendationReason": "Your 7g lag is consistent Bambino behavior. The shot tasted balanced and resolved cleanly — the slight bitter edge at this concentration is expected on Unicorn Blood. The only 'fix' is a timing adjustment for lag if you're chasing true ristretto, not a grind or technique change.",
      "beanContext": "27 days off roast puts this squarely in peak window for a medium-dark washed blend — freshness is not a factor. The dark chocolate and caramel notes fit the strong, slightly bitter character you tasted. Quick-resolving brightness is consistent with the berry component in the blend. No extraction concerns here.",
      "progressNote": "Four clean shots in a row on this bag with even bilateral flow — the WDT hard cap at 30 seconds is clearly working. The one-spout dropout pattern from earlier shots has not reappeared since you locked that discipline in.",
      "overallVerdict": "good",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Diego pulled an intentional short shot targeting ristretto — 17.1g dose, 29.7g yield, 21 seconds, balance 5. Flow was even throughout and taste was strong with bright and bitter notes resolving quickly. The lag added ~7g beyond his intended stop point, landing this in Short rather than true ristretto territory.\",\n  \"numbers\": \"Time at 21s is Fast by your thresholds — just inside the Normal floor at 25s. Ratio at 1.74 puts this in Short range. Balance of 5 (Slightly Bitter) makes sense for a concentrated, short pull on a medium-dark bean — and the quick resolution you noted confirms it's not a problem extraction, just a slightly concentrated one. No signs of channeling; even bilateral flow throughout is a clean puck prep result.\",\n  \"recommendation\": {\n    \"action\": \"If ristretto is the goal, stop the pump about 7g earlier than your target yield to account for lag — so if you want 25g in the cup, stop at ~18g on the scale. If you were happy with this as a short pull, lock grind 40, dose 17.1g, target 28–32g yield.\",\n    \"reason\": \"Your 7g lag is consistent Bambino behavior. The shot tasted balanced and resolved cleanly — the slight bitter edge at this concentration is expected on Unicorn Blood. The only 'fix' is a timing adjustment for lag if you're chasing true ristretto, not a grind or technique change.\"\n  },\n  \"bean_context\": \"27 days off roast puts this squarely in peak window for a medium-dark washed blend — freshness is not a factor. The dark chocolate and caramel notes fit the strong, slightly bitter character you tasted. Quick-resolving brightness is consistent with the berry component in the blend. No extraction concerns here.\",\n  \"progress_note\": \"Four clean shots in a row on this bag with even bilateral flow — the WDT hard cap at 30 seconds is clearly working. The one-spout dropout pattern from earlier shots has not reappeared since you locked that discipline in.\",\n  \"overall_verdict\": \"good\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Dark Matter Unicorn Blood — grind 40 locked, dose 17.1g. For standard pull: target 36–40g yield. For short/ristretto: stop pump 7g before target yield to account for lag.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17–17.7g dose + standard yield = balance 3–5, confirmed dialed in. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity/bitterness at balance 3–5 is bean character, not extraction fault. Even bilateral flow is now consistent since locking WDT discipline. Bambino 7g lag is material when chasing short/ristretto pulls — stop pump 7g before target cup yield.\",\n    \"last_recommendation\": \"Dark Matter Unicorn Blood: grind 40 locked. For standard pull target 36–40g yield. For ristretto/short pull, stop pump 7g before target cup yield to account for lag. WDT hard cap 30s always.\",\n    \"last_analysis_date\": \"2026-07-12T13:42:00.000Z\",\n    \"last_analyzed_shot_id\": 101,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 7,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17–17.7g dose, 36–40g yield. Hard cap WDT 30s. For short pulls, stop pump 7g early for lag. Even bilateral flow consistent since WDT discipline locked.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-07-12 13:54:01"
    },
    {
      "id": 54,
      "shotId": 104,
      "analysisMode": "recent",
      "summary": "Clean ristretto — you nailed the target (26.6g yield vs 26.1g goal, 21s, right in your time window). Even bilateral flow throughout and a balanced, strong cup with no dominant notes. This is a great shot.",
      "numbers": "Time is Fast at 21s and ratio is Short at 1.53 — both expected for a ristretto pull. Balance 4 and 5-star quality confirm the extraction landed well. Notes match the numbers: no lingering acidity or bitterness, just a strong balanced cup. No contradictions.",
      "recommendationAction": "Lock grind 40, dose 17.4g, target 24–28g yield for ristretto.",
      "recommendationReason": "You're consistently hitting this recipe well. The 7g lag is now clearly internalized — stopping slightly late still landed within 0.5g of target. Nothing to change.",
      "beanContext": "30 days off roast, still in peak window. Dark chocolate/caramel/berry profile fits the 'strong and balanced without predominant notes' description. This bean rewards the ristretto format — concentrated without harsh edges.",
      "progressNote": "Two 5-star shots in one day across standard and ristretto formats. Unicorn Blood is fully dialed in and your lag compensation is reliable.",
      "overallVerdict": "great",
      "isStable": true,
      "rawResponse": "{\"summary\":\"Clean ristretto — you nailed the target (26.6g yield vs 26.1g goal, 21s, right in your time window). Even bilateral flow throughout and a balanced, strong cup with no dominant notes. This is a great shot.\",\"numbers\":\"Time is Fast at 21s and ratio is Short at 1.53 — both expected for a ristretto pull. Balance 4 and 5-star quality confirm the extraction landed well. Notes match the numbers: no lingering acidity or bitterness, just a strong balanced cup. No contradictions.\",\"recommendation\":{\"action\":\"Lock grind 40, dose 17.4g, target 24–28g yield for ristretto.\",\"reason\":\"You're consistently hitting this recipe well. The 7g lag is now clearly internalized — stopping slightly late still landed within 0.5g of target. Nothing to change.\"},\"bean_context\":\"30 days off roast, still in peak window. Dark chocolate/caramel/berry profile fits the 'strong and balanced without predominant notes' description. This bean rewards the ristretto format — concentrated without harsh edges.\",\"progress_note\":\"Two 5-star shots in one day across standard and ristretto formats. Unicorn Blood is fully dialed in and your lag compensation is reliable.\",\"overall_verdict\":\"great\",\"is_stable\":true,\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Dark Matter Unicorn Blood — grind 40 locked, dose 17.4g. Ristretto: target 24–28g yield. Standard: target 36–40g yield. Stop pump 7g before target cup yield to account for lag.\",\"known_patterns\":\"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17–17.7g dose + standard yield = balance 3–5, confirmed dialed in. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity/bitterness at balance 3–5 is bean character, not extraction fault. Even bilateral flow is now consistent since locking WDT discipline. Bambino 7g lag is material when chasing short/ristretto pulls — stop pump 7g before target cup yield. Ristretto on Unicorn Blood: 24–28g yield, grind 40, lag compensation reliable — two 5-star shots confirmed in one session.\",\"last_recommendation\":\"Dark Matter Unicorn Blood: grind 40 locked, dose 17.4g. Ristretto target 24–28g yield. Standard target 36–40g yield. Stop pump 7g before target cup yield. WDT hard cap 30s always.\",\"last_analysis_date\":\"2026-07-15T15:53:00.000Z\",\"last_analyzed_shot_id\":104,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":11,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Bilateral flow consistent. 5-star ristretto confirmed.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"}]}}",
      "createdAt": "2026-07-15 19:36:48"
    },
    {
      "id": 55,
      "shotId": 105,
      "analysisMode": "recent",
      "summary": "Shot 77 — ristretto pull at grind 40, 17.4g adjusted dose, 28.5g yield in 21 seconds. Hit your ristretto target (26.1g target, landed 2.4g over). Balance was slightly sour (3) with a quick-fading acidity and a step down in quality from this morning's 5-star shot. The very long drip lag you noted is the Bambino doing its thing — completely normal, ignore it.",
      "numbers": "Time at 21s is Fast and technically outside the Normal range, but this is consistent with your ristretto pattern on this bean — the last two ristretto pulls on Unicorn Blood were also 21s and 23s at grind 40, both rating 4–5 stars. The ratio of 1.64 classifies as Short rather than Ristretto, but with the 10g lag accounted for, your in-cup yield landed right where it should. The slight sourness (balance 3) matches what you noted — acidity that didn't linger, which on this washed Honduras/Guatemala blend is bean character, not an extraction fault. What's worth examining is the right spout instability mid-shot: a brief fast-drip period on the right before it destabilized. This is the same pattern you've seen before on this bean when WDT distribution gets uneven. No other red flags in the numbers.",
      "recommendationAction": "Check your WDT coverage before the next pull — specifically the right-side edge. Keep grind 40, dose 17.4g, and your pump stop timing unchanged.",
      "recommendationReason": "The taste outcome was solid (acidity didn't linger, balance was acceptable), but the right-spout flutter is a puck prep tell. This bean has shown repeatedly that uneven WDT edge coverage causes single-spout instability. One deliberate pass focusing on the right quadrant should close the gap between this shot and this morning's 5-star.",
      "beanContext": "Unicorn Blood is 31 days off roast — still in excellent shape for a medium-dark washed blend. The slight sourness you tasted is consistent with the bean's berry and bright chocolate character; it resolved quickly, which confirms extraction is on point. Nothing here points to staleness or a freshness issue.",
      "progressNote": "Two ristretto pulls in one session — morning shot was the cleaner execution (5 stars, balance 4, even flow throughout). This afternoon's shot showed the familiar right-spout flutter, suggesting WDT consistency is the remaining variable to nail down for back-to-back 5-star results.",
      "overallVerdict": "good",
      "isStable": false,
      "rawResponse": "{\"summary\":\"Shot 77 — ristretto pull at grind 40, 17.4g adjusted dose, 28.5g yield in 21 seconds. Hit your ristretto target (26.1g target, landed 2.4g over). Balance was slightly sour (3) with a quick-fading acidity and a step down in quality from this morning's 5-star shot. The very long drip lag you noted is the Bambino doing its thing — completely normal, ignore it.\",\"numbers\":\"Time at 21s is Fast and technically outside the Normal range, but this is consistent with your ristretto pattern on this bean — the last two ristretto pulls on Unicorn Blood were also 21s and 23s at grind 40, both rating 4–5 stars. The ratio of 1.64 classifies as Short rather than Ristretto, but with the 10g lag accounted for, your in-cup yield landed right where it should. The slight sourness (balance 3) matches what you noted — acidity that didn't linger, which on this washed Honduras/Guatemala blend is bean character, not an extraction fault. What's worth examining is the right spout instability mid-shot: a brief fast-drip period on the right before it destabilized. This is the same pattern you've seen before on this bean when WDT distribution gets uneven. No other red flags in the numbers.\",\"recommendation\":{\"action\":\"Check your WDT coverage before the next pull — specifically the right-side edge. Keep grind 40, dose 17.4g, and your pump stop timing unchanged.\",\"reason\":\"The taste outcome was solid (acidity didn't linger, balance was acceptable), but the right-spout flutter is a puck prep tell. This bean has shown repeatedly that uneven WDT edge coverage causes single-spout instability. One deliberate pass focusing on the right quadrant should close the gap between this shot and this morning's 5-star.\"},\"bean_context\":\"Unicorn Blood is 31 days off roast — still in excellent shape for a medium-dark washed blend. The slight sourness you tasted is consistent with the bean's berry and bright chocolate character; it resolved quickly, which confirms extraction is on point. Nothing here points to staleness or a freshness issue.\",\"progress_note\":\"Two ristretto pulls in one session — morning shot was the cleaner execution (5 stars, balance 4, even flow throughout). This afternoon's shot showed the familiar right-spout flutter, suggesting WDT consistency is the remaining variable to nail down for back-to-back 5-star results.\",\"overall_verdict\":\"good\",\"is_stable\":false,\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Dark Matter Unicorn Blood — grind 40 locked, dose 17.4g. Ristretto: target 24–28g yield. Standard: target 36–40g yield. Stop pump 7g before target cup yield to account for lag. Focus next pull on even WDT edge coverage — right-side flutter has recurred.\",\"known_patterns\":\"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17–17.7g dose + standard yield = balance 3–5, confirmed dialed in. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity/bitterness at balance 3–5 is bean character, not extraction fault. Even bilateral flow is now consistent since locking WDT discipline. Bambino 7g lag is material when chasing short/ristretto pulls — stop pump 7g before target cup yield. Ristretto on Unicorn Blood: 24–28g yield, grind 40, lag compensation reliable — two 5-star shots confirmed in one session. Right-spout flutter in afternoon ristretto (shot 77) linked to uneven WDT edge coverage — same puck prep pattern as earlier regressions. WDT right-side edge coverage is the active variable to monitor.\",\"last_recommendation\":\"Dark Matter Unicorn Blood: grind 40 locked, dose 17.4g. Ristretto target 24–28g yield. Standard target 36–40g yield. Stop pump 7g before target cup yield. WDT hard cap 30s always. Focus on even right-side edge coverage in WDT next pull.\",\"last_analysis_date\":\"2026-07-15T18:56:00.000Z\",\"last_analyzed_shot_id\":105,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":12,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable — uneven pass causes spout flutter.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"}]}}",
      "createdAt": "2026-07-16 00:24:47"
    },
    {
      "id": 56,
      "shotId": 107,
      "analysisMode": "recent",
      "summary": "{\"summary\":\"First shot on the new Metric Colombia Carlos Efrain Cortes — a light washed single origin. It ran 16 seconds at a 2.92 brew ratio, way outside target on both dimensions. Flow was very fast throughout and the puck offered almost no resistance. You rated it 4 stars with balance 4, but your notes tell the real story: light body, watery, and light lingering acid — classic under-extraction texture even if the flavor landed surprisingly close to center. This one's not representative of what this bean can do.\",\"numbers\":\"At 16 seconds, this is Very Fast — severely under-extracted by any standard. The 51.1g yield against 17.5g dose is a Long pull at 2.92 ratio, also well past your Espresso target of 35g. Both dimensions missed badly. The balance 4 reading is somewhat misleading here — watery, light-bodied shots with lingering acid often register as 'balanced' because the flavors are diluted rather than well-extracted. Your own notes confirm the extraction was too thin to be useful. No channeling signs in the flow description — just pure speed, which points directly to grind being too coarse for this bean.\",\"recommendation\":{\"action\":\"Drop to grind 34 for your next shot — that's 6 clicks finer from 40.\",\"reason\":\"This is a light roast washed Colombian at 2015m elevation — dense, slow-extracting, and significantly harder to extract than the medium-dark Unicorn Blood you've been pulling at 40. Your history shows this: the Cerrado natural choked at 28–41 and needed 42, but in the other direction, light roasts consistently need much finer settings than medium-dark beans. A 6-click jump gives you a real chance of landing in the 25–35s range rather than nibbling at it one click at a time. If it chokes or runs under 20s, you'll have bracketed the range fast. Dose at 17.5g and target 34–38g yield.\"},\"bean_context\":\"Limoncello, blackberry, and cocoa on a light washed Colombian at 2015m is a classically bright, high-density profile. At 11 days off roast, it's technically in its freshness window, but light roasts typically benefit from 14+ days of rest — you're right at the edge. Some of the speed today could be slightly early degassing keeping the puck loose, though the dominant factor is grind. Worth noting: your Unicorn Blood reference grind of 40 is a medium-dark bean — light roast density means you should expect this Colombia to settle somewhere meaningfully finer, potentially in the mid-30s. No prior light washed Colombian in your bean_contexts to anchor from, so treat this as a fresh dial-in.\",\"progress_note\":\"New bean, new challenge — light roast single origins are a step up in difficulty from the medium and medium-dark beans you've been working with. The speed today is expected on shot 1; the interesting data point is that flavor came through surprisingly clean even at this extraction, which suggests the bean has real potential once you slow it down.\",\"overall_verdict\":\"needs_work\",\"is_stable\":false,\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Metric Colombia Carlos Efrain Cortes — shot 1, grind 40 ran 16s Very Fast. Drop to grind 34 next shot. Light roast high-density bean — expect significantly finer setting than Unicorn Blood. Target 34–38g yield, 25–35s.\",\"known_patterns\":\"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17–17.7g dose + standard yield = balance 3–5, confirmed dialed in. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity/bitterness at balance 3–5 is bean character, not extraction fault. Even bilateral flow is now consistent since locking WDT discipline. Bambino 7g lag is material when chasing short/ristretto pulls — stop pump 7g before target cup yield. Ristretto on Unicorn Blood: 24–28g yield, grind 40, lag compensation reliable — two 5-star shots confirmed in one session. Right-spout flutter in afternoon ristretto (shot 77) linked to uneven WDT edge coverage — same puck prep pattern as earlier regressions. Metric Colombia Carlos Efrain Cortes (light washed, single origin, 2015m): grind 40 ran 16s Very Fast on shot 1 — too coarse by a wide margin. Light roast high-density bean extracts much more slowly than medium-dark Unicorn Blood. Starting grind 34 next.\",\"last_recommendation\":\"Metric Colombia Carlos Efrain Cortes: drop to grind 34 for shot 2. Dose 17.5g, target 34–38g yield, 25–35s. Light roast — expect finer setting than any medium-dark bean in history.\",\"last_analysis_date\":\"2026-07-17T16:31:00.000Z\",\"last_analyzed_shot_id\":107,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":12,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable — uneven pass causes spout flutter.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, ",
      "numbers": null,
      "recommendationAction": null,
      "recommendationReason": null,
      "beanContext": null,
      "progressNote": null,
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\"summary\":\"First shot on the new Metric Colombia Carlos Efrain Cortes — a light washed single origin. It ran 16 seconds at a 2.92 brew ratio, way outside target on both dimensions. Flow was very fast throughout and the puck offered almost no resistance. You rated it 4 stars with balance 4, but your notes tell the real story: light body, watery, and light lingering acid — classic under-extraction texture even if the flavor landed surprisingly close to center. This one's not representative of what this bean can do.\",\"numbers\":\"At 16 seconds, this is Very Fast — severely under-extracted by any standard. The 51.1g yield against 17.5g dose is a Long pull at 2.92 ratio, also well past your Espresso target of 35g. Both dimensions missed badly. The balance 4 reading is somewhat misleading here — watery, light-bodied shots with lingering acid often register as 'balanced' because the flavors are diluted rather than well-extracted. Your own notes confirm the extraction was too thin to be useful. No channeling signs in the flow description — just pure speed, which points directly to grind being too coarse for this bean.\",\"recommendation\":{\"action\":\"Drop to grind 34 for your next shot — that's 6 clicks finer from 40.\",\"reason\":\"This is a light roast washed Colombian at 2015m elevation — dense, slow-extracting, and significantly harder to extract than the medium-dark Unicorn Blood you've been pulling at 40. Your history shows this: the Cerrado natural choked at 28–41 and needed 42, but in the other direction, light roasts consistently need much finer settings than medium-dark beans. A 6-click jump gives you a real chance of landing in the 25–35s range rather than nibbling at it one click at a time. If it chokes or runs under 20s, you'll have bracketed the range fast. Dose at 17.5g and target 34–38g yield.\"},\"bean_context\":\"Limoncello, blackberry, and cocoa on a light washed Colombian at 2015m is a classically bright, high-density profile. At 11 days off roast, it's technically in its freshness window, but light roasts typically benefit from 14+ days of rest — you're right at the edge. Some of the speed today could be slightly early degassing keeping the puck loose, though the dominant factor is grind. Worth noting: your Unicorn Blood reference grind of 40 is a medium-dark bean — light roast density means you should expect this Colombia to settle somewhere meaningfully finer, potentially in the mid-30s. No prior light washed Colombian in your bean_contexts to anchor from, so treat this as a fresh dial-in.\",\"progress_note\":\"New bean, new challenge — light roast single origins are a step up in difficulty from the medium and medium-dark beans you've been working with. The speed today is expected on shot 1; the interesting data point is that flavor came through surprisingly clean even at this extraction, which suggests the bean has real potential once you slow it down.\",\"overall_verdict\":\"needs_work\",\"is_stable\":false,\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Metric Colombia Carlos Efrain Cortes — shot 1, grind 40 ran 16s Very Fast. Drop to grind 34 next shot. Light roast high-density bean — expect significantly finer setting than Unicorn Blood. Target 34–38g yield, 25–35s.\",\"known_patterns\":\"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17–17.7g dose + standard yield = balance 3–5, confirmed dialed in. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity/bitterness at balance 3–5 is bean character, not extraction fault. Even bilateral flow is now consistent since locking WDT discipline. Bambino 7g lag is material when chasing short/ristretto pulls — stop pump 7g before target cup yield. Ristretto on Unicorn Blood: 24–28g yield, grind 40, lag compensation reliable — two 5-star shots confirmed in one session. Right-spout flutter in afternoon ristretto (shot 77) linked to uneven WDT edge coverage — same puck prep pattern as earlier regressions. Metric Colombia Carlos Efrain Cortes (light washed, single origin, 2015m): grind 40 ran 16s Very Fast on shot 1 — too coarse by a wide margin. Light roast high-density bean extracts much more slowly than medium-dark Unicorn Blood. Starting grind 34 next.\",\"last_recommendation\":\"Metric Colombia Carlos Efrain Cortes: drop to grind 34 for shot 2. Dose 17.5g, target 34–38g yield, 25–35s. Light roast — expect finer setting than any medium-dark bean in history.\",\"last_analysis_date\":\"2026-07-17T16:31:00.000Z\",\"last_analyzed_shot_id\":107,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":12,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable — uneven pass causes spout flutter.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, ",
      "createdAt": "2026-07-17 17:42:38"
    },
    {
      "id": 57,
      "shotId": 107,
      "analysisMode": "recent",
      "summary": "{\n  \"summary\": \"First shot on a new light washed Colombian — ran 16 seconds at a 2.92 brew ratio, well outside target on both dimensions. Flow was fast throughout and body came out light and watery, which tracks. The balanced taste rating is a bit surprising given the speed, but you noted light lingering acidity and bitterness, so it reads as a thin but not offensive shot. Not a keeper, but useful data.\",\n  \"numbers\": \"16 seconds is Very Fast — industry standard calls this severely under-extracted, and the watery body and thin mouthfeel in your notes confirm real under-extraction here despite the balanced rating. Yield came in at 51.1g against a 35g target, a 16g overshoot. You missed both windows on your Espresso target. Light roast at grind 40 is simply far too coarse for this bean's density — this is a first-shot baseline, not a dialing-in failure.\",\n  \"recommendation\": {\n    \"action\": \"Drop to grind 32 for the next shot.\",\n    \"reason\": \"Light roast washed beans are significantly denser than the medium-dark Unicorn Blood you've been pulling at 40. A 16-second shot needs a substantial correction — not one or two clicks. Grind 32 is a reasonable starting point: it's in the range where your Ándale bag 2 (medium, washed) dialed in at 28, and Unicorn Blood (medium-dark) sits at 40, so a high-density light roast logically lands somewhere in the middle. Target 34–38g yield and 25–35 seconds. Keep WDT hard-capped at 30 seconds.\"\n  },\n  \"bean_context\": \"Metric Colombia Carlos Efrain Cortes — light washed single origin from Nariño at 2015m. Flavor notes are Limoncello, Blackberry, Cocoa: expect brightness and fruit-forward character, which means slight acidity will be bean character rather than extraction fault. At 11 days post-roast it's in the estimated peak window for a light washed bean, so freshness isn't the issue here — grind is the whole story. No comparable light washed single origin in your history to reference directly, but the Coffee Lab Huila Decaf (light roast) choked below grind 38 — that bean has decaf processing softening its structure, so expect this regular light roast to need an even finer grind than that.\",\n  \"progress_note\": \"First shot on a new light roast bean — this is exactly what a first pull is for. Grind 40 established the ceiling; now bring it down significantly and see where this bean wants to live.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Metric Colombia Carlos Efrain Cortes — new light washed single origin. Shot 1 ran 16s at grind 40 — far too coarse. Starting grind 32 next pull. Target 34–38g yield, 25–35s. WDT hard cap 30s always.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17–17.7g dose + standard yield = balance 3–5, confirmed dialed in. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity/bitterness at balance 3–5 is bean character, not extraction fault. Even bilateral flow is now consistent since locking WDT discipline. Bambino 7g lag is material when chasing short/ristretto pulls — stop pump 7g before target cup yield. Ristretto on Unicorn Blood: 24–28g yield, grind 40, lag compensation reliable — two 5-star shots confirmed in one session. Right-spout flutter in afternoon ristretto (shot 77) linked to uneven WDT edge coverage — same puck prep pattern as earlier regressions. Metric Colombia Carlos Efrain Cortes (light washed single origin, Nariño): grind 40 ran 16s Very Fast — far too coarse. Light roast density requires significantly finer grind than medium-dark beans. Starting exploration at grind 32.\",\n    \"last_recommendation\": \"Metric Colombia Carlos Efrain Cortes: drop to grind 32 for next shot. Target 34–38g yield, 25–35s. WDT hard cap 30s.\",\n    \"last_analysis_date\": \"2026-07-17T16:31:00.000Z\",\n    \"last_analyzed_shot_id\": 107,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.4g dose, 36",
      "numbers": null,
      "recommendationAction": null,
      "recommendationReason": null,
      "beanContext": null,
      "progressNote": null,
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"First shot on a new light washed Colombian — ran 16 seconds at a 2.92 brew ratio, well outside target on both dimensions. Flow was fast throughout and body came out light and watery, which tracks. The balanced taste rating is a bit surprising given the speed, but you noted light lingering acidity and bitterness, so it reads as a thin but not offensive shot. Not a keeper, but useful data.\",\n  \"numbers\": \"16 seconds is Very Fast — industry standard calls this severely under-extracted, and the watery body and thin mouthfeel in your notes confirm real under-extraction here despite the balanced rating. Yield came in at 51.1g against a 35g target, a 16g overshoot. You missed both windows on your Espresso target. Light roast at grind 40 is simply far too coarse for this bean's density — this is a first-shot baseline, not a dialing-in failure.\",\n  \"recommendation\": {\n    \"action\": \"Drop to grind 32 for the next shot.\",\n    \"reason\": \"Light roast washed beans are significantly denser than the medium-dark Unicorn Blood you've been pulling at 40. A 16-second shot needs a substantial correction — not one or two clicks. Grind 32 is a reasonable starting point: it's in the range where your Ándale bag 2 (medium, washed) dialed in at 28, and Unicorn Blood (medium-dark) sits at 40, so a high-density light roast logically lands somewhere in the middle. Target 34–38g yield and 25–35 seconds. Keep WDT hard-capped at 30 seconds.\"\n  },\n  \"bean_context\": \"Metric Colombia Carlos Efrain Cortes — light washed single origin from Nariño at 2015m. Flavor notes are Limoncello, Blackberry, Cocoa: expect brightness and fruit-forward character, which means slight acidity will be bean character rather than extraction fault. At 11 days post-roast it's in the estimated peak window for a light washed bean, so freshness isn't the issue here — grind is the whole story. No comparable light washed single origin in your history to reference directly, but the Coffee Lab Huila Decaf (light roast) choked below grind 38 — that bean has decaf processing softening its structure, so expect this regular light roast to need an even finer grind than that.\",\n  \"progress_note\": \"First shot on a new light roast bean — this is exactly what a first pull is for. Grind 40 established the ceiling; now bring it down significantly and see where this bean wants to live.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Metric Colombia Carlos Efrain Cortes — new light washed single origin. Shot 1 ran 16s at grind 40 — far too coarse. Starting grind 32 next pull. Target 34–38g yield, 25–35s. WDT hard cap 30s always.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17–17.7g dose + standard yield = balance 3–5, confirmed dialed in. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity/bitterness at balance 3–5 is bean character, not extraction fault. Even bilateral flow is now consistent since locking WDT discipline. Bambino 7g lag is material when chasing short/ristretto pulls — stop pump 7g before target cup yield. Ristretto on Unicorn Blood: 24–28g yield, grind 40, lag compensation reliable — two 5-star shots confirmed in one session. Right-spout flutter in afternoon ristretto (shot 77) linked to uneven WDT edge coverage — same puck prep pattern as earlier regressions. Metric Colombia Carlos Efrain Cortes (light washed single origin, Nariño): grind 40 ran 16s Very Fast — far too coarse. Light roast density requires significantly finer grind than medium-dark beans. Starting exploration at grind 32.\",\n    \"last_recommendation\": \"Metric Colombia Carlos Efrain Cortes: drop to grind 32 for next shot. Target 34–38g yield, 25–35s. WDT hard cap 30s.\",\n    \"last_analysis_date\": \"2026-07-17T16:31:00.000Z\",\n    \"last_analyzed_shot_id\": 107,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.4g dose, 36",
      "createdAt": "2026-07-17 17:43:48"
    },
    {
      "id": 58,
      "shotId": 107,
      "analysisMode": "recent",
      "summary": "{\n  \"summary\": \"First shot on a new light-roast washed Colombian, and it ran very fast at 16 seconds with a 51g yield — well outside target on both dimensions. The shot over-delivered significantly, landing closer to a Long Pull than your intended Espresso. Despite the fast, thin extraction, you got a balanced reading with light lingering acidity and bitterness — likely surface-level balance masking under-extraction rather than a truly dialed-in shot, consistent with the watery body you noted.\",\n  \"numbers\": \"16 seconds is Very Fast — well below the 25–35s Normal range — and a 2.92 brew ratio puts this at the top edge of Long. Your notes confirm what the numbers suggest: light body, watery texture. The balance 4 reading is a bit misleading here — under-extracted shots on bright washed light roasts can read balanced or even slightly bitter up front while still being thin and hollow. The light lingering acid is worth watching; on a limoncello/blackberry bean at this roast level, some brightness is expected, but the watery body tells you this shot needed much more resistance.\",\n  \"recommendation\": {\n    \"action\": \"Drop grind significantly — start at 33 and pull a full Espresso shot targeting 34–36g yield.\",\n    \"reason\": \"Grind 40 is your locked setting for Unicorn Blood (medium-dark). This Colombia light roast is a completely different beast — higher density, finer particle size needed, and you have zero shots of prior context on it. Light washed singles typically need settings in the low-to-mid 30s on your grinder. Your known reference: Ándale bag 2 dialed in at 28, Maomi around 32.5 — a light single-origin washed Colombian will likely land somewhere in the 30–34 range. Grind 33 is a reasonable first step down; expect it may need to go finer. Pull a standard Espresso (not ristretto) on this first dialing shot so you have a clean read on extraction behavior before narrowing yield.\"\n  },\n  \"bean_context\": \"Metric Colombia Carlos Efrain Cortes — light washed single origin at 2015m elevation in Nariño, 11 days off roast. Freshness window is listed as Peak, but this is a light roast: per general guidelines, light roasts typically need 14 days minimum before they're truly ready. At 11 days you may still be on the early edge — if shots run gassy or channel inconsistently in the next few pulls, consider letting it rest 2–3 more days and noting it in bag settings. The limoncello/blackberry/cocoa profile means you should expect brightness — don't over-correct toward extraction just because you taste acidity. Watch for finish quality: quick-fading brightness is bean character, lingering is an extraction flag.\",\n  \"progress_note\": \"New bean, first shot — this is exactly the right instinct: pull one, read it, adjust. No context shots to compare, but your diagnostic note was accurate and your plan (go finer) is correct. Good starting read.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Metric Colombia Carlos Efrain Cortes — new bag, shot 1. Grind 40 ran 16s Very Fast, 51g yield — way too coarse. Start at grind 33, target 34–36g yield, standard Espresso pull. Light washed single origin — expect to go finer. May still be slightly pre-peak at 11 days off roast.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17–17.7g dose + standard yield = balance 3–5, confirmed dialed in. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity/bitterness at balance 3–5 is bean character, not extraction fault. Even bilateral flow is now consistent since locking WDT discipline. Bambino 7g lag is material when chasing short/ristretto pulls — stop pump 7g before target cup yield. Ristretto on Unicorn Blood: 24–28g yield, grind 40, lag compensation reliable — two 5-star shots confirmed in one session. Right-spout flutter in afternoon ristretto (shot 77) linked to uneven WDT edge coverage — same puck prep pattern as earlier regressions. WDT right-side edge coverage is the active variable to monitor. Metric Colombia Carlos Efrain Cortes (light washed, single origin, Nariño): grind 40 ran 16s Very Fast, 51g yield on shot 1 — far too coarse. Light roasts need significantly finer settings. Starting at 33 next pull.\",\n    \"last_recommendation\": \"Metric Colombia Carlos Efrain Cortes: grind 40 was far too coarse (16s, 51g). Drop to grind 33, target 34–36g yield, standard Espresso pull. Light washed single origin — expect to go finer from 33.\",\n    \"last_analysis_date\": \"2026-07-17T16:31:00.000Z\",\n    \"last_analyzed_shot_id\": 107,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind",
      "numbers": null,
      "recommendationAction": null,
      "recommendationReason": null,
      "beanContext": null,
      "progressNote": null,
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"First shot on a new light-roast washed Colombian, and it ran very fast at 16 seconds with a 51g yield — well outside target on both dimensions. The shot over-delivered significantly, landing closer to a Long Pull than your intended Espresso. Despite the fast, thin extraction, you got a balanced reading with light lingering acidity and bitterness — likely surface-level balance masking under-extraction rather than a truly dialed-in shot, consistent with the watery body you noted.\",\n  \"numbers\": \"16 seconds is Very Fast — well below the 25–35s Normal range — and a 2.92 brew ratio puts this at the top edge of Long. Your notes confirm what the numbers suggest: light body, watery texture. The balance 4 reading is a bit misleading here — under-extracted shots on bright washed light roasts can read balanced or even slightly bitter up front while still being thin and hollow. The light lingering acid is worth watching; on a limoncello/blackberry bean at this roast level, some brightness is expected, but the watery body tells you this shot needed much more resistance.\",\n  \"recommendation\": {\n    \"action\": \"Drop grind significantly — start at 33 and pull a full Espresso shot targeting 34–36g yield.\",\n    \"reason\": \"Grind 40 is your locked setting for Unicorn Blood (medium-dark). This Colombia light roast is a completely different beast — higher density, finer particle size needed, and you have zero shots of prior context on it. Light washed singles typically need settings in the low-to-mid 30s on your grinder. Your known reference: Ándale bag 2 dialed in at 28, Maomi around 32.5 — a light single-origin washed Colombian will likely land somewhere in the 30–34 range. Grind 33 is a reasonable first step down; expect it may need to go finer. Pull a standard Espresso (not ristretto) on this first dialing shot so you have a clean read on extraction behavior before narrowing yield.\"\n  },\n  \"bean_context\": \"Metric Colombia Carlos Efrain Cortes — light washed single origin at 2015m elevation in Nariño, 11 days off roast. Freshness window is listed as Peak, but this is a light roast: per general guidelines, light roasts typically need 14 days minimum before they're truly ready. At 11 days you may still be on the early edge — if shots run gassy or channel inconsistently in the next few pulls, consider letting it rest 2–3 more days and noting it in bag settings. The limoncello/blackberry/cocoa profile means you should expect brightness — don't over-correct toward extraction just because you taste acidity. Watch for finish quality: quick-fading brightness is bean character, lingering is an extraction flag.\",\n  \"progress_note\": \"New bean, first shot — this is exactly the right instinct: pull one, read it, adjust. No context shots to compare, but your diagnostic note was accurate and your plan (go finer) is correct. Good starting read.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Metric Colombia Carlos Efrain Cortes — new bag, shot 1. Grind 40 ran 16s Very Fast, 51g yield — way too coarse. Start at grind 33, target 34–36g yield, standard Espresso pull. Light washed single origin — expect to go finer. May still be slightly pre-peak at 11 days off roast.\",\n    \"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17–17.7g dose + standard yield = balance 3–5, confirmed dialed in. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity/bitterness at balance 3–5 is bean character, not extraction fault. Even bilateral flow is now consistent since locking WDT discipline. Bambino 7g lag is material when chasing short/ristretto pulls — stop pump 7g before target cup yield. Ristretto on Unicorn Blood: 24–28g yield, grind 40, lag compensation reliable — two 5-star shots confirmed in one session. Right-spout flutter in afternoon ristretto (shot 77) linked to uneven WDT edge coverage — same puck prep pattern as earlier regressions. WDT right-side edge coverage is the active variable to monitor. Metric Colombia Carlos Efrain Cortes (light washed, single origin, Nariño): grind 40 ran 16s Very Fast, 51g yield on shot 1 — far too coarse. Light roasts need significantly finer settings. Starting at 33 next pull.\",\n    \"last_recommendation\": \"Metric Colombia Carlos Efrain Cortes: grind 40 was far too coarse (16s, 51g). Drop to grind 33, target 34–36g yield, standard Espresso pull. Light washed single origin — expect to go finer from 33.\",\n    \"last_analysis_date\": \"2026-07-17T16:31:00.000Z\",\n    \"last_analyzed_shot_id\": 107,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind",
      "createdAt": "2026-07-17 17:44:52"
    },
    {
      "id": 59,
      "shotId": 107,
      "analysisMode": "recent",
      "summary": "{\"summary\":\"First shot on the Colombia Carlos Efrain Cortes — a light washed single origin — and it blew through in 16 seconds with 51g yield. Flow was visibly fast, body came out watery and light, though taste landed at balance 4 with some lingering brightness. The numbers confirm severe under-extraction; the surprisingly decent balance reading is likely the bean's natural character masking how thin the extraction actually is.\",\n\n\"numbers\":\"Time of 16s is Very Fast — well below the 25–35s Normal range. Yield of 51.1g on 17.5g dose is a Long pull ratio (2.92). You missed your Espresso target on both dimensions — 16.1g over target yield and well outside the 25–30s time window. Your own notes confirm it: fast flow, watery body, lingering acid and bitter. The balance 4 is the outlier here — that's the bean being naturally expressive, not a sign the extraction was adequate. Lingering acidity and thin body at 16s is under-extraction regardless of the headline balance number.\",\n\n\"recommendation\":{\"action\":\"Drop grind to 33–34 and pull again. Keep dose at 17.5g, target yield 35–38g.\",\"reason\":\"This is shot 1 on a light washed single origin at 2015m elevation — same density profile as the Coffee Lab Huila Decaf that choked at settings below 38. Non-decaf light roasts are even denser. Grind 40 (your Unicorn Blood setting on a medium-dark) was always going to run extremely fast here. Grind 33–34 is a reasonable starting bracket based on your history with light roasts — be prepared to go significantly finer if it's still fast. At 16s you have a lot of room.\"},\n\n\"bean_context\":\"Metric Colombia Carlos Efrain Cortes is a light washed single origin from Nariño at 2015m — high-density, slow-extracting, and at 11 days off roast it's sitting right in the peak window for a light wash (window typically 14–42 days). Wait — 11 days puts it just at the edge of the too-fresh zone for a light roast; peak doesn't really begin until around day 14. The freshness_status in the app says Peak but this bean may benefit from another 3–4 days of rest before it's truly ready. Flavor notes are Limoncello, Blackberry, Cocoa — the brightness you're already tasting is very much on-profile. Don't chase that acidity away; target extraction, not balance suppression.\",\n\n\"progress_note\":\"Shot 79 and first pull on a new bean — the fast shot is completely expected given the grind transfer from Unicorn Blood. No patterns to read yet on this bag.\",\n\n\"overall_verdict\":\"needs_work\",\n\"is_stable\":false,\n\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Metric Colombia Carlos Efrain Cortes — light washed single origin, first shot. Grind 40 ran 16s Very Fast, 51g yield. Starting adjustment: grind 33–34, dose 17.5g, target 35–38g yield. Bean may be slightly too fresh (11 days, light roast peak starts ~14 days) — consider resting 3–4 more days if extraction remains difficult.\",\"known_patterns\":\"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17–17.7g dose + standard yield = balance 3–5, confirmed dialed in. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity/bitterness at balance 3–5 is bean character, not extraction fault. Even bilateral flow is now consistent since locking WDT discipline. Bambino 7g lag is material when chasing short/ristretto pulls — stop pump 7g before target cup yield. Ristretto on Unicorn Blood: 24–28g yield, grind 40, lag compensation reliable — two 5-star shots confirmed in one session. Right-spout flutter in afternoon ristretto (shot 77) linked to uneven WDT edge coverage — same puck prep pattern as earlier regressions. WDT right-side edge coverage is the active variable to monitor. Metric Colombia Carlos Efrain Cortes (light washed, Nariño, 2015m): grind 40 ran 16s Very Fast at 51g — way too coarse. Light roast density requires significantly finer grind than medium-dark beans. Starting bracket: 33–34. May be slightly too fresh at 11 days (light roast peak ~14 days).\",\"last_recommendation\":\"Metric Colombia Carlos Efrain Cortes: grind 40 ran 16s Very Fast. Drop to grind 33–34, dose 17.5g, target 35–38g yield. Consider resting bean 3–4 more days if extraction remains difficult.\",\"last_analysis_date\":\"2026-07-17T16:31:00.000Z\",\"last_analyzed_shot_id\":107,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":12,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable — uneven pass causes spout flutter.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance ",
      "numbers": null,
      "recommendationAction": null,
      "recommendationReason": null,
      "beanContext": null,
      "progressNote": null,
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\"summary\":\"First shot on the Colombia Carlos Efrain Cortes — a light washed single origin — and it blew through in 16 seconds with 51g yield. Flow was visibly fast, body came out watery and light, though taste landed at balance 4 with some lingering brightness. The numbers confirm severe under-extraction; the surprisingly decent balance reading is likely the bean's natural character masking how thin the extraction actually is.\",\n\n\"numbers\":\"Time of 16s is Very Fast — well below the 25–35s Normal range. Yield of 51.1g on 17.5g dose is a Long pull ratio (2.92). You missed your Espresso target on both dimensions — 16.1g over target yield and well outside the 25–30s time window. Your own notes confirm it: fast flow, watery body, lingering acid and bitter. The balance 4 is the outlier here — that's the bean being naturally expressive, not a sign the extraction was adequate. Lingering acidity and thin body at 16s is under-extraction regardless of the headline balance number.\",\n\n\"recommendation\":{\"action\":\"Drop grind to 33–34 and pull again. Keep dose at 17.5g, target yield 35–38g.\",\"reason\":\"This is shot 1 on a light washed single origin at 2015m elevation — same density profile as the Coffee Lab Huila Decaf that choked at settings below 38. Non-decaf light roasts are even denser. Grind 40 (your Unicorn Blood setting on a medium-dark) was always going to run extremely fast here. Grind 33–34 is a reasonable starting bracket based on your history with light roasts — be prepared to go significantly finer if it's still fast. At 16s you have a lot of room.\"},\n\n\"bean_context\":\"Metric Colombia Carlos Efrain Cortes is a light washed single origin from Nariño at 2015m — high-density, slow-extracting, and at 11 days off roast it's sitting right in the peak window for a light wash (window typically 14–42 days). Wait — 11 days puts it just at the edge of the too-fresh zone for a light roast; peak doesn't really begin until around day 14. The freshness_status in the app says Peak but this bean may benefit from another 3–4 days of rest before it's truly ready. Flavor notes are Limoncello, Blackberry, Cocoa — the brightness you're already tasting is very much on-profile. Don't chase that acidity away; target extraction, not balance suppression.\",\n\n\"progress_note\":\"Shot 79 and first pull on a new bean — the fast shot is completely expected given the grind transfer from Unicorn Blood. No patterns to read yet on this bag.\",\n\n\"overall_verdict\":\"needs_work\",\n\"is_stable\":false,\n\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Metric Colombia Carlos Efrain Cortes — light washed single origin, first shot. Grind 40 ran 16s Very Fast, 51g yield. Starting adjustment: grind 33–34, dose 17.5g, target 35–38g yield. Bean may be slightly too fresh (11 days, light roast peak starts ~14 days) — consider resting 3–4 more days if extraction remains difficult.\",\"known_patterns\":\"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17–17.7g dose + standard yield = balance 3–5, confirmed dialed in. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity/bitterness at balance 3–5 is bean character, not extraction fault. Even bilateral flow is now consistent since locking WDT discipline. Bambino 7g lag is material when chasing short/ristretto pulls — stop pump 7g before target cup yield. Ristretto on Unicorn Blood: 24–28g yield, grind 40, lag compensation reliable — two 5-star shots confirmed in one session. Right-spout flutter in afternoon ristretto (shot 77) linked to uneven WDT edge coverage — same puck prep pattern as earlier regressions. WDT right-side edge coverage is the active variable to monitor. Metric Colombia Carlos Efrain Cortes (light washed, Nariño, 2015m): grind 40 ran 16s Very Fast at 51g — way too coarse. Light roast density requires significantly finer grind than medium-dark beans. Starting bracket: 33–34. May be slightly too fresh at 11 days (light roast peak ~14 days).\",\"last_recommendation\":\"Metric Colombia Carlos Efrain Cortes: grind 40 ran 16s Very Fast. Drop to grind 33–34, dose 17.5g, target 35–38g yield. Consider resting bean 3–4 more days if extraction remains difficult.\",\"last_analysis_date\":\"2026-07-17T16:31:00.000Z\",\"last_analyzed_shot_id\":107,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":12,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable — uneven pass causes spout flutter.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance ",
      "createdAt": "2026-07-17 17:50:39"
    },
    {
      "id": 60,
      "shotId": 108,
      "analysisMode": "recent",
      "summary": "{\"summary\":\"Shot 80, grind 34 on a brand-new light roast washed Colombian. 15 seconds, ratio 2.13, balance 3 (Slightly Sour). You noted fast flow again despite dropping 6 clicks finer from shot 1, with lingering sourness and thin body — your own read of under-extracted is spot on. This bean is resisting extraction hard.\",\n\n\"numbers\":\"15 seconds is Very Fast — well below the Normal floor and into severely under-extracted territory by industry standard. The ratio landed Normal at 2.13, but the time tells the real story. Your lag_g is logged at 17g this shot, which is notably high — worth double-checking your pump stop timing, as that's larger than the typical 6–8g Bambino lag. The taste (lingering sourness, thin body) is consistent with what a 15-second shot on a dense light roast washed bean would produce. Balance 3 and the linger in your notes are both pointing the same direction: not enough extraction.\",\n\n\"recommendation\":{\"action\":\"Drop to grind 28 for your next shot — a significant jump, not incremental.\",\"reason\":\"Two shots at 40 and 34 both ran 15–16 seconds on this bean. Incremental steps won't get you into range on a dense light roast washed Colombian at 2015m elevation. Grind 28 is your Ándale bag 2 dialed-in setting — also a bright washed Colombian medium — so it's a reasonable anchor to start from on a lighter roast. You'll likely need to go finer still, but 28 gets you into a testable zone. Expect to need 25–27s at minimum; chase that before touching dose or yield.\"},\n\n\"bean_context\":\"Metric Colombia Carlos Efrain Cortes is a light roast, washed, single-origin from Nariño at 2015m — that's as dense and extraction-resistant as beans get. Light roasts need 14+ days of rest before hitting peak; at 11 days since roast it's technically in the stated peak window, but the freshness estimate for a high-elevation washed light roast might be slightly optimistic — very fresh dense beans resist extraction even more. Flavor notes are Limoncello, Blackberry, Cocoa, so some brightness is expected, but lingering sourness at 15 seconds is an extraction problem, not bean character. The Cerrado experience is the cautionary tale here: this bean may need a grind setting that feels counterintuitively fine. Don't anchor to previous dark/medium roast settings.\",\n\n\"progress_note\":\"Two shots in and you correctly diagnosed both as under-extracted without over-interpreting the balance score — that's good palate calibration. The jump to 28 is the right instinct; light roasts on this grinder have surprised you before.\",\n\n\"overall_verdict\":\"needs_work\",\n\"is_stable\":false,\n\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Metric Colombia Carlos Efrain Cortes — new light washed Colombian, 2015m elevation. Both shots at 40 and 34 ran 15–16s Very Fast. Grind 28 next — significant jump warranted. Lingering sourness confirms under-extraction, not bean character. May need to go finer than 28.\",\"known_patterns\":\"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17–17.7g dose + standard yield = balance 3–5, confirmed dialed in. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity/bitterness at balance 3–5 is bean character, not extraction fault. Even bilateral flow is now consistent since locking WDT discipline. Bambino 7g lag is material when chasing short/ristretto pulls — stop pump 7g before target cup yield. Ristretto on Unicorn Blood: 24–28g yield, grind 40, lag compensation reliable — two 5-star shots confirmed in one session. Right-spout flutter in afternoon ristretto (shot 77) linked to uneven WDT edge coverage — same puck prep pattern as earlier regressions. WDT right-side edge coverage is the active variable to monitor. Metric Colombia Carlos Efrain Cortes: light washed Colombian, 2015m elevation — ran 15–16s at grind 40 AND 34. Extremely extraction-resistant. Do not approach from medium-roast anchors. Grind 28 is next test floor.\",\"last_recommendation\":\"Metric Colombia Carlos Efrain Cortes: drop to grind 28 next shot. Significant jump warranted — two consecutive Very Fast shots at 40 and 34. Chase 25–30s before adjusting anything else.\",\"last_analysis_date\":\"2026-07-17T21:02:00.000Z\",\"last_analyzed_shot_id\":108,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":12,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"},{\"bag_id\":8,\"name\":\"Metric Coffee — Colombia Carlos Efrain Cortes\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":34,\"shots_pulled\":2,\"profile\":\"Light washed, Colombia Nariño, 2015m, limoncello/blackberry/cocoa\",\"notes\":\"Ran 15–16s at grind 40 and 34 — extremely extraction-resistant. Jumping to 28 next. Do not anchor to medium-roast grind references.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status",
      "numbers": null,
      "recommendationAction": null,
      "recommendationReason": null,
      "beanContext": null,
      "progressNote": null,
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\"summary\":\"Shot 80, grind 34 on a brand-new light roast washed Colombian. 15 seconds, ratio 2.13, balance 3 (Slightly Sour). You noted fast flow again despite dropping 6 clicks finer from shot 1, with lingering sourness and thin body — your own read of under-extracted is spot on. This bean is resisting extraction hard.\",\n\n\"numbers\":\"15 seconds is Very Fast — well below the Normal floor and into severely under-extracted territory by industry standard. The ratio landed Normal at 2.13, but the time tells the real story. Your lag_g is logged at 17g this shot, which is notably high — worth double-checking your pump stop timing, as that's larger than the typical 6–8g Bambino lag. The taste (lingering sourness, thin body) is consistent with what a 15-second shot on a dense light roast washed bean would produce. Balance 3 and the linger in your notes are both pointing the same direction: not enough extraction.\",\n\n\"recommendation\":{\"action\":\"Drop to grind 28 for your next shot — a significant jump, not incremental.\",\"reason\":\"Two shots at 40 and 34 both ran 15–16 seconds on this bean. Incremental steps won't get you into range on a dense light roast washed Colombian at 2015m elevation. Grind 28 is your Ándale bag 2 dialed-in setting — also a bright washed Colombian medium — so it's a reasonable anchor to start from on a lighter roast. You'll likely need to go finer still, but 28 gets you into a testable zone. Expect to need 25–27s at minimum; chase that before touching dose or yield.\"},\n\n\"bean_context\":\"Metric Colombia Carlos Efrain Cortes is a light roast, washed, single-origin from Nariño at 2015m — that's as dense and extraction-resistant as beans get. Light roasts need 14+ days of rest before hitting peak; at 11 days since roast it's technically in the stated peak window, but the freshness estimate for a high-elevation washed light roast might be slightly optimistic — very fresh dense beans resist extraction even more. Flavor notes are Limoncello, Blackberry, Cocoa, so some brightness is expected, but lingering sourness at 15 seconds is an extraction problem, not bean character. The Cerrado experience is the cautionary tale here: this bean may need a grind setting that feels counterintuitively fine. Don't anchor to previous dark/medium roast settings.\",\n\n\"progress_note\":\"Two shots in and you correctly diagnosed both as under-extracted without over-interpreting the balance score — that's good palate calibration. The jump to 28 is the right instinct; light roasts on this grinder have surprised you before.\",\n\n\"overall_verdict\":\"needs_work\",\n\"is_stable\":false,\n\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Metric Colombia Carlos Efrain Cortes — new light washed Colombian, 2015m elevation. Both shots at 40 and 34 ran 15–16s Very Fast. Grind 28 next — significant jump warranted. Lingering sourness confirms under-extraction, not bean character. May need to go finer than 28.\",\"known_patterns\":\"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17–17.7g dose + standard yield = balance 3–5, confirmed dialed in. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity/bitterness at balance 3–5 is bean character, not extraction fault. Even bilateral flow is now consistent since locking WDT discipline. Bambino 7g lag is material when chasing short/ristretto pulls — stop pump 7g before target cup yield. Ristretto on Unicorn Blood: 24–28g yield, grind 40, lag compensation reliable — two 5-star shots confirmed in one session. Right-spout flutter in afternoon ristretto (shot 77) linked to uneven WDT edge coverage — same puck prep pattern as earlier regressions. WDT right-side edge coverage is the active variable to monitor. Metric Colombia Carlos Efrain Cortes: light washed Colombian, 2015m elevation — ran 15–16s at grind 40 AND 34. Extremely extraction-resistant. Do not approach from medium-roast anchors. Grind 28 is next test floor.\",\"last_recommendation\":\"Metric Colombia Carlos Efrain Cortes: drop to grind 28 next shot. Significant jump warranted — two consecutive Very Fast shots at 40 and 34. Chase 25–30s before adjusting anything else.\",\"last_analysis_date\":\"2026-07-17T21:02:00.000Z\",\"last_analyzed_shot_id\":108,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":12,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"},{\"bag_id\":8,\"name\":\"Metric Coffee — Colombia Carlos Efrain Cortes\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":34,\"shots_pulled\":2,\"profile\":\"Light washed, Colombia Nariño, 2015m, limoncello/blackberry/cocoa\",\"notes\":\"Ran 15–16s at grind 40 and 34 — extremely extraction-resistant. Jumping to 28 next. Do not anchor to medium-roast grind references.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status",
      "createdAt": "2026-07-17 21:19:59"
    },
    {
      "id": 61,
      "shotId": 108,
      "analysisMode": "recent",
      "summary": "Shot 80 on the Colombia Carlos Efrain Cortes — grind 34, 15 seconds, 37g yield at ratio 2.13. You went 6 clicks finer from the first shot (grind 40) and the flow barely changed: still 15s Very Fast. The lingering sourness and thin body you noted are consistent with severe under-extraction. This light roast, high-altitude washed bean is significantly denser than Unicorn Blood and needs a much coarser starting point than your muscle memory suggests.",
      "numbers": "15s is Very Fast — well under the 25s floor for Normal. Ratio 2.13 is Normal. The mismatch between time and taste (lingering sourness, thin body) aligns perfectly: the grind is nowhere near fine enough to slow this dense bean down. Worth flagging: your lag reading of 17g this shot is higher than your established 6–10g Bambino norm — worth a quick check next session to confirm the portafilter was fully locked and the basket seated properly, though one anomalous reading isn't a concern on its own. Two shots at grind 40 and 34 both ran 15–16s — the grind range you've been working in simply doesn't apply to this bean. Light roasts at 2015m elevation resist extraction hard; the Unicorn Blood is medium-dark and extracts much more readily at grind 40.",
      "recommendationAction": "Drop to grind 28–30 for your next shot.",
      "recommendationReason": "Six clicks finer produced no meaningful slowdown, which tells you this bean needs a dramatic jump, not incremental steps. Grind 28–30 is where your other washed light-ish beans (Ándale bag 2, Decaf Huila) found their working range. This is still likely to be fast — treat this as your new baseline test, not an expected solution. If it still runs under 20s, drop another 3–4 clicks.",
      "beanContext": "Colombia Carlos Efrain Cortes is a light roast washed single origin at 2015m — some of the densest bean structure you've encountered in your log. At 12 days post-roast it's right at the start of its peak window (light roasts typically peak 14–42 days), so it's borderline fresh — which can contribute to slightly faster flow and less flavor development. Tasting notes are Limoncello, Blackberry, Cocoa — the lingering brightness you're tasting is partly bean character, but lingering sourness at a 15s shot is genuine under-extraction, not just acidity. Your closest reference is Coffee Lab Huila Decaf, which also choked at every grind finer than 33 before finding life at 38. The analogy isn't perfect (decaf extracts more easily, not less), but the lesson applies: dense light roasts require dramatically different grind settings than your dialed-in medium-dark beans.",
      "progressNote": "Two shots, both 15–16s regardless of grind setting — this bean is telling you clearly that your entire current grind range is too coarse. The good news: you've navigated this exact situation before with Coffee Lab Huila Decaf and Brazil Cerrado. The pattern recognition is there.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\"summary\":\"Shot 80 on the Colombia Carlos Efrain Cortes — grind 34, 15 seconds, 37g yield at ratio 2.13. You went 6 clicks finer from the first shot (grind 40) and the flow barely changed: still 15s Very Fast. The lingering sourness and thin body you noted are consistent with severe under-extraction. This light roast, high-altitude washed bean is significantly denser than Unicorn Blood and needs a much coarser starting point than your muscle memory suggests.\",\n\n\"numbers\": \"15s is Very Fast — well under the 25s floor for Normal. Ratio 2.13 is Normal. The mismatch between time and taste (lingering sourness, thin body) aligns perfectly: the grind is nowhere near fine enough to slow this dense bean down. Worth flagging: your lag reading of 17g this shot is higher than your established 6–10g Bambino norm — worth a quick check next session to confirm the portafilter was fully locked and the basket seated properly, though one anomalous reading isn't a concern on its own. Two shots at grind 40 and 34 both ran 15–16s — the grind range you've been working in simply doesn't apply to this bean. Light roasts at 2015m elevation resist extraction hard; the Unicorn Blood is medium-dark and extracts much more readily at grind 40.\",\n\n\"recommendation\": {\"action\": \"Drop to grind 28–30 for your next shot.\", \"reason\": \"Six clicks finer produced no meaningful slowdown, which tells you this bean needs a dramatic jump, not incremental steps. Grind 28–30 is where your other washed light-ish beans (Ándale bag 2, Decaf Huila) found their working range. This is still likely to be fast — treat this as your new baseline test, not an expected solution. If it still runs under 20s, drop another 3–4 clicks.\"},\n\n\"bean_context\": \"Colombia Carlos Efrain Cortes is a light roast washed single origin at 2015m — some of the densest bean structure you've encountered in your log. At 12 days post-roast it's right at the start of its peak window (light roasts typically peak 14–42 days), so it's borderline fresh — which can contribute to slightly faster flow and less flavor development. Tasting notes are Limoncello, Blackberry, Cocoa — the lingering brightness you're tasting is partly bean character, but lingering sourness at a 15s shot is genuine under-extraction, not just acidity. Your closest reference is Coffee Lab Huila Decaf, which also choked at every grind finer than 33 before finding life at 38. The analogy isn't perfect (decaf extracts more easily, not less), but the lesson applies: dense light roasts require dramatically different grind settings than your dialed-in medium-dark beans.\",\n\n\"progress_note\": \"Two shots, both 15–16s regardless of grind setting — this bean is telling you clearly that your entire current grind range is too coarse. The good news: you've navigated this exact situation before with Coffee Lab Huila Decaf and Brazil Cerrado. The pattern recognition is there.\",\n\n\"overall_verdict\": \"needs_work\",\n\"is_stable\": false,\n\n\"updated_coaching_state\": {\n\"experience_level\": \"beginner\",\n\"current_focus\": \"Metric Colombia Carlos Efrain Cortes — new bean, grind 40 and 34 both ran 15–16s Very Fast. Drop to grind 28–30 next shot. Light roast, 2015m elevation, dense bean — expect to go significantly finer than any previous washed bean. Bean is borderline fresh at 12 days (light roast peak starts ~14 days).\",\n\"known_patterns\": \"Acidity sensitive. Bambino drip lag 6–10g on this setup — normal. WDT solid. 30lb spring established. Maomi dialed in at 32.5 for reference. Decaf extracts more easily than regular beans — start 1–2 clicks finer than equivalent regular bean grind. Left spout dropout on decaf shot 1 was loose puck from coarse grind — resolved at 29. Short yields were driving lingering sourness — fixed at 36–37g. Grind 28 on Ándale causes fast shots with channeling signs and under-extraction — confirmed twice on bag 1/early bag 2. Grind 29 on Ándale had cleaner flow. Grind 33 on Ándale bag 1 produced best results (31s, balance 2, good with milk). On Decaf Huila (Metric): grind 28 confirmed dialed in — 27s, balance 3, 4 stars, best shot on the bag. Grind 28 also produced a regression (25s, balance 2, 41g yield) — yield control is critical. Quick-fading acidity at balance 2–3 is bean character on this bright EA Washed decaf, not an extraction fault. Lingering sourness is a real extraction flag. Stirring espresso before tasting reveals truer flavor — surface layer reads sour on bright beans even when extraction is solid. Late bilateral drip near end of pull is puck breakdown artifact, not channeling. Brazil Cerrado (natural process) choked or ran 60s at ALL settings from 28–41 confirmed — this bean requires dramatically coarser grind than any previous bean. Do not attempt any setting below 41.5. Grind 45 ran 15s Very Fast. Grind 42 = 28–32s Normal, balance 3–4, confirmed dialed in across three shots. Asymmetric flow (one spout only mid-shot) on Cerrado traces to uneven WDT distribution, not grind — resolved by end of shot with no major taste impact. Ándale Market bag 2 behaving differently from bag 1 — bag 1 dialed in at grind 33, bag 2 dialed in at grind 28. Do not assume prior dialed-in grind applies across bags. Ándale bag 2: four consecutive channeling shots (grind 31–29.5) with alternating spout restriction — confirmed WDT/puck prep issue. Slowing WDT to 45s with deliberate edge-to-center coverage resolved channeling. Grind 28 + 18g dose + 37–41g yield = balance 4, 4 stars, confirmed dialed in on Ándale bag 2. Coffee Lab Huila Decaf (light roast, unspecified process): choked at every setting 27.5–33 across 5 shots. Light roast density is dominant factor — do not assume decaf processing offsets it. Grind 38 is first working setting — 35s Normal, balance 3, lingering brightness, channeling still present. Alternating spout restriction at 38 traces to puck prep, not grind. Do not go coarser until WDT fix is tested. Dark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 34–37.5 all ran slow (39–60s) with mid-shot single-spout dropout — consistent partial channel pattern. Over-agitation during WDT confirmed as recurring channel mechanism. Grind 40 + 17–17.7g dose + standard yield = balance 3–5, confirmed dialed in. Hard cap WDT at 30 seconds — count it out loud. Quick-resolving acidity/bitterness at balance 3–5 is bean character, not extraction fault. Even bilateral flow is now consistent since locking WDT discipline. Bambino 7g lag is material when chasing short/ristretto pulls — stop pump 7g before target cup yield. Ristretto on Unicorn Blood: 24–28g yield, grind 40, lag compensation reliable — two 5-star shots confirmed in one session. Right-spout flutter in afternoon ristretto (shot 77) linked to uneven WDT edge coverage — same puck prep pattern as earlier regressions. WDT right-side edge coverage is the active variable to monitor. Colombia Carlos Efrain Cortes (light roast, washed, Nariño, 2015m): grind 40 and 34 both ran 15–16s — entire current grind range too coarse for this dense high-altitude bean. Starting point is grind 28–30. Light roasts at this elevation require dramatically finer grind than any previous medium-dark bean.\",\n\"last_recommendation\": \"Metric Colombia Carlos Efrain Cortes: drop to grind 28–30. Both shots at grind 40 and 34 ran 15–16s Very Fast — this dense light roast needs a dramatic jump finer, not incremental steps. If still under 20s at 28–30, drop another 3–4 clicks.\",\n\"last_analysis_date\": \"2026-07-17T21:02:00.000Z\",\n\"last_analyzed_shot_id\": 108,\n\"bean_contexts\": [\n{\"bag_id\": 4, \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\", \"status\": \"dialed_in\", \"dialed_in_grind\": 42, \"dialed_in_yield_g\": 38, \"current_grind\": 42, \"shots_pulled\": 10, \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\", \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},\n{\"bag_id\": 2, \"name\": \"Luckycat — Maomi Blend\", \"status\": \"dialing_in\", \"dialed_in_grind\": null, \"dialed_in_yield_g\": null, \"current_grind\": 32.5, \"shots_pulled\": 7, \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\", \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},\n{\"bag_id\": 3, \"name\": \"Metric — Decaf Huila Pink Bourbon\", \"status\": \"dialing_in\", \"dialed_in_grind\": 28, \"dialed_in_yield_g\": 37, \"current_grind\": 28, \"shots_pulled\": 9, \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\", \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},\n{\"bag_id\": 5, \"name\": \"Metric — Ándale Market (bag 2)\", \"status\": \"dialed_in\", \"dialed_in_grind\": 28, \"dialed_in_yield_g\": 38.5, \"current_grind\": 28, \"shots_pulled\": 9, \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\", \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},\n{\"bag_id\": 6, \"name\": \"Coffee Lab & Roasters — Huila Decaf\", \"status\": \"dialing_in\", \"dialed_in_grind\": null, \"dialed_in_yield_g\": null, \"current_grind\": 38, \"shots_pulled\": 6, \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\", \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},\n{\"bag_id\": 7, \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\", \"status\": \"dialed_in\", \"dialed_in_grind\": 40, \"dialed_in_yield_g\": 38, \"current_grind\": 40, \"shots_pulled\": 14, \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\", \"notes\": \"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"},\n{\"bag_id\": 1, \"name\": \"Metric — Ándale Market\", \"status\": \"finished\", \"dialed_in_grind\": null, \"dialed_in_yield_g\": null, \"current_grind\": null, \"shots_pulled\": 12, \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\", \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"},\n{\"bag_id\": 8, \"name\": \"Metric Coffee — Colombia Carlos Efrain Cortes\", \"status\": \"dialing_in\", \"dialed_in_grind\": null, \"dialed_in_yield_g\": null, \"current_grind\": 34, \"shots_pulled\": 2, \"profile\": \"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\", \"notes\": \"Grind 40 and 34 both 15–16s Very Fast — dense high-altitude light roast. Start at grind 28–30. Borderline fresh at 12 days (light roast peaks ~14 days).\"}\n]\n}\n}",
      "createdAt": "2026-07-18 13:33:47"
    },
    {
      "id": 62,
      "shotId": 109,
      "analysisMode": "recent",
      "summary": "Shot 81 at grind 29 finally broke the Very Fast wall — 24 seconds, Normal ratio, even bilateral flow from about 12 seconds in. That's real progress after two 15–16s shots at 34 and 40. The lingering brightness you noted is consistent with still being slightly under-extracted, and at 12 days this bean is right at the edge of its rest window, which compounds that impression.",
      "numbers": "Time is Fast (24s) — just outside the Normal floor at 25s, so still slightly under-extracted but meaningfully improved. Brew ratio 2.24 is Normal. Your grinder retention was 0.4g this shot, notably higher than your usual ~0.14g — adjusted dose was 17.6g, which is fine. Lag was 10g, which is your Bambino's normal operating range. The lingering acidity in your notes aligns with the Fast time read and is the clearest extraction signal here. You mentioned preferring the taste of the previous shots — worth noting that the grind 34 shot had a balanced 3 and a 4-star quality rating too, but that was at 15s with a thin body and lingering sourness. The improvement in structure here is real even if the flavor didn't feel like a jump forward yet.",
      "recommendationAction": "Drop 1.5 clicks to grind 27.5.",
      "recommendationReason": "You're still 1 second outside the Normal floor and the lingering brightness confirms you need a bit more extraction. Your own instinct to go 1.5–2 clicks finer is correct — 27.5 puts you in range to hit 25–30s without overcorrecting. This bean is dense enough that a 1.5-click move should be meaningful but not dramatic at this stage.",
      "beanContext": "Limoncello and blackberry are high-acid flavor notes — some brightness is expected and correct on this bean. But 'lingering' acidity is the diagnostic word: quick-fading brightness is bean character, persistence is extraction. At 12 days post-roast, you're right at the edge of this light roast's peak window (starts ~14 days), so the bean itself may still be contributing slightly to the extraction resistance and brightness. One more day of rest before your next shot wouldn't hurt, but grind finer first — that's the dominant variable right now.",
      "progressNote": "Three shots in, you've moved from 15–16s at grind 40 and 34 to 24s at grind 29. That's a significant calibration jump executed cleanly. The trajectory is right — you're closing in on the Normal window with one more adjustment.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\"summary\":\"Shot 81 at grind 29 finally broke the Very Fast wall — 24 seconds, Normal ratio, even bilateral flow from about 12 seconds in. That's real progress after two 15–16s shots at 34 and 40. The lingering brightness you noted is consistent with still being slightly under-extracted, and at 12 days this bean is right at the edge of its rest window, which compounds that impression.\",\"numbers\":\"Time is Fast (24s) — just outside the Normal floor at 25s, so still slightly under-extracted but meaningfully improved. Brew ratio 2.24 is Normal. Your grinder retention was 0.4g this shot, notably higher than your usual ~0.14g — adjusted dose was 17.6g, which is fine. Lag was 10g, which is your Bambino's normal operating range. The lingering acidity in your notes aligns with the Fast time read and is the clearest extraction signal here. You mentioned preferring the taste of the previous shots — worth noting that the grind 34 shot had a balanced 3 and a 4-star quality rating too, but that was at 15s with a thin body and lingering sourness. The improvement in structure here is real even if the flavor didn't feel like a jump forward yet.\",\"recommendation\":{\"action\":\"Drop 1.5 clicks to grind 27.5.\",\"reason\":\"You're still 1 second outside the Normal floor and the lingering brightness confirms you need a bit more extraction. Your own instinct to go 1.5–2 clicks finer is correct — 27.5 puts you in range to hit 25–30s without overcorrecting. This bean is dense enough that a 1.5-click move should be meaningful but not dramatic at this stage.\"},\"bean_context\":\"Limoncello and blackberry are high-acid flavor notes — some brightness is expected and correct on this bean. But 'lingering' acidity is the diagnostic word: quick-fading brightness is bean character, persistence is extraction. At 12 days post-roast, you're right at the edge of this light roast's peak window (starts ~14 days), so the bean itself may still be contributing slightly to the extraction resistance and brightness. One more day of rest before your next shot wouldn't hurt, but grind finer first — that's the dominant variable right now.\",\"progress_note\":\"Three shots in, you've moved from 15–16s at grind 40 and 34 to 24s at grind 29. That's a significant calibration jump executed cleanly. The trajectory is right — you're closing in on the Normal window with one more adjustment.\",\"overall_verdict\":\"needs_work\",\"is_stable\":false,\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Metric Colombia Carlos Efrain Cortes — grind 29 hit 24s, just outside Normal floor. Lingering brightness confirms still slightly under-extracted. Drop to grind 27.5 next shot. Bean at 12 days, light roast peak starts ~14 days — borderline fresh, may add to extraction resistance.\",\"known_patterns\":\"Bambino drip lag 6–10g (use 7g as working figure) — stop pump 7g before target yield. WDT: 30lb tamp, 45s deliberate edge-to-center coverage; hard cap WDT at 30s on sensitive beans. Over-agitation confirmed recurring channel mechanism. Right-side edge coverage is active variable to monitor. Asymmetric mid-shot flow = WDT distribution issue, not grind. Late bilateral drip near pull end = puck breakdown, not channeling. Stir espresso before tasting — surface reads sour on bright beans even when extraction is solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular bean. Do not assume prior dialed-in grind applies across bags of same bean.\\n\\nMaomi reference: grind 32.5.\\n\\nÁndale bag 1: grind 33 best (31s, balance 2, good with milk). Bag 2 dials in at grind 28, 18g dose, 37–41g yield = balance 4, 4 stars. Bags behave differently — do not transfer bag 1 settings.\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3, 4 stars. Yield control critical — 41g yield caused regression.\\n\\nBrazil Cerrado (natural): entire range 28–41 choked/60s. Do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed across three shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33 across 5 shots. Light roast density dominant — decaf processing does not offset it. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 40, 17–17.7g dose = balance 3–5, dialed in. Grind 34–37.5 all slow with partial channel dropout. Ristretto: 24–28g yield, grind 40, lag compensation confirmed, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nColombia Carlos Efrain Cortes (light, washed, Nariño, 2015m): grind 40 and 34 both 15–16s Very Fast. Grind 29 = 24s Fast, Normal ratio, even flow — real progress. Still lingering brightness. Grind 27.5 is next target. High-altitude light roasts require dramatically finer grind than any previous bean.\",\"last_recommendation\":\"Metric Colombia Carlos Efrain Cortes: drop to grind 27.5. Grind 29 hit 24s — just outside Normal floor, lingering brightness confirms still slightly under-extracted. 1.5-click drop should close the gap without overcorrecting.\",\"last_analysis_date\":\"2026-07-18T13:40:00.000Z\",\"last_analyzed_shot_id\":109,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":14,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"},{\"bag_id\":8,\"name\":\"Metric Coffee — Colombia Carlos Efrain Cortes\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":29,\"shots_pulled\":3,\"profile\":\"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\",\"notes\":\"Grind 40 and 34 both 15–16s Very Fast. Grind 29 = 24s, even flow, still lingering brightness. Next: grind 27.5. Dense high-altitude light roast — finer than any previous bean.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"}]}}",
      "createdAt": "2026-07-18 14:01:18"
    },
    {
      "id": 63,
      "shotId": 109,
      "analysisMode": "recent",
      "summary": "Grind 29 hit 24s and a Normal ratio — real measurable progress from the 15–16s shots at grind 34 and 40. Flow was even across both spouts, which is a clean puck prep result. The lingering brightness and fruity notes confirm under-extraction is still present, and the lower quality rating versus previous shots tracks — numbers improved but taste didn't land yet. Worth noting the bean is 12 days off roast; light roasts typically peak around 14 days, so some extraction resistance is still baked in.",
      "numbers": "Time is Fast (24s) — just short of the Normal floor at 25s. Ratio is Normal at 2.24. The lag_g field shows 10g this shot, which is on the higher end of normal Bambino drip behavior — no action needed. Balance 3 (Slightly Sour) matches what the numbers predict: slightly under-extracted. Notes confirm the sourness lingers, which is the real extraction flag here, not just bean character brightness.",
      "recommendationAction": "Drop to grind 27.5 as planned — 1.5 clicks finer from 29.",
      "recommendationReason": "24s is one step below Normal. Lingering brightness with fruity notes on a washed light roast is consistent under-extraction, not bean character. The 1.5-click drop is the right calibrated move — not so aggressive that you overshoot into choking territory, but enough to close the last gap. Bean freshness at day 12 may still be adding resistance; if 27.5 still runs fast, hold the grind and let the bag rest to day 14 before adjusting further.",
      "beanContext": "Colombia Carlos Efrain Cortes is a high-altitude (2015m) washed light roast — Limoncello and Blackberry notes will read bright by design, but lingering acidity after stirring is still an extraction signal on this bean. At 12 days post-roast, you're right at the edge of the estimated peak window for a washed light roast (~14 days). The slight extraction resistance you're fighting may ease in 2 days naturally. Grind 27.5 is the right next step — just keep day count in mind if results stay stubborn.",
      "progressNote": "Three shots in and you've gone from 15s to 24s — that's a significant calibration arc in a short run. Even flow this shot confirms puck prep is clean. The gap now is purely extraction depth, not technique.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\"summary\":\"Grind 29 hit 24s and a Normal ratio — real measurable progress from the 15–16s shots at grind 34 and 40. Flow was even across both spouts, which is a clean puck prep result. The lingering brightness and fruity notes confirm under-extraction is still present, and the lower quality rating versus previous shots tracks — numbers improved but taste didn't land yet. Worth noting the bean is 12 days off roast; light roasts typically peak around 14 days, so some extraction resistance is still baked in.\",\n\"numbers\":\"Time is Fast (24s) — just short of the Normal floor at 25s. Ratio is Normal at 2.24. The lag_g field shows 10g this shot, which is on the higher end of normal Bambino drip behavior — no action needed. Balance 3 (Slightly Sour) matches what the numbers predict: slightly under-extracted. Notes confirm the sourness lingers, which is the real extraction flag here, not just bean character brightness.\",\n\"recommendation\":{\"action\":\"Drop to grind 27.5 as planned — 1.5 clicks finer from 29.\",\"reason\":\"24s is one step below Normal. Lingering brightness with fruity notes on a washed light roast is consistent under-extraction, not bean character. The 1.5-click drop is the right calibrated move — not so aggressive that you overshoot into choking territory, but enough to close the last gap. Bean freshness at day 12 may still be adding resistance; if 27.5 still runs fast, hold the grind and let the bag rest to day 14 before adjusting further.\"},\"bean_context\":\"Colombia Carlos Efrain Cortes is a high-altitude (2015m) washed light roast — Limoncello and Blackberry notes will read bright by design, but lingering acidity after stirring is still an extraction signal on this bean. At 12 days post-roast, you're right at the edge of the estimated peak window for a washed light roast (~14 days). The slight extraction resistance you're fighting may ease in 2 days naturally. Grind 27.5 is the right next step — just keep day count in mind if results stay stubborn.\",\"progress_note\":\"Three shots in and you've gone from 15s to 24s — that's a significant calibration arc in a short run. Even flow this shot confirms puck prep is clean. The gap now is purely extraction depth, not technique.\",\"overall_verdict\":\"needs_work\",\"is_stable\":false,\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Metric Colombia Carlos Efrain Cortes — grind 29 hit 24s Fast, Normal ratio, even flow. Lingering brightness confirms still under-extracted. Drop to grind 27.5 next shot. Bean at 12 days — light roast peak starts ~14 days, some extraction resistance may ease naturally in 2 days.\",\"known_patterns\":\"Bambino drip lag 6–10g (use 7g as working figure) — stop pump 7g before target yield. WDT: 30lb tamp, 45s deliberate edge-to-center coverage; hard cap WDT at 30s on sensitive beans. Over-agitation confirmed recurring channel mechanism. Right-side edge coverage is active variable to monitor. Asymmetric mid-shot flow = WDT distribution issue, not grind. Late bilateral drip near pull end = puck breakdown, not channeling. Stir espresso before tasting — surface reads sour on bright beans even when extraction is solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular bean. Do not assume prior dialed-in grind applies across bags of same bean.\\n\\nMaomi reference: grind 32.5.\\n\\nÁndale bag 1: grind 33 best (31s, balance 2, good with milk). Bag 2 dials in at grind 28, 18g dose, 37–41g yield = balance 4, 4 stars. Bags behave differently — do not transfer bag 1 settings.\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3, 4 stars. Yield control critical — 41g yield caused regression.\\n\\nBrazil Cerrado (natural): entire range 28–41 choked/60s. Do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed across three shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33 across 5 shots. Light roast density dominant — decaf processing does not offset it. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 40, 17–17.7g dose = balance 3–5, dialed in. Grind 34–37.5 all slow with partial channel dropout. Ristretto: 24–28g yield, grind 40, lag compensation confirmed, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nColombia Carlos Efrain Cortes (light, washed, Nariño, 2015m): grind 40 and 34 both 15–16s Very Fast. Grind 29 = 24s Fast, Normal ratio, even flow — real progress. Still lingering brightness. Grind 27.5 is next target. High-altitude light roasts require dramatically finer grind than any previous bean.\",\"last_recommendation\":\"Metric Colombia Carlos Efrain Cortes: drop to grind 27.5. Grind 29 hit 24s Fast — just outside Normal floor, lingering brightness confirms still under-extracted. 1.5-click drop should close the gap without overcorrecting.\",\"last_analysis_date\":\"2026-07-18T13:40:00.000Z\",\"last_analyzed_shot_id\":109,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":14,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"},{\"bag_id\":8,\"name\":\"Metric Coffee — Colombia Carlos Efrain Cortes\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":27.5,\"shots_pulled\":3,\"profile\":\"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\",\"notes\":\"Grind 40 and 34 both 15–16s Very Fast. Grind 29 = 24s, even flow, still lingering brightness. Next: grind 27.5. Dense high-altitude light roast — finer than any previous bean.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"}]}}",
      "createdAt": "2026-07-18 14:03:01"
    },
    {
      "id": 64,
      "shotId": 110,
      "analysisMode": "recent",
      "summary": "Grind 27.5 ran faster than grind 29 — 19s Very Fast vs. 24s — and tasted more sour with lingering acidity. Going finer made things worse, which is the diagnostic signal here: classic channeling behavior. Even, symmetric spout flow doesn't rule it out; a narrow channel can run fast and still look clean from the outside. The bean at 12 days on a light washed roast is also still slightly pre-peak, which adds real extraction resistance on top of any prep issue.",
      "numbers": "Time hit 19s Very Fast — outside the Normal floor by 6 seconds despite the finer grind. Ratio at 2.16 is Normal, so yield was fine. Balance dropped to 2 (Sour) and quality to 2 stars. The counterintuitive result — finer grind, faster shot, worse taste — almost always points to channeling: the water found a path and ignored the rest of the puck. Lag was 10g, which is at the upper end of normal for the Bambino but not a flag on its own.",
      "recommendationAction": "Hold grind 27.5. Before the next shot, slow your WDT down and pay deliberate attention to right-side edge coverage — full depth, consistent pace, 25–30 seconds. Do not change grind until you've confirmed one shot with clean prep at this setting.",
      "recommendationReason": "Finer grind producing a faster shot is the channeling signature. The grind isn't wrong — the puck prep may be the variable that broke down. Your known pattern is right-side WDT coverage as the active channel mechanism. Rule that out before moving the grind again. Additionally, at 12 days this bean is just shy of its estimated peak window (light washed ~14 days) — one more day of rest may also help puck stability.",
      "beanContext": "Limoncello and blackberry are high-acidity notes, so some brightness is expected — but lingering sourness at this extraction speed is real under-extraction, not bean character. At 12 days, a light washed bean from 2015m is likely still slightly too fresh; the peak window starts around day 14 for this profile. Two more days of rest could meaningfully reduce resistance and make the grind behave more predictably. The bean isn't doing anything wrong — it just isn't ready yet.",
      "progressNote": "Four shots in and you've correctly identified that this bean requires dramatically finer grind than anything previous — that's the right read. The finer-runs-faster result today is a useful data point, not a setback: it shifts the focus from grind to prep and freshness, which narrows the path forward.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\"summary\":\"Grind 27.5 ran faster than grind 29 — 19s Very Fast vs. 24s — and tasted more sour with lingering acidity. Going finer made things worse, which is the diagnostic signal here: classic channeling behavior. Even, symmetric spout flow doesn't rule it out; a narrow channel can run fast and still look clean from the outside. The bean at 12 days on a light washed roast is also still slightly pre-peak, which adds real extraction resistance on top of any prep issue.\",\"numbers\":\"Time hit 19s Very Fast — outside the Normal floor by 6 seconds despite the finer grind. Ratio at 2.16 is Normal, so yield was fine. Balance dropped to 2 (Sour) and quality to 2 stars. The counterintuitive result — finer grind, faster shot, worse taste — almost always points to channeling: the water found a path and ignored the rest of the puck. Lag was 10g, which is at the upper end of normal for the Bambino but not a flag on its own.\",\"recommendation\":{\"action\":\"Hold grind 27.5. Before the next shot, slow your WDT down and pay deliberate attention to right-side edge coverage — full depth, consistent pace, 25–30 seconds. Do not change grind until you've confirmed one shot with clean prep at this setting.\",\"reason\":\"Finer grind producing a faster shot is the channeling signature. The grind isn't wrong — the puck prep may be the variable that broke down. Your known pattern is right-side WDT coverage as the active channel mechanism. Rule that out before moving the grind again. Additionally, at 12 days this bean is just shy of its estimated peak window (light washed ~14 days) — one more day of rest may also help puck stability.\"},\"bean_context\":\"Limoncello and blackberry are high-acidity notes, so some brightness is expected — but lingering sourness at this extraction speed is real under-extraction, not bean character. At 12 days, a light washed bean from 2015m is likely still slightly too fresh; the peak window starts around day 14 for this profile. Two more days of rest could meaningfully reduce resistance and make the grind behave more predictably. The bean isn't doing anything wrong — it just isn't ready yet.\",\"progress_note\":\"Four shots in and you've correctly identified that this bean requires dramatically finer grind than anything previous — that's the right read. The finer-runs-faster result today is a useful data point, not a setback: it shifts the focus from grind to prep and freshness, which narrows the path forward.\",\"overall_verdict\":\"needs_work\",\"is_stable\":false,\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Colombia Carlos Efrain Cortes — grind 27.5 ran faster than grind 29 (19s vs 24s) with more sourness. Channeling suspected despite even spout flow. Hold grind 27.5, fix WDT right-side edge coverage before next shot. Bean at 12 days, light washed peak starts ~14 days — 1–2 days rest may help.\",\"known_patterns\":\"Bambino drip lag 6–10g (use 7g as working figure) — stop pump 7g before target yield. WDT: 30lb tamp, 45s deliberate edge-to-center coverage; hard cap WDT at 30s on sensitive beans. Over-agitation confirmed recurring channel mechanism. Right-side edge coverage is active variable to monitor. Asymmetric mid-shot flow = WDT distribution issue, not grind. Late bilateral drip near pull end = puck breakdown, not channeling. Stir espresso before tasting — surface reads sour on bright beans even when extraction is solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular bean. Do not assume prior dialed-in grind applies across bags of same bean.\\n\\nMaomi reference: grind 32.5.\\n\\nÁndale bag 1: grind 33 best (31s, balance 2, good with milk). Bag 2 dials in at grind 28, 18g dose, 37–41g yield = balance 4, 4 stars. Bags behave differently — do not transfer bag 1 settings.\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3, 4 stars. Yield control critical — 41g yield caused regression.\\n\\nBrazil Cerrado (natural): entire range 28–41 choked/60s. Do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed across three shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33 across 5 shots. Light roast density dominant — decaf processing does not offset it. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 40, 17–17.7g dose = balance 3–5, dialed in. Grind 34–37.5 all slow with partial channel dropout. Ristretto: 24–28g yield, grind 40, lag compensation confirmed, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nColombia Carlos Efrain Cortes (light, washed, Nariño, 2015m): grind 40 and 34 both 15–16s Very Fast. Grind 29 = 24s, even flow, lingering brightness. Grind 27.5 = 19s Very Fast — finer ran faster, channeling suspected. Even spout flow does not rule out channeling. Hold 27.5, fix WDT right-side coverage before adjusting grind. Bean pre-peak at 12 days — wait until day 14.\",\"last_recommendation\":\"Colombia Carlos Efrain Cortes: hold grind 27.5. Finer-ran-faster is the channeling signature — fix WDT right-side edge coverage before changing grind. Bean at 12 days, pre-peak for light washed; 1–2 days rest recommended.\",\"last_analysis_date\":\"2026-07-18T21:02:00.000Z\",\"last_analyzed_shot_id\":110,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":14,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"},{\"bag_id\":8,\"name\":\"Metric Coffee — Colombia Carlos Efrain Cortes\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":27.5,\"shots_pulled\":4,\"profile\":\"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\",\"notes\":\"40 and 34 both 15–16s. Grind 29=24s, even flow, lingering brightness. Grind 27.5=19s — finer ran faster, channeling suspected. Hold 27.5, fix WDT right-side coverage. Pre-peak at 12 days; wait until day 14.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"}]}}",
      "createdAt": "2026-07-18 21:30:35"
    },
    {
      "id": 65,
      "shotId": 111,
      "analysisMode": "recent",
      "summary": "Shot 83 at grind 27 gave you 23 seconds and a 2.22 ratio — Fast and Normal — with balance 4 and 4 stars. After four consecutive Very Fast shots, this is a meaningful step forward. The flow note tells the real story: early drip on the left spout that recovered, followed by the right spout accelerating. That's partial channeling — not catastrophic, but still present. Taste came out well balanced with no lingering flavors, which is the best result on this bean so far.",
      "numbers": "Time is Fast (23s), which is outside the Normal range but a significant improvement over the 19s you logged yesterday. Ratio 2.22 is Normal. Balance 4 is your first balanced shot on this bean. The one flag: your lag was logged at 10g — that's on the high end for the Bambino but within normal behavior for this machine, so no concern there. The taste result (balance 4, no linger) is more informative than the time number here — extraction landed where it needed to despite the speed.",
      "recommendationAction": "Go 1 click finer: grind 26.",
      "recommendationReason": "The left-drip-then-right-acceleration flow pattern is a mild channel signature — the puck is still not distributing perfectly, but it's holding together well enough to produce a balanced cup. Grind 27 is producing a Fast shot; one more click finer should push you into the Normal range (25–35s) and give the puck more resistance to resist that asymmetric flow. Keep the same deliberate edge-to-center WDT focus — the improved flow vs. the 27.5 shot suggests the right-side coverage is better. Bean is at 13 days on a light washed roast, sitting right at the edge of its peak window, so conditions are close to optimal.",
      "beanContext": "Limoncello, Blackberry, Cocoa on a high-altitude Nariño washed light — this bean's flavor profile means some brightness is always going to be present. Balance 4 with no lingering flavors at 13 days is right on schedule; the peak window estimate of 14+ days seems slightly conservative for what you're experiencing. The previous grind 29 shot (24s, balance 3) tasted bright and lingering — today's grind 27 shot at 23s tasted balanced, which tells you extraction quality has improved even though time is similar. Finer is working.",
      "progressNote": "Four straight Very Fast shots, then grind 27 breaks the streak with your first balanced result on this bean. The trend is clear — keep going finer.",
      "overallVerdict": "good",
      "isStable": false,
      "rawResponse": "{\"summary\":\"Shot 83 at grind 27 gave you 23 seconds and a 2.22 ratio — Fast and Normal — with balance 4 and 4 stars. After four consecutive Very Fast shots, this is a meaningful step forward. The flow note tells the real story: early drip on the left spout that recovered, followed by the right spout accelerating. That's partial channeling — not catastrophic, but still present. Taste came out well balanced with no lingering flavors, which is the best result on this bean so far.\",\n\n\"numbers\": \"Time is Fast (23s), which is outside the Normal range but a significant improvement over the 19s you logged yesterday. Ratio 2.22 is Normal. Balance 4 is your first balanced shot on this bean. The one flag: your lag was logged at 10g — that's on the high end for the Bambino but within normal behavior for this machine, so no concern there. The taste result (balance 4, no linger) is more informative than the time number here — extraction landed where it needed to despite the speed.\",\n\n\"recommendation\": {\"action\": \"Go 1 click finer: grind 26.\", \"reason\": \"The left-drip-then-right-acceleration flow pattern is a mild channel signature — the puck is still not distributing perfectly, but it's holding together well enough to produce a balanced cup. Grind 27 is producing a Fast shot; one more click finer should push you into the Normal range (25–35s) and give the puck more resistance to resist that asymmetric flow. Keep the same deliberate edge-to-center WDT focus — the improved flow vs. the 27.5 shot suggests the right-side coverage is better. Bean is at 13 days on a light washed roast, sitting right at the edge of its peak window, so conditions are close to optimal.\"},\n\n\"bean_context\": \"Limoncello, Blackberry, Cocoa on a high-altitude Nariño washed light — this bean's flavor profile means some brightness is always going to be present. Balance 4 with no lingering flavors at 13 days is right on schedule; the peak window estimate of 14+ days seems slightly conservative for what you're experiencing. The previous grind 29 shot (24s, balance 3) tasted bright and lingering — today's grind 27 shot at 23s tasted balanced, which tells you extraction quality has improved even though time is similar. Finer is working.\",\n\n\"progress_note\": \"Four straight Very Fast shots, then grind 27 breaks the streak with your first balanced result on this bean. The trend is clear — keep going finer.\",\n\n\"overall_verdict\": \"good\",\n\"is_stable\": false,\n\"updated_coaching_state\": {\"experience_level\": \"beginner\", \"current_focus\": \"Colombia Carlos Efrain Cortes — grind 27 gave first balanced shot (balance 4, 4 stars, 23s). Partial channel still present (left drip recovered, right spout accelerated). Try grind 26 next. Bean at 13 days, entering peak window.\", \"known_patterns\": \"Bambino drip lag 6–10g (use 7g as working figure) — stop pump 7g before target yield. WDT: 30lb tamp, 45s deliberate edge-to-center coverage; hard cap WDT at 30s on sensitive beans. Over-agitation confirmed recurring channel mechanism. Right-side edge coverage is active variable to monitor. Asymmetric mid-shot flow = WDT distribution issue, not grind. Late bilateral drip near pull end = puck breakdown, not channeling. Stir espresso before tasting — surface reads sour on bright beans even when extraction is solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular bean. Do not assume prior dialed-in grind applies across bags of same bean.\\n\\nMaomi reference: grind 32.5.\\n\\nÁndale bag 1: grind 33 best (31s, balance 2, good with milk). Bag 2 dials in at grind 28, 18g dose, 37–41g yield = balance 4, 4 stars. Bags behave differently — do not transfer bag 1 settings.\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3, 4 stars. Yield control critical — 41g yield caused regression.\\n\\nBrazil Cerrado (natural): entire range 28–41 choked/60s. Do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed across three shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33 across 5 shots. Light roast density dominant — decaf processing does not offset it. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 40, 17–17.7g dose = balance 3–5, dialed in. Grind 34–37.5 all slow with partial channel dropout. Ristretto: 24–28g yield, grind 40, lag compensation confirmed, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nColombia Carlos Efrain Cortes (light, washed, Nariño, 2015m): grind 40 and 34 both 15–16s Very Fast. Grind 29=24s, lingering brightness. Grind 27.5=19s Very Fast — finer ran faster, channeling suspected. Grind 27=23s Fast, balance 4, no linger — first balanced shot. Partial channel still present (asymmetric spout behavior). Try grind 26 next.\", \"last_recommendation\": \"Colombia Carlos Efrain Cortes: go 1 click finer to grind 26. Grind 27 produced first balanced shot but partial channeling still present. Same deliberate edge-to-center WDT. Bean entering peak window at 13 days.\", \"last_analysis_date\": \"2026-07-19T14:44:00.000Z\", \"last_analyzed_shot_id\": 111, \"bean_contexts\": [{\"bag_id\": 4, \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\", \"status\": \"dialed_in\", \"dialed_in_grind\": 42, \"dialed_in_yield_g\": 38, \"current_grind\": 42, \"shots_pulled\": 10, \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\", \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"}, {\"bag_id\": 2, \"name\": \"Luckycat — Maomi Blend\", \"status\": \"dialing_in\", \"dialed_in_grind\": null, \"dialed_in_yield_g\": null, \"current_grind\": 32.5, \"shots_pulled\": 7, \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\", \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"}, {\"bag_id\": 3, \"name\": \"Metric — Decaf Huila Pink Bourbon\", \"status\": \"dialing_in\", \"dialed_in_grind\": 28, \"dialed_in_yield_g\": 37, \"current_grind\": 28, \"shots_pulled\": 9, \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\", \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"}, {\"bag_id\": 5, \"name\": \"Metric — Ándale Market (bag 2)\", \"status\": \"dialed_in\", \"dialed_in_grind\": 28, \"dialed_in_yield_g\": 38.5, \"current_grind\": 28, \"shots_pulled\": 9, \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\", \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"}, {\"bag_id\": 6, \"name\": \"Coffee Lab & Roasters — Huila Decaf\", \"status\": \"dialing_in\", \"dialed_in_grind\": null, \"dialed_in_yield_g\": null, \"current_grind\": 38, \"shots_pulled\": 6, \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\", \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"}, {\"bag_id\": 7, \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\", \"status\": \"dialed_in\", \"dialed_in_grind\": 40, \"dialed_in_yield_g\": 38, \"current_grind\": 40, \"shots_pulled\": 14, \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\", \"notes\": \"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"}, {\"bag_id\": 8, \"name\": \"Metric Coffee — Colombia Carlos Efrain Cortes\", \"status\": \"dialing_in\", \"dialed_in_grind\": null, \"dialed_in_yield_g\": null, \"current_grind\": 27, \"shots_pulled\": 5, \"profile\": \"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\", \"notes\": \"40 and 34 both 15–16s. Grind 29=24s, lingering brightness. Grind 27.5=19s Very Fast, channeling suspected. Grind 27=23s, balance 4, no linger — first balanced shot. Partial channel still present. Try grind 26 next.\"}, {\"bag_id\": 1, \"name\": \"Metric — Ándale Market\", \"status\": \"finished\", \"dialed_in_grind\": null, \"dialed_in_yield_g\": null, \"current_grind\": null, \"shots_pulled\": 12, \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\", \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"}]}}",
      "createdAt": "2026-07-19 15:36:23"
    },
    {
      "id": 66,
      "shotId": 112,
      "analysisMode": "recent",
      "summary": "Grind 26 delivered a clean, balanced shot — balance 4, 4 stars, even flow throughout with a natural color transition from dark to light brown. No asymmetric spout behavior reported this time, which is a meaningful improvement over the partial channel at grind 27. The bean's limoncello/blackberry character isn't clicking for Diego personally, but the extraction is landing where it should.",
      "numbers": "Shot time 24s (Fast) with a Normal ratio at 2.2. Both are consistent with previous best shot at grind 27 — slightly slower pace, same taste outcome, but with cleaner flow. The 10g drip lag is normal for the Bambino. Taste matches numbers: balanced, no linger, which is exactly what a well-extracted light washed bean should produce.",
      "recommendationAction": "Lock grind 26, dose 17.5g, target 36–41g yield.",
      "recommendationReason": "Two consecutive balanced shots with no lingering sourness confirms this is the dialed-in window. Flow is the cleanest it's been on this bean. Hold these parameters.",
      "beanContext": "At 14 days post-roast, this bean is solidly in its peak window, and the stability shows — cleaner flow and consistent extraction across back-to-back shots. The limoncello/blackberry/cocoa profile of this high-elevation Nariño is doing what it's supposed to do; if the notes aren't landing for Diego's palate, that's the bean, not the extraction. Worth noting for future reference when evaluating bright, high-acidity single origins from this altitude range.",
      "progressNote": "Flow is the cleanest it's been on this bean — even throughout with no spout asymmetry, a real improvement from the partial channeling at grind 27. The dialing-in arc on this challenging light roast (40 → 34 → 29 → 27.5 → 27 → 26) is a good example of working systematically through a dense bean.",
      "overallVerdict": "good",
      "isStable": true,
      "rawResponse": "{\"summary\":\"Grind 26 delivered a clean, balanced shot — balance 4, 4 stars, even flow throughout with a natural color transition from dark to light brown. No asymmetric spout behavior reported this time, which is a meaningful improvement over the partial channel at grind 27. The bean's limoncello/blackberry character isn't clicking for Diego personally, but the extraction is landing where it should.\",\n\n\"numbers\":\"Shot time 24s (Fast) with a Normal ratio at 2.2. Both are consistent with previous best shot at grind 27 — slightly slower pace, same taste outcome, but with cleaner flow. The 10g drip lag is normal for the Bambino. Taste matches numbers: balanced, no linger, which is exactly what a well-extracted light washed bean should produce.\",\n\n\"recommendation\":{\"action\":\"Lock grind 26, dose 17.5g, target 36–41g yield.\",\"reason\":\"Two consecutive balanced shots with no lingering sourness confirms this is the dialed-in window. Flow is the cleanest it's been on this bean. Hold these parameters.\"},\n\n\"bean_context\":\"At 14 days post-roast, this bean is solidly in its peak window, and the stability shows — cleaner flow and consistent extraction across back-to-back shots. The limoncello/blackberry/cocoa profile of this high-elevation Nariño is doing what it's supposed to do; if the notes aren't landing for Diego's palate, that's the bean, not the extraction. Worth noting for future reference when evaluating bright, high-acidity single origins from this altitude range.\",\n\n\"progress_note\":\"Flow is the cleanest it's been on this bean — even throughout with no spout asymmetry, a real improvement from the partial channeling at grind 27. The dialing-in arc on this challenging light roast (40 → 34 → 29 → 27.5 → 27 → 26) is a good example of working systematically through a dense bean.\",\n\n\"overall_verdict\":\"good\",\n\n\"is_stable\":true,\n\n\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Colombia Carlos Efrain Cortes — dialed in at grind 26, balance 4, 4 stars, 24s. Flow clean and even. Bean notes not to Diego's taste preference but extraction is solid.\",\"known_patterns\":\"Bambino drip lag 6–10g (use 7g as working figure) — stop pump 7g before target yield. WDT: 30lb tamp, 45s deliberate edge-to-center coverage; hard cap WDT at 30s on sensitive beans. Over-agitation confirmed recurring channel mechanism. Right-side edge coverage is active variable to monitor. Asymmetric mid-shot flow = WDT distribution issue, not grind. Late bilateral drip near pull end = puck breakdown, not channeling. Stir espresso before tasting — surface reads sour on bright beans even when extraction is solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular bean. Do not assume prior dialed-in grind applies across bags of same bean.\\n\\nMaomi reference: grind 32.5.\\n\\nÁndale bag 1: grind 33 best (31s, balance 2, good with milk). Bag 2 dials in at grind 28, 18g dose, 37–41g yield = balance 4, 4 stars. Bags behave differently — do not transfer bag 1 settings.\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3, 4 stars. Yield control critical — 41g yield caused regression.\\n\\nBrazil Cerrado (natural): entire range 28–41 choked/60s. Do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed across three shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33 across 5 shots. Light roast density dominant — decaf processing does not offset it. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 40, 17–17.7g dose = balance 3–5, dialed in. Grind 34–37.5 all slow with partial channel dropout. Ristretto: 24–28g yield, grind 40, lag compensation confirmed, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nColombia Carlos Efrain Cortes (light, washed, Nariño, 2015m): grind 40 and 34 both 15–16s Very Fast. Grind 29=24s, lingering brightness. Grind 27.5=19s Very Fast — finer ran faster, channeling suspected. Grind 27=23s Fast, balance 4, partial channel (asymmetric spouts). Grind 26=24s Fast, balance 4, clean even flow — dialed in. Palate note: bean profile not to Diego's taste despite solid extraction.\",\"last_recommendation\":\"Colombia Carlos Efrain Cortes: locked at grind 26, dose 17.5g, target 36–41g yield. Dialed in — hold parameters.\",\"last_analysis_date\":\"2026-07-20T16:25:00.000Z\",\"last_analyzed_shot_id\":112,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":14,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"},{\"bag_id\":8,\"name\":\"Metric Coffee — Colombia Carlos Efrain Cortes\",\"status\":\"dialed_in\",\"dialed_in_grind\":26,\"dialed_in_yield_g\":38.5,\"current_grind\":26,\"shots_pulled\":6,\"profile\":\"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\",\"notes\":\"Dialed in: grind 26, 17.5g dose, 36–41g yield, balance 4, 4 stars. Profile not to Diego's taste despite solid extraction — note for future bean selection.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"}]}}",
      "createdAt": "2026-07-21 04:54:59"
    },
    {
      "id": 67,
      "shotId": 113,
      "analysisMode": "recent",
      "summary": "Shot 85, grind 25.5, 17.5g dose, 41.4g yield in 24 seconds. Balance dropped to 3 (Slightly Sour) but acidity isn't lingering — flow was constant and even across both spouts throughout. You went one click finer than the dialed-in grind 26, and the yield ran longer than your 35g target by 6.4g. The shot is still a clean pull, just slightly bright and slightly overlong on yield.",
      "numbers": "Time is Fast at 24s, same as your dialed-in shot at grind 26. Ratio is Normal at 2.37 — higher than your previous 2.2 because yield ran to 41.4g. Balance stepped back from 4 to 3, which tracks with the longer pull diluting body and letting brightness through. Notably, grinder retention shows 0g this shot — no adjusted dose correction needed. The 11g lag is on the high end; with a 35g target you'd want to stop the pump around 24g, which likely contributed to the yield overshoot.",
      "recommendationAction": "Return to grind 26 and stop the pump at 28–29g to hit your 35–37g target yield after lag.",
      "recommendationReason": "Going finer to 25.5 didn't slow the shot — still 24s — and the longer yield pushed balance back to 3. The dialed-in grind 26 at controlled yield was your balance 4 shot. The real variable here was yield control: 11g lag means stopping much earlier than feels natural. Grind 25.5 isn't giving you anything grind 26 didn't, so go back and tighten the stop point instead.",
      "beanContext": "Limoncello and blackberry are bright notes by design — the slight sourness at balance 3 with no linger is consistent with bean character, not a flaw. At 15 days post-roast this is solidly in peak window for a light washed bean. No freshness issues. The extraction is sound; the brightness you're tasting is the bean.",
      "progressNote": "Your last two shots at grind 26 and 27 both landed balance 4 with clean finishes — the core recipe is solid. This shot confirmed that going finer doesn't add extraction speed on this bean; yield discipline is the remaining variable to nail.",
      "overallVerdict": "good",
      "isStable": false,
      "rawResponse": "{\"summary\":\"Shot 85, grind 25.5, 17.5g dose, 41.4g yield in 24 seconds. Balance dropped to 3 (Slightly Sour) but acidity isn't lingering — flow was constant and even across both spouts throughout. You went one click finer than the dialed-in grind 26, and the yield ran longer than your 35g target by 6.4g. The shot is still a clean pull, just slightly bright and slightly overlong on yield.\",\n\n\"numbers\":\"Time is Fast at 24s, same as your dialed-in shot at grind 26. Ratio is Normal at 2.37 — higher than your previous 2.2 because yield ran to 41.4g. Balance stepped back from 4 to 3, which tracks with the longer pull diluting body and letting brightness through. Notably, grinder retention shows 0g this shot — no adjusted dose correction needed. The 11g lag is on the high end; with a 35g target you'd want to stop the pump around 24g, which likely contributed to the yield overshoot.\",\n\n\"recommendation\":{\"action\":\"Return to grind 26 and stop the pump at 28–29g to hit your 35–37g target yield after lag.\",\"reason\":\"Going finer to 25.5 didn't slow the shot — still 24s — and the longer yield pushed balance back to 3. The dialed-in grind 26 at controlled yield was your balance 4 shot. The real variable here was yield control: 11g lag means stopping much earlier than feels natural. Grind 25.5 isn't giving you anything grind 26 didn't, so go back and tighten the stop point instead.\"},\n\n\"bean_context\":\"Limoncello and blackberry are bright notes by design — the slight sourness at balance 3 with no linger is consistent with bean character, not a flaw. At 15 days post-roast this is solidly in peak window for a light washed bean. No freshness issues. The extraction is sound; the brightness you're tasting is the bean.\",\n\n\"progress_note\":\"Your last two shots at grind 26 and 27 both landed balance 4 with clean finishes — the core recipe is solid. This shot confirmed that going finer doesn't add extraction speed on this bean; yield discipline is the remaining variable to nail.\",\n\n\"overall_verdict\":\"good\",\n\n\"is_stable\":false,\n\n\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Colombia Carlos Efrain Cortes — return to grind 26, tighten yield control. Stop pump at 28–29g to compensate for 11g lag and hit 35–37g target.\",\"known_patterns\":\"Bambino drip lag 6–10g (use 7g as working figure) — stop pump 7g before target yield. This bean showing 11g lag — stop pump earlier than usual. WDT: 30lb tamp, 45s deliberate edge-to-center coverage; hard cap WDT at 30s on sensitive beans. Over-agitation confirmed recurring channel mechanism. Right-side edge coverage is active variable to monitor. Asymmetric mid-shot flow = WDT distribution issue, not grind. Late bilateral drip near pull end = puck breakdown, not channeling. Stir espresso before tasting — surface reads sour on bright beans even when extraction is solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular bean. Do not assume prior dialed-in grind applies across bags of same bean.\\n\\nMaomi reference: grind 32.5.\\n\\nÁndale bag 1: grind 33 best (31s, balance 2, good with milk). Bag 2 dials in at grind 28, 18g dose, 37–41g yield = balance 4, 4 stars. Bags behave differently — do not transfer bag 1 settings.\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3, 4 stars. Yield control critical — 41g yield caused regression.\\n\\nBrazil Cerrado (natural): entire range 28–41 choked/60s. Do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed across three shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33 across 5 shots. Light roast density dominant — decaf processing does not offset it. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 40, 17–17.7g dose = balance 3–5, dialed in. Grind 34–37.5 all slow with partial channel dropout. Ristretto: 24–28g yield, grind 40, lag compensation confirmed, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nColombia Carlos Efrain Cortes (light, washed, Nariño, 2015m): grind 40 and 34 both 15–16s Very Fast. Grind 29=24s, lingering brightness. Grind 27.5=19s Very Fast — finer ran faster, channeling suspected. Grind 27=23s Fast, balance 4, partial channel (asymmetric spouts). Grind 26=24s Fast, balance 4, clean even flow — dialed in. Grind 25.5=24s Fast, balance 3 — no improvement over 26, yield ran long. Palate note: bean profile not to Diego's taste despite solid extraction. Lag on this bean running ~11g — pump stop discipline critical.\",\"last_recommendation\":\"Colombia Carlos Efrain Cortes: return to grind 26, stop pump at 28–29g to hit 35–37g yield after 11g lag.\",\"last_analysis_date\":\"2026-07-21T12:57:00.000Z\",\"last_analyzed_shot_id\":113,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":14,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"},{\"bag_id\":8,\"name\":\"Metric Coffee — Colombia Carlos Efrain Cortes\",\"status\":\"dialed_in\",\"dialed_in_grind\":26,\"dialed_in_yield_g\":38.5,\"current_grind\":25.5,\"shots_pulled\":7,\"profile\":\"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\",\"notes\":\"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"}]}}",
      "createdAt": "2026-07-21 15:46:04"
    },
    {
      "id": 68,
      "shotId": 114,
      "analysisMode": "recent",
      "summary": "First shot on the El Diviso Pink Bourbon — grind 26, 21 seconds, balance 2 (Sour), 3 stars. Right spout dripping and recovering through the shot points to a channel, and the lingering acidity confirms real extraction deficit here, not just bean brightness. Strawberry notes are on-profile, but the linger is the tell.",
      "numbers": "Time at 21s is Fast — on the edge of under-extracted and below your 25–30s target. Yield at 39.1g on an adjusted dose of 17.5g is a 2.23 ratio (Normal), but you were aiming for 35g — you ran 4.1g long, which with an 8g lag means the pump stopped around 31g. The combination of fast time, yield overshoot, and channeling-consistent flow all point the same direction: the puck isn't holding pressure evenly, so water found a path and blew through.",
      "recommendationAction": "Fix WDT coverage before touching grind. Next shot: slow your WDT to a deliberate edge-to-center pattern with explicit right-side passes, hard cap at 30 seconds. Hold grind 26. Stop pump at 27g to target 35g yield after the 8g lag.",
      "recommendationReason": "The right-side channel and lingering brightness are a puck prep signature, not a grind problem. Grind 26 is already your dialed-in setting from the Carlos Efrain Cortes — this is a new bean at a sensible starting point. Changing the grind now would add a variable on top of an unresolved technique issue. The yield overshoot also cost you time and diluted the shot — tighter pump stop discipline is the other fix. One thing at a time: prep first.",
      "beanContext": "El Diviso Pink Bourbon is a light washed Huila at 1,700–1,900 MASL — strawberry, honeycomb, jasmine. Day 16, squarely in the peak window, so freshness isn't the issue. This is a high-acidity, high-clarity bean similar in profile to the Carlos Efrain Cortes (also light washed, Nariño, high elevation), which is why grind 26 is a reasonable starting anchor — that bean dialed in there. The lingering acidity here is the key diagnostic: on a bean this bright, you need clean extraction to keep the acidity vibrant but short. The channel is preventing that. Expect this bean to have a narrow sweet spot — small grind changes will move the balance quickly.",
      "progressNote": "Your notes are doing exactly what they should — you caught the right-side drip pattern and correctly attributed it to puck prep rather than panicking about the grind. That diagnostic instinct is improving.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"First shot on the El Diviso Pink Bourbon — grind 26, 21 seconds, balance 2 (Sour), 3 stars. Right spout dripping and recovering through the shot points to a channel, and the lingering acidity confirms real extraction deficit here, not just bean brightness. Strawberry notes are on-profile, but the linger is the tell.\",\n  \"numbers\": \"Time at 21s is Fast — on the edge of under-extracted and below your 25–30s target. Yield at 39.1g on an adjusted dose of 17.5g is a 2.23 ratio (Normal), but you were aiming for 35g — you ran 4.1g long, which with an 8g lag means the pump stopped around 31g. The combination of fast time, yield overshoot, and channeling-consistent flow all point the same direction: the puck isn't holding pressure evenly, so water found a path and blew through.\",\n  \"recommendation\": {\n    \"action\": \"Fix WDT coverage before touching grind. Next shot: slow your WDT to a deliberate edge-to-center pattern with explicit right-side passes, hard cap at 30 seconds. Hold grind 26. Stop pump at 27g to target 35g yield after the 8g lag.\",\n    \"reason\": \"The right-side channel and lingering brightness are a puck prep signature, not a grind problem. Grind 26 is already your dialed-in setting from the Carlos Efrain Cortes — this is a new bean at a sensible starting point. Changing the grind now would add a variable on top of an unresolved technique issue. The yield overshoot also cost you time and diluted the shot — tighter pump stop discipline is the other fix. One thing at a time: prep first.\"\n  },\n  \"bean_context\": \"El Diviso Pink Bourbon is a light washed Huila at 1,700–1,900 MASL — strawberry, honeycomb, jasmine. Day 16, squarely in the peak window, so freshness isn't the issue. This is a high-acidity, high-clarity bean similar in profile to the Carlos Efrain Cortes (also light washed, Nariño, high elevation), which is why grind 26 is a reasonable starting anchor — that bean dialed in there. The lingering acidity here is the key diagnostic: on a bean this bright, you need clean extraction to keep the acidity vibrant but short. The channel is preventing that. Expect this bean to have a narrow sweet spot — small grind changes will move the balance quickly.\",\n  \"progress_note\": \"Your notes are doing exactly what they should — you caught the right-side drip pattern and correctly attributed it to puck prep rather than panicking about the grind. That diagnostic instinct is improving.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"El Diviso Pink Bourbon — grind 26 as baseline, fix right-side WDT coverage before any grind change. Stop pump at 27g to hit 35g yield after 8g lag.\",\n    \"known_patterns\": \"Bambino drip lag 6–10g (use 7g as working figure) — stop pump 7g before target yield. This bean showing 11g lag — stop pump earlier than usual. WDT: 30lb tamp, 45s deliberate edge-to-center coverage; hard cap WDT at 30s on sensitive beans. Over-agitation confirmed recurring channel mechanism. Right-side edge coverage is active variable to monitor. Asymmetric mid-shot flow = WDT distribution issue, not grind. Late bilateral drip near pull end = puck breakdown, not channeling. Stir espresso before tasting — surface reads sour on bright beans even when extraction is solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular bean. Do not assume prior dialed-in grind applies across bags of same bean.\\n\\nMaomi reference: grind 32.5.\\n\\nÁndale bag 1: grind 33 best (31s, balance 2, good with milk). Bag 2 dials in at grind 28, 18g dose, 37–41g yield = balance 4, 4 stars. Bags behave differently — do not transfer bag 1 settings.\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3, 4 stars. Yield control critical — 41g yield caused regression.\\n\\nBrazil Cerrado (natural): entire range 28–41 choked/60s. Do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed across three shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33 across 5 shots. Light roast density dominant — decaf processing does not offset it. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed, Honduras/Guatemala): grind 40, 17–17.7g dose = balance 3–5, dialed in. Grind 34–37.5 all slow with partial channel dropout. Ristretto: 24–28g yield, grind 40, lag compensation confirmed, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nColombia Carlos Efrain Cortes (light, washed, Nariño, 2015m): grind 40 and 34 both 15–16s Very Fast. Grind 29=24s, lingering brightness. Grind 27.5=19s Very Fast — finer ran faster, channeling suspected. Grind 27=23s Fast, balance 4, partial channel (asymmetric spouts). Grind 26=24s Fast, balance 4, clean even flow — dialed in. Grind 25.5=24s Fast, balance 3 — no improvement over 26, yield ran long. Palate note: bean profile not to Diego's taste despite solid extraction. Lag on this bean running ~11g — pump stop discipline critical.\\n\\nEl Diviso Pink Bourbon (light washed, Huila, 1700–1900m): shot 1 at grind 26 = 21s Fast, balance 2, lingering acidity, right-side channel. Grind 26 borrowed from Carlos Efrain Cortes as anchor. WDT puck prep suspected cause — fix before grind change. Lag 8g — stop pump at 27g for 35g yield.\",\n    \"last_recommendation\": \"El Diviso Pink Bourbon: hold grind 26, fix right-side WDT coverage, stop pump at 27g to hit 35g yield after 8g lag.\",\n    \"last_analysis_date\": \"2026-07-22T16:13:00.000Z\",\n    \"last_analyzed_shot_id\": 114,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 14,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"\n      },\n      {\n        \"bag_id\": 8,\n        \"name\": \"Metric Coffee — Colombia Carlos Efrain Cortes\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 26,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 25.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\",\n        \"notes\": \"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      },\n      {\n        \"bag_id\": 9,\n        \"name\": \"Metric — El Diviso Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 26,\n        \"shots_pulled\": 1,\n        \"profile\": \"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\n        \"notes\": \"Shot 1: grind 26, 21s Fast, balance 2, lingering acidity, right-side channel. Fix WDT before grind change. Lag 8g — stop pump at 27g.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-07-22 16:43:20"
    },
    {
      "id": 69,
      "shotId": 114,
      "analysisMode": "recent",
      "summary": "Shot 2 on El Diviso Pink Bourbon. Same right-side channeling from shot 1 — started even at 9 seconds then the right spout dropped and recovered repeatedly through the pull. 21 seconds is Fast and you overshot yield at 39g vs your 35g target. The lingering acidity is a real extraction flag, not just bean character.",
      "numbers": "Time is Fast at 21s — under-extracted territory. Yield came in at 39.1g off an adjusted 17.5g dose (ratio 2.23, Normal), but you were aiming for 35g — you stopped the pump at 31g, which should have landed at 35g after the 8g lag, but it ran 4g long. The Fast time + lingering sourness + right-side channeling are all pointing the same direction: the puck is failing before full extraction completes.",
      "recommendationAction": "Fix the right-side WDT coverage before anything else. Slow down your WDT on that right edge — make deliberate passes from the right edge inward, not just a random pattern. Hold grind 26 and target 35g yield (stop pump at ~27g). No grind change until you pull a shot with even bilateral flow.",
      "recommendationReason": "This is the same channel from shot 1 — grind is not the problem. A channel on the right spout cuts the effective extraction surface and creates the fast time and lingering sourness you're tasting. Changing grind now would be chasing a symptom. One clean puck = one clean data point.",
      "beanContext": "El Diviso is a high-elevation washed Pink Bourbon — strawberry, honeycomb, jasmine, high acidity. At 16 days post-roast it's squarely in its peak window, so freshness isn't a factor. The strawberry note in your tasting is on-profile, but the lingering acidity at balance 2 is extraction, not bean character — a well-extracted shot on this bean would be bright but not linger. The channel is masking what this bean can do.",
      "progressNote": "Two shots in, same channel same side — this is a puck prep pattern, not random variance. Isolating and fixing WDT distribution before touching grind is exactly the right call.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 2 on El Diviso Pink Bourbon. Same right-side channeling from shot 1 — started even at 9 seconds then the right spout dropped and recovered repeatedly through the pull. 21 seconds is Fast and you overshot yield at 39g vs your 35g target. The lingering acidity is a real extraction flag, not just bean character.\",\n  \"numbers\": \"Time is Fast at 21s — under-extracted territory. Yield came in at 39.1g off an adjusted 17.5g dose (ratio 2.23, Normal), but you were aiming for 35g — you stopped the pump at 31g, which should have landed at 35g after the 8g lag, but it ran 4g long. The Fast time + lingering sourness + right-side channeling are all pointing the same direction: the puck is failing before full extraction completes.\",\n  \"recommendation\": {\n    \"action\": \"Fix the right-side WDT coverage before anything else. Slow down your WDT on that right edge — make deliberate passes from the right edge inward, not just a random pattern. Hold grind 26 and target 35g yield (stop pump at ~27g). No grind change until you pull a shot with even bilateral flow.\",\n    \"reason\": \"This is the same channel from shot 1 — grind is not the problem. A channel on the right spout cuts the effective extraction surface and creates the fast time and lingering sourness you're tasting. Changing grind now would be chasing a symptom. One clean puck = one clean data point.\"\n  },\n  \"bean_context\": \"El Diviso is a high-elevation washed Pink Bourbon — strawberry, honeycomb, jasmine, high acidity. At 16 days post-roast it's squarely in its peak window, so freshness isn't a factor. The strawberry note in your tasting is on-profile, but the lingering acidity at balance 2 is extraction, not bean character — a well-extracted shot on this bean would be bright but not linger. The channel is masking what this bean can do.\",\n  \"progress_note\": \"Two shots in, same channel same side — this is a puck prep pattern, not random variance. Isolating and fixing WDT distribution before touching grind is exactly the right call.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"El Diviso Pink Bourbon — fix right-side WDT coverage before any grind change. Two shots, same right-side channel. Hold grind 26, stop pump at 27g for 35g yield.\",\n    \"known_patterns\": \"Bambino drip lag working figure 7g; stop pump 7g before target yield. Carlos Efrain Cortes running ~11g lag — stop pump earlier. El Diviso Pink Bourbon lag 8g — stop pump at 27g for 35g yield.\\n\\nWDT: 30lb tamp, 45s edge-to-center coverage; hard cap 30s on sensitive beans. Over-agitation = confirmed channel mechanism. Right-side edge coverage active variable. Asymmetric mid-shot flow = WDT distribution, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans even when extraction solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 settings obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Yield control critical — 41g caused regression.\\n\\nBrazil Cerrado (natural): do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Light roast density dominant. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed): grind 40, 17–17.7g dose, balance 3–5, dialed in. Ristretto: 24–28g yield, grind 40, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, clean even flow — dialed in. Finer than 26 ran faster (channeling). Not to Diego's taste despite solid extraction.\\n\\nEl Diviso Pink Bourbon (light washed, Huila): grind 26 anchor from Carlos Efrain Cortes. Shots 1–2 both show right-side channel with lingering acidity at balance 2. WDT right-edge coverage is the active problem — no grind change until even flow achieved.\",\n    \"last_recommendation\": \"El Diviso Pink Bourbon: hold grind 26, fix right-side WDT coverage with deliberate edge-inward passes, stop pump at 27g for 35g yield. No grind change until flow is bilateral and even.\",\n    \"last_analysis_date\": \"2026-07-22T16:13:00.000Z\",\n    \"last_analyzed_shot_id\": 114,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 14,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"\n      },\n      {\n        \"bag_id\": 8,\n        \"name\": \"Metric Coffee — Colombia Carlos Efrain Cortes\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 26,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 25.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\",\n        \"notes\": \"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"\n      },\n      {\n        \"bag_id\": 9,\n        \"name\": \"Metric — El Diviso Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 26,\n        \"shots_pulled\": 2,\n        \"profile\": \"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\n        \"notes\": \"Shots 1–2: grind 26, 21s, balance 2, lingering acidity, right-side channel both pulls. WDT right-edge coverage is blocking diagnosis. Lag 8g — stop pump at 27g.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-07-22 16:53:47"
    },
    {
      "id": 70,
      "shotId": 114,
      "analysisMode": "recent",
      "summary": "Third shot on El Diviso Pink Bourbon — grind 26, 17.5g adjusted dose, 39.1g yield, 21 seconds. The right-side channel is back for the third time: flow started evenly at 9 seconds then dropped to a drip-and-recover pattern on the right spout for the remainder of the pull. Lingering acidity at balance 2 is again the taste result — consistent with under-extraction from channeling, not a grind or bean character issue.",
      "numbers": "Time is Fast at 21s. Ratio is Normal at 2.23, though the 39.1g yield ran 4.1g over your 35g Espresso target — the pump-stop timing is drifting. The fast time and balance 2 with lingering sourness are consistent with each other, but the notes make clear the culprit is the right-side channel, not grind fineness. A clean, even pull at grind 26 would likely run longer and taste better — the extraction data is being corrupted by the distribution problem.",
      "recommendationAction": "Before the next shot, slow your WDT down and make 3–4 deliberate inward passes starting from the right edge of the puck specifically — treat the right third of the basket as the priority zone. Also stop the pump at 27g, not later — you overshot yield by 4g this pull.",
      "recommendationReason": "Three shots, three right-side channels. The flow note — even start at 9s, then right spout drops to drip-and-recover — is a textbook edge-coverage miss. The right side of the puck is being left looser than the center and left. Until you get two consecutive pulls with bilateral, even flow throughout, grind is off the table. Yield control also slipped this shot — hold the 27g pump-stop to land near 35g.",
      "beanContext": "El Diviso is a high-elevation washed light roast with strawberry, honeycomb, and jasmine notes — inherently bright and acidic. At 16 days off roast it's squarely in peak window. The lingering acidity at balance 2 is real under-extraction signal here, not just bean character — strawberry and jasmine should be present but the acidity shouldn't linger. This bean will reward even flow: once the channel is gone you should taste the fruit clarity it's known for.",
      "progressNote": "Three consecutive right-side channels on this bean is a clear pattern — the WDT gap is reproducible and localized. The good news is it's a fixable mechanics problem, not a setup or grind problem. Fix the right edge and the numbers should follow.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Third shot on El Diviso Pink Bourbon — grind 26, 17.5g adjusted dose, 39.1g yield, 21 seconds. The right-side channel is back for the third time: flow started evenly at 9 seconds then dropped to a drip-and-recover pattern on the right spout for the remainder of the pull. Lingering acidity at balance 2 is again the taste result — consistent with under-extraction from channeling, not a grind or bean character issue.\",\n  \"numbers\": \"Time is Fast at 21s. Ratio is Normal at 2.23, though the 39.1g yield ran 4.1g over your 35g Espresso target — the pump-stop timing is drifting. The fast time and balance 2 with lingering sourness are consistent with each other, but the notes make clear the culprit is the right-side channel, not grind fineness. A clean, even pull at grind 26 would likely run longer and taste better — the extraction data is being corrupted by the distribution problem.\",\n  \"recommendation\": {\n    \"action\": \"Before the next shot, slow your WDT down and make 3–4 deliberate inward passes starting from the right edge of the puck specifically — treat the right third of the basket as the priority zone. Also stop the pump at 27g, not later — you overshot yield by 4g this pull.\",\n    \"reason\": \"Three shots, three right-side channels. The flow note — even start at 9s, then right spout drops to drip-and-recover — is a textbook edge-coverage miss. The right side of the puck is being left looser than the center and left. Until you get two consecutive pulls with bilateral, even flow throughout, grind is off the table. Yield control also slipped this shot — hold the 27g pump-stop to land near 35g.\"\n  },\n  \"bean_context\": \"El Diviso is a high-elevation washed light roast with strawberry, honeycomb, and jasmine notes — inherently bright and acidic. At 16 days off roast it's squarely in peak window. The lingering acidity at balance 2 is real under-extraction signal here, not just bean character — strawberry and jasmine should be present but the acidity shouldn't linger. This bean will reward even flow: once the channel is gone you should taste the fruit clarity it's known for.\",\n  \"progress_note\": \"Three consecutive right-side channels on this bean is a clear pattern — the WDT gap is reproducible and localized. The good news is it's a fixable mechanics problem, not a setup or grind problem. Fix the right edge and the numbers should follow.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"El Diviso Pink Bourbon — right-side WDT channel now confirmed across 3 consecutive shots. Deliberate right-edge inward passes required before any grind change. Hold grind 26, stop pump at 27g for 35g yield.\",\n    \"known_patterns\": \"Bambino drip lag working figure 7g; stop pump 7g before target yield. Carlos Efrain Cortes running ~11g lag — stop pump earlier. El Diviso Pink Bourbon lag 8g — stop pump at 27g for 35g yield.\\n\\nWDT: 30lb tamp, 45s edge-to-center coverage; hard cap 30s on sensitive beans. Over-agitation = confirmed channel mechanism. Right-side edge coverage active variable — confirmed channel mechanism across 3 shots on El Diviso. Asymmetric mid-shot flow = WDT distribution, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans even when extraction solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 settings obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Yield control critical — 41g caused regression.\\n\\nBrazil Cerrado (natural): do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Light roast density dominant. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed): grind 40, 17–17.7g dose, balance 3–5, dialed in. Ristretto: 24–28g yield, grind 40, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, clean even flow — dialed in. Finer than 26 ran faster (channeling). Not to Diego's taste despite solid extraction.\",\n    \"last_recommendation\": \"El Diviso Pink Bourbon: hold grind 26, deliberate right-edge inward WDT passes before each shot, stop pump at 27g for 35g yield. No grind change until flow is bilateral and even across 2 consecutive pulls.\",\n    \"last_analysis_date\": \"2026-07-22T16:13:00.000Z\",\n    \"last_analyzed_shot_id\": 114,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 14,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"\n      },\n      {\n        \"bag_id\": 8,\n        \"name\": \"Metric Coffee — Colombia Carlos Efrain Cortes\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 26,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 25.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\",\n        \"notes\": \"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"\n      },\n      {\n        \"bag_id\": 9,\n        \"name\": \"Metric — El Diviso Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 26,\n        \"shots_pulled\": 3,\n        \"profile\": \"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\n        \"notes\": \"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-07-22 16:56:34"
    },
    {
      "id": 71,
      "shotId": 115,
      "analysisMode": "recent",
      "summary": "First shot on Blue Bottle Night Light Decaf — 28 seconds, 36.4g yield, balance 6 (Bitter). Shot hit your Espresso target on both time and yield, but taste landed bitter with lingering finish and Diego correctly flagged over-extraction. Notes describe slow, even bilateral drip-down through the shot — no channeling indicators, just a tight puck extracting hard.",
      "numbers": "Time is Normal (28s) and ratio is Normal (2.02). Both sit comfortably in range, but balance 6 with lingering bitterness tells you the grind is too fine for this bean. Grinder retention was 0.8g — notable, worth factoring in: adjusted dose was 18g, not 18.8g. On a new decaf bag this retention figure is your baseline to watch.",
      "recommendationAction": "Go 2–3 clicks coarser: try grind 42.",
      "recommendationReason": "Lingering bitterness on a Swiss Water decaf at grind 39.5 points clearly finer than this bean wants. Decaf beans extract more easily due to the Swiss Water process opening cell structure — this is consistent with over-extraction even at a Normal shot time. Diego's own read ('over extracted, go coarser') is correct. Grind 40 is your Dark Matter Unicorn Blood setting on a medium-dark washed bean; this is a medium decaf blend, and decaf typically needs more room, so 42 is a reasonable first coarse step. Shot time at 28s leaves you runway — you can afford to speed up 3–5 seconds and still stay in range.",
      "beanContext": "Night Light Decaf is a medium roast Swiss Water blend (Indonesia/Central America) with notes of Crème Brûlée, Vanilla, and Key Lime. At 14 days post-roast it's squarely in peak window. The Key Lime note is the one to watch — once bitterness clears, you may see brightness from that citrus character, which is bean-forward acidity, not under-extraction. The bean description notes it rewards a heavier dose for sweetness and roundness — 18g adjusted dose is appropriate. Swiss Water decaf extracts more readily than EA Washed, so don't be surprised if this needs to be pulled coarser than the Metric Decaf Huila (which ran at 28).",
      "progressNote": "This is a clean diagnostic first shot — no prep issues, no channeling, just a grind that's too fine. That's exactly the right kind of first pull: it tells you exactly which direction to move.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"First shot on Blue Bottle Night Light Decaf — 28 seconds, 36.4g yield, balance 6 (Bitter). Shot hit your Espresso target on both time and yield, but taste landed bitter with lingering finish and Diego correctly flagged over-extraction. Notes describe slow, even bilateral drip-down through the shot — no channeling indicators, just a tight puck extracting hard.\",\n  \"numbers\": \"Time is Normal (28s) and ratio is Normal (2.02). Both sit comfortably in range, but balance 6 with lingering bitterness tells you the grind is too fine for this bean. Grinder retention was 0.8g — notable, worth factoring in: adjusted dose was 18g, not 18.8g. On a new decaf bag this retention figure is your baseline to watch.\",\n  \"recommendation\": {\n    \"action\": \"Go 2–3 clicks coarser: try grind 42.\",\n    \"reason\": \"Lingering bitterness on a Swiss Water decaf at grind 39.5 points clearly finer than this bean wants. Decaf beans extract more easily due to the Swiss Water process opening cell structure — this is consistent with over-extraction even at a Normal shot time. Diego's own read ('over extracted, go coarser') is correct. Grind 40 is your Dark Matter Unicorn Blood setting on a medium-dark washed bean; this is a medium decaf blend, and decaf typically needs more room, so 42 is a reasonable first coarse step. Shot time at 28s leaves you runway — you can afford to speed up 3–5 seconds and still stay in range.\"\n  },\n  \"bean_context\": \"Night Light Decaf is a medium roast Swiss Water blend (Indonesia/Central America) with notes of Crème Brûlée, Vanilla, and Key Lime. At 14 days post-roast it's squarely in peak window. The Key Lime note is the one to watch — once bitterness clears, you may see brightness from that citrus character, which is bean-forward acidity, not under-extraction. The bean description notes it rewards a heavier dose for sweetness and roundness — 18g adjusted dose is appropriate. Swiss Water decaf extracts more readily than EA Washed, so don't be surprised if this needs to be pulled coarser than the Metric Decaf Huila (which ran at 28).\",\n  \"progress_note\": \"This is a clean diagnostic first shot — no prep issues, no channeling, just a grind that's too fine. That's exactly the right kind of first pull: it tells you exactly which direction to move.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Blue Bottle Night Light Decaf — first shot bitter at grind 39.5. Swiss Water process extracts easily. Try grind 42 next — shot time at 28s leaves runway to go coarser.\",\n    \"known_patterns\": \"Bambino drip lag working figure 7g; stop pump 7g before target yield. Carlos Efrain Cortes running ~11g lag — stop pump earlier. El Diviso Pink Bourbon lag 8g — stop pump at 27g for 35g yield.\\n\\nWDT: 30lb tamp, 45s edge-to-center coverage; hard cap 30s on sensitive beans. Over-agitation = confirmed channel mechanism. Right-side edge coverage active variable — confirmed channel mechanism across 3 shots on El Diviso. Asymmetric mid-shot flow = WDT distribution, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans even when extraction solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular. Swiss Water opens structure more than EA Washed — may need even coarser starting point than EA decaf. Do not transfer settings across bags of same bean.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 settings obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Yield control critical — 41g caused regression.\\n\\nBrazil Cerrado (natural): do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Light roast density dominant. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed): grind 40, 17–17.7g dose, balance 3–5, dialed in. Ristretto: 24–28g yield, grind 40, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, clean even flow — dialed in. Finer than 26 ran faster (channeling). Not to Diego's taste despite solid extraction.\",\n    \"last_recommendation\": \"Blue Bottle Night Light Decaf: go 2–3 clicks coarser to grind 42. Bitter and lingering at 39.5 — Swiss Water decaf extracts more easily, needs more room.\",\n    \"last_analysis_date\": \"2026-07-23T00:24:00.000Z\",\n    \"last_analyzed_shot_id\": 115,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 14,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"\n      },\n      {\n        \"bag_id\": 8,\n        \"name\": \"Metric Coffee — Colombia Carlos Efrain Cortes\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 26,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 25.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\",\n        \"notes\": \"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"\n      },\n      {\n        \"bag_id\": 9,\n        \"name\": \"Metric — El Diviso Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 26,\n        \"shots_pulled\": 3,\n        \"profile\": \"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\n        \"notes\": \"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      },\n      {\n        \"bag_id\": 10,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 39.5,\n        \"shots_pulled\": 1,\n        \"profile\": \"Medium roast Swiss Water decaf, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\n        \"notes\": \"Shot 1: grind 39.5, bitter/lingering at balance 6, 3 stars. Over-extracted. Try grind 42 next. Swiss Water — extracts easily.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-07-23 00:45:52"
    },
    {
      "id": 72,
      "shotId": 115,
      "analysisMode": "recent",
      "summary": "First shot on Blue Bottle Night Light Decaf — 28 seconds, 36.4g yield, balance 6 (bitter), 3 stars. Flow started even and slow on both spouts, then progressively restricted through the shot, finishing with a long lag. Bitter and lingering with no room to taste the bean's character. You correctly identified over-extraction as the culprit.",
      "numbers": "Time is Normal at 28s and ratio is Normal at 2.02 — both squarely in range. The numbers alone look fine, but the progressive flow restriction and lingering bitterness tell the real story: this is extracting too hard for this bean. Retention was 0.8g this shot, notably higher than your 0.14g average — adjusted dose was 18g.",
      "recommendationAction": "Go 2–3 clicks coarser: try grind 42.",
      "recommendationReason": "Swiss Water decaf extracts more easily than regular beans — the bean structure is more open, so grind 39.5 is too fine here. The slow, progressively restricting flow and lingering bitterness both point to over-extraction, not a puck prep issue. Your shot time at 28s is already on the lower end of Normal, so there's room to open up the grind without going fast. Grind 42 matches your Brazil Cerrado starting point (natural process, similar roast level) and gives the decaf structure enough space to flow cleanly. Keep dose and yield the same.",
      "beanContext": "Night Light Decaf is Swiss Water processed, medium roast, day 14 — right at the start of the peak window for a medium decaf (ready around day 4, peak through ~day 21). Freshness isn't the issue. The Crème Brûlée/Vanilla/Key Lime notes are completely buried under the bitterness right now — you won't taste them until the grind opens up. The bean description also calls out that a heavier dose brings out extra sweetness and roundness, which aligns with your 18g adjusted dose being a reasonable starting point. Blue Bottle notes no similar dialed-in bean in your history, but your Unicorn Blood (medium-dark, grind 40) and Brazil Cerrado (natural medium, grind 42) are the closest structural references — grind 42 is the right anchor.",
      "progressNote": "New bean, first shot — this is exactly the right read. You identified the extraction direction correctly and your yield targeting was precise. Clean start to dialing this one in.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"First shot on Blue Bottle Night Light Decaf — 28 seconds, 36.4g yield, balance 6 (bitter), 3 stars. Flow started even and slow on both spouts, then progressively restricted through the shot, finishing with a long lag. Bitter and lingering with no room to taste the bean's character. You correctly identified over-extraction as the culprit.\",\n  \"numbers\": \"Time is Normal at 28s and ratio is Normal at 2.02 — both squarely in range. The numbers alone look fine, but the progressive flow restriction and lingering bitterness tell the real story: this is extracting too hard for this bean. Retention was 0.8g this shot, notably higher than your 0.14g average — adjusted dose was 18g.\",\n  \"recommendation\": {\n    \"action\": \"Go 2–3 clicks coarser: try grind 42.\",\n    \"reason\": \"Swiss Water decaf extracts more easily than regular beans — the bean structure is more open, so grind 39.5 is too fine here. The slow, progressively restricting flow and lingering bitterness both point to over-extraction, not a puck prep issue. Your shot time at 28s is already on the lower end of Normal, so there's room to open up the grind without going fast. Grind 42 matches your Brazil Cerrado starting point (natural process, similar roast level) and gives the decaf structure enough space to flow cleanly. Keep dose and yield the same.\"\n  },\n  \"bean_context\": \"Night Light Decaf is Swiss Water processed, medium roast, day 14 — right at the start of the peak window for a medium decaf (ready around day 4, peak through ~day 21). Freshness isn't the issue. The Crème Brûlée/Vanilla/Key Lime notes are completely buried under the bitterness right now — you won't taste them until the grind opens up. The bean description also calls out that a heavier dose brings out extra sweetness and roundness, which aligns with your 18g adjusted dose being a reasonable starting point. Blue Bottle notes no similar dialed-in bean in your history, but your Unicorn Blood (medium-dark, grind 40) and Brazil Cerrado (natural medium, grind 42) are the closest structural references — grind 42 is the right anchor.\",\n  \"progress_note\": \"New bean, first shot — this is exactly the right read. You identified the extraction direction correctly and your yield targeting was precise. Clean start to dialing this one in.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Blue Bottle Night Light Decaf — first shot bitter/over-extracted at grind 39.5. Move to grind 42, Swiss Water process extracts easily. El Diviso Pink Bourbon still needs right-edge WDT fix before grind change.\",\n    \"known_patterns\": \"Bambino drip lag working figure 7g; stop pump 7g before target yield. Carlos Efrain Cortes running ~11g lag — stop pump earlier. El Diviso Pink Bourbon lag 8g — stop pump at 27g for 35g yield.\\n\\nWDT: 30lb tamp, 45s edge-to-center coverage; hard cap 30s on sensitive beans. Over-agitation = confirmed channel mechanism. Right-side edge coverage active variable — confirmed channel mechanism across 3 shots on El Diviso. Asymmetric mid-shot flow = WDT distribution, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans even when extraction solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 settings obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Yield control critical — 41g caused regression.\\n\\nBrazil Cerrado (natural): do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Light roast density dominant. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed): grind 40, 17–17.7g dose, balance 3–5, dialed in. Ristretto: 24–28g yield, grind 40, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, clean even flow — dialed in. Finer than 26 ran faster (channeling). Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, Swiss Water, medium): grind 39.5 = bitter/over-extracted shot 1. Moving to 42.\",\n    \"last_recommendation\": \"Blue Bottle Night Light Decaf: go 2–3 clicks coarser to grind 42. Swiss Water decaf extracts easily — 39.5 was too fine. Keep dose ~18g and yield ~36g.\",\n    \"last_analysis_date\": \"2026-07-23T00:24:00.000Z\",\n    \"last_analyzed_shot_id\": 115,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 14,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"\n      },\n      {\n        \"bag_id\": 8,\n        \"name\": \"Metric Coffee — Colombia Carlos Efrain Cortes\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 26,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 25.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\",\n        \"notes\": \"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"\n      },\n      {\n        \"bag_id\": 9,\n        \"name\": \"Metric — El Diviso Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 26,\n        \"shots_pulled\": 3,\n        \"profile\": \"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\n        \"notes\": \"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"\n      },\n      {\n        \"bag_id\": 10,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 39.5,\n        \"shots_pulled\": 1,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\n        \"notes\": \"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moving to grind 42.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-07-23 00:46:41"
    },
    {
      "id": 73,
      "shotId": 116,
      "analysisMode": "recent",
      "summary": "First shot on the Ethiopia Yaye at grind 26 — severely over-extracted at 60 seconds with a Short ratio of 1.69. Flow was restricted from the start, dripping slowly through the entire pull. Taste came back surprisingly mild (slightly bitter, non-lingering) given the time, which is worth noting, but the puck prep and/or grind are clearly too fine for this bean.",
      "numbers": "60 seconds is Very Slow and well outside industry standard (over 45s = severely over-extracted). Yield landed at 30g against a 35.6g target — missed by 5.6g, landing closer to Ristretto territory. The balance reading of 5 (Slightly Bitter) is actually more forgiving than the shot time would predict. Your notes confirm this: slight bitterness but no linger, which is the key saving grace here.",
      "recommendationAction": "Go significantly coarser — try grind 34–35.",
      "recommendationReason": "A 60-second choke on a light honey-process Ethiopia is a coarse starting point problem, not a fine-tuning problem. Light roasts are dense and resist extraction; honey process adds some sweetness/body structure but doesn't meaningfully reduce density. Grind 26 is where you dial in light washed Colombians (Carlos Efrain Cortes, El Diviso) — it's far too fine for a new light Ethiopian. The Decaf Huila (another light roast) also choked in the 27.5–33 range before opening up at 38, which is a useful data point. For a non-decaf light roast you don't need to go quite that coarse, but 34–35 is a reasonable exploratory starting point. Keep dose at 17.8g and target 35–37g yield.",
      "beanContext": "Ethiopia Yaye is a light honey-process single origin from Sidama at 2,200–2,300 MASL — very high elevation, dense bean, slow to extract. Flavor notes are cranberry, baking spice, papaya: expect brightness and fruit-forward character, possibly some floral notes. At day 17 post-roast it's solidly in the peak window for a light roast (peak roughly 14–42 days), so freshness isn't the issue here. The problem is purely grind — 26 is calibrated for much easier-extracting beans. No similar Ethiopian honey-process in your history to anchor from, but the Coffee Lab Huila Decaf choke pattern (also a dense light roast) is instructive: light roast density dominates everything else.",
      "progressNote": "This is a good diagnostic first shot — the choke tells you exactly where not to be, and the surprisingly mild bitterness suggests the bean has potential once extraction opens up. Going coarser aggressively on shot 2 is the right instinct.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"First shot on the Ethiopia Yaye at grind 26 — severely over-extracted at 60 seconds with a Short ratio of 1.69. Flow was restricted from the start, dripping slowly through the entire pull. Taste came back surprisingly mild (slightly bitter, non-lingering) given the time, which is worth noting, but the puck prep and/or grind are clearly too fine for this bean.\",\n  \"numbers\": \"60 seconds is Very Slow and well outside industry standard (over 45s = severely over-extracted). Yield landed at 30g against a 35.6g target — missed by 5.6g, landing closer to Ristretto territory. The balance reading of 5 (Slightly Bitter) is actually more forgiving than the shot time would predict. Your notes confirm this: slight bitterness but no linger, which is the key saving grace here.\",\n  \"recommendation\": {\n    \"action\": \"Go significantly coarser — try grind 34–35.\",\n    \"reason\": \"A 60-second choke on a light honey-process Ethiopia is a coarse starting point problem, not a fine-tuning problem. Light roasts are dense and resist extraction; honey process adds some sweetness/body structure but doesn't meaningfully reduce density. Grind 26 is where you dial in light washed Colombians (Carlos Efrain Cortes, El Diviso) — it's far too fine for a new light Ethiopian. The Decaf Huila (another light roast) also choked in the 27.5–33 range before opening up at 38, which is a useful data point. For a non-decaf light roast you don't need to go quite that coarse, but 34–35 is a reasonable exploratory starting point. Keep dose at 17.8g and target 35–37g yield.\"\n  },\n  \"bean_context\": \"Ethiopia Yaye is a light honey-process single origin from Sidama at 2,200–2,300 MASL — very high elevation, dense bean, slow to extract. Flavor notes are cranberry, baking spice, papaya: expect brightness and fruit-forward character, possibly some floral notes. At day 17 post-roast it's solidly in the peak window for a light roast (peak roughly 14–42 days), so freshness isn't the issue here. The problem is purely grind — 26 is calibrated for much easier-extracting beans. No similar Ethiopian honey-process in your history to anchor from, but the Coffee Lab Huila Decaf choke pattern (also a dense light roast) is instructive: light roast density dominates everything else.\",\n  \"progress_note\": \"This is a good diagnostic first shot — the choke tells you exactly where not to be, and the surprisingly mild bitterness suggests the bean has potential once extraction opens up. Going coarser aggressively on shot 2 is the right instinct.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Ethiopia Yaye (Metric, light honey, Sidama) — choked at grind 26 (60s). Move to 34–35 on shot 2. Light roast density dominant, similar choke pattern to Coffee Lab Huila Decaf. Night Light Decaf: still needs shot 2 at grind 42.\",\n    \"known_patterns\": \"Bambino drip lag working figure 7g; stop pump 7g before target yield. Carlos Efrain Cortes running ~11g lag — stop pump earlier. El Diviso Pink Bourbon lag 8g — stop pump at 27g for 35g yield.\\n\\nWDT: 30lb tamp, 45s edge-to-center coverage; hard cap 30s on sensitive beans. Over-agitation = confirmed channel mechanism. Right-side edge coverage active variable — confirmed channel mechanism across 3 shots on El Diviso. Asymmetric mid-shot flow = WDT distribution, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans even when extraction solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean.\\n\\nLight roast density dominates — Coffee Lab Huila Decaf choked 27.5–33, opened at 38. Ethiopia Yaye (non-decaf light honey) choked at 26. Start light roasts coarse and work down.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 settings obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Yield control critical — 41g caused regression.\\n\\nBrazil Cerrado (natural): do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Light roast density dominant. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed): grind 40, 17–17.7g dose, balance 3–5, dialed in. Ristretto: 24–28g yield, grind 40, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, clean even flow — dialed in. Finer than 26 ran faster (channeling). Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, Swiss Water, medium): grind 39.5 = bitter/over-extracted shot 1. Moving to 42.\",\n    \"last_recommendation\": \"Ethiopia Yaye: choked at 26 (60s). Go to grind 34–35 on shot 2. Keep dose 17.8g, target 35–37g yield.\",\n    \"last_analysis_date\": \"2026-07-23T14:19:00.000Z\",\n    \"last_analyzed_shot_id\": 116,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 14,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"\n      },\n      {\n        \"bag_id\": 8,\n        \"name\": \"Metric Coffee — Colombia Carlos Efrain Cortes\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 26,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 25.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\",\n        \"notes\": \"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"\n      },\n      {\n        \"bag_id\": 9,\n        \"name\": \"Metric — El Diviso Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 26,\n        \"shots_pulled\": 3,\n        \"profile\": \"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\n        \"notes\": \"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"\n      },\n      {\n        \"bag_id\": 10,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 39.5,\n        \"shots_pulled\": 1,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\n        \"notes\": \"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moving to grind 42.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      },\n      {\n        \"bag_id\": 18,\n        \"name\": \"Metric — Ethiopia Yaye\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 26,\n        \"shots_pulled\": 1,\n        \"profile\": \"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\",\n        \"notes\": \"Shot 1 at grind 26: choked 60s, balance 5, restricted flow start to finish. Light roast density dominant. Moving to grind 34–35.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-07-23 15:21:52"
    },
    {
      "id": 74,
      "shotId": 117,
      "analysisMode": "recent",
      "summary": "Shot 2 on Night Light Decaf at grind 42 — 23s, 18.2g adjusted dose, 39.4g yield, balance 5, slightly bitter. The right spout dropped briefly mid-shot before recovering, and flow ran faster on the left throughout. Time improved from shot 1 (28s → 23s) but is now on the fast side, and the bitter-then-sour flavor sequence you're describing is a classic sign of uneven extraction — over on one side, under on the other — consistent with that asymmetric flow.",
      "numbers": "Time is Fast at 23s (industry under-extracted territory, below the 25s floor). Ratio is Normal at 2.16. The 9g lag is your Bambino working as expected — normal. You targeted a 25–30s pull and landed short by about 2 seconds on the low end. The balance 5 (slightly bitter) combined with the sour-after-bitter taste sequence is the real signal here: if extraction were even and simply fast, you'd expect pure sourness. The bitter-first flavor that pivots to sour suggests the right side under-extracted while the left over-extracted — the flow imbalance you saw isn't cosmetic.",
      "recommendationAction": "Go one click finer to grind 41, and before pulling, slow down your WDT on the right edge of the puck — give it deliberate extra coverage on that side before sweeping to center.",
      "recommendationReason": "The right spout drop-and-recover is the same right-side channel pattern you've seen before — it's WDT distribution, not just grind. Going finer to 41 will address the fast time, but if the puck prep asymmetry isn't corrected, you'll get the same uneven flavor regardless of grind. Fix both together this shot since the flow problem makes the grind number unreliable on its own.",
      "beanContext": "Night Light Decaf is a Swiss Water medium roast — it degasses fast and extracts easily. At 15 days since roast it's squarely in peak window, so freshness isn't a factor. The crème brûlée and key lime notes in the profile could explain some of the complexity you noticed, but the bitter-pivot-to-sour sequence is more consistent with uneven extraction than bean character. The bag's tasting notes suggest a clean, cocoa-forward profile — you should be getting sweetness and roundness here, not a tug-of-war between bitter and sour.",
      "progressNote": "Your instinct to go finer after shot 1 was right — but the right-side flow imbalance is doing as much damage as the grind setting. Once the puck prep is evening out, the dial-in will move faster.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 2 on Night Light Decaf at grind 42 — 23s, 18.2g adjusted dose, 39.4g yield, balance 5, slightly bitter. The right spout dropped briefly mid-shot before recovering, and flow ran faster on the left throughout. Time improved from shot 1 (28s → 23s) but is now on the fast side, and the bitter-then-sour flavor sequence you're describing is a classic sign of uneven extraction — over on one side, under on the other — consistent with that asymmetric flow.\",\n  \"numbers\": \"Time is Fast at 23s (industry under-extracted territory, below the 25s floor). Ratio is Normal at 2.16. The 9g lag is your Bambino working as expected — normal. You targeted a 25–30s pull and landed short by about 2 seconds on the low end. The balance 5 (slightly bitter) combined with the sour-after-bitter taste sequence is the real signal here: if extraction were even and simply fast, you'd expect pure sourness. The bitter-first flavor that pivots to sour suggests the right side under-extracted while the left over-extracted — the flow imbalance you saw isn't cosmetic.\",\n  \"recommendation\": {\n    \"action\": \"Go one click finer to grind 41, and before pulling, slow down your WDT on the right edge of the puck — give it deliberate extra coverage on that side before sweeping to center.\",\n    \"reason\": \"The right spout drop-and-recover is the same right-side channel pattern you've seen before — it's WDT distribution, not just grind. Going finer to 41 will address the fast time, but if the puck prep asymmetry isn't corrected, you'll get the same uneven flavor regardless of grind. Fix both together this shot since the flow problem makes the grind number unreliable on its own.\"\n  },\n  \"bean_context\": \"Night Light Decaf is a Swiss Water medium roast — it degasses fast and extracts easily. At 15 days since roast it's squarely in peak window, so freshness isn't a factor. The crème brûlée and key lime notes in the profile could explain some of the complexity you noticed, but the bitter-pivot-to-sour sequence is more consistent with uneven extraction than bean character. The bag's tasting notes suggest a clean, cocoa-forward profile — you should be getting sweetness and roundness here, not a tug-of-war between bitter and sour.\",\n  \"progress_note\": \"Your instinct to go finer after shot 1 was right — but the right-side flow imbalance is doing as much damage as the grind setting. Once the puck prep is evening out, the dial-in will move faster.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Night Light Decaf (Blue Bottle, Swiss Water, medium) — shot 2 at 42 ran fast (23s) with right-side channel and bitter-then-sour flavor. Move to grind 41 + deliberate right-edge WDT coverage on shot 3.\",\n    \"known_patterns\": \"Bambino drip lag working figure 7g; stop pump 7g before target yield. Carlos Efrain Cortes running ~11g lag — stop pump earlier. El Diviso Pink Bourbon lag 8g — stop pump at 27g for 35g yield.\\n\\nWDT: 30lb tamp, 45s edge-to-center coverage; hard cap 30s on sensitive beans. Over-agitation = confirmed channel mechanism. Right-side edge coverage active variable — confirmed channel mechanism across 3 shots on El Diviso and now Night Light Decaf shot 2. Asymmetric mid-shot flow = WDT distribution, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans even when extraction solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean.\\n\\nLight roast density dominates — Coffee Lab Huila Decaf choked 27.5–33, opened at 38. Ethiopia Yaye (non-decaf light honey) choked at 26. Start light roasts coarse and work down.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 settings obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Yield control critical — 41g caused regression.\\n\\nBrazil Cerrado (natural): do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Light roast density dominant. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed): grind 40, 17–17.7g dose, balance 3–5, dialed in. Ristretto: 24–28g yield, grind 40, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, clean even flow — dialed in. Finer than 26 ran faster (channeling). Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, Swiss Water, medium): grind 39.5 = bitter/over-extracted shot 1. Grind 42 = 23s fast, bitter-then-sour, right-side channel. Moving to grind 41 + deliberate right-edge WDT coverage.\",\n    \"last_recommendation\": \"Night Light Decaf: shot 2 at grind 42 ran fast (23s) with right-side channel. Go to grind 41 and give deliberate extra WDT coverage on right edge before shot 3.\",\n    \"last_analysis_date\": \"2026-07-23T23:48:00.000Z\",\n    \"last_analyzed_shot_id\": 117,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 14,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"\n      },\n      {\n        \"bag_id\": 8,\n        \"name\": \"Metric Coffee — Colombia Carlos Efrain Cortes\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 26,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 25.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\",\n        \"notes\": \"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"\n      },\n      {\n        \"bag_id\": 9,\n        \"name\": \"Metric — El Diviso Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 26,\n        \"shots_pulled\": 3,\n        \"profile\": \"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\n        \"notes\": \"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"\n      },\n      {\n        \"bag_id\": 10,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 39.5,\n        \"shots_pulled\": 1,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\n        \"notes\": \"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moved to grind 42.\"\n      },\n      {\n        \"bag_id\": 18,\n        \"name\": \"Metric — Ethiopia Yaye\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 26,\n        \"shots_pulled\": 1,\n        \"profile\": \"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\",\n        \"notes\": \"Shot 1 at grind 26: choked 60s, balance 5, restricted flow start to finish. Light roast density dominant. Moving to grind 34–35.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      },\n      {\n        \"bag_id\": 21,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 42,\n        \"shots_pulled\": 2,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\n        \"notes\": \"Shot 1 at 42: 23s fast, bitter-then-sour, right-side channel mid-shot, asymmetric flow. Moving to grind 41 + deliberate right-edge WDT coverage.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-07-24 01:21:26"
    },
    {
      "id": 75,
      "shotId": 118,
      "analysisMode": "recent",
      "summary": "Shot 2 on Ethiopia Yaye: grind 34, 27s, 37.2g yield, balance 4. You jumped 8 settings coarser from the choked shot 1 (grind 26) and landed squarely in normal range — both time and ratio on target. Bright upfront with quick resolution is textbook for a high-elevation honey-process light roast. This is a good shot.",
      "numbers": "Time is Normal at 27s and ratio is Normal at 2.09 — both inside the good range, and you hit your Espresso target. Balance 4 matches what the numbers predict. The flow note (even bilateral flow, fast-dripping moments on both sides in the first half) reads as normal ramp-up variation on a light roast, not channeling — both spouts moving together rules out asymmetric puck issues. No contradictions between numbers and taste.",
      "recommendationAction": "Lock grind 34, dose 17.8g, target 35–39g yield.",
      "recommendationReason": "First clean, balanced shot on this bean after one choked pull. Hold everything and pull shot 3 identically to confirm the recipe.",
      "beanContext": "Ethiopia Yaye (light honey, Sidama, 2200–2300m) is billed as cranberry, baking spice, papaya with high acidity — bright-but-quick is exactly right for this profile. At 18 days since roast it's in the middle of its peak window, so degassing is not a factor. The jump from grind 26 (60s choke) to 34 was the right call — light roast density needed that much room. Balance 4 with quick-resolving brightness is the target expression for this bean.",
      "progressNote": "Going from a 60-second choke to a clean balanced shot in one adjustment is good troubleshooting — you read the density cue correctly and moved far enough rather than creeping one click at a time.",
      "overallVerdict": "good",
      "isStable": true,
      "rawResponse": "{\n  \"summary\": \"Shot 2 on Ethiopia Yaye: grind 34, 27s, 37.2g yield, balance 4. You jumped 8 settings coarser from the choked shot 1 (grind 26) and landed squarely in normal range — both time and ratio on target. Bright upfront with quick resolution is textbook for a high-elevation honey-process light roast. This is a good shot.\",\n  \"numbers\": \"Time is Normal at 27s and ratio is Normal at 2.09 — both inside the good range, and you hit your Espresso target. Balance 4 matches what the numbers predict. The flow note (even bilateral flow, fast-dripping moments on both sides in the first half) reads as normal ramp-up variation on a light roast, not channeling — both spouts moving together rules out asymmetric puck issues. No contradictions between numbers and taste.\",\n  \"recommendation\": {\n    \"action\": \"Lock grind 34, dose 17.8g, target 35–39g yield.\",\n    \"reason\": \"First clean, balanced shot on this bean after one choked pull. Hold everything and pull shot 3 identically to confirm the recipe.\"\n  },\n  \"bean_context\": \"Ethiopia Yaye (light honey, Sidama, 2200–2300m) is billed as cranberry, baking spice, papaya with high acidity — bright-but-quick is exactly right for this profile. At 18 days since roast it's in the middle of its peak window, so degassing is not a factor. The jump from grind 26 (60s choke) to 34 was the right call — light roast density needed that much room. Balance 4 with quick-resolving brightness is the target expression for this bean.\",\n  \"progress_note\": \"Going from a 60-second choke to a clean balanced shot in one adjustment is good troubleshooting — you read the density cue correctly and moved far enough rather than creeping one click at a time.\",\n  \"overall_verdict\": \"good\",\n  \"is_stable\": true,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Ethiopia Yaye (Metric, light honey) — grind 34 hit balance 4 on shot 2. Hold grind 34, confirm on shot 3.\",\n    \"known_patterns\": \"Bambino drip lag working figure 7g; stop pump 7g before target yield. Carlos Efrain Cortes running ~11g lag — stop pump earlier. El Diviso Pink Bourbon lag 8g — stop pump at 27g for 35g yield.\\n\\nWDT: 30lb tamp, 45s edge-to-center coverage; hard cap 30s on sensitive beans. Over-agitation = confirmed channel mechanism. Right-side edge coverage active variable — confirmed channel mechanism across 3 shots on El Diviso and now Night Light Decaf shot 2. Asymmetric mid-shot flow = WDT distribution, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans even when extraction solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean.\\n\\nLight roast density dominates — Coffee Lab Huila Decaf choked 27.5–33, opened at 38. Ethiopia Yaye (non-decaf light honey) choked at 26, opened at 34. Start light roasts coarse and work down.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 settings obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Yield control critical — 41g caused regression.\\n\\nBrazil Cerrado (natural): do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Light roast density dominant. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed): grind 40, 17–17.7g dose, balance 3–5, dialed in. Ristretto: 24–28g yield, grind 40, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, clean even flow — dialed in. Finer than 26 ran faster (channeling). Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, Swiss Water, medium): grind 39.5 = bitter/over-extracted shot 1. Grind 42 = 23s fast, bitter-then-sour, right-side channel. Moving to grind 41 + deliberate right-edge WDT coverage.\",\n    \"last_recommendation\": \"Ethiopia Yaye: grind 34 hit balance 4 on shot 2. Lock grind 34, dose 17.8g, target 35–39g yield. Pull shot 3 identically to confirm.\",\n    \"last_analysis_date\": \"2026-07-24T14:43:00.000Z\",\n    \"last_analyzed_shot_id\": 118,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 14,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"\n      },\n      {\n        \"bag_id\": 8,\n        \"name\": \"Metric Coffee — Colombia Carlos Efrain Cortes\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 26,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 25.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\",\n        \"notes\": \"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"\n      },\n      {\n        \"bag_id\": 9,\n        \"name\": \"Metric — El Diviso Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 26,\n        \"shots_pulled\": 3,\n        \"profile\": \"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\n        \"notes\": \"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"\n      },\n      {\n        \"bag_id\": 18,\n        \"name\": \"Metric — Ethiopia Yaye\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 34,\n        \"shots_pulled\": 2,\n        \"profile\": \"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\",\n        \"notes\": \"Choked at grind 26 (60s). Grind 34 = 27s, balance 4, even bilateral flow. Light roast density dominant — needed 8-setting jump. Confirm grind 34 on shot 3.\"\n      },\n      {\n        \"bag_id\": 21,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 42,\n        \"shots_pulled\": 2,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\n        \"notes\": \"Shot 1 at 42: 23s fast, bitter-then-sour, right-side channel mid-shot, asymmetric flow. Moving to grind 41 + deliberate right-edge WDT coverage.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      },\n      {\n        \"bag_id\": 10,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 1,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/v\",\n        \"notes\": \"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moved to grind 42.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-07-24 15:07:28"
    },
    {
      "id": 76,
      "shotId": 118,
      "analysisMode": "recent",
      "summary": "Clean shot. Grind 34 hit balance 4 again with even bilateral flow and quick-resolving brightness — exactly the confirmation you were looking for on the Ethiopia Yaye. Nailed your Espresso target at 27s and 37.2g yield.",
      "numbers": "Time 27s (Normal), ratio 2.09 (Normal). Balance 4 matches the even, quick-resolving brightness in your notes — bright first impression that clears fast is classic high-elevation honey-process character, not a flag. Numbers and taste are fully aligned.",
      "recommendationAction": "Lock grind 34, dose 17.8g, target 35–39g yield.",
      "recommendationReason": "Back-to-back balance 4 with clean even flow confirms the recipe. Ethiopia Yaye is dialed in.",
      "beanContext": "Cranberry, baking spice, and papaya at 2,200–2,300m — the quick-resolving brightness you noted is exactly what this bean is supposed to deliver. 18 days off roast puts you squarely in peak window for a light honey process. No freshness concerns.",
      "progressNote": "Two consecutive balance 4 shots after a single 8-setting jump from a choked grind — efficient dial-in on a dense light roast.",
      "overallVerdict": "great",
      "isStable": true,
      "rawResponse": "{\"summary\":\"Clean shot. Grind 34 hit balance 4 again with even bilateral flow and quick-resolving brightness — exactly the confirmation you were looking for on the Ethiopia Yaye. Nailed your Espresso target at 27s and 37.2g yield.\",\"numbers\":\"Time 27s (Normal), ratio 2.09 (Normal). Balance 4 matches the even, quick-resolving brightness in your notes — bright first impression that clears fast is classic high-elevation honey-process character, not a flag. Numbers and taste are fully aligned.\",\"recommendation\":{\"action\":\"Lock grind 34, dose 17.8g, target 35–39g yield.\",\"reason\":\"Back-to-back balance 4 with clean even flow confirms the recipe. Ethiopia Yaye is dialed in.\"},\"bean_context\":\"Cranberry, baking spice, and papaya at 2,200–2,300m — the quick-resolving brightness you noted is exactly what this bean is supposed to deliver. 18 days off roast puts you squarely in peak window for a light honey process. No freshness concerns.\",\"progress_note\":\"Two consecutive balance 4 shots after a single 8-setting jump from a choked grind — efficient dial-in on a dense light roast.\",\"overall_verdict\":\"great\",\"is_stable\":true,\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Ethiopia Yaye dialed in at grind 34. Maintenance mode — hold recipe and monitor for drift as bag ages.\",\"known_patterns\":\"Bambino drip lag working figure 7g; stop pump 7g before target yield. Carlos Efrain Cortes running ~11g lag — stop pump earlier. El Diviso Pink Bourbon lag 8g — stop pump at 27g for 35g yield.\\n\\nWDT: 30lb tamp, 45s edge-to-center coverage; hard cap 30s on sensitive beans. Over-agitation = confirmed channel mechanism. Right-side edge coverage active variable — confirmed channel mechanism across 3 shots on El Diviso and now Night Light Decaf shot 2. Asymmetric mid-shot flow = WDT distribution, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans even when extraction solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean.\\n\\nLight roast density dominates — Coffee Lab Huila Decaf choked 27.5–33, opened at 38. Ethiopia Yaye (non-decaf light honey) choked at 26, opened at 34. Start light roasts coarse and work down.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 settings obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Yield control critical — 41g caused regression.\\n\\nBrazil Cerrado (natural): do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Light roast density dominant. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed): grind 40, 17–17.7g dose, balance 3–5, dialed in. Ristretto: 24–28g yield, grind 40, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, clean even flow — dialed in. Finer than 26 ran faster (channeling). Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, Swiss Water, medium): grind 39.5 = bitter/over-extracted shot 1. Grind 42 = 23s fast, bitter-then-sour, right-side channel. Moving to grind 41 + deliberate right-edge WDT coverage.\",\"last_recommendation\":\"Ethiopia Yaye dialed in: lock grind 34, dose 17.8g, target 35–39g yield.\",\"last_analysis_date\":\"2026-07-24T14:43:00.000Z\",\"last_analyzed_shot_id\":118,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":14,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"},{\"bag_id\":8,\"name\":\"Metric Coffee — Colombia Carlos Efrain Cortes\",\"status\":\"dialed_in\",\"dialed_in_grind\":26,\"dialed_in_yield_g\":38.5,\"current_grind\":25.5,\"shots_pulled\":7,\"profile\":\"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\",\"notes\":\"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"},{\"bag_id\":9,\"name\":\"Metric — El Diviso Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":26,\"shots_pulled\":3,\"profile\":\"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\"notes\":\"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"},{\"bag_id\":18,\"name\":\"Metric — Ethiopia Yaye\",\"status\":\"dialed_in\",\"dialed_in_grind\":34,\"dialed_in_yield_g\":37.2,\"current_grind\":34,\"shots_pulled\":2,\"profile\":\"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\",\"notes\":\"Choked at 26 (60s). Grind 34 = balance 4 confirmed across 2 shots, even bilateral flow, quick-resolving brightness. Light roast density dominant — needed 8-setting jump.\"},{\"bag_id\":21,\"name\":\"Blue Bottle Coffee — Night Light Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":42,\"shots_pulled\":2,\"profile\":\"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\"notes\":\"Shot 1 at 42: 23s fast, bitter-then-sour, right-side channel mid-shot, asymmetric flow. Moving to grind 41 + deliberate right-edge WDT coverage.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"},{\"bag_id\":10,\"name\":\"Blue Bottle Coffee — Night Light Decaf\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":1,\"profile\":\"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/v\",\"notes\":\"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moved to grind 42.\"}]}}",
      "createdAt": "2026-07-24 16:01:10"
    },
    {
      "id": 77,
      "shotId": 118,
      "analysisMode": "recent",
      "summary": "Clean result at grind 34 — 27s Normal time, 2.09 Normal ratio, balance 4. Flow was bilateral from the start with some alternating fast dripping mid-shot, and the brightness resolved quickly on the palate. Shot hit your Espresso target. This is what dialed-in looks like on this bean.",
      "numbers": "Time (27s) and ratio (2.09) both sit in Normal range. Balance 4 matches the even bilateral flow and quick-resolving brightness you noted — that's the light honey process expressing cleanly, not an extraction flag. The alternating fast-drip moments on both sides in the first half read as natural puck settling under preinfusion, not channeling. Numbers and notes are consistent.",
      "recommendationAction": "Lock grind 34, dose 17.8g, target 35–39g yield.",
      "recommendationReason": "Two consecutive shots at grind 34 have landed balance 4 with clean, even flow. Recipe is confirmed.",
      "beanContext": "Cranberry and baking spice brightness fits the quick-resolving acidity you tasted — that's this bean doing its job. At 18 days post-roast on a light honey process, you're solidly in the peak window. No freshness concerns.",
      "progressNote": "Shot 1 on this bean choked at grind 26 for a full 60 seconds. Two sessions later you're pulling balanced shots at grind 34 with clean bilateral flow — the jump from recognizing light roast density and moving coarse paid off immediately.",
      "overallVerdict": "great",
      "isStable": true,
      "rawResponse": "{\"summary\":\"Clean result at grind 34 — 27s Normal time, 2.09 Normal ratio, balance 4. Flow was bilateral from the start with some alternating fast dripping mid-shot, and the brightness resolved quickly on the palate. Shot hit your Espresso target. This is what dialed-in looks like on this bean.\",\"numbers\":\"Time (27s) and ratio (2.09) both sit in Normal range. Balance 4 matches the even bilateral flow and quick-resolving brightness you noted — that's the light honey process expressing cleanly, not an extraction flag. The alternating fast-drip moments on both sides in the first half read as natural puck settling under preinfusion, not channeling. Numbers and notes are consistent.\",\"recommendation\":{\"action\":\"Lock grind 34, dose 17.8g, target 35–39g yield.\",\"reason\":\"Two consecutive shots at grind 34 have landed balance 4 with clean, even flow. Recipe is confirmed.\"},\"bean_context\":\"Cranberry and baking spice brightness fits the quick-resolving acidity you tasted — that's this bean doing its job. At 18 days post-roast on a light honey process, you're solidly in the peak window. No freshness concerns.\",\"progress_note\":\"Shot 1 on this bean choked at grind 26 for a full 60 seconds. Two sessions later you're pulling balanced shots at grind 34 with clean bilateral flow — the jump from recognizing light roast density and moving coarse paid off immediately.\",\"overall_verdict\":\"great\",\"is_stable\":true,\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Ethiopia Yaye dialed in at grind 34. Maintenance mode — hold recipe and monitor for drift as bag ages.\",\"known_patterns\":\"Bambino drip lag working figure 7g; stop pump 7g before target yield. Carlos Efrain Cortes running ~11g lag — stop pump earlier. El Diviso Pink Bourbon lag 8g — stop pump at 27g for 35g yield.\\n\\nWDT: 30lb tamp, 45s edge-to-center coverage; hard cap 30s on sensitive beans. Over-agitation = confirmed channel mechanism. Right-side edge coverage active variable — confirmed channel mechanism across 3 shots on El Diviso and now Night Light Decaf shot 2. Asymmetric mid-shot flow = WDT distribution, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans even when extraction solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean.\\n\\nLight roast density dominates — Coffee Lab Huila Decaf choked 27.5–33, opened at 38. Ethiopia Yaye (non-decaf light honey) choked at 26, opened at 34. Start light roasts coarse and work down.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 settings obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Yield control critical — 41g caused regression.\\n\\nBrazil Cerrado (natural): do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Light roast density dominant. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed): grind 40, 17–17.7g dose, balance 3–5, dialed in. Ristretto: 24–28g yield, grind 40, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, clean even flow — dialed in. Finer than 26 ran faster (channeling). Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, Swiss Water, medium): grind 39.5 = bitter/over-extracted shot 1. Grind 42 = 23s fast, bitter-then-sour, right-side channel. Moving to grind 41 + deliberate right-edge WDT coverage.\",\"last_recommendation\":\"Ethiopia Yaye dialed in: lock grind 34, dose 17.8g, target 35–39g yield.\",\"last_analysis_date\":\"2026-07-24T14:43:00.000Z\",\"last_analyzed_shot_id\":118,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":14,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"},{\"bag_id\":8,\"name\":\"Metric Coffee — Colombia Carlos Efrain Cortes\",\"status\":\"dialed_in\",\"dialed_in_grind\":26,\"dialed_in_yield_g\":38.5,\"current_grind\":25.5,\"shots_pulled\":7,\"profile\":\"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\",\"notes\":\"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"},{\"bag_id\":9,\"name\":\"Metric — El Diviso Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":26,\"shots_pulled\":3,\"profile\":\"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\"notes\":\"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"},{\"bag_id\":18,\"name\":\"Metric — Ethiopia Yaye\",\"status\":\"dialed_in\",\"dialed_in_grind\":34,\"dialed_in_yield_g\":37.2,\"current_grind\":34,\"shots_pulled\":2,\"profile\":\"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\",\"notes\":\"Choked at 26 (60s). Grind 34 = balance 4 confirmed across 2 shots, even bilateral flow, quick-resolving brightness. Light roast density dominant — needed 8-setting jump.\"},{\"bag_id\":21,\"name\":\"Blue Bottle Coffee — Night Light Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":42,\"shots_pulled\":2,\"profile\":\"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\"notes\":\"Shot 1 at 42: 23s fast, bitter-then-sour, right-side channel mid-shot, asymmetric flow. Moving to grind 41 + deliberate right-edge WDT coverage.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"},{\"bag_id\":10,\"name\":\"Blue Bottle Coffee — Night Light Decaf\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":1,\"profile\":\"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/v\",\"notes\":\"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moved to grind 42.\"}]}}",
      "createdAt": "2026-07-24 16:02:53"
    },
    {
      "id": 78,
      "shotId": 119,
      "analysisMode": "recent",
      "summary": "Shot 91 on Night Light Decaf bag 21, shot 3 on this bag. Grind 41, adjusted dose 18.6g, 42g yield, 24 seconds — Fast time with a Normal ratio. Balance landed at 4 (balanced) with a 4-star quality rating despite a right-spout wobble mid-shot indicating late channeling. Taste was strong and balanced with quick-resolving bitterness, which is a solid result given the ongoing puck prep challenge with this bean.",
      "numbers": "Time at 24s is Fast. Ratio at 2.26 is Normal. The right-side mid-shot wobble is the third consecutive shot on this bag with a right-side flow anomaly — the pattern is now consistent across all three pulls. The 9g lag is within your known Bambino range. Yield ran 4.8g over your Espresso target (37.2g), and time came in under the 25–30s target window — but the taste result (balance 4, 4 stars) suggests the extraction was actually solid despite the fast time and high yield, likely because the late-stage channeling accelerated flow without fully wrecking the cup.",
      "recommendationAction": "Hold grind 41 — the extraction is there. For the next shot, slow down your WDT and make deliberate contact with the right edge of the puck, completing 2–3 passes in that quadrant before moving to center. This is the sole remaining variable.",
      "recommendationReason": "All three shots on this bag have shown right-side flow disruption — shot 1 at 39.5 (drip-and-slow right), shot 2 at 42 (right-side channel then recovery), this shot (right wobble mid-shot). Grind 41 produced balanced taste with quick-resolving bitterness, so the grind is working. The recurring right-side issue is a puck prep distribution problem, not grind. Fix the WDT before adjusting anything else.",
      "beanContext": "Night Light Decaf is a Swiss Water medium roast, which extracts readily — grind 41 is landing in a workable range. At 16 days since roast it's in peak window, so freshness isn't a factor. The 'strong but balanced with quick-resolving bitterness' taste description aligns with the crème brûlée/vanilla profile — that's the bean, not over-extraction. The key lime brightness may show up more clearly once channeling is eliminated and you get an even extraction.",
      "progressNote": "Balance 4 and 4 stars is a real step forward from the bitter shot 1 and the complex-but-unresolved shot 2. The right-side channel is the only remaining obstacle — grind is no longer the variable to chase.",
      "overallVerdict": "good",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 91 on Night Light Decaf bag 21, shot 3 on this bag. Grind 41, adjusted dose 18.6g, 42g yield, 24 seconds — Fast time with a Normal ratio. Balance landed at 4 (balanced) with a 4-star quality rating despite a right-spout wobble mid-shot indicating late channeling. Taste was strong and balanced with quick-resolving bitterness, which is a solid result given the ongoing puck prep challenge with this bean.\",\n  \"numbers\": \"Time at 24s is Fast. Ratio at 2.26 is Normal. The right-side mid-shot wobble is the third consecutive shot on this bag with a right-side flow anomaly — the pattern is now consistent across all three pulls. The 9g lag is within your known Bambino range. Yield ran 4.8g over your Espresso target (37.2g), and time came in under the 25–30s target window — but the taste result (balance 4, 4 stars) suggests the extraction was actually solid despite the fast time and high yield, likely because the late-stage channeling accelerated flow without fully wrecking the cup.\",\n  \"recommendation\": {\n    \"action\": \"Hold grind 41 — the extraction is there. For the next shot, slow down your WDT and make deliberate contact with the right edge of the puck, completing 2–3 passes in that quadrant before moving to center. This is the sole remaining variable.\",\n    \"reason\": \"All three shots on this bag have shown right-side flow disruption — shot 1 at 39.5 (drip-and-slow right), shot 2 at 42 (right-side channel then recovery), this shot (right wobble mid-shot). Grind 41 produced balanced taste with quick-resolving bitterness, so the grind is working. The recurring right-side issue is a puck prep distribution problem, not grind. Fix the WDT before adjusting anything else.\"\n  },\n  \"bean_context\": \"Night Light Decaf is a Swiss Water medium roast, which extracts readily — grind 41 is landing in a workable range. At 16 days since roast it's in peak window, so freshness isn't a factor. The 'strong but balanced with quick-resolving bitterness' taste description aligns with the crème brûlée/vanilla profile — that's the bean, not over-extraction. The key lime brightness may show up more clearly once channeling is eliminated and you get an even extraction.\",\n  \"progress_note\": \"Balance 4 and 4 stars is a real step forward from the bitter shot 1 and the complex-but-unresolved shot 2. The right-side channel is the only remaining obstacle — grind is no longer the variable to chase.\",\n  \"overall_verdict\": \"good\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Night Light Decaf (bag 21): grind 41 working — balance 4, 4 stars on shot 3. Right-side channeling recurring across all 3 shots. WDT right-edge coverage is the sole active variable. Hold grind, fix WDT distribution next pull.\",\n    \"known_patterns\": \"Bambino drip lag working figure 7g; stop pump 7g before target yield. Carlos Efrain Cortes running ~11g lag — stop pump earlier. El Diviso Pink Bourbon lag 8g — stop pump at 27g for 35g yield.\\n\\nWDT: 30lb tamp, 45s edge-to-center coverage; hard cap 30s on sensitive beans. Over-agitation = confirmed channel mechanism. Right-side edge coverage active variable — confirmed channel mechanism across 3 shots on El Diviso and now all 3 shots on Night Light Decaf (bag 21). Asymmetric mid-shot flow = WDT distribution, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans even when extraction solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean.\\n\\nLight roast density dominates — Coffee Lab Huila Decaf choked 27.5–33, opened at 38. Ethiopia Yaye (non-decaf light honey) choked at 26, opened at 34. Start light roasts coarse and work down.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 settings obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Yield control critical — 41g caused regression.\\n\\nBrazil Cerrado (natural): do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Light roast density dominant. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed): grind 40, 17–17.7g dose, balance 3–5, dialed in. Ristretto: 24–28g yield, grind 40, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, clean even flow — dialed in. Finer than 26 ran faster (channeling). Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, Swiss Water, medium, bag 21): grind 41 = balance 4, 4 stars, fast 24s, right-side channel mid-shot. All 3 shots show right-side WDT distribution gap. Hold grind 41, fix right-edge WDT coverage.\",\n    \"last_recommendation\": \"Night Light Decaf: hold grind 41. Fix right-edge WDT coverage — 2–3 deliberate passes in right quadrant before moving to center. Do not adjust grind until WDT is consistent.\",\n    \"last_analysis_date\": \"2026-07-24T18:41:00.000Z\",\n    \"last_analyzed_shot_id\": 119,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 14,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"\n      },\n      {\n        \"bag_id\": 8,\n        \"name\": \"Metric Coffee — Colombia Carlos Efrain Cortes\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 26,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 25.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\",\n        \"notes\": \"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"\n      },\n      {\n        \"bag_id\": 9,\n        \"name\": \"Metric — El Diviso Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 26,\n        \"shots_pulled\": 3,\n        \"profile\": \"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\n        \"notes\": \"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"\n      },\n      {\n        \"bag_id\": 18,\n        \"name\": \"Metric — Ethiopia Yaye\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 34,\n        \"dialed_in_yield_g\": 37.2,\n        \"current_grind\": 34,\n        \"shots_pulled\": 2,\n        \"profile\": \"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\",\n        \"notes\": \"Choked at 26 (60s). Grind 34 = balance 4 confirmed across 2 shots, even bilateral flow, quick-resolving brightness. Light roast density dominant — needed 8-setting jump.\"\n      },\n      {\n        \"bag_id\": 21,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 41,\n        \"shots_pulled\": 3,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\n        \"notes\": \"Grind 41 = balance 4, 4 stars, 24s fast. Right-side channel across all 3 shots — WDT right-edge coverage is the sole remaining variable. Hold grind 41.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      },\n      {\n        \"bag_id\": 10,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 1,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/v\",\n        \"notes\": \"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moved to grind 42.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-07-24 18:56:52"
    },
    {
      "id": 79,
      "shotId": 120,
      "analysisMode": "recent",
      "summary": "Shot 92 on the Ethiopia Yaye — grind 33.5, 27s Normal, 17.6g dose, 40.1g yield at ratio 2.28 Normal. You overran your Espresso target by ~5g (stopped at 32g on the pump but lag carried it to 40g), landing closer to a Normale. Balance 3 (slightly sour), quick-resolving — consistent with what this bean showed on shot 1 at grind 34.",
      "numbers": "Time and ratio are both Normal, so the extraction math is clean. The missed target is a yield control issue, not a recipe problem — you noted you stopped late at ~32g, and with 8g lag that pushed the yield to 40g instead of ~35g. Balance 3 with instant resolution is exactly what shot 1 showed at grind 34 (balance 4 then, bright but quick-fading). The one-click finer move from 34 to 33.5 introduced a touch more acidity but the quick fade still points to bean character, not under-extraction. A brief right-side drip mid-shot is present again, but it was seconds-long and flow was otherwise even — this is a residual WDT distribution pattern, not the persistent channel you saw on Night Light and El Diviso.",
      "recommendationAction": "Stop the pump at 27g (not 32g) to land at your 35g target with the 8g lag. Hold grind 33.5.",
      "recommendationReason": "The extraction itself is solid — the sourness is resolving fast and the bean profile is high-acidity by design. The only real issue this shot is the overrun yield. With a confirmed 8g lag on this machine, stopping at 27g should land right at 35g. Grind is not the variable to chase right now.",
      "beanContext": "Ethiopia Yaye is a high-elevation light honey with cranberry, baking spice, and papaya listed — bright, complex, acidity-forward is expected and correct. Quick-resolving sourness at balance 3 is not a flaw here; it's the bean doing what it's supposed to. At day 19 post-roast you're solidly in peak window. Grind 33.5 is producing even flow; the one-click step from 34 didn't break anything. This bean dialed in fast compared to past light roasts (Yaye choked at 26, opened at 34 — now stable in the 33.5–34 zone in just 3 shots).",
      "progressNote": "Three shots in and you have even bilateral flow on a light roast — that's a clear improvement from the WDT consistency work on Night Light and El Diviso. Yield control is now the only variable left to tighten.",
      "overallVerdict": "good",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 92 on the Ethiopia Yaye — grind 33.5, 27s Normal, 17.6g dose, 40.1g yield at ratio 2.28 Normal. You overran your Espresso target by ~5g (stopped at 32g on the pump but lag carried it to 40g), landing closer to a Normale. Balance 3 (slightly sour), quick-resolving — consistent with what this bean showed on shot 1 at grind 34.\",\n  \"numbers\": \"Time and ratio are both Normal, so the extraction math is clean. The missed target is a yield control issue, not a recipe problem — you noted you stopped late at ~32g, and with 8g lag that pushed the yield to 40g instead of ~35g. Balance 3 with instant resolution is exactly what shot 1 showed at grind 34 (balance 4 then, bright but quick-fading). The one-click finer move from 34 to 33.5 introduced a touch more acidity but the quick fade still points to bean character, not under-extraction. A brief right-side drip mid-shot is present again, but it was seconds-long and flow was otherwise even — this is a residual WDT distribution pattern, not the persistent channel you saw on Night Light and El Diviso.\",\n  \"recommendation\": {\n    \"action\": \"Stop the pump at 27g (not 32g) to land at your 35g target with the 8g lag. Hold grind 33.5.\",\n    \"reason\": \"The extraction itself is solid — the sourness is resolving fast and the bean profile is high-acidity by design. The only real issue this shot is the overrun yield. With a confirmed 8g lag on this machine, stopping at 27g should land right at 35g. Grind is not the variable to chase right now.\"\n  },\n  \"bean_context\": \"Ethiopia Yaye is a high-elevation light honey with cranberry, baking spice, and papaya listed — bright, complex, acidity-forward is expected and correct. Quick-resolving sourness at balance 3 is not a flaw here; it's the bean doing what it's supposed to. At day 19 post-roast you're solidly in peak window. Grind 33.5 is producing even flow; the one-click step from 34 didn't break anything. This bean dialed in fast compared to past light roasts (Yaye choked at 26, opened at 34 — now stable in the 33.5–34 zone in just 3 shots).\",\n  \"progress_note\": \"Three shots in and you have even bilateral flow on a light roast — that's a clear improvement from the WDT consistency work on Night Light and El Diviso. Yield control is now the only variable left to tighten.\",\n  \"overall_verdict\": \"good\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Ethiopia Yaye (bag 18): grind 33.5 producing even flow, balance 3–4, quick-resolving acidity. Yield overrun this shot — stop pump at 27g (8g lag → 35g target). Hold grind, fix pump stop point next pull.\",\n    \"known_patterns\": \"Bambino drip lag working figure 7g; stop pump 7g before target yield. Carlos Efrain Cortes running ~11g lag — stop pump earlier. El Diviso Pink Bourbon lag 8g — stop pump at 27g for 35g yield. Ethiopia Yaye lag 8g confirmed — stop pump at 27g for 35g yield.\\n\\nWDT: 30lb tamp, 45s edge-to-center coverage; hard cap 30s on sensitive beans. Over-agitation = confirmed channel mechanism. Right-side edge coverage active variable — confirmed channel mechanism across 3 shots on El Diviso and all 3 shots on Night Light Decaf (bag 21). Asymmetric mid-shot flow = WDT distribution, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans even when extraction solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean.\\n\\nLight roast density dominates — Coffee Lab Huila Decaf choked 27.5–33, opened at 38. Ethiopia Yaye (non-decaf light honey) choked at 26, opened at 34. Start light roasts coarse and work down.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 settings obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Yield control critical — 41g caused regression.\\n\\nBrazil Cerrado (natural): do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Light roast density dominant. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed): grind 40, 17–17.7g dose, balance 3–5, dialed in. Ristretto: 24–28g yield, grind 40, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, clean even flow — dialed in. Finer than 26 ran faster (channeling). Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, Swiss Water, medium, bag 21): grind 41 = balance 4, 4 stars, fast 24s, right-side channel mid-shot. All 3 shots show right-side WDT distribution gap. Hold grind 41, fix right-edge WDT coverage.\",\n    \"last_recommendation\": \"Ethiopia Yaye: hold grind 33.5. Stop pump at 27g — lag is 8g, target yield 35g. Yield overrun was the only issue this shot.\",\n    \"last_analysis_date\": \"2026-07-25T14:14:00.000Z\",\n    \"last_analyzed_shot_id\": 120,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 14,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"\n      },\n      {\n        \"bag_id\": 8,\n        \"name\": \"Metric Coffee — Colombia Carlos Efrain Cortes\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 26,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 25.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\",\n        \"notes\": \"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"\n      },\n      {\n        \"bag_id\": 9,\n        \"name\": \"Metric — El Diviso Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 26,\n        \"shots_pulled\": 3,\n        \"profile\": \"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\n        \"notes\": \"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"\n      },\n      {\n        \"bag_id\": 18,\n        \"name\": \"Metric — Ethiopia Yaye\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 33.5,\n        \"shots_pulled\": 3,\n        \"profile\": \"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\",\n        \"notes\": \"Grind 34 balance 4 (shot 1); 33.5 balance 3 (shot 3), quick-resolving brightness — bean character. Even flow at both settings. Stop pump at 27g for 35g target (8g lag).\"\n      },\n      {\n        \"bag_id\": 21,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 41,\n        \"shots_pulled\": 3,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\n        \"notes\": \"Grind 41 = balance 4, 4 stars, 24s fast. Right-side channel across all 3 shots — WDT right-edge coverage is the sole remaining variable. Hold grind 41.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      },\n      {\n        \"bag_id\": 10,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 1,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/v\",\n        \"notes\": \"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moved to grind 42.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-07-25 14:43:25"
    },
    {
      "id": 80,
      "shotId": 120,
      "analysisMode": "recent",
      "summary": "Clean, even flow at grind 33.5 — the technique is working. You stopped the pump at 32g instead of the 27g target, which with the 8g lag landed you at 40g yield (ratio 2.28, Normale). Time was 27s (Normal). Taste was strong-sour-but-immediately-resolving, which you correctly identified as bean character.",
      "numbers": "Time 27s (Normal), ratio 2.28 (Normal) — both solid. The miss here is purely mechanical: pump stopped at 32g instead of 27g, delivering 5g more than your 35g target. The quick-resolving sour matches what grind 33.5 produced last shot and is consistent with Ethiopia Yaye's cranberry/high-acidity profile. Right-side mid-shot drip is the same brief asymmetry from shot 1 — still reading as minor flow variation, not a channeling event, especially given it resolved and taste was clean.",
      "recommendationAction": "Hold grind 33.5. Stop the pump at 27g — your lag is a reliable 8g, so 27g on the scale = 35g in the cup. Set a yield target alert if your scale supports it.",
      "recommendationReason": "Extraction is dialed — flow is even, acidity resolves immediately, balance is consistent at 3–4 across two shots at this grind. The only variable still moving is pump stop timing. Nail 27g and this shot is done.",
      "beanContext": "Ethiopia Yaye at 19 days post-roast is solidly in peak window for a light honey process. The cranberry/baking spice character is coming through clearly — that strong-but-fleeting sourness is the bean expressing itself, not an extraction problem. Grind 33.5 continues to produce even flow and quick-fading acidity across two consecutive shots, which is a reliable signal.",
      "progressNote": "Two consecutive even-flow shots at grind 33.5 with quick-resolving acidity — extraction is locked. The remaining dial-in work is just pump stop discipline.",
      "overallVerdict": "good",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Clean, even flow at grind 33.5 — the technique is working. You stopped the pump at 32g instead of the 27g target, which with the 8g lag landed you at 40g yield (ratio 2.28, Normale). Time was 27s (Normal). Taste was strong-sour-but-immediately-resolving, which you correctly identified as bean character.\",\n  \"numbers\": \"Time 27s (Normal), ratio 2.28 (Normal) — both solid. The miss here is purely mechanical: pump stopped at 32g instead of 27g, delivering 5g more than your 35g target. The quick-resolving sour matches what grind 33.5 produced last shot and is consistent with Ethiopia Yaye's cranberry/high-acidity profile. Right-side mid-shot drip is the same brief asymmetry from shot 1 — still reading as minor flow variation, not a channeling event, especially given it resolved and taste was clean.\",\n  \"recommendation\": {\n    \"action\": \"Hold grind 33.5. Stop the pump at 27g — your lag is a reliable 8g, so 27g on the scale = 35g in the cup. Set a yield target alert if your scale supports it.\",\n    \"reason\": \"Extraction is dialed — flow is even, acidity resolves immediately, balance is consistent at 3–4 across two shots at this grind. The only variable still moving is pump stop timing. Nail 27g and this shot is done.\"\n  },\n  \"bean_context\": \"Ethiopia Yaye at 19 days post-roast is solidly in peak window for a light honey process. The cranberry/baking spice character is coming through clearly — that strong-but-fleeting sourness is the bean expressing itself, not an extraction problem. Grind 33.5 continues to produce even flow and quick-fading acidity across two consecutive shots, which is a reliable signal.\",\n  \"progress_note\": \"Two consecutive even-flow shots at grind 33.5 with quick-resolving acidity — extraction is locked. The remaining dial-in work is just pump stop discipline.\",\n  \"overall_verdict\": \"good\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Ethiopia Yaye (bag 18): grind 33.5 confirmed across 2 shots, balance 3–4, quick-resolving acidity = bean character. Pump stop at 27g (8g lag → 35g target). Yield overrun again this shot — sole remaining variable is pump stop timing.\",\n    \"known_patterns\": \"Bambino drip lag working figure 7g; stop pump 7g before target yield. Carlos Efrain Cortes running ~11g lag — stop pump earlier. El Diviso Pink Bourbon lag 8g — stop pump at 27g for 35g yield. Ethiopia Yaye lag 8g confirmed — stop pump at 27g for 35g yield.\\n\\nWDT: 30lb tamp, 45s edge-to-center coverage; hard cap 30s on sensitive beans. Over-agitation = confirmed channel mechanism. Right-side edge coverage active variable — confirmed channel mechanism across 3 shots on El Diviso and all 3 shots on Night Light Decaf (bag 21). Asymmetric mid-shot flow = WDT distribution, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans even when extraction solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean.\\n\\nLight roast density dominates — Coffee Lab Huila Decaf choked 27.5–33, opened at 38. Ethiopia Yaye (non-decaf light honey) choked at 26, opened at 34. Start light roasts coarse and work down.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 settings obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Yield control critical — 41g caused regression.\\n\\nBrazil Cerrado (natural): do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Light roast density dominant. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed): grind 40, 17–17.7g dose, balance 3–5, dialed in. Ristretto: 24–28g yield, grind 40, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, clean even flow — dialed in. Finer than 26 ran faster (channeling). Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, Swiss Water, medium, bag 21): grind 41 = balance 4, 4 stars, fast 24s, right-side channel mid-shot. All 3 shots show right-side WDT distribution gap. Hold grind 41, fix right-edge WDT coverage.\",\n    \"last_recommendation\": \"Ethiopia Yaye: hold grind 33.5. Stop pump at 27g — lag is 8g, target yield 35g. Yield overrun is the sole remaining issue.\",\n    \"last_analysis_date\": \"2026-07-25T14:14:00.000Z\",\n    \"last_analyzed_shot_id\": 120,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 14,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"\n      },\n      {\n        \"bag_id\": 8,\n        \"name\": \"Metric Coffee — Colombia Carlos Efrain Cortes\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 26,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 25.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\",\n        \"notes\": \"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"\n      },\n      {\n        \"bag_id\": 9,\n        \"name\": \"Metric — El Diviso Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 26,\n        \"shots_pulled\": 3,\n        \"profile\": \"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\n        \"notes\": \"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"\n      },\n      {\n        \"bag_id\": 18,\n        \"name\": \"Metric — Ethiopia Yaye\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 33.5,\n        \"shots_pulled\": 3,\n        \"profile\": \"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\",\n        \"notes\": \"Grind 33.5 confirmed: even flow, balance 3–4, quick-resolving brightness = bean character. Pump stop at 27g (8g lag → 35g target). Yield overrun both shots — timing is sole remaining variable.\"\n      },\n      {\n        \"bag_id\": 21,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 41,\n        \"shots_pulled\": 3,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\n        \"notes\": \"Grind 41 = balance 4, 4 stars, 24s fast. Right-side channel across all 3 shots — WDT right-edge coverage is the sole remaining variable. Hold grind 41.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      },\n      {\n        \"bag_id\": 10,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 1,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/v\",\n        \"notes\": \"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moved to grind 42.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-07-25 15:05:09"
    },
    {
      "id": 81,
      "shotId": 120,
      "analysisMode": "recent",
      "summary": "Grind 33.5 is holding up — even flow, 27s Normal time, and the quick-resolving sourness is consistent with this bean's character. The issue is yield: you stopped at ~32g on the pump but got 40.1g out, meaning your effective lag this shot was closer to 8g again, pushing you 4.9g over your 35g target. The Normale classification fits — the shot ran long on yield but tasted fine.",
      "numbers": "Time at 27s is Normal. Ratio 2.28 is Normal. Balance 3 (Slightly Sour) matches the bean's cranberry/brightness profile, and your notes confirm the sourness resolved immediately — that's not an extraction flag. The one real number to address: you intended to stop at 27g to land at 35g, but stopped at 32g instead, landing at 40.1g. That's a 5g overshoot on the pump stop, not a 5g overshoot on yield — the lag math is still working at 8g, you just executed the stop 5g late.",
      "recommendationAction": "Hold grind 33.5. Stop pump at 27g — same target as before, but be more deliberate about watching the scale. At the moment the display hits 27g, stop immediately without hesitation.",
      "recommendationReason": "The grind and technique are dialed. Yield overrun is purely a pump-stop execution issue. The lag is consistent at 8g; you just triggered the stop too late this shot. One focused pull where you stop at exactly 27g will confirm whether 35g is where this shot lands.",
      "beanContext": "Ethiopia Yaye is solidly in peak window at 19 days post-roast for a light honey process. The quick-resolving brightness at balance 3 is textbook for a high-elevation Sidama — cranberry acidity that opens fast and fades clean. No extraction concern here. The flavor profile is behaving exactly as the bean suggests.",
      "progressNote": "Flow evenness on this bean has improved shot-over-shot — the brief right-side drip mid-pull is a significant step down from the full right-side channel pattern you saw on El Diviso. Grind 33.5 is holding.",
      "overallVerdict": "good",
      "isStable": false,
      "rawResponse": "{\"summary\":\"Grind 33.5 is holding up — even flow, 27s Normal time, and the quick-resolving sourness is consistent with this bean's character. The issue is yield: you stopped at ~32g on the pump but got 40.1g out, meaning your effective lag this shot was closer to 8g again, pushing you 4.9g over your 35g target. The Normale classification fits — the shot ran long on yield but tasted fine.\",\"numbers\":\"Time at 27s is Normal. Ratio 2.28 is Normal. Balance 3 (Slightly Sour) matches the bean's cranberry/brightness profile, and your notes confirm the sourness resolved immediately — that's not an extraction flag. The one real number to address: you intended to stop at 27g to land at 35g, but stopped at 32g instead, landing at 40.1g. That's a 5g overshoot on the pump stop, not a 5g overshoot on yield — the lag math is still working at 8g, you just executed the stop 5g late.\",\"recommendation\":{\"action\":\"Hold grind 33.5. Stop pump at 27g — same target as before, but be more deliberate about watching the scale. At the moment the display hits 27g, stop immediately without hesitation.\",\"reason\":\"The grind and technique are dialed. Yield overrun is purely a pump-stop execution issue. The lag is consistent at 8g; you just triggered the stop too late this shot. One focused pull where you stop at exactly 27g will confirm whether 35g is where this shot lands.\"},\"bean_context\":\"Ethiopia Yaye is solidly in peak window at 19 days post-roast for a light honey process. The quick-resolving brightness at balance 3 is textbook for a high-elevation Sidama — cranberry acidity that opens fast and fades clean. No extraction concern here. The flavor profile is behaving exactly as the bean suggests.\",\"progress_note\":\"Flow evenness on this bean has improved shot-over-shot — the brief right-side drip mid-pull is a significant step down from the full right-side channel pattern you saw on El Diviso. Grind 33.5 is holding.\",\"overall_verdict\":\"good\",\"is_stable\":false,\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Ethiopia Yaye (bag 18): grind 33.5 locked, balance 3–4, quick-resolving acidity = bean character. Pump stop target is 27g (lag 8g → 35g yield). Execution issue this shot — stopped at 32g instead of 27g, landed at 40.1g. One clean pump stop at 27g needed to confirm.\",\"known_patterns\":\"Bambino drip lag working figure 7g; stop pump 7g before target yield. Carlos Efrain Cortes running ~11g lag — stop pump earlier. El Diviso Pink Bourbon lag 8g — stop pump at 27g for 35g yield. Ethiopia Yaye lag 8g confirmed — stop pump at 27g for 35g yield.\\n\\nWDT: 30lb tamp, 45s edge-to-center coverage; hard cap 30s on sensitive beans. Over-agitation = confirmed channel mechanism. Right-side edge coverage active variable — confirmed channel mechanism across 3 shots on El Diviso and all 3 shots on Night Light Decaf (bag 21). Asymmetric mid-shot flow = WDT distribution, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans even when extraction solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean.\\n\\nLight roast density dominates — Coffee Lab Huila Decaf choked 27.5–33, opened at 38. Ethiopia Yaye (non-decaf light honey) choked at 26, opened at 34. Start light roasts coarse and work down.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 settings obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Yield control critical — 41g caused regression.\\n\\nBrazil Cerrado (natural): do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Light roast density dominant. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed): grind 40, 17–17.7g dose, balance 3–5, dialed in. Ristretto: 24–28g yield, grind 40, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, clean even flow — dialed in. Finer than 26 ran faster (channeling). Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, Swiss Water, medium, bag 21): grind 41 = balance 4, 4 stars, fast 24s, right-side channel mid-shot. All 3 shots show right-side WDT distribution gap. Hold grind 41, fix right-edge WDT coverage.\",\"last_recommendation\":\"Ethiopia Yaye: hold grind 33.5. Stop pump at exactly 27g — lag is 8g, target yield 35g. Execution was the miss this shot, not the recipe.\",\"last_analysis_date\":\"2026-07-25T14:14:00.000Z\",\"last_analyzed_shot_id\":120,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":14,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"},{\"bag_id\":8,\"name\":\"Metric Coffee — Colombia Carlos Efrain Cortes\",\"status\":\"dialed_in\",\"dialed_in_grind\":26,\"dialed_in_yield_g\":38.5,\"current_grind\":25.5,\"shots_pulled\":7,\"profile\":\"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\",\"notes\":\"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"},{\"bag_id\":9,\"name\":\"Metric — El Diviso Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":26,\"shots_pulled\":3,\"profile\":\"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\"notes\":\"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"},{\"bag_id\":18,\"name\":\"Metric — Ethiopia Yaye\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":33.5,\"shots_pulled\":3,\"profile\":\"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\",\"notes\":\"Grind 33.5 confirmed: even flow, balance 3–4, quick-resolving brightness = bean character. Lag 8g — stop pump at exactly 27g for 35g target. Yield overrun both shots = pump stop executed late, not a lag change.\"},{\"bag_id\":21,\"name\":\"Blue Bottle Coffee — Night Light Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":41,\"shots_pulled\":3,\"profile\":\"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\"notes\":\"Grind 41 = balance 4, 4 stars, 24s fast. Right-side channel across all 3 shots — WDT right-edge coverage is the sole remaining variable. Hold grind 41.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"},{\"bag_id\":10,\"name\":\"Blue Bottle Coffee — Night Light Decaf\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":1,\"profile\":\"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/v\",\"notes\":\"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moved to grind 42.\"}]}}",
      "createdAt": "2026-07-25 16:25:05"
    },
    {
      "id": 82,
      "shotId": 120,
      "analysisMode": "recent",
      "summary": "Grind 33.5, 17.6g dose, 40.1g yield, 27s — Normal time, Normal ratio. Balance landed at 3 (Slightly Sour) with quick-resolving brightness. Flow was clean and even; the overrun to 40g was a pump stop execution miss, not a puck or grind issue. The shot was drinkable and the recipe is solid.",
      "numbers": "Time (27s) and ratio (2.28) are both Normal. The yield overrun — you stopped at ~32g instead of 27g — pushed you 4.9g past your 35g target, landing closer to Normale than Espresso. The balance 3 reads as Slightly Sour, consistent with the last two shots on this bean. Notes confirm the sourness resolved immediately, which rules it out as an extraction problem.",
      "recommendationAction": "Lock grind 33.5, dose 17.6g, target 38–42g yield — but the real work is the pump stop: pull at 27g on the scale, not 32g.",
      "recommendationReason": "The recipe is confirmed. Yield overrun is the only remaining variable. Stopping at 27g and letting the 8g lag bring you to 35g is the habit to groove in.",
      "beanContext": "Ethiopia Yaye's flavor notes (cranberry, baking spice, papaya) at 2,200–2,300 MASL naturally produce bright, high-clarity acidity. Immediate-resolving sourness at balance 3 is consistent with the bean's character, not under-extraction. At day 19 post-roast, you're well inside the peak window for a light honey process — freshness is a non-factor here.",
      "progressNote": "Three shots in, grind 33.5 has produced even flow and balanced-to-slightly-sour taste across all of them. The recipe is working — execution of the pump stop is the only remaining variable to nail.",
      "overallVerdict": "good",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Grind 33.5, 17.6g dose, 40.1g yield, 27s — Normal time, Normal ratio. Balance landed at 3 (Slightly Sour) with quick-resolving brightness. Flow was clean and even; the overrun to 40g was a pump stop execution miss, not a puck or grind issue. The shot was drinkable and the recipe is solid.\",\n  \"numbers\": \"Time (27s) and ratio (2.28) are both Normal. The yield overrun — you stopped at ~32g instead of 27g — pushed you 4.9g past your 35g target, landing closer to Normale than Espresso. The balance 3 reads as Slightly Sour, consistent with the last two shots on this bean. Notes confirm the sourness resolved immediately, which rules it out as an extraction problem.\",\n  \"recommendation\": {\n    \"action\": \"Lock grind 33.5, dose 17.6g, target 38–42g yield — but the real work is the pump stop: pull at 27g on the scale, not 32g.\",\n    \"reason\": \"The recipe is confirmed. Yield overrun is the only remaining variable. Stopping at 27g and letting the 8g lag bring you to 35g is the habit to groove in.\"\n  },\n  \"bean_context\": \"Ethiopia Yaye's flavor notes (cranberry, baking spice, papaya) at 2,200–2,300 MASL naturally produce bright, high-clarity acidity. Immediate-resolving sourness at balance 3 is consistent with the bean's character, not under-extraction. At day 19 post-roast, you're well inside the peak window for a light honey process — freshness is a non-factor here.\",\n  \"progress_note\": \"Three shots in, grind 33.5 has produced even flow and balanced-to-slightly-sour taste across all of them. The recipe is working — execution of the pump stop is the only remaining variable to nail.\",\n  \"overall_verdict\": \"good\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"beginner\",\n    \"current_focus\": \"Ethiopia Yaye (bag 18): grind 33.5 locked, dose 17.6g, target 35g yield. Lag confirmed 8g — stop pump at exactly 27g. Execution miss again this shot (stopped at 32g). Pump stop discipline is the sole remaining focus.\",\n    \"known_patterns\": \"Bambino drip lag working figure 7g; stop pump 7g before target yield. Carlos Efrain Cortes running ~11g lag — stop pump earlier. El Diviso Pink Bourbon lag 8g — stop pump at 27g for 35g yield. Ethiopia Yaye lag 8g confirmed — stop pump at 27g for 35g yield.\\n\\nWDT: 30lb tamp, 45s edge-to-center coverage; hard cap 30s on sensitive beans. Over-agitation = confirmed channel mechanism. Right-side edge coverage active variable — confirmed channel mechanism across 3 shots on El Diviso and all 3 shots on Night Light Decaf (bag 21). Asymmetric mid-shot flow = WDT distribution, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans even when extraction solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean.\\n\\nLight roast density dominates — Coffee Lab Huila Decaf choked 27.5–33, opened at 38. Ethiopia Yaye (non-decaf light honey) choked at 26, opened at 34. Start light roasts coarse and work down.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 settings obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Yield control critical — 41g caused regression.\\n\\nBrazil Cerrado (natural): do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Light roast density dominant. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed): grind 40, 17–17.7g dose, balance 3–5, dialed in. Ristretto: 24–28g yield, grind 40, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, clean even flow — dialed in. Finer than 26 ran faster (channeling). Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, Swiss Water, medium, bag 21): grind 41 = balance 4, 4 stars, fast 24s, right-side channel mid-shot. All 3 shots show right-side WDT distribution gap. Hold grind 41, fix right-edge WDT coverage.\",\n    \"last_recommendation\": \"Ethiopia Yaye: lock grind 33.5, dose 17.6g, target 35g yield. Stop pump at exactly 27g — lag is 8g. Execution was the miss again, not the recipe.\",\n    \"last_analysis_date\": \"2026-07-25T14:14:00.000Z\",\n    \"last_analyzed_shot_id\": 120,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 14,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"\n      },\n      {\n        \"bag_id\": 8,\n        \"name\": \"Metric Coffee — Colombia Carlos Efrain Cortes\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 26,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 25.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Light washed, Colombia Nariño, 2015m, Limoncello/Blackberry/Cocoa, high acidity\",\n        \"notes\": \"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"\n      },\n      {\n        \"bag_id\": 9,\n        \"name\": \"Metric — El Diviso Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 26,\n        \"shots_pulled\": 3,\n        \"profile\": \"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\n        \"notes\": \"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"\n      },\n      {\n        \"bag_id\": 18,\n        \"name\": \"Metric — Ethiopia Yaye\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 33.5,\n        \"shots_pulled\": 3,\n        \"profile\": \"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\",\n        \"notes\": \"Grind 33.5 confirmed: even flow, balance 3–4, quick-resolving brightness = bean character. Lag 8g — stop pump at exactly 27g for 35g target. Yield overrun both shots = pump stop executed late, not a lag change.\"\n      },\n      {\n        \"bag_id\": 21,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 41,\n        \"shots_pulled\": 3,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\n        \"notes\": \"Grind 41 = balance 4, 4 stars, 24s fast. Right-side channel across all 3 shots — WDT right-edge coverage is the sole remaining variable. Hold grind 41.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      },\n      {\n        \"bag_id\": 10,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 1,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/v\",\n        \"notes\": \"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moved to grind 42.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-07-25 16:28:18"
    },
    {
      "id": 83,
      "shotId": 122,
      "analysisMode": "recent",
      "summary": "Clean pull — even flow throughout, hit your 35g target (landed at 36.4g with 8g lag accounted for), and 27s sits comfortably in range. Taste was bright but resolved quickly, balance 3. You nailed the pump stop discipline this shot after two execution misses. This bean is dialed in.",
      "numbers": "Time 27s (Normal) and ratio 2.07 (Normal) are both on point. Adjusted dose 17.6g, yield 36.4g — within 1.2g of your 35g target, well within acceptable variance. Lag confirmed at 8g; stopping at ~28g delivered exactly what the recipe called for. Balance 3 (slightly sour) is consistent with this bean's cranberry/baking spice profile and your note that the brightness resolves — that's bean character, not an extraction flag.",
      "recommendationAction": "Lock grind 33.5, dose 17.6g, target 35–37g yield. Stop pump at 27g.",
      "recommendationReason": "Three consistent shots at this recipe with clean flow and quick-resolving brightness. The execution finally matched the recipe this pull — hold everything here. Grind 33 (one click finer than locked) produced the same 27s time, which is good confirmation the window is solid, but 33.5 is your established reference — stay there.",
      "beanContext": "Ethiopia Yaye is squarely in peak window at 20 days off roast for a light honey process — no freshness concerns. Cranberry and baking spice brightness at balance 3 with fast resolution is exactly what this bean's profile predicts. The fact that it's not to your taste despite solid extraction is useful self-knowledge — light honey Ethiopians with high-clarity acidity may just not be your preferred cup. Nothing to fix here, it's just the bean.",
      "progressNote": "Pump stop discipline held this shot — 8g lag, stopped at 28g, landed at 36.4g. That's the correction you've been working toward across the last two pulls. Pattern is closing.",
      "overallVerdict": "good",
      "isStable": true,
      "rawResponse": "{\"summary\":\"Clean pull — even flow throughout, hit your 35g target (landed at 36.4g with 8g lag accounted for), and 27s sits comfortably in range. Taste was bright but resolved quickly, balance 3. You nailed the pump stop discipline this shot after two execution misses. This bean is dialed in.\",\"numbers\":\"Time 27s (Normal) and ratio 2.07 (Normal) are both on point. Adjusted dose 17.6g, yield 36.4g — within 1.2g of your 35g target, well within acceptable variance. Lag confirmed at 8g; stopping at ~28g delivered exactly what the recipe called for. Balance 3 (slightly sour) is consistent with this bean's cranberry/baking spice profile and your note that the brightness resolves — that's bean character, not an extraction flag.\",\"recommendation\":{\"action\":\"Lock grind 33.5, dose 17.6g, target 35–37g yield. Stop pump at 27g.\",\"reason\":\"Three consistent shots at this recipe with clean flow and quick-resolving brightness. The execution finally matched the recipe this pull — hold everything here. Grind 33 (one click finer than locked) produced the same 27s time, which is good confirmation the window is solid, but 33.5 is your established reference — stay there.\"},\"bean_context\":\"Ethiopia Yaye is squarely in peak window at 20 days off roast for a light honey process — no freshness concerns. Cranberry and baking spice brightness at balance 3 with fast resolution is exactly what this bean's profile predicts. The fact that it's not to your taste despite solid extraction is useful self-knowledge — light honey Ethiopians with high-clarity acidity may just not be your preferred cup. Nothing to fix here, it's just the bean.\",\"progress_note\":\"Pump stop discipline held this shot — 8g lag, stopped at 28g, landed at 36.4g. That's the correction you've been working toward across the last two pulls. Pattern is closing.\",\"overall_verdict\":\"good\",\"is_stable\":true,\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Ethiopia Yaye (bag 18): dialed in. Grind 33.5, dose 17.6g, target 35–37g yield, stop pump at 27g. Hold all parameters.\",\"known_patterns\":\"Bambino drip lag working figure 7g; stop pump 7g before target yield. Carlos Efrain Cortes running ~11g lag — stop pump earlier. El Diviso Pink Bourbon lag 8g — stop pump at 27g for 35g yield. Ethiopia Yaye lag 8g confirmed — stop pump at 27g for 35g yield.\\n\\nWDT: 30lb tamp, 45s edge-to-center coverage; hard cap 30s on sensitive beans. Over-agitation = confirmed channel mechanism. Right-side edge coverage active variable — confirmed channel mechanism across 3 shots on El Diviso and all 3 shots on Night Light Decaf (bag 21). Asymmetric mid-shot flow = WDT distribution, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans even when extraction solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean.\\n\\nLight roast density dominates — Coffee Lab Huila Decaf choked 27.5–33, opened at 38. Ethiopia Yaye (non-decaf light honey) choked at 26, opened at 34. Start light roasts coarse and work down.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 settings obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Yield control critical — 41g caused regression.\\n\\nBrazil Cerrado (natural): do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Light roast density dominant. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed): grind 40, 17–17.7g dose, balance 3–5, dialed in. Ristretto: 24–28g yield, grind 40, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, clean even flow — dialed in. Finer than 26 ran faster (channeling). Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, Swiss Water, medium, bag 21): grind 41 = balance 4, 4 stars, fast 24s, right-side channel mid-shot. All 3 shots show right-side WDT distribution gap. Hold grind 41, fix right-edge WDT coverage.\",\"last_recommendation\":\"Ethiopia Yaye: lock grind 33.5, dose 17.6g, target 35–37g yield. Stop pump at 27g — lag is 8g. Dialed in.\",\"last_analysis_date\":\"2026-07-26T13:19:00.000Z\",\"last_analyzed_shot_id\":122,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":14,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"},{\"bag_id\":8,\"name\":\"Metric Coffee — Colombia Carlos Efrain Cortes\",\"status\":\"dialed_in\",\"dialed_in_grind\":26,\"dialed_in_yield_g\":38.5,\"current_grind\":25.5,\"shots_pulled\":7,\"profile\":\"Light washed, Colombia Nariño, 2200m, Limoncello/Blackberry/Cocoa, high acidity\",\"notes\":\"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"},{\"bag_id\":9,\"name\":\"Metric — El Diviso Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":26,\"shots_pulled\":3,\"profile\":\"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\"notes\":\"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"},{\"bag_id\":18,\"name\":\"Metric — Ethiopia Yaye\",\"status\":\"dialed_in\",\"dialed_in_grind\":33.5,\"dialed_in_yield_g\":36,\"current_grind\":33.5,\"shots_pulled\":4,\"profile\":\"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\",\"notes\":\"Dialed in: grind 33.5, dose 17.6g, 35–37g yield, balance 3–4. Lag 8g — stop pump at 27g. Brightness resolves quickly = bean character, not extraction issue. Not Diego's preferred profile.\"},{\"bag_id\":21,\"name\":\"Blue Bottle Coffee — Night Light Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":41,\"shots_pulled\":3,\"profile\":\"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\"notes\":\"Grind 41 = balance 4, 4 stars, 24s fast. Right-side channel across all 3 shots — WDT right-edge coverage is the sole remaining variable. Hold grind 41.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"},{\"bag_id\":10,\"name\":\"Blue Bottle Coffee — Night Light Decaf\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":1,\"profile\":\"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/v\",\"notes\":\"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moved to grind 42.\"}]}}",
      "createdAt": "2026-07-26 13:54:02"
    },
    {
      "id": 84,
      "shotId": 122,
      "analysisMode": "recent",
      "summary": "Clean shot — even flow start to finish, hit your Espresso target (36.4g yield, 1.2g over target), and the brightness resolved quickly. Balance 3 reads as bean character on this honey-process Ethiopian, not an extraction issue. You've got this one dialed in.",
      "numbers": "Time 27s (Normal) and ratio 2.07 (Normal) — both on point. Adjusted dose 17.6g with 0.1g retention (negligible). Stopping the pump at 28g landed you at 36.4g with the 8g lag, right in the 35–37g target window. Balance 3 with quick-resolving brightness matches the bean's cranberry/baking spice profile — not a sourness problem. Notes confirm clean, even flow throughout.",
      "recommendationAction": "Lock grind 33.5, dose 17.6g, target 35–37g yield. Stop pump at 27g.",
      "recommendationReason": "This shot at grind 33 hit the window cleanly, and your previous dialed-in shot at 33.5 also landed well. Grind 33.5 is the confirmed sweet spot — stay there. The lag is consistent at 8g, so the 27g pump stop is your standing call.",
      "beanContext": "Cranberry and baking spice brightness resolving cleanly is exactly what this honey-process Sidama is supposed to do. At 20 days off roast you're in the peak window. The profile just isn't Diego's preference — that's taste, not extraction. Nothing to fix here.",
      "progressNote": "Two clean shots in a row with even flow and quick-resolving acidity — the pump stop discipline is working. Lag management is clicking into place as a reliable habit.",
      "overallVerdict": "good",
      "isStable": true,
      "rawResponse": "{\"summary\":\"Clean shot — even flow start to finish, hit your Espresso target (36.4g yield, 1.2g over target), and the brightness resolved quickly. Balance 3 reads as bean character on this honey-process Ethiopian, not an extraction issue. You've got this one dialed in.\",\"numbers\":\"Time 27s (Normal) and ratio 2.07 (Normal) — both on point. Adjusted dose 17.6g with 0.1g retention (negligible). Stopping the pump at 28g landed you at 36.4g with the 8g lag, right in the 35–37g target window. Balance 3 with quick-resolving brightness matches the bean's cranberry/baking spice profile — not a sourness problem. Notes confirm clean, even flow throughout.\",\"recommendation\":{\"action\":\"Lock grind 33.5, dose 17.6g, target 35–37g yield. Stop pump at 27g.\",\"reason\":\"This shot at grind 33 hit the window cleanly, and your previous dialed-in shot at 33.5 also landed well. Grind 33.5 is the confirmed sweet spot — stay there. The lag is consistent at 8g, so the 27g pump stop is your standing call.\"},\"bean_context\":\"Cranberry and baking spice brightness resolving cleanly is exactly what this honey-process Sidama is supposed to do. At 20 days off roast you're in the peak window. The profile just isn't Diego's preference — that's taste, not extraction. Nothing to fix here.\",\"progress_note\":\"Two clean shots in a row with even flow and quick-resolving acidity — the pump stop discipline is working. Lag management is clicking into place as a reliable habit.\",\"overall_verdict\":\"good\",\"is_stable\":true,\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Ethiopia Yaye (bag 18): dialed in. Grind 33.5, dose 17.6g, target 35–37g yield, stop pump at 27g. Hold all parameters.\",\"known_patterns\":\"Bambino drip lag working figure 7g; stop pump 7g before target yield. Carlos Efrain Cortes running ~11g lag — stop pump earlier. El Diviso Pink Bourbon lag 8g — stop pump at 27g for 35g yield. Ethiopia Yaye lag 8g confirmed — stop pump at 27g for 35g yield.\\n\\nWDT: 30lb tamp, 45s edge-to-center coverage; hard cap 30s on sensitive beans. Over-agitation = confirmed channel mechanism. Right-side edge coverage active variable — confirmed channel mechanism across 3 shots on El Diviso and all 3 shots on Night Light Decaf (bag 21). Asymmetric mid-shot flow = WDT distribution, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans even when extraction solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean.\\n\\nLight roast density dominates — Coffee Lab Huila Decaf choked 27.5–33, opened at 38. Ethiopia Yaye (non-decaf light honey) choked at 26, opened at 34. Start light roasts coarse and work down.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 settings obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Yield control critical — 41g caused regression.\\n\\nBrazil Cerrado (natural): do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Light roast density dominant. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed): grind 40, 17–17.7g dose, balance 3–5, dialed in. Ristretto: 24–28g yield, grind 40, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, clean even flow — dialed in. Finer than 26 ran faster (channeling). Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, Swiss Water, medium, bag 21): grind 41 = balance 4, 4 stars, fast 24s, right-side channel mid-shot. All 3 shots show right-side WDT distribution gap. Hold grind 41, fix right-edge WDT coverage.\",\"last_recommendation\":\"Ethiopia Yaye: lock grind 33.5, dose 17.6g, target 35–37g yield. Stop pump at 27g — lag is 8g. Dialed in.\",\"last_analysis_date\":\"2026-07-26T13:19:00.000Z\",\"last_analyzed_shot_id\":122,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":14,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"},{\"bag_id\":8,\"name\":\"Metric Coffee — Colombia Carlos Efrain Cortes\",\"status\":\"dialed_in\",\"dialed_in_grind\":26,\"dialed_in_yield_g\":38.5,\"current_grind\":25.5,\"shots_pulled\":7,\"profile\":\"Light washed, Colombia Nariño, 2200m, Limoncello/Blackberry/Cocoa, high acidity\",\"notes\":\"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"},{\"bag_id\":9,\"name\":\"Metric — El Diviso Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":26,\"shots_pulled\":3,\"profile\":\"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\"notes\":\"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"},{\"bag_id\":18,\"name\":\"Metric — Ethiopia Yaye\",\"status\":\"dialed_in\",\"dialed_in_grind\":33.5,\"dialed_in_yield_g\":36,\"current_grind\":33.5,\"shots_pulled\":4,\"profile\":\"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\",\"notes\":\"Dialed in: grind 33.5, dose 17.6g, 35–37g yield, balance 3–4. Lag 8g — stop pump at 27g. Brightness resolves quickly = bean character, not extraction issue. Not Diego's preferred profile.\"},{\"bag_id\":21,\"name\":\"Blue Bottle Coffee — Night Light Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":41,\"shots_pulled\":3,\"profile\":\"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\"notes\":\"Grind 41 = balance 4, 4 stars, 24s fast. Right-side channel across all 3 shots — WDT right-edge coverage is the sole remaining variable. Hold grind 41.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"},{\"bag_id\":10,\"name\":\"Blue Bottle Coffee — Night Light Decaf\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":1,\"profile\":\"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/v\",\"notes\":\"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moved to grind 42.\"}]}}",
      "createdAt": "2026-07-26 13:58:46"
    },
    {
      "id": 85,
      "shotId": 124,
      "analysisMode": "recent",
      "summary": "Clean ristretto pull — balanced taste, good body, quick-fading brightness, and you nailed your target yield. The early right-side restriction resolved on its own mid-shot, so this is a solid result despite the uneven start.",
      "numbers": "Time at 21s is Fast, ratio at 1.44 lands in Ristretto territory — both expected and intentional given your ristretto target. You hit the target (25.5g vs 26.6g target, within 1g). Taste at balance 4 matches the extraction numbers. The right-side restriction in the first 6–7 seconds is worth noting — it resolved before the shot was compromised, but it's a recurring pattern across your Yaye shots and likely traces to the same right-edge WDT coverage gap seen on El Diviso and Night Light.",
      "recommendationAction": "Lock grind 33.5, dose 17.7g, target 35–37g yield for standard espresso (stop pump at 27g). For ristretto: grind 33, target 24–27g yield, stop pump at 16–17g.",
      "recommendationReason": "You now have a confirmed ristretto recipe alongside the dialed-in standard pull. The right-side restriction is the one loose thread — make sure right-edge WDT coverage is deliberate and consistent going forward.",
      "beanContext": "Cranberry and papaya brightness fading fast is exactly this bean's character — your balance 4 here is well-earned, not a fluke. At 21 days since roast the Yaye is still comfortably in its peak window. No freshness concerns.",
      "progressNote": "Four of your last five shots on the Yaye have landed balanced or better — that's real consistency on a high-acidity light roast, which isn't easy.",
      "overallVerdict": "great",
      "isStable": true,
      "rawResponse": "{\"summary\":\"Clean ristretto pull — balanced taste, good body, quick-fading brightness, and you nailed your target yield. The early right-side restriction resolved on its own mid-shot, so this is a solid result despite the uneven start.\",\"numbers\":\"Time at 21s is Fast, ratio at 1.44 lands in Ristretto territory — both expected and intentional given your ristretto target. You hit the target (25.5g vs 26.6g target, within 1g). Taste at balance 4 matches the extraction numbers. The right-side restriction in the first 6–7 seconds is worth noting — it resolved before the shot was compromised, but it's a recurring pattern across your Yaye shots and likely traces to the same right-edge WDT coverage gap seen on El Diviso and Night Light.\",\"recommendation\":{\"action\":\"Lock grind 33.5, dose 17.7g, target 35–37g yield for standard espresso (stop pump at 27g). For ristretto: grind 33, target 24–27g yield, stop pump at 16–17g.\",\"reason\":\"You now have a confirmed ristretto recipe alongside the dialed-in standard pull. The right-side restriction is the one loose thread — make sure right-edge WDT coverage is deliberate and consistent going forward.\"},\"bean_context\":\"Cranberry and papaya brightness fading fast is exactly this bean's character — your balance 4 here is well-earned, not a fluke. At 21 days since roast the Yaye is still comfortably in its peak window. No freshness concerns.\",\"progress_note\":\"Four of your last five shots on the Yaye have landed balanced or better — that's real consistency on a high-acidity light roast, which isn't easy.\",\"overall_verdict\":\"great\",\"is_stable\":true,\"updated_coaching_state\":{\"experience_level\":\"beginner\",\"current_focus\":\"Ethiopia Yaye (bag 18): dialed in. Standard: grind 33.5, dose 17.7g, target 35–37g yield, stop pump at 27g. Ristretto: grind 33, target 24–27g yield, stop pump at 16–17g.\",\"known_patterns\":\"Bambino drip lag working figure 7g; stop pump 7g before target yield. Carlos Efrain Cortes running ~11g lag — stop pump earlier. El Diviso Pink Bourbon lag 8g — stop pump at 27g for 35g yield. Ethiopia Yaye lag 8g confirmed — stop pump at 27g for 35g yield; ristretto stop at 16–17g.\\n\\nWDT: 30lb tamp, 45s edge-to-center coverage; hard cap 30s on sensitive beans. Over-agitation = confirmed channel mechanism. Right-side edge coverage active variable — confirmed channel mechanism across 3 shots on El Diviso, all 3 shots on Night Light Decaf (bag 21), and recurrent early restriction on Ethiopia Yaye. Asymmetric mid-shot flow = WDT distribution, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans even when extraction solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean.\\n\\nLight roast density dominates — Coffee Lab Huila Decaf choked 27.5–33, opened at 38. Ethiopia Yaye (non-decaf light honey) choked at 26, opened at 34. Start light roasts coarse and work down.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 settings obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Yield control critical — 41g caused regression.\\n\\nBrazil Cerrado (natural): do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Light roast density dominant. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed): grind 40, 17–17.7g dose, balance 3–5, dialed in. Ristretto: 24–28g yield, grind 40, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, clean even flow — dialed in. Finer than 26 ran faster (channeling). Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, Swiss Water, medium, bag 21): grind 41 = balance 4, 4 stars, fast 24s, right-side channel mid-shot. All 3 shots show right-side WDT distribution gap. Hold grind 41, fix right-edge WDT coverage.\",\"last_recommendation\":\"Ethiopia Yaye: standard espresso — grind 33.5, dose 17.7g, target 35–37g yield, stop pump at 27g. Ristretto — grind 33, target 24–27g yield, stop pump at 16–17g. Dialed in on both styles.\",\"last_analysis_date\":\"2026-07-27T15:51:00.000Z\",\"last_analyzed_shot_id\":124,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":14,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"},{\"bag_id\":8,\"name\":\"Metric Coffee — Colombia Carlos Efrain Cortes\",\"status\":\"dialed_in\",\"dialed_in_grind\":26,\"dialed_in_yield_g\":38.5,\"current_grind\":25.5,\"shots_pulled\":7,\"profile\":\"Light washed, Colombia Nariño, 2200m, Limoncello/Blackberry/Cocoa, high acidity\",\"notes\":\"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"},{\"bag_id\":9,\"name\":\"Metric — El Diviso Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":26,\"shots_pulled\":3,\"profile\":\"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\"notes\":\"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"},{\"bag_id\":18,\"name\":\"Metric — Ethiopia Yaye\",\"status\":\"dialed_in\",\"dialed_in_grind\":33.5,\"dialed_in_yield_g\":36,\"current_grind\":33.5,\"shots_pulled\":5,\"profile\":\"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\",\"notes\":\"Dialed in: grind 33.5, dose 17.7g, 35–37g yield, balance 3–4. Lag 8g — stop pump at 27g. Ristretto: grind 33, 24–27g yield, stop at 16–17g. Brightness resolves quickly = bean character.\"},{\"bag_id\":21,\"name\":\"Blue Bottle Coffee — Night Light Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":41,\"shots_pulled\":3,\"profile\":\"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\"notes\":\"Grind 41 = balance 4, 4 stars, 24s fast. Right-side channel across all 3 shots — WDT right-edge coverage is the sole remaining variable. Hold grind 41.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"},{\"bag_id\":10,\"name\":\"Blue Bottle Coffee — Night Light Decaf\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":1,\"profile\":\"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/v\",\"notes\":\"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moved to grind 42.\"}]}}",
      "createdAt": "2026-07-27 16:09:59"
    },
    {
      "id": 86,
      "shotId": 128,
      "analysisMode": "recent",
      "summary": "Shot 100 — a milestone pull. Ristretto on Night Light Decaf at grind 40.5, 18.5g adjusted dose, 28.8g yield in 17 seconds. Balance landed at 4 and you rated it 4 stars. The yield was 1g over your 27.8g target and the time ran under the 20–25s window, but the taste result is solid. Even flow across both spouts throughout — cleanest flow note on this bean so far after three straight right-side channel shots at grinder 41–42.",
      "numbers": "Time is Very Fast at 17s and ratio is Short at 1.56 — consistent with a ristretto pull. The target yield was nearly nailed (28.8g vs 27.8g, 1g over). Time ran fast of the 20–25s target window, which tracks: grind 40.5 is the coarsest setting you've tried on this bean in ristretto mode, so a faster pull is expected. Balance 4 and 4 stars with even bilateral flow — the numbers and taste are aligned. Slight brightness in the notes is consistent with the key lime note in this bean's profile, and it's not flagged as lingering.",
      "recommendationAction": "Lock grind 40.5, dose 18.5g, target 27–31g yield.",
      "recommendationReason": "Even flow is the breakthrough here — three prior shots had persistent right-side channeling at grind 41–42. Grind 40.5 plus your current WDT coverage finally produced clean bilateral flow. The taste confirms it: balanced, strong, brightness resolving. Stay here.",
      "beanContext": "Night Light Decaf at 21 days since roast is at the tail end of its peak window for a Swiss Water medium — still good but don't expect improvement from resting further. The strong smoky character you keep noting across multiple shots (confirmed at grind 41 standard and now 40.5 ristretto) is the bean — crème brûlée and cocoa-forward profiles can read as smoky intensity, not extraction error. The key lime brightness showing up lightly here is the bean doing what it's supposed to do.",
      "progressNote": "Shot 100. Your even-flow breakthrough on Night Light Decaf is a fitting milestone — three shots of right-side channeling resolved by one click coarser and cleaner WDT edge coverage. The pattern you identified and fixed is exactly the kind of diagnostic work that marks real progress.",
      "overallVerdict": "good",
      "isStable": true,
      "rawResponse": "{\"summary\":\"Shot 100 — a milestone pull. Ristretto on Night Light Decaf at grind 40.5, 18.5g adjusted dose, 28.8g yield in 17 seconds. Balance landed at 4 and you rated it 4 stars. The yield was 1g over your 27.8g target and the time ran under the 20–25s window, but the taste result is solid. Even flow across both spouts throughout — cleanest flow note on this bean so far after three straight right-side channel shots at grinder 41–42.\", \"numbers\": \"Time is Very Fast at 17s and ratio is Short at 1.56 — consistent with a ristretto pull. The target yield was nearly nailed (28.8g vs 27.8g, 1g over). Time ran fast of the 20–25s target window, which tracks: grind 40.5 is the coarsest setting you've tried on this bean in ristretto mode, so a faster pull is expected. Balance 4 and 4 stars with even bilateral flow — the numbers and taste are aligned. Slight brightness in the notes is consistent with the key lime note in this bean's profile, and it's not flagged as lingering.\", \"recommendation\": {\"action\": \"Lock grind 40.5, dose 18.5g, target 27–31g yield.\", \"reason\": \"Even flow is the breakthrough here — three prior shots had persistent right-side channeling at grind 41–42. Grind 40.5 plus your current WDT coverage finally produced clean bilateral flow. The taste confirms it: balanced, strong, brightness resolving. Stay here.\"}, \"bean_context\": \"Night Light Decaf at 21 days since roast is at the tail end of its peak window for a Swiss Water medium — still good but don't expect improvement from resting further. The strong smoky character you keep noting across multiple shots (confirmed at grind 41 standard and now 40.5 ristretto) is the bean — crème brûlée and cocoa-forward profiles can read as smoky intensity, not extraction error. The key lime brightness showing up lightly here is the bean doing what it's supposed to do.\", \"progress_note\": \"Shot 100. Your even-flow breakthrough on Night Light Decaf is a fitting milestone — three shots of right-side channeling resolved by one click coarser and cleaner WDT edge coverage. The pattern you identified and fixed is exactly the kind of diagnostic work that marks real progress.\", \"overall_verdict\": \"good\", \"is_stable\": true, \"updated_coaching_state\": {\"experience_level\": \"developing\", \"current_focus\": \"Night Light Decaf (bag 21): ristretto dialed in at grind 40.5, 18.5g dose, 27–31g yield. Even flow confirmed — right-side channel resolved.\", \"known_patterns\": \"Bambino drip lag working figure 7g; stop pump 7g before target yield. Carlos Efrain Cortes running ~11g lag — stop pump earlier. El Diviso Pink Bourbon lag 8g — stop pump at 27g for 35g yield. Ethiopia Yaye lag 8g confirmed — stop pump at 27g for 35g yield; ristretto stop at 16–17g.\\n\\nWDT: 30lb tamp, 45s edge-to-center coverage; hard cap 30s on sensitive beans. Over-agitation = confirmed channel mechanism. Right-side edge coverage active variable — confirmed channel mechanism across 3 shots on El Diviso, all 3 shots on Night Light Decaf (bag 21 shots 1–3), and recurrent early restriction on Ethiopia Yaye. Asymmetric mid-shot flow = WDT distribution, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans even when extraction solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean.\\n\\nLight roast density dominates — Coffee Lab Huila Decaf choked 27.5–33, opened at 38. Ethiopia Yaye (non-decaf light honey) choked at 26, opened at 34. Start light roasts coarse and work down.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 settings obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Yield control critical — 41g caused regression.\\n\\nBrazil Cerrado (natural): do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Light roast density dominant. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed): grind 40, 17–17.7g dose, balance 3–5, dialed in. Ristretto: 24–28g yield, grind 40, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, clean even flow — dialed in. Finer than 26 ran faster (channeling). Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, Swiss Water, medium, bag 21): ristretto grind 40.5 = balance 4, 4 stars, 17s, even flow — right-side channel resolved vs shots 1–3 at 41–42. Standard shots at grind 41 also produced balance 4, 4 stars with even flow. Smoky/strong character confirmed as bean profile.\", \"last_recommendation\": \"Night Light Decaf ristretto: lock grind 40.5, dose 18.5g, target 27–31g yield. Even flow confirmed — dialed in.\", \"last_analysis_date\": \"2026-07-29T21:15:00.000Z\", \"last_analyzed_shot_id\": 128, \"bean_contexts\": [{\"bag_id\": 4, \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\", \"status\": \"dialed_in\", \"dialed_in_grind\": 42, \"dialed_in_yield_g\": 38, \"current_grind\": 42, \"shots_pulled\": 10, \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\", \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"}, {\"bag_id\": 2, \"name\": \"Luckycat — Maomi Blend\", \"status\": \"dialing_in\", \"dialed_in_grind\": null, \"dialed_in_yield_g\": null, \"current_grind\": 32.5, \"shots_pulled\": 7, \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\", \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"}, {\"bag_id\": 3, \"name\": \"Metric — Decaf Huila Pink Bourbon\", \"status\": \"dialing_in\", \"dialed_in_grind\": 28, \"dialed_in_yield_g\": 37, \"current_grind\": 28, \"shots_pulled\": 9, \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\", \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"}, {\"bag_id\": 5, \"name\": \"Metric — Ándale Market (bag 2)\", \"status\": \"dialed_in\", \"dialed_in_grind\": 28, \"dialed_in_yield_g\": 38.5, \"current_grind\": 28, \"shots_pulled\": 9, \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\", \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"}, {\"bag_id\": 6, \"name\": \"Coffee Lab & Roasters — Huila Decaf\", \"status\": \"dialing_in\", \"dialed_in_grind\": null, \"dialed_in_yield_g\": null, \"current_grind\": 38, \"shots_pulled\": 6, \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\", \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"}, {\"bag_id\": 7, \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\", \"status\": \"dialed_in\", \"dialed_in_grind\": 40, \"dialed_in_yield_g\": 38, \"current_grind\": 40, \"shots_pulled\": 14, \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\", \"notes\": \"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"}, {\"bag_id\": 8, \"name\": \"Metric Coffee — Colombia Carlos Efrain Cortes\", \"status\": \"dialed_in\", \"dialed_in_grind\": 26, \"dialed_in_yield_g\": 38.5, \"current_grind\": 25.5, \"shots_pulled\": 7, \"profile\": \"Light washed, Colombia Nariño, 2200m, Limoncello/Blackberry/Cocoa, high acidity\", \"notes\": \"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"}, {\"bag_id\": 9, \"name\": \"Metric — El Diviso Pink Bourbon\", \"status\": \"dialing_in\", \"dialed_in_grind\": null, \"dialed_in_yield_g\": null, \"current_grind\": 26, \"shots_pulled\": 3, \"profile\": \"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\", \"notes\": \"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"}, {\"bag_id\": 18, \"name\": \"Metric — Ethiopia Yaye\", \"status\": \"dialed_in\", \"dialed_in_grind\": 33.5, \"dialed_in_yield_g\": 36, \"current_grind\": 33.5, \"shots_pulled\": 5, \"profile\": \"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\", \"notes\": \"Dialed in: grind 33.5, dose 17.7g, 35–37g yield, balance 3–4. Lag 8g — stop pump at 27g. Ristretto: grind 33, 24–27g yield, stop at 16–17g. Brightness resolves quickly = bean character.\"}, {\"bag_id\": 21, \"name\": \"Blue Bottle Coffee — Night Light Decaf\", \"status\": \"dialed_in\", \"dialed_in_grind\": 40.5, \"dialed_in_yield_g\": 29, \"current_grind\": 40.5, \"shots_pulled\": 7, \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\", \"notes\": \"Ristretto: grind 40.5, 18.5g dose, 27–31g yield, balance 4, even flow — right-side channel resolved. Standard: grind 41, balance 4, 4 stars. Smoky/strong = bean character.\"}, {\"bag_id\": 1, \"name\": \"Metric — Ándale Market\", \"status\": \"finished\", \"dialed_in_grind\": null, \"dialed_in_yield_g\": null, \"current_grind\": null, \"shots_pulled\": 12, \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\", \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"}, {\"bag_id\": 10, \"name\": \"Blue Bottle Coffee — Night Light Decaf\", \"status\": \"finished\", \"dialed_in_grind\": null, \"dialed_in_yield_g\": null, \"current_grind\": null, \"shots_pulled\": 1, \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/v\", \"notes\": \"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moved to grind 42.\"}]}}",
      "createdAt": "2026-07-29 21:45:40"
    },
    {
      "id": 87,
      "shotId": 131,
      "analysisMode": "recent",
      "summary": "Shot 1 on the Costa Rica Don Eli Tematica ran 14 seconds — well into Very Fast territory — producing a watery, light-bodied shot with lingering sourness. At grind 32.5, this bean is running far too coarse. The lingering sour (not quick-fading) is a real extraction flag here, not bean character.",
      "numbers": "14 seconds is Very Fast — industry standard calls this severely under-extracted (under 20s), so this is outside normal range regardless of label. Ratio at 1.94 classifies as Short, but you missed your Espresso target by 1.1g on yield and by a wide margin on time. The watery texture and lingering sourness in your notes are consistent with significant under-extraction at this speed.",
      "recommendationAction": "Go significantly finer — try grind 26–27 for your next shot.",
      "recommendationReason": "14 seconds is a severe under-extraction at any ratio. This is a light honey-process Costa Rica at 1,700 MASL — high-density, needs a fine grind to slow extraction. Your Ethiopia Yaye (comparable light honey) dialed in at 33.5 but that's a different bean. Carlos Efrain Cortes (light washed, similar elevation) needed grind 26. Your Coffee Lab Huila Decaf choked below 33 — but that was decaf with different structure. Start at 26–27 and work from there. Lingering sourness confirms this isn't brightness, it's under-extraction.",
      "beanContext": "Don Eli Tematica is a light honey-process Costa Rica Tarrazu at 1,700 MASL — dense, slow to extract, similar density profile to your Carlos Efrain Cortes (light washed Colombia, also high elevation). Your Carlos Efrain Cortes needed grind 26 to hit 24 seconds with even flow, making that the most relevant reference point for a starting grind here. Honey process adds a touch of sweetness and body relative to washed, so extraction behavior should be similar to light washed but potentially slightly more forgiving. At 26 days from roast, freshness is solid — not a factor. The fast flow at 32.5 is purely a grind issue.",
      "progressNote": "First shot on a new bean running 14s is a clear baseline — the grind direction is unambiguous. Big move finer is the right call.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 1 on the Costa Rica Don Eli Tematica ran 14 seconds — well into Very Fast territory — producing a watery, light-bodied shot with lingering sourness. At grind 32.5, this bean is running far too coarse. The lingering sour (not quick-fading) is a real extraction flag here, not bean character.\",\n  \"numbers\": \"14 seconds is Very Fast — industry standard calls this severely under-extracted (under 20s), so this is outside normal range regardless of label. Ratio at 1.94 classifies as Short, but you missed your Espresso target by 1.1g on yield and by a wide margin on time. The watery texture and lingering sourness in your notes are consistent with significant under-extraction at this speed.\",\n  \"recommendation\": {\n    \"action\": \"Go significantly finer — try grind 26–27 for your next shot.\",\n    \"reason\": \"14 seconds is a severe under-extraction at any ratio. This is a light honey-process Costa Rica at 1,700 MASL — high-density, needs a fine grind to slow extraction. Your Ethiopia Yaye (comparable light honey) dialed in at 33.5 but that's a different bean. Carlos Efrain Cortes (light washed, similar elevation) needed grind 26. Your Coffee Lab Huila Decaf choked below 33 — but that was decaf with different structure. Start at 26–27 and work from there. Lingering sourness confirms this isn't brightness, it's under-extraction.\"\n  },\n  \"bean_context\": \"Don Eli Tematica is a light honey-process Costa Rica Tarrazu at 1,700 MASL — dense, slow to extract, similar density profile to your Carlos Efrain Cortes (light washed Colombia, also high elevation). Your Carlos Efrain Cortes needed grind 26 to hit 24 seconds with even flow, making that the most relevant reference point for a starting grind here. Honey process adds a touch of sweetness and body relative to washed, so extraction behavior should be similar to light washed but potentially slightly more forgiving. At 26 days from roast, freshness is solid — not a factor. The fast flow at 32.5 is purely a grind issue.\",\n  \"progress_note\": \"First shot on a new bean running 14s is a clear baseline — the grind direction is unambiguous. Big move finer is the right call.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"developing\",\n    \"current_focus\": \"Costa Rica Don Eli Tematica (bag 17): shot 1 at grind 32.5 = 14s, severely under-extracted, watery, lingering sour. Moving to grind 26–27 next.\",\n    \"known_patterns\": \"Bambino drip lag working figure 7g; stop pump 7g before target yield. Carlos Efrain Cortes running ~11g lag — stop pump earlier. El Diviso Pink Bourbon lag 8g — stop pump at 27g for 35g yield. Ethiopia Yaye lag 8g confirmed — stop pump at 27g for 35g yield; ristretto stop at 16–17g.\\n\\nWDT: 30lb tamp, 45s edge-to-center coverage; hard cap 30s on sensitive beans. Over-agitation = confirmed channel mechanism. Right-side edge coverage active variable — confirmed channel mechanism across 3 shots on El Diviso, all 3 shots on Night Light Decaf (bag 21 shots 1–3), and recurrent early restriction on Ethiopia Yaye. Asymmetric mid-shot flow = WDT distribution, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans even when extraction solid. Quick-fading acidity at balance 2–3 = bean character. Lingering sourness = real extraction flag.\\n\\nDecaf extracts more easily — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean.\\n\\nLight roast density dominates — Coffee Lab Huila Decaf choked 27.5–33, opened at 38. Ethiopia Yaye (non-decaf light honey) choked at 26, opened at 34. Start light roasts coarse and work down.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 settings obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Yield control critical — 41g caused regression.\\n\\nBrazil Cerrado (natural): do not attempt below 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Light roast density dominant. Grind 38 = first working setting, 35s, balance 3, channeling present — traces to puck prep. Do not go coarser until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark, washed): grind 40, 17–17.7g dose, balance 3–5, dialed in. Ristretto: 24–28g yield, grind 40, two 5-star shots. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, clean even flow — dialed in. Finer than 26 ran faster (channeling). Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, Swiss Water, medium, bag 21): ristretto grind 40.5 = balance 4, 4 stars, 17s, even flow — right-side channel resolved vs shots 1–3 at 41–42. Standard shots at grind 41 also produced balance 4, 4 stars with even flow. Smoky/strong character confirmed as bean profile.\\n\\nCosta Rica Don Eli Tematica (light honey, Tarrazu, bag 17): grind 32.5 = 14s, severely under-extracted, watery, lingering sour. Reference: Carlos Efrain Cortes dialed at 26 — start 26–27.\",\n    \"last_recommendation\": \"Costa Rica Don Eli Tematica: go significantly finer, try grind 26–27 next shot.\",\n    \"last_analysis_date\": \"2026-08-01T13:11:00.000Z\",\n    \"last_analyzed_shot_id\": 131,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 14,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"\n      },\n      {\n        \"bag_id\": 8,\n        \"name\": \"Metric Coffee — Colombia Carlos Efrain Cortes\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 26,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 25.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Light washed, Colombia Nariño, 2200m, Limoncello/Blackberry/Cocoa, high acidity\",\n        \"notes\": \"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"\n      },\n      {\n        \"bag_id\": 9,\n        \"name\": \"Metric — El Diviso Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 26,\n        \"shots_pulled\": 3,\n        \"profile\": \"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\n        \"notes\": \"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"\n      },\n      {\n        \"bag_id\": 18,\n        \"name\": \"Metric — Ethiopia Yaye\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 33.5,\n        \"dialed_in_yield_g\": 36,\n        \"current_grind\": 33.5,\n        \"shots_pulled\": 5,\n        \"profile\": \"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\",\n        \"notes\": \"Dialed in: grind 33.5, dose 17.7g, 35–37g yield, balance 3–4. Lag 8g — stop pump at 27g. Ristretto: grind 33, 24–27g yield, stop at 16–17g. Brightness resolves quickly = bean character.\"\n      },\n      {\n        \"bag_id\": 21,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40.5,\n        \"dialed_in_yield_g\": 29,\n        \"current_grind\": 40.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\n        \"notes\": \"Ristretto: grind 40.5, 18.5g dose, 27–31g yield, balance 4, even flow — right-side channel resolved. Standard: grind 41, balance 4, 4 stars. Smoky/strong = bean character.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      },\n      {\n        \"bag_id\": 10,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 1,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/v\",\n        \"notes\": \"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moved to grind 42.\"\n      },\n      {\n        \"bag_id\": 17,\n        \"name\": \"Metric Coffee — Costa Rica Don Eli Tematica\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 1,\n        \"profile\": \"Light honey, Costa Rica Tarrazu, 1700m, hibiscus/raspberry/caramel\",\n        \"notes\": \"Shot 1 at grind 32.5: 14s, severely under-extracted, watery, lingering sour. Reference Carlos Efrain Cortes — try grind 26–27.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-08-01 13:28:37"
    },
    {
      "id": 88,
      "shotId": 132,
      "analysisMode": "recent",
      "summary": "Shot 9 on Night Light Decaf, ristretto target hit on yield and time — but balance 2 (Sour) and lingering acidity say this one missed the mark. The sour linger combined with fast, momentarily dripping flow on the left spout points to under-extraction, not just bean brightness.",
      "numbers": "Time is Fast at 20s (bottom edge of your target range) and ratio is Short at 1.55 — both consistent with a ristretto pull. The target was technically hit, but the taste tells a different story: balance 2 with lingering sourness is a real extraction flag on this bean, not character. For context, your last ristretto at grind 40.5 hit balance 4 with the same yield range. The regression is meaningful.",
      "recommendationAction": "Go 2 clicks finer, from 38.5 to 36.5, and hold dose and yield target constant.",
      "recommendationReason": "Lingering sour at 20s on a Swiss Water decaf — which extracts more easily than regular — suggests the grind is still too coarse for this shot to develop properly. Your best ristretto on this bag was at 40.5 (balance 4, even flow), so 38.5 is a step in the wrong direction. The left-side dripping mid-shot also points to uneven extraction likely worsened by a coarser grind. Move meaningfully finer before micro-adjusting.",
      "beanContext": "Night Light Decaf at day 24 post-roast is still in a good window for Swiss Water medium roast (peak ~7–28 days), so freshness isn't the culprit. The smoky, strong character is confirmed bean profile — but lingering sourness on this bean specifically has appeared before (shot at grind 39.5 also got balance 3 with sour linger). Your dialed-in recipe was grind 40.5 for ristretto, and this shot at 38.5 underperformed it noticeably. Grind direction matters here: coarser = faster = more sour on this bean.",
      "progressNote": "You've correctly identified the bean's smoky character as profile rather than extraction across multiple shots — that palate calibration is solid. The regression here came from a grind change in the wrong direction; trust your previous 40.5 baseline and work back toward it.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 9 on Night Light Decaf, ristretto target hit on yield and time — but balance 2 (Sour) and lingering acidity say this one missed the mark. The sour linger combined with fast, momentarily dripping flow on the left spout points to under-extraction, not just bean brightness.\",\n  \"numbers\": \"Time is Fast at 20s (bottom edge of your target range) and ratio is Short at 1.55 — both consistent with a ristretto pull. The target was technically hit, but the taste tells a different story: balance 2 with lingering sourness is a real extraction flag on this bean, not character. For context, your last ristretto at grind 40.5 hit balance 4 with the same yield range. The regression is meaningful.\",\n  \"recommendation\": {\n    \"action\": \"Go 2 clicks finer, from 38.5 to 36.5, and hold dose and yield target constant.\",\n    \"reason\": \"Lingering sour at 20s on a Swiss Water decaf — which extracts more easily than regular — suggests the grind is still too coarse for this shot to develop properly. Your best ristretto on this bag was at 40.5 (balance 4, even flow), so 38.5 is a step in the wrong direction. The left-side dripping mid-shot also points to uneven extraction likely worsened by a coarser grind. Move meaningfully finer before micro-adjusting.\"\n  },\n  \"bean_context\": \"Night Light Decaf at day 24 post-roast is still in a good window for Swiss Water medium roast (peak ~7–28 days), so freshness isn't the culprit. The smoky, strong character is confirmed bean profile — but lingering sourness on this bean specifically has appeared before (shot at grind 39.5 also got balance 3 with sour linger). Your dialed-in recipe was grind 40.5 for ristretto, and this shot at 38.5 underperformed it noticeably. Grind direction matters here: coarser = faster = more sour on this bean.\",\n  \"progress_note\": \"You've correctly identified the bean's smoky character as profile rather than extraction across multiple shots — that palate calibration is solid. The regression here came from a grind change in the wrong direction; trust your previous 40.5 baseline and work back toward it.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"developing\",\n    \"current_focus\": \"Night Light Decaf (bag 21): ristretto at 38.5 = balance 2, sour linger, left-side drip. Dialed-in baseline was 40.5. Go finer to 36.5 next shot.\",\n    \"known_patterns\": \"Bambino drip lag: 7g standard; Carlos Efrain Cortes ~11g; El Diviso Pink Bourbon & Ethiopia Yaye 8g — stop pump at 27g for 35g yield. Yaye ristretto stop 16–17g.\\n\\nWDT: 30lb tamp, 45s edge-to-center; hard cap 30s sensitive beans. Over-agitation = channeling. Right-side edge coverage = confirmed channel mechanism (El Diviso 3 shots, Night Light Decaf bag 21 shots 1–3, Yaye recurrent). Asymmetric mid-shot flow = distribution issue, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans. Quick-fading acidity = bean character; lingering sourness = extraction flag.\\n\\nDecaf extracts easier — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean. Light roast density dominates — start coarse, work down.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Keep yield under 41g.\\n\\nBrazil Cerrado (natural): minimum grind 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Grind 38 = first working, 35s, balance 3, channeling present — traces to puck prep. Hold at 38 until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark washed): grind 40, 17–17.7g dose, balance 3–5. Ristretto 24–28g yield, grind 40, confirmed. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, dialed in. Finer channeled. Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, bag 21): ristretto grind 40.5 = balance 4, 17s, even flow — resolves right-side channel from shots 1–3. Standard grind 41 = balance 4, even flow. Grind 38.5 = balance 2, sour linger, left drip — coarser is worse on this bean. Smoky/strong = bean character.\\n\\nCosta Rica Don Eli Tematica (light honey, bag 17): grind 32.5 severely under-extracted. Start 26–27 per Carlos Efrain Cortes reference.\",\n    \"last_recommendation\": \"Night Light Decaf (bag 21): go 2 clicks finer to grind 36.5, hold dose and ristretto yield target.\",\n    \"last_analysis_date\": \"2026-08-01T21:26:00.000Z\",\n    \"last_analyzed_shot_id\": 132,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 14,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"\n      },\n      {\n        \"bag_id\": 8,\n        \"name\": \"Metric Coffee — Colombia Carlos Efrain Cortes\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 26,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 25.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Light washed, Colombia Nariño, 2200m, Limoncello/Blackberry/Cocoa, high acidity\",\n        \"notes\": \"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"\n      },\n      {\n        \"bag_id\": 9,\n        \"name\": \"Metric — El Diviso Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 26,\n        \"shots_pulled\": 3,\n        \"profile\": \"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\n        \"notes\": \"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"\n      },\n      {\n        \"bag_id\": 18,\n        \"name\": \"Metric — Ethiopia Yaye\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 33.5,\n        \"dialed_in_yield_g\": 36,\n        \"current_grind\": 33.5,\n        \"shots_pulled\": 5,\n        \"profile\": \"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\",\n        \"notes\": \"Dialed in: grind 33.5, dose 17.7g, 35–37g yield, balance 3–4. Lag 8g — stop pump at 27g. Ristretto: grind 33, 24–27g yield, stop at 16–17g. Brightness resolves quickly = bean character.\"\n      },\n      {\n        \"bag_id\": 21,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38.5,\n        \"shots_pulled\": 9,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\n        \"notes\": \"Ristretto: 40.5 = balance 4, even flow. Standard: 41 = balance 4. Grind 38.5 = balance 2, sour linger, left drip — coarser hurts this bean. Try 36.5 next. Smoky/strong = bean character.\"\n      },\n      {\n        \"bag_id\": 17,\n        \"name\": \"Metric Coffee — Costa Rica Don Eli Tematica\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 1,\n        \"profile\": \"Light honey, Costa Rica Tarrazu, 1700m, hibiscus/raspberry/caramel\",\n        \"notes\": \"Shot 1 at grind 32.5: 14s, severely under-extracted, watery, lingering sour. Reference Carlos Efrain Cortes — try grind 26–27.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      },\n      {\n        \"bag_id\": 10,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 1,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/v\",\n        \"notes\": \"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moved to grind 42.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-08-01 21:44:34"
    },
    {
      "id": 89,
      "shotId": 132,
      "analysisMode": "recent",
      "summary": "Shot 104, grind 38.5, ristretto target hit (28.6g yield, 20s). Balance 2, lingering sourness — same outcome as the previous grind 38.5 shot. The left-side drip note suggests distribution wasn't clean, which may be compounding the under-extraction.",
      "numbers": "Time is Fast at 20s and ratio is Short at 1.55 — both consistent with a ristretto pull. The taste doesn't match what the numbers predict: at 38.5 your last confirmed good ristretto was at 40.5 (balance 4, 17s), meaning you're already 2 clicks coarser than the dialed-in setting. Sourness with linger at 38.5 confirms the known_patterns finding — coarser is definitively worse on this bean. The left-side drip mid-shot adds a distribution variable that could be suppressing extraction further.",
      "recommendationAction": "Move to grind 36.5 — 2 clicks finer from 38.5. Hold dose at 18.4g and ristretto yield target 27–29g.",
      "recommendationReason": "Your last_recommendation already called for 36.5 and this shot confirms that move is correct. Grind 40.5 is your confirmed ristretto baseline; 38.5 has now produced balance 2 and sour linger twice. You need meaningfully finer, not a half-step. Also pay close attention to left-side distribution on the next shot — if the drip reappears at 36.5, that's a prep issue masking the grind result.",
      "beanContext": "Night Light Decaf is 24 days off roast and still in its peak window (Swiss Water decaf, medium roast — typically good through ~day 28). Freshness isn't the issue. This bean has a clear pattern: it rewards finer grinding despite being a decaf, and its flavor profile (smoky, strong, crème brûlée) is assertive enough that any under-extraction reads as sharp sourness rather than brightness. The confirmed dialed-in ristretto grind of 40.5 is your anchor — treat 38.5 as disqualified.",
      "progressNote": "The 40.5 ristretto baseline you locked earlier is holding up as the reference point — every deviation coarser has confirmed it. The work now is getting 36.5 tested clean so you have a finer-end data point and can triangulate whether 40.5 is truly the floor.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 104, grind 38.5, ristretto target hit (28.6g yield, 20s). Balance 2, lingering sourness — same outcome as the previous grind 38.5 shot. The left-side drip note suggests distribution wasn't clean, which may be compounding the under-extraction.\",\n  \"numbers\": \"Time is Fast at 20s and ratio is Short at 1.55 — both consistent with a ristretto pull. The taste doesn't match what the numbers predict: at 38.5 your last confirmed good ristretto was at 40.5 (balance 4, 17s), meaning you're already 2 clicks coarser than the dialed-in setting. Sourness with linger at 38.5 confirms the known_patterns finding — coarser is definitively worse on this bean. The left-side drip mid-shot adds a distribution variable that could be suppressing extraction further.\",\n  \"recommendation\": {\n    \"action\": \"Move to grind 36.5 — 2 clicks finer from 38.5. Hold dose at 18.4g and ristretto yield target 27–29g.\",\n    \"reason\": \"Your last_recommendation already called for 36.5 and this shot confirms that move is correct. Grind 40.5 is your confirmed ristretto baseline; 38.5 has now produced balance 2 and sour linger twice. You need meaningfully finer, not a half-step. Also pay close attention to left-side distribution on the next shot — if the drip reappears at 36.5, that's a prep issue masking the grind result.\"\n  },\n  \"bean_context\": \"Night Light Decaf is 24 days off roast and still in its peak window (Swiss Water decaf, medium roast — typically good through ~day 28). Freshness isn't the issue. This bean has a clear pattern: it rewards finer grinding despite being a decaf, and its flavor profile (smoky, strong, crème brûlée) is assertive enough that any under-extraction reads as sharp sourness rather than brightness. The confirmed dialed-in ristretto grind of 40.5 is your anchor — treat 38.5 as disqualified.\",\n  \"progress_note\": \"The 40.5 ristretto baseline you locked earlier is holding up as the reference point — every deviation coarser has confirmed it. The work now is getting 36.5 tested clean so you have a finer-end data point and can triangulate whether 40.5 is truly the floor.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"developing\",\n    \"current_focus\": \"Night Light Decaf (bag 21): grind 38.5 confirmed bad twice — balance 2, sour linger. Dialed-in ristretto baseline is 40.5. Move to 36.5 next to establish finer data point.\",\n    \"known_patterns\": \"Bambino drip lag: 7g standard; Carlos Efrain Cortes ~11g; El Diviso Pink Bourbon & Ethiopia Yaye 8g — stop pump at 27g for 35g yield. Yaye ristretto stop 16–17g.\\n\\nWDT: 30lb tamp, 45s edge-to-center; hard cap 30s sensitive beans. Over-agitation = channeling. Right-side edge coverage = confirmed channel mechanism (El Diviso 3 shots, Night Light Decaf bag 21 shots 1–3, Yaye recurrent). Asymmetric mid-shot flow = distribution issue, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans. Quick-fading acidity = bean character; lingering sourness = extraction flag.\\n\\nDecaf extracts easier — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean. Light roast density dominates — start coarse, work down.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Keep yield under 41g.\\n\\nBrazil Cerrado (natural): minimum grind 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Grind 38 = first working, 35s, balance 3, channeling present — traces to puck prep. Hold at 38 until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark washed): grind 40, 17–17.7g dose, balance 3–5. Ristretto 24–28g yield, grind 40, confirmed. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, dialed in. Finer channeled. Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, bag 21): ristretto grind 40.5 = balance 4, 17s, even flow — confirmed dialed-in baseline. Standard grind 41 = balance 4, even flow. Grind 38.5 = balance 2, sour linger, left drip — confirmed bad twice. Coarser is definitively worse. Next test: 36.5. Smoky/strong = bean character.\\n\\nCosta Rica Don Eli Tematica (light honey, bag 17): grind 32.5 severely under-extracted. Start 26–27 per Carlos Efrain Cortes reference.\",\n    \"last_recommendation\": \"Night Light Decaf (bag 21): go 2 clicks finer to grind 36.5, hold dose ~18.4g, ristretto yield target 27–29g.\",\n    \"last_analysis_date\": \"2026-08-01T21:26:00.000Z\",\n    \"last_analyzed_shot_id\": 132,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 14,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"\n      },\n      {\n        \"bag_id\": 8,\n        \"name\": \"Metric Coffee — Colombia Carlos Efrain Cortes\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 26,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 25.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Light washed, Colombia Nariño, 2200m, Limoncello/Blackberry/Cocoa, high acidity\",\n        \"notes\": \"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"\n      },\n      {\n        \"bag_id\": 9,\n        \"name\": \"Metric — El Diviso Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 26,\n        \"shots_pulled\": 3,\n        \"profile\": \"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\n        \"notes\": \"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"\n      },\n      {\n        \"bag_id\": 18,\n        \"name\": \"Metric — Ethiopia Yaye\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 33.5,\n        \"dialed_in_yield_g\": 36,\n        \"current_grind\": 33.5,\n        \"shots_pulled\": 5,\n        \"profile\": \"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\",\n        \"notes\": \"Dialed in: grind 33.5, dose 17.7g, 35–37g yield, balance 3–4. Lag 8g — stop pump at 27g. Ristretto: grind 33, 24–27g yield, stop at 16–17g. Brightness resolves quickly = bean character.\"\n      },\n      {\n        \"bag_id\": 21,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38.5,\n        \"shots_pulled\": 9,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\n        \"notes\": \"Ristretto: 40.5 = balance 4, even flow (confirmed baseline). Standard: 41 = balance 4. Grind 38.5 = balance 2, sour linger, left drip — confirmed bad twice. Coarser is definitively worse. Next: 36.5.\"\n      },\n      {\n        \"bag_id\": 17,\n        \"name\": \"Metric Coffee — Costa Rica Don Eli Tematica\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 1,\n        \"profile\": \"Light honey, Costa Rica Tarrazu, 1700m, hibiscus/raspberry/caramel\",\n        \"notes\": \"Shot 1 at grind 32.5: 14s, severely under-extracted, watery, lingering sour. Reference Carlos Efrain Cortes — try grind 26–27.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      },\n      {\n        \"bag_id\": 10,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 1,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/v\",\n        \"notes\": \"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moved to grind 42.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-08-01 21:57:41"
    },
    {
      "id": 90,
      "shotId": 133,
      "analysisMode": "recent",
      "summary": "Shot 2 on the Costa Rica Don Eli Tematica at grind 27 — a significant jump from the 32.5 that ran 14s on shot 1. At 21s and a 2.28 ratio it's still coming in Fast and running longer than target, but flow turned fast mid-shot and taste was scattered. Still very early in dialing in.",
      "numbers": "Time is Fast at 21s and ratio is Normal at 2.28 — better than shot 1's 14s blowout, but still short of the 25–35s Normal window. You missed the Espresso target (25–30s, 35.8g): time out of range and yield ran 5g long, landing closer to a Normale. Lag is logged at 12g on this pull — that's on the high end for your typical 7g standard, though your known patterns show Carlos Efrain Cortes running ~11g. Worth watching but not a red flag yet. Balance is Slightly Sour (3) and shot quality is 2 — the 'all over the place' note and fast mid-shot flow suggest extraction is still inconsistent, not that the flavor profile is stabilizing.",
      "recommendationAction": "Go 2–3 clicks finer — try grind 24–25 next.",
      "recommendationReason": "Still pulling fast at grind 27 with uneven mid-shot flow. Shot 1 at 32.5 was 14s; shot 2 at 27 is 21s — you're gaining time but not enough, and flow is still accelerating mid-shot rather than holding steady. The Carlos Efrain Cortes reference (another light washed Colombian) dialed in at grind 26 with 24s and a clean balance 4 — you're in the right neighborhood but need to push finer. Try 24–25 and aim for 33–36g yield.",
      "beanContext": "Don Eli Tematica is a light honey-process Costa Rica at 1700m — dense, slow to extract, consistent with needing a fine grind setting. At 27 days since roast it's well into its peak window. The hibiscus/raspberry/caramel notes and honey process will likely read as bright fruit with some sweetness once extraction catches up. The 'all over the place' taste at this stage is expected — you're not extracting evenly yet. Carlos Efrain Cortes at grind 26 is your best available analog for a light washed high-elevation Colombian; this bean's honey process may add a touch more sweetness but similar density behavior.",
      "progressNote": "Two shots in, you've moved from 14s to 21s with a 5.5-click jump — solid directional progress but still outside the target window. The trajectory is right; keep pushing finer.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\n  \"summary\": \"Shot 2 on the Costa Rica Don Eli Tematica at grind 27 — a significant jump from the 32.5 that ran 14s on shot 1. At 21s and a 2.28 ratio it's still coming in Fast and running longer than target, but flow turned fast mid-shot and taste was scattered. Still very early in dialing in.\",\n  \"numbers\": \"Time is Fast at 21s and ratio is Normal at 2.28 — better than shot 1's 14s blowout, but still short of the 25–35s Normal window. You missed the Espresso target (25–30s, 35.8g): time out of range and yield ran 5g long, landing closer to a Normale. Lag is logged at 12g on this pull — that's on the high end for your typical 7g standard, though your known patterns show Carlos Efrain Cortes running ~11g. Worth watching but not a red flag yet. Balance is Slightly Sour (3) and shot quality is 2 — the 'all over the place' note and fast mid-shot flow suggest extraction is still inconsistent, not that the flavor profile is stabilizing.\",\n  \"recommendation\": {\n    \"action\": \"Go 2–3 clicks finer — try grind 24–25 next.\",\n    \"reason\": \"Still pulling fast at grind 27 with uneven mid-shot flow. Shot 1 at 32.5 was 14s; shot 2 at 27 is 21s — you're gaining time but not enough, and flow is still accelerating mid-shot rather than holding steady. The Carlos Efrain Cortes reference (another light washed Colombian) dialed in at grind 26 with 24s and a clean balance 4 — you're in the right neighborhood but need to push finer. Try 24–25 and aim for 33–36g yield.\"\n  },\n  \"bean_context\": \"Don Eli Tematica is a light honey-process Costa Rica at 1700m — dense, slow to extract, consistent with needing a fine grind setting. At 27 days since roast it's well into its peak window. The hibiscus/raspberry/caramel notes and honey process will likely read as bright fruit with some sweetness once extraction catches up. The 'all over the place' taste at this stage is expected — you're not extracting evenly yet. Carlos Efrain Cortes at grind 26 is your best available analog for a light washed high-elevation Colombian; this bean's honey process may add a touch more sweetness but similar density behavior.\",\n  \"progress_note\": \"Two shots in, you've moved from 14s to 21s with a 5.5-click jump — solid directional progress but still outside the target window. The trajectory is right; keep pushing finer.\",\n  \"overall_verdict\": \"needs_work\",\n  \"is_stable\": false,\n  \"updated_coaching_state\": {\n    \"experience_level\": \"developing\",\n    \"current_focus\": \"Costa Rica Don Eli Tematica (bag 17): shot 2 at grind 27 = 21s, fast, uneven mid-shot flow, balance 3, shot quality 2. Still under-extracted. Try grind 24–25 next, yield target 33–36g.\",\n    \"known_patterns\": \"Bambino drip lag: 7g standard; Carlos Efrain Cortes ~11g; El Diviso Pink Bourbon & Ethiopia Yaye 8g — stop pump at 27g for 35g yield. Yaye ristretto stop 16–17g. Don Eli Tematica: lag 12g observed shot 2 — watch.\\n\\nWDT: 30lb tamp, 45s edge-to-center; hard cap 30s sensitive beans. Over-agitation = channeling. Right-side edge coverage = confirmed channel mechanism (El Diviso 3 shots, Night Light Decaf bag 21 shots 1–3, Yaye recurrent). Asymmetric mid-shot flow = distribution issue, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans. Quick-fading acidity = bean character; lingering sourness = extraction flag.\\n\\nDecaf extracts easier — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean. Light roast density dominates — start coarse, work down.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Keep yield under 41g.\\n\\nBrazil Cerrado (natural): minimum grind 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Grind 38 = first working, 35s, balance 3, channeling present — traces to puck prep. Hold at 38 until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark washed): grind 40, 17–17.7g dose, balance 3–5. Ristretto 24–28g yield, grind 40, confirmed. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, dialed in. Finer channeled. Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, bag 21): ristretto grind 40.5 = balance 4, 17s, even flow — confirmed dialed-in baseline. Standard grind 41 = balance 4, even flow. Grind 38.5 = balance 2, sour linger, left drip — confirmed bad twice. Coarser is definitively worse. Next test: 36.5. Smoky/strong = bean character.\\n\\nCosta Rica Don Eli Tematica (light honey, bag 17): grind 32.5 = 14s, severely under-extracted. Grind 27 = 21s, still fast, uneven mid-shot flow. Reference Carlos Efrain Cortes — try grind 24–25.\",\n    \"last_recommendation\": \"Costa Rica Don Eli Tematica (bag 17): go 2–3 clicks finer to grind 24–25, yield target 33–36g.\",\n    \"last_analysis_date\": \"2026-08-02T13:34:00.000Z\",\n    \"last_analyzed_shot_id\": 133,\n    \"bean_contexts\": [\n      {\n        \"bag_id\": 4,\n        \"name\": \"Printer's Row Coffee Co — Brazil Cerrado\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 42,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 42,\n        \"shots_pulled\": 10,\n        \"profile\": \"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\n        \"notes\": \"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"\n      },\n      {\n        \"bag_id\": 2,\n        \"name\": \"Luckycat — Maomi Blend\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 32.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\n        \"notes\": \"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"\n      },\n      {\n        \"bag_id\": 3,\n        \"name\": \"Metric — Decaf Huila Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 37,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\n        \"notes\": \"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"\n      },\n      {\n        \"bag_id\": 5,\n        \"name\": \"Metric — Ándale Market (bag 2)\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 28,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 28,\n        \"shots_pulled\": 9,\n        \"profile\": \"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\n        \"notes\": \"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"\n      },\n      {\n        \"bag_id\": 6,\n        \"name\": \"Coffee Lab & Roasters — Huila Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38,\n        \"shots_pulled\": 6,\n        \"profile\": \"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\n        \"notes\": \"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"\n      },\n      {\n        \"bag_id\": 7,\n        \"name\": \"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 40,\n        \"dialed_in_yield_g\": 38,\n        \"current_grind\": 40,\n        \"shots_pulled\": 14,\n        \"profile\": \"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\n        \"notes\": \"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"\n      },\n      {\n        \"bag_id\": 8,\n        \"name\": \"Metric Coffee — Colombia Carlos Efrain Cortes\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 26,\n        \"dialed_in_yield_g\": 38.5,\n        \"current_grind\": 25.5,\n        \"shots_pulled\": 7,\n        \"profile\": \"Light washed, Colombia Nariño, 2200m, Limoncello/Blackberry/Cocoa, high acidity\",\n        \"notes\": \"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"\n      },\n      {\n        \"bag_id\": 9,\n        \"name\": \"Metric — El Diviso Pink Bourbon\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 26,\n        \"shots_pulled\": 3,\n        \"profile\": \"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\n        \"notes\": \"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"\n      },\n      {\n        \"bag_id\": 18,\n        \"name\": \"Metric — Ethiopia Yaye\",\n        \"status\": \"dialed_in\",\n        \"dialed_in_grind\": 33.5,\n        \"dialed_in_yield_g\": 36,\n        \"current_grind\": 33.5,\n        \"shots_pulled\": 5,\n        \"profile\": \"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\",\n        \"notes\": \"Dialed in: grind 33.5, dose 17.7g, 35–37g yield, balance 3–4. Lag 8g — stop pump at 27g. Ristretto: grind 33, 24–27g yield, stop at 16–17g. Brightness resolves quickly = bean character.\"\n      },\n      {\n        \"bag_id\": 21,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 38.5,\n        \"shots_pulled\": 9,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\n        \"notes\": \"Ristretto: 40.5 = balance 4, even flow (confirmed baseline). Standard: 41 = balance 4. Grind 38.5 = balance 2, sour linger, left drip — confirmed bad twice. Coarser is definitively worse. Next: 36.5.\"\n      },\n      {\n        \"bag_id\": 17,\n        \"name\": \"Metric Coffee — Costa Rica Don Eli Tematica\",\n        \"status\": \"dialing_in\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": 27,\n        \"shots_pulled\": 2,\n        \"profile\": \"Light honey, Costa Rica Tarrazu, 1700m, hibiscus/raspberry/caramel\",\n        \"notes\": \"32.5=14s severely under-extracted. 27=21s fast, uneven mid-shot flow, balance 3, shot quality 2. Try grind 24–25; reference Carlos Efrain Cortes.\"\n      },\n      {\n        \"bag_id\": 1,\n        \"name\": \"Metric — Ándale Market\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 12,\n        \"profile\": \"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\n        \"notes\": \"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"\n      },\n      {\n        \"bag_id\": 10,\n        \"name\": \"Blue Bottle Coffee — Night Light Decaf\",\n        \"status\": \"finished\",\n        \"dialed_in_grind\": null,\n        \"dialed_in_yield_g\": null,\n        \"current_grind\": null,\n        \"shots_pulled\": 1,\n        \"profile\": \"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/v\",\n        \"notes\": \"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moved to grind 42.\"\n      }\n    ]\n  }\n}",
      "createdAt": "2026-08-02 13:58:13"
    },
    {
      "id": 91,
      "shotId": 134,
      "analysisMode": "recent",
      "summary": "Shot 10 on Night Light Decaf at grind 36.5 — hit your ristretto target almost exactly (28.3g yield, 23s), even flow from the start. The numbers look solid, but the taste landed at balance 2 with lingering sourness that softened with milk but didn't fully resolve. That's the contradiction worth unpacking here.",
      "numbers": "Time is Fast at 23s and ratio is Short at 1.53 — both consistent with your ristretto intention, and you nailed the target. Even flow confirms clean puck prep. The problem is balance 2 with a sour linger, which doesn't match what a well-extracted ristretto on this bean should taste like. Your confirmed baseline at grind 40.5 (ristretto, balance 4, 17s) was much faster but tasted better — and grind 41 standard pull at 25s was also balance 4. The pattern across this bag is clear: grind 38.5 gave you balance 2 with sour linger twice, and now 36.5 gives you the same result. Going finer has been making this bean taste worse, not better. That's the opposite of what you'd expect if this were a simple under-extraction problem.",
      "recommendationAction": "Step back to grind 40.5 for your next ristretto pull and hold the same parameters that gave you balance 4 on shots 3 and 4.",
      "recommendationReason": "Your dialed-in baseline on this bag was grind 40.5 ristretto — balance 4, even flow, bean character intact. Every move finer has degraded balance without improving extraction character. Grind 36.5 is now 4 full points below that confirmed baseline, and the sourness is lingering rather than resolving, which rules out brightness-as-bean-character. This bean extracts easily as a Swiss Water decaf — finer grinds are over-restricting flow and creating extraction imbalance, not fixing it. Return to 40.5 and re-establish the baseline before any further adjustments.",
      "beanContext": "Night Light Decaf is Swiss Water process, medium roast, 25 days off roast — squarely in peak window. The bean's crème brûlée and vanilla character should read clean and round, not sour. Lingering sourness at grind 36.5 is not bean character — your own notes from the 40.5 shots confirm that profile reads strong and clean. Swiss Water decaf extracts more easily than regular beans, which means the finer you go, the more you risk extraction imbalance presenting as sourness rather than the expected bitterness. The pursuit of a slower shot time has taken you in the wrong direction on this bag.",
      "progressNote": "Shots 3 and 4 on this bag were your best — balance 4, even flow, 40.5 ristretto. The last three shots at progressively finer grinds have all landed at balance 2–3 with sour linger. The regression is grind direction, not technique.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\"summary\":\"Shot 10 on Night Light Decaf at grind 36.5 — hit your ristretto target almost exactly (28.3g yield, 23s), even flow from the start. The numbers look solid, but the taste landed at balance 2 with lingering sourness that softened with milk but didn't fully resolve. That's the contradiction worth unpacking here.\",\"numbers\":\"Time is Fast at 23s and ratio is Short at 1.53 — both consistent with your ristretto intention, and you nailed the target. Even flow confirms clean puck prep. The problem is balance 2 with a sour linger, which doesn't match what a well-extracted ristretto on this bean should taste like. Your confirmed baseline at grind 40.5 (ristretto, balance 4, 17s) was much faster but tasted better — and grind 41 standard pull at 25s was also balance 4. The pattern across this bag is clear: grind 38.5 gave you balance 2 with sour linger twice, and now 36.5 gives you the same result. Going finer has been making this bean taste worse, not better. That's the opposite of what you'd expect if this were a simple under-extraction problem.\",\"recommendation\":{\"action\":\"Step back to grind 40.5 for your next ristretto pull and hold the same parameters that gave you balance 4 on shots 3 and 4.\",\"reason\":\"Your dialed-in baseline on this bag was grind 40.5 ristretto — balance 4, even flow, bean character intact. Every move finer has degraded balance without improving extraction character. Grind 36.5 is now 4 full points below that confirmed baseline, and the sourness is lingering rather than resolving, which rules out brightness-as-bean-character. This bean extracts easily as a Swiss Water decaf — finer grinds are over-restricting flow and creating extraction imbalance, not fixing it. Return to 40.5 and re-establish the baseline before any further adjustments.\"},\"bean_context\":\"Night Light Decaf is Swiss Water process, medium roast, 25 days off roast — squarely in peak window. The bean's crème brûlée and vanilla character should read clean and round, not sour. Lingering sourness at grind 36.5 is not bean character — your own notes from the 40.5 shots confirm that profile reads strong and clean. Swiss Water decaf extracts more easily than regular beans, which means the finer you go, the more you risk extraction imbalance presenting as sourness rather than the expected bitterness. The pursuit of a slower shot time has taken you in the wrong direction on this bag.\",\"progress_note\":\"Shots 3 and 4 on this bag were your best — balance 4, even flow, 40.5 ristretto. The last three shots at progressively finer grinds have all landed at balance 2–3 with sour linger. The regression is grind direction, not technique.\",\"overall_verdict\":\"needs_work\",\"is_stable\":false,\"updated_coaching_state\":{\"experience_level\":\"developing\",\"current_focus\":\"Night Light Decaf (bag 21): grind 36.5 ristretto = balance 2, sour linger. Finer grinds consistently worse. Return to grind 40.5 ristretto — confirmed balance 4 baseline on shots 3–4.\",\"known_patterns\":\"Bambino drip lag: 7g standard; Carlos Efrain Cortes ~11g; El Diviso Pink Bourbon & Ethiopia Yaye 8g — stop pump at 27g for 35g yield. Yaye ristretto stop 16–17g. Don Eli Tematica: lag 12g observed shot 2 — watch.\\n\\nWDT: 30lb tamp, 45s edge-to-center; hard cap 30s sensitive beans. Over-agitation = channeling. Right-side edge coverage = confirmed channel mechanism (El Diviso 3 shots, Night Light Decaf bag 21 shots 1–3, Yaye recurrent). Asymmetric mid-shot flow = distribution issue, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans. Quick-fading acidity = bean character; lingering sourness = extraction flag.\\n\\nDecaf extracts easier — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean. Light roast density dominates — start coarse, work down.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Keep yield under 41g.\\n\\nBrazil Cerrado (natural): minimum grind 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Grind 38 = first working, 35s, balance 3, channeling present — traces to puck prep. Hold at 38 until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark washed): grind 40, 17–17.7g dose, balance 3–5. Ristretto 24–28g yield, grind 40, confirmed. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, dialed in. Finer channeled. Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, bag 21): ristretto grind 40.5 = balance 4, 17s, even flow — confirmed dialed-in baseline. Standard grind 41 = balance 4, even flow. Grind 38.5 = balance 2, sour linger — confirmed bad twice. Grind 36.5 = balance 2, sour linger. Coarser is definitively better. Return to 40.5 ristretto.\\n\\nCosta Rica Don Eli Tematica (light honey, bag 17): grind 32.5 = 14s, severely under-extracted. Grind 27 = 21s, still fast, uneven mid-shot flow. Reference Carlos Efrain Cortes — try grind 24–25.\",\"last_recommendation\":\"Night Light Decaf (bag 21): return to grind 40.5 ristretto — confirmed balance 4 baseline. Finer grinds consistently producing sour linger.\",\"last_analysis_date\":\"2026-08-02T23:53:00.000Z\",\"last_analyzed_shot_id\":134,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":14,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"},{\"bag_id\":8,\"name\":\"Metric Coffee — Colombia Carlos Efrain Cortes\",\"status\":\"dialed_in\",\"dialed_in_grind\":26,\"dialed_in_yield_g\":38.5,\"current_grind\":25.5,\"shots_pulled\":7,\"profile\":\"Light washed, Colombia Nariño, 2200m, Limoncello/Blackberry/Cocoa, high acidity\",\"notes\":\"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"},{\"bag_id\":9,\"name\":\"Metric — El Diviso Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":26,\"shots_pulled\":3,\"profile\":\"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\"notes\":\"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"},{\"bag_id\":18,\"name\":\"Metric — Ethiopia Yaye\",\"status\":\"dialed_in\",\"dialed_in_grind\":33.5,\"dialed_in_yield_g\":36,\"current_grind\":33.5,\"shots_pulled\":5,\"profile\":\"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\",\"notes\":\"Dialed in: grind 33.5, dose 17.7g, 35–37g yield, balance 3–4. Lag 8g — stop pump at 27g. Ristretto: grind 33, 24–27g yield, stop at 16–17g. Brightness resolves quickly = bean character.\"},{\"bag_id\":21,\"name\":\"Blue Bottle Coffee — Night Light Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":36.5,\"shots_pulled\":10,\"profile\":\"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\"notes\":\"Ristretto baseline: 40.5 = balance 4, even flow (confirmed shots 3–4). Standard: 41 = balance 4. Grind 38.5 = balance 2 sour linger (confirmed twice). Grind 36.5 = balance 2 sour linger. Finer is definitively worse. Return to 40.5 ristretto.\"},{\"bag_id\":17,\"name\":\"Metric Coffee — Costa Rica Don Eli Tematica\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":27,\"shots_pulled\":2,\"profile\":\"Light honey, Costa Rica Tarrazu, 1700m, hibiscus/raspberry/caramel\",\"notes\":\"32.5=14s severely under-extracted. 27=21s fast, uneven mid-shot flow, balance 3, shot quality 2. Try grind 24–25; reference Carlos Efrain Cortes.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"},{\"bag_id\":10,\"name\":\"Blue Bottle Coffee — Night Light Decaf\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":1,\"profile\":\"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/v\",\"notes\":\"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moved to grind 42.\"}]}}",
      "createdAt": "2026-08-03 00:10:49"
    },
    {
      "id": 92,
      "shotId": 134,
      "analysisMode": "recent",
      "summary": "Clean flow, hit the ristretto target, decent numbers — but balance came in at 2 (sour) with lingering acidity that only partially resolved with milk. This is now the third consecutive shot at grind 36.5 or finer producing sour linger, and the fifth sub-40.5 shot showing the same pattern. The evidence is unambiguous.",
      "numbers": "Time was 23s (Fast) and ratio 1.53 (Ristretto) — both fitting a ristretto pull, target hit. Flow notes were clean: even start at 10 seconds, no channeling signals. The sour linger is not a flow or technique problem. At grind 36.5, this bean is consistently under-extracting despite clean mechanics — finer grinds are definitively not the path forward on Night Light Decaf bag 21.",
      "recommendationAction": "Move back to grind 40.5 for your ristretto. Dose 18–18.5g, stop pump around 20g for a ~28g yield after lag.",
      "recommendationReason": "Shots 3 and 4 on this bag at grind 40.5 were both balance 4 with even flow. Every shot since — 39.5, 38.5, 36.5 — has landed at balance 2 with sour linger. Coarser is extracting better on this bean, full stop. You have a confirmed baseline. Return to it.",
      "beanContext": "Night Light Decaf's Swiss Water process opens the bean structure, which means it extracts more efficiently than a regular medium roast — coarser grinds extract well where finer grinds over-restrict and under-extract unevenly. At 25 days off roast it's in its freshness window. Bean character includes key lime in the notes, so a hint of brightness is expected — but lingering sourness that survives milk is extraction, not bean profile. Grind 40.5 resolved this cleanly before.",
      "progressNote": "Three shots in a row probing finer grinds have all confirmed the same result. That's good diagnostic discipline — the bracket is now closed. Time to commit to the coarser baseline and dial in yield precision from there.",
      "overallVerdict": "needs_work",
      "isStable": false,
      "rawResponse": "{\"summary\":\"Clean flow, hit the ristretto target, decent numbers — but balance came in at 2 (sour) with lingering acidity that only partially resolved with milk. This is now the third consecutive shot at grind 36.5 or finer producing sour linger, and the fifth sub-40.5 shot showing the same pattern. The evidence is unambiguous.\",\"numbers\":\"Time was 23s (Fast) and ratio 1.53 (Ristretto) — both fitting a ristretto pull, target hit. Flow notes were clean: even start at 10 seconds, no channeling signals. The sour linger is not a flow or technique problem. At grind 36.5, this bean is consistently under-extracting despite clean mechanics — finer grinds are definitively not the path forward on Night Light Decaf bag 21.\",\"recommendation\":{\"action\":\"Move back to grind 40.5 for your ristretto. Dose 18–18.5g, stop pump around 20g for a ~28g yield after lag.\",\"reason\":\"Shots 3 and 4 on this bag at grind 40.5 were both balance 4 with even flow. Every shot since — 39.5, 38.5, 36.5 — has landed at balance 2 with sour linger. Coarser is extracting better on this bean, full stop. You have a confirmed baseline. Return to it.\"},\"bean_context\":\"Night Light Decaf's Swiss Water process opens the bean structure, which means it extracts more efficiently than a regular medium roast — coarser grinds extract well where finer grinds over-restrict and under-extract unevenly. At 25 days off roast it's in its freshness window. Bean character includes key lime in the notes, so a hint of brightness is expected — but lingering sourness that survives milk is extraction, not bean profile. Grind 40.5 resolved this cleanly before.\",\"progress_note\":\"Three shots in a row probing finer grinds have all confirmed the same result. That's good diagnostic discipline — the bracket is now closed. Time to commit to the coarser baseline and dial in yield precision from there.\",\"overall_verdict\":\"needs_work\",\"is_stable\":false,\"updated_coaching_state\":{\"experience_level\":\"developing\",\"current_focus\":\"Night Light Decaf (bag 21): return to grind 40.5 ristretto — confirmed balance 4 at shots 3–4, confirmed sour linger at 36.5/38.5/39.5. Coarser is definitively better.\",\"known_patterns\":\"Bambino drip lag: 7g standard; Carlos Efrain Cortes ~11g; El Diviso Pink Bourbon & Ethiopia Yaye 8g — stop pump at 27g for 35g yield. Yaye ristretto stop 16–17g. Don Eli Tematica: lag 12g observed shot 2 — watch.\\n\\nWDT: 30lb tamp, 45s edge-to-center; hard cap 30s sensitive beans. Over-agitation = channeling. Right-side edge coverage = confirmed channel mechanism (El Diviso 3 shots, Night Light Decaf bag 21 shots 1–3, Yaye recurrent). Asymmetric mid-shot flow = distribution issue, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\\n\\nStir espresso before tasting — surface reads sour on bright beans. Quick-fading acidity = bean character; lingering sourness = extraction flag.\\n\\nDecaf extracts easier — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean. Light roast density dominates — start coarse, work down.\\n\\nMaomi: grind 32.5.\\n\\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 obsolete.)\\n\\nDecaf Huila (Metric): grind 28, 27s, balance 3. Keep yield under 41g.\\n\\nBrazil Cerrado (natural): minimum grind 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\\n\\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Grind 38 = first working, 35s, balance 3, channeling present — traces to puck prep. Hold at 38 until WDT fix tested.\\n\\nDark Matter Unicorn Blood (medium-dark washed): grind 40, 17–17.7g dose, balance 3–5. Ristretto 24–28g yield, grind 40, confirmed. Quick-resolving acidity/bitterness = bean character.\\n\\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, dialed in. Finer channeled. Not to Diego's taste despite solid extraction.\\n\\nNight Light Decaf (Blue Bottle, bag 21): ristretto grind 40.5 = balance 4, 17s, even flow — confirmed dialed-in baseline. Standard grind 41 = balance 4, even flow. Grind 38.5/39.5/36.5 all = balance 2 sour linger — bracket closed, finer is definitively worse. Return to 40.5 ristretto.\\n\\nCosta Rica Don Eli Tematica (light honey, bag 17): grind 32.5 = 14s, severely under-extracted. Grind 27 = 21s, still fast, uneven mid-shot flow. Reference Carlos Efrain Cortes — try grind 24–25.\",\"last_recommendation\":\"Night Light Decaf (bag 21): return to grind 40.5 ristretto — balance 4 confirmed shots 3–4; sour linger confirmed at 36.5, 38.5, 39.5. Bracket closed. Coarser is the answer.\",\"last_analysis_date\":\"2026-08-02T23:53:00.000Z\",\"last_analyzed_shot_id\":134,\"bean_contexts\":[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":14,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"},{\"bag_id\":8,\"name\":\"Metric Coffee — Colombia Carlos Efrain Cortes\",\"status\":\"dialed_in\",\"dialed_in_grind\":26,\"dialed_in_yield_g\":38.5,\"current_grind\":25.5,\"shots_pulled\":7,\"profile\":\"Light washed, Colombia Nariño, 2200m, Limoncello/Blackberry/Cocoa, high acidity\",\"notes\":\"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"},{\"bag_id\":9,\"name\":\"Metric — El Diviso Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":26,\"shots_pulled\":3,\"profile\":\"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\"notes\":\"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"},{\"bag_id\":18,\"name\":\"Metric — Ethiopia Yaye\",\"status\":\"dialed_in\",\"dialed_in_grind\":33.5,\"dialed_in_yield_g\":36,\"current_grind\":33.5,\"shots_pulled\":5,\"profile\":\"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\",\"notes\":\"Dialed in: grind 33.5, dose 17.7g, 35–37g yield, balance 3–4. Lag 8g — stop pump at 27g. Ristretto: grind 33, 24–27g yield, stop at 16–17g. Brightness resolves quickly = bean character.\"},{\"bag_id\":21,\"name\":\"Blue Bottle Coffee — Night Light Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":36.5,\"shots_pulled\":10,\"profile\":\"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\"notes\":\"Ristretto baseline: 40.5 = balance 4, even flow (confirmed shots 3–4). Standard: 41 = balance 4. Grind 38.5/39.5/36.5 all = balance 2 sour linger — bracket closed. Finer is definitively worse. Return to 40.5 ristretto.\"},{\"bag_id\":17,\"name\":\"Metric Coffee — Costa Rica Don Eli Tematica\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":27,\"shots_pulled\":2,\"profile\":\"Light honey, Costa Rica Tarrazu, 1700m, hibiscus/raspberry/caramel\",\"notes\":\"32.5=14s severely under-extracted. 27=21s fast, uneven mid-shot flow, balance 3, shot quality 2. Try grind 24–25; reference Carlos Efrain Cortes.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"},{\"bag_id\":10,\"name\":\"Blue Bottle Coffee — Night Light Decaf\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":1,\"profile\":\"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/v\",\"notes\":\"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moved to grind 42.\"}]}}",
      "createdAt": "2026-08-03 00:24:15"
    }
  ],
  "bagAnalyses": [
    {
      "id": 1,
      "bagId": 2,
      "summary": "The Maomi Blend proved consistently challenging across 8 shots, with sourness as the dominant flaw throughout the bag. Your best result was Shot #3 at grind 35/33s with a 3-star rating, but even that was sour — just less aggressively so. The blend never fully came together as an espresso, though it showed some potential with milk.",
      "recommendation": "try_with_adjustments",
      "recommendationReason": "You only landed two shots above 2 stars and never dialed past grind 35 or explored ratios tighter than 1:1.96, so the extraction sweet spot may not have been fully explored. The persistent sourness across most shots suggests this blend wants a finer grind and slower, more restricted flow than your setup was consistently delivering.",
      "grindNotes": "Your best shots came at grind 35 (Shot #3, 3★) and grind 32.5 (Shot #7, 3★) — opposite ends of your range. Shot #5 at grind 31 went bitter at 40s, so the floor is around 31-32. If buying again, start at grind 33-34, target a 32-36s pull, and aim for a 1:2.0–2.1 ratio. Avoid going coarser than 35 and watch for fast-dripping as a sign of channeling rather than a grind-coarseness issue. The uneven flow across spouts in multiple shots suggests distribution or tamping inconsistency is masking your grind findings.",
      "tasteNotes": "Sourness dominated 7 of 8 shots, pointing to chronic under-extraction rather than a single bad pull. The one bitter shot (Shot #5, grind 31/40s) confirms the extraction range is narrow. Shot #7 at grind 32.5/38s was your most balanced — slightly sour but not lingering — suggesting this blend extracts better with longer time at a mid-fine grind rather than fast pulls at coarser settings. The recurring channeling (puck stuck to shower screen, uneven spout flow) likely contributed to inconsistent extraction shot-to-shot and may have made your grind adjustments less reliable as a signal.",
      "createdAt": "2026-05-29 01:15:58"
    }
  ],
  "coachingState": [
    {
      "id": 1,
      "experienceLevel": "developing",
      "currentFocus": "Night Light Decaf (bag 21): return to grind 40.5 ristretto — confirmed balance 4 at shots 3–4, confirmed sour linger at 36.5/38.5/39.5. Coarser is definitively better.",
      "knownPatterns": "Bambino drip lag: 7g standard; Carlos Efrain Cortes ~11g; El Diviso Pink Bourbon & Ethiopia Yaye 8g — stop pump at 27g for 35g yield. Yaye ristretto stop 16–17g. Don Eli Tematica: lag 12g observed shot 2 — watch.\n\nWDT: 30lb tamp, 45s edge-to-center; hard cap 30s sensitive beans. Over-agitation = channeling. Right-side edge coverage = confirmed channel mechanism (El Diviso 3 shots, Night Light Decaf bag 21 shots 1–3, Yaye recurrent). Asymmetric mid-shot flow = distribution issue, not grind. Late bilateral drip near pull end = puck breakdown, not channeling.\n\nStir espresso before tasting — surface reads sour on bright beans. Quick-fading acidity = bean character; lingering sourness = extraction flag.\n\nDecaf extracts easier — start 1–2 clicks finer than equivalent regular. Do not transfer settings across bags of same bean. Light roast density dominates — start coarse, work down.\n\nMaomi: grind 32.5.\n\nÁndale bag 2: grind 28, 18g dose, 37–41g yield, balance 4. (Bag 1 obsolete.)\n\nDecaf Huila (Metric): grind 28, 27s, balance 3. Keep yield under 41g.\n\nBrazil Cerrado (natural): minimum grind 41.5. Grind 42 = 28–32s, balance 3–4, confirmed 3 shots.\n\nCoffee Lab Huila Decaf (light roast): choked 27.5–33. Grind 38 = first working, 35s, balance 3, channeling present — traces to puck prep. Hold at 38 until WDT fix tested.\n\nDark Matter Unicorn Blood (medium-dark washed): grind 40, 17–17.7g dose, balance 3–5. Ristretto 24–28g yield, grind 40, confirmed. Quick-resolving acidity/bitterness = bean character.\n\nCarlos Efrain Cortes (light washed, Nariño): grind 26 = 24s, balance 4, dialed in. Finer channeled. Not to Diego's taste despite solid extraction.\n\nNight Light Decaf (Blue Bottle, bag 21): ristretto grind 40.5 = balance 4, 17s, even flow — confirmed dialed-in baseline. Standard grind 41 = balance 4, even flow. Grind 38.5/39.5/36.5 all = balance 2 sour linger — bracket closed, finer is definitively worse. Return to 40.5 ristretto.\n\nCosta Rica Don Eli Tematica (light honey, bag 17): grind 32.5 = 14s, severely under-extracted. Grind 27 = 21s, still fast, uneven mid-shot flow. Reference Carlos Efrain Cortes — try grind 24–25.",
      "lastRecommendation": "Night Light Decaf (bag 21): return to grind 40.5 ristretto — balance 4 confirmed shots 3–4; sour linger confirmed at 36.5, 38.5, 39.5. Bracket closed. Coarser is the answer.",
      "lastAnalysisDate": "2026-08-02T23:53:00.000Z",
      "lastAnalyzedShotId": 134,
      "beanContexts": "[{\"bag_id\":4,\"name\":\"Printer's Row Coffee Co — Brazil Cerrado\",\"status\":\"dialed_in\",\"dialed_in_grind\":42,\"dialed_in_yield_g\":38,\"current_grind\":42,\"shots_pulled\":10,\"profile\":\"Natural process, Brazil Cerrado, baker's chocolate/dried apricot/walnut, low acidity\",\"notes\":\"Dialed in: grind 42, 28–32s, balance 3–4. Slight sourness is bean character. Watch WDT evenness to prevent asymmetric flow.\"},{\"bag_id\":2,\"name\":\"Luckycat — Maomi Blend\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":32.5,\"shots_pulled\":7,\"profile\":\"Unspecified roast, PNG/Guatemala/Mexico blend, full body, caramel/cocoa/nuts, low acidity\",\"notes\":\"Sweet spot bracketed: 31=bitter, 32=sour, 32.5=balance 3 (slight linger). Try 32.5 at 33g yield next to close the gap.\"},{\"bag_id\":3,\"name\":\"Metric — Decaf Huila Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":37,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"EA Washed decaf, Colombia Huila, Pink Bourbon, ganache/orange peel/Luxardo, high elevation\",\"notes\":\"Best: grind 28, 27s, 37g, balance 3, 4 stars. Regression at 41g yield — yield control critical. Try 27.5 next.\"},{\"bag_id\":5,\"name\":\"Metric — Ándale Market (bag 2)\",\"status\":\"dialed_in\",\"dialed_in_grind\":28,\"dialed_in_yield_g\":38.5,\"current_grind\":28,\"shots_pulled\":9,\"profile\":\"Medium roast, Mexico/Guatemala blend, bright/acidic, cherry/nougat/wildflower honey\",\"notes\":\"Dialed in: grind 28, 18g dose, 37–41g yield, balance 4, 4 stars. Channeling at 29.5–31 was WDT inconsistency — resolved with slower deliberate WDT.\"},{\"bag_id\":6,\"name\":\"Coffee Lab & Roasters — Huila Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":38,\"shots_pulled\":6,\"profile\":\"Light roast decaf, Colombia Huila, unspecified process, bright/sweet/lemon\",\"notes\":\"Choked at all settings 27.5–33. Grind 38 first working shot — 35s, balance 3, channeling still present. Light roast density dominant. Fix WDT before adjusting grind.\"},{\"bag_id\":7,\"name\":\"Dark Matter Coffee — Unicorn Blood Espresso Blend\",\"status\":\"dialed_in\",\"dialed_in_grind\":40,\"dialed_in_yield_g\":38,\"current_grind\":40,\"shots_pulled\":14,\"profile\":\"Medium-dark washed, Honduras/Guatemala, dark chocolate/caramel/berry\",\"notes\":\"Dialed in: grind 40, 17.4g dose, 36–40g standard / 24–28g ristretto. Hard cap WDT 30s. Stop pump 7g early for lag. Right-side edge coverage in WDT is active variable.\"},{\"bag_id\":8,\"name\":\"Metric Coffee — Colombia Carlos Efrain Cortes\",\"status\":\"dialed_in\",\"dialed_in_grind\":26,\"dialed_in_yield_g\":38.5,\"current_grind\":25.5,\"shots_pulled\":7,\"profile\":\"Light washed, Colombia Nariño, 2200m, Limoncello/Blackberry/Cocoa, high acidity\",\"notes\":\"Dialed in: grind 26, 17.5g dose, 35–37g yield, balance 4. Lag ~11g — stop pump at 28–29g. Grind 25.5 no improvement. Profile not to Diego's taste despite solid extraction.\"},{\"bag_id\":9,\"name\":\"Metric — El Diviso Pink Bourbon\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":26,\"shots_pulled\":3,\"profile\":\"Light washed, Colombia Huila, 1700–1900m, strawberry/honeycomb/jasmine, high acidity\",\"notes\":\"3 shots, 3 right-side channels — even start then drip-and-recover right spout mid-shot. Lingering acidity balance 2. WDT right-edge coverage is the block. Grind 26 untested clean. Lag 8g.\"},{\"bag_id\":18,\"name\":\"Metric — Ethiopia Yaye\",\"status\":\"dialed_in\",\"dialed_in_grind\":33.5,\"dialed_in_yield_g\":36,\"current_grind\":33.5,\"shots_pulled\":5,\"profile\":\"Light honey, Ethiopia Sidama, 2200–2300m, cranberry/baking spice/papaya, high acidity\",\"notes\":\"Dialed in: grind 33.5, dose 17.7g, 35–37g yield, balance 3–4. Lag 8g — stop pump at 27g. Ristretto: grind 33, 24–27g yield, stop at 16–17g. Brightness resolves quickly = bean character.\"},{\"bag_id\":21,\"name\":\"Blue Bottle Coffee — Night Light Decaf\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":36.5,\"shots_pulled\":10,\"profile\":\"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/vanilla/key lime\",\"notes\":\"Ristretto baseline: 40.5 = balance 4, even flow (confirmed shots 3–4). Standard: 41 = balance 4. Grind 38.5/39.5/36.5 all = balance 2 sour linger — bracket closed. Finer is definitively worse. Return to 40.5 ristretto.\"},{\"bag_id\":17,\"name\":\"Metric Coffee — Costa Rica Don Eli Tematica\",\"status\":\"dialing_in\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":27,\"shots_pulled\":2,\"profile\":\"Light honey, Costa Rica Tarrazu, 1700m, hibiscus/raspberry/caramel\",\"notes\":\"32.5=14s severely under-extracted. 27=21s fast, uneven mid-shot flow, balance 3, shot quality 2. Try grind 24–25; reference Carlos Efrain Cortes.\"},{\"bag_id\":1,\"name\":\"Metric — Ándale Market\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":12,\"profile\":\"Medium roast, Latin American blend, bright and acidic, cherry/nougat/wildflower\",\"notes\":\"Best result bag 1: grind 33, 31s, balance 2, good with milk. Grind 28–29 too fast on bag 1. Bag 2 behaves differently.\"},{\"bag_id\":10,\"name\":\"Blue Bottle Coffee — Night Light Decaf\",\"status\":\"finished\",\"dialed_in_grind\":null,\"dialed_in_yield_g\":null,\"current_grind\":null,\"shots_pulled\":1,\"profile\":\"Swiss Water decaf, medium roast, Indonesia/Central America blend, crème brûlée/v\",\"notes\":\"Shot 1 at 39.5: balance 6, bitter/lingering, progressive flow restriction. Over-extracted. Moved to grind 42.\"}]",
      "updatedAt": "2026-08-03T00:24:15.119Z"
    }
  ]
}