You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
New users often struggle with dialing in espresso — it's the most common beginner pain point. The Meticulous machine ships with stock profiles, but users don't know which to start with or how to iterate based on taste feedback. Meticulous is releasing educational videos on the subject that could be integrated into the MCP knowledge base.
This feature introduces a guided "Dial In" wizard that walks beginners through the full cycle: select a coffee → pick a profile → brew → taste → get AI-powered recommendations → iterate. The Espresso Aficionados Coffee Compass (#261) provides the taste feedback mechanism.
Current State
Home Page
StartView.tsx has 5 main buttons (profile generation, catalogue, pour-over, settings, about)
Navigation uses ViewState union type with setView() to switch views
The home page is the natural entry point for this wizard
Profile System
Stock profiles exist on the machine; GET /api/machine/profiles lists all available profiles
Profile data includes temperature, pressure curves, flow targets — all the parameters that affect extraction
The MCP knowledge base (apps/mcp-server/) contains profiling knowledge that could be extended with dial-in guidance
Machine Commands
Profiles can be selected with the machine, shots are monitored via WebSocket telemetry
Shot data is retrieved via GET /api/shots/{profile_name}/{date}/{filename}
Analysis: POST /api/shots/analyze-llm for AI-powered analysis
New endpoints in apps/server/api/routes/dialin.py:
POST /api/dialin/session — create session with coffee details
GET /api/dialin/session/{id} — get session state
POST /api/dialin/session/{id}/taste — record taste feedback for current shot
GET /api/dialin/session/{id}/recommend — get AI recommendations
POST /api/dialin/session/{id}/complete — finalize session
GET /api/dialin/sessions — list past dial-in sessions
New Gemini prompt template for dial-in recommendations:
Input: coffee details + profile parameters + shot data + taste compass coordinates + session history
Output: beginner-friendly, prioritized recommendations with specific values
Context window includes all prior iterations for trend awareness
Background
New users often struggle with dialing in espresso — it's the most common beginner pain point. The Meticulous machine ships with stock profiles, but users don't know which to start with or how to iterate based on taste feedback. Meticulous is releasing educational videos on the subject that could be integrated into the MCP knowledge base.
This feature introduces a guided "Dial In" wizard that walks beginners through the full cycle: select a coffee → pick a profile → brew → taste → get AI-powered recommendations → iterate. The Espresso Aficionados Coffee Compass (#261) provides the taste feedback mechanism.
Current State
Home Page
StartView.tsxhas 5 main buttons (profile generation, catalogue, pour-over, settings, about)ViewStateunion type withsetView()to switch viewsProfile System
GET /api/machine/profileslists all available profilesapps/mcp-server/) contains profiling knowledge that could be extended with dial-in guidanceMachine Commands
GET /api/shots/{profile_name}/{date}/{filename}POST /api/shots/analyze-llmfor AI-powered analysisAI Analysis
prompt_builder.pyalready containsPROFILING_KNOWLEDGEwith troubleshooting mappings (sour → grind finer, bitter → lower temp, etc.)UX Concept — Dial-In Wizard Flow
Step 1: Coffee Selection
Step 2: Profile Recommendation
Step 3: Preparation Checklist
info_*variables)Step 4: Brew & Monitor
LiveShotViewcomponents)Step 5: Taste Feedback (Espresso Aficionados Compass)
Step 6: AI Recommendations
Step 7: Iteration History
Implementation Plan
Backend
New
apps/server/services/dialin_service.py:create_session(coffee_details)→ returns session ID and profile recommendationsrecord_iteration(session_id, shot_ref, taste_feedback)→ stores iteration dataget_recommendations(session_id, iteration)→ calls Gemini with full session contextcomplete_session(session_id)→ finalizes and saves session summaryNew
apps/server/models/dialin.py:DialInSession: coffee_details, profile_name, iterations[], statusDialInIteration: shot_ref, taste_feedback, ai_recommendations, timestampTasteFeedback: compass coordinates (sour_bitter, thin_harsh), strength, tags[]New endpoints in
apps/server/api/routes/dialin.py:New Gemini prompt template for dial-in recommendations:
Frontend
New
DialInWizard.tsxcomponent:Step components:
DialInCoffeeStep.tsx— coffee detail inputs (roast, origin, process)DialInProfileStep.tsx— AI profile recommendations + manual selectionDialInPrepStep.tsx— preparation checklistDialInBrewStep.tsx— live shot monitoring (reuses LiveShotView components)DialInTasteStep.tsx— Espresso Compass input from Integrate Espresso Afficionados Compass Guide for taste-based shot analysis #261DialInRecommendStep.tsx— AI recommendations displayDialInHistoryStep.tsx— iteration timeline with progress trackingAdd "Dial In" button to
StartView.tsx— prominent position for beginnersAdd
'dial-in'toViewStatetype intypes/index.tsAI / Knowledge Base Integration
Extend MCP knowledge base with dial-in specific guidance:
Dial-in-specific prompt in
prompt_builder.py— simplified language, prioritized recommendations, iteration-aware contextDependencies
TasteCompassInputcomponent for Step 5Acceptance Criteria
Key Files
apps/server/services/dialin_service.pyapps/server/models/dialin.pyapps/server/api/routes/dialin.pyapps/server/prompt_builder.pyapps/web/src/components/DialInWizard.tsxapps/web/src/components/DialIn*.tsxapps/web/src/views/StartView.tsxapps/web/src/types/index.tsapps/mcp-server/