Files
Recipes/hello-fresh-import-notes.md
2026-10-16 20:35:23 -05:00

83 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HelloFresh → Mealie import notes
Lessons from processing the chowder recipe. Use as a checklist when adding another HelloFresh recipe.
## 1. Shipped quantities ≠ recipe quantities
HelloFresh ships fixed packets, and the recipe usually uses only part of them.
- Keep ingredient amounts as the **shipped amount**. Do not "correct" them to match the steps.
- Leftovers are expected, not a data-entry error.
- Examples from this session:
- `1 tbsp Old Bay Seasoning` — step uses "half" + `¼ tsp`; remainder is left over.
- `1 tsp sugar` — step uses `¼ tsp`; remainder is left over.
- Stock concentrate ships as packets ("2 unit Veggie Stock Concentrate"). If packets are unavailable, recording it as `2 tablespoons` is intentional and fine.
**Rule:** before touching a quantity, ask/confirm whether it is the shipped amount.
## 2. Servings
- Mealie stores **one base serving count** (`recipeServings`). There is no native "2 or 4" option.
- Set the base (HelloFresh recipes here are usually **2**). Use Mealie's built-in servings selector to scale to 4.
- Mealie scales **structured ingredient quantities only**, not instruction text.
- Also set the yield text (`recipeYield`, e.g. `"2 servings"`). `recipeYieldQuantity` may stay `0`; the MCP tool does not expose it.
## 3. Strip hardcoded multi-serving notes from instructions
HelloFresh instructions embed scaling clauses. Remove them so the built-in scaler doesn't conflict:
- `(... 4 TBSP for 4 servings)`
- `(... 2½ cups for 4 servings)`
- `(For 4 servings, use ½ tsp Old Bay and ½ tsp sugar.)`
Keep the tips and the rest of the step text. The 2-serving amounts are the base and can stay.
## 4. Times
- HelloFresh gives **Total** and **Prep**; derive `cook = total − prep`.
- In this Mealie instance the UI showed **`performTime` as "Cook time"**, not `cookTime`. That is why setting only `cookTime` still displayed 10m.
- Set **all four**: `totalTime`, `prepTime`, `cookTime`, and `performTime` (perform = cook duration) so every view agrees.
- Sanity check: `prep + cook = total`.
## 5. Link ingredients to steps
- Structured ingredients already carry a `referenceId` (UUID v4).
- Add `ingredientReferences: [{ referenceId }]` to each instruction step, reusing the **exact** existing referenceId.
- This is what "organize ingredients under steps" means in Mealie: cook-mode highlighting and per-step ingredient lists.
- Do not regenerate referenceIds; that breaks the link.
## 6. Watch parser/unit artifacts
The NLP parser can map `unit` inconsistently (`item`, `can`, `tablespoon`).
- Verify units against the source text (`originalText`).
- Confirm intentional choices (e.g. tbsp for stock concentrate) before "fixing" them.
- Clean food names: remove trailing spaces (e.g. `green/poblano pepper `), normalize odd capitalization.
## 7. Sanity checks before finishing
- [ ] Every listed ingredient is used by at least one step.
- [ ] Step quantities are consistent with the list **or** explainable as shipped leftovers.
- [ ] Times add up (prep + cook = total) and `performTime` is set.
- [ ] Servings set; yield text set.
- [ ] No hardcoded "for 4 servings" clauses left.
- [ ] Every step has the right `ingredientReferences`.
- [ ] Don't "fix" source-recipe quirks (e.g. description says "cheddar" while the ingredient is Monterey Jack) — that's HelloFresh copy, not a data-entry error.
## 8. Tool behavior (Mealie MCP)
- `update_recipe` **replaces** ingredient/instruction lists when provided; content changes use read-merge-write to preserve other fields.
- Omitted or `null` fields are unchanged.
- `recipeYieldQuantity` is not exposed by the tool.
- Unicode fractions and curly quotes round-trip fine.
## 9. Suggested workflow
1. `get_recipes(search=...)` → `get_recipe(slug)`.
2. Confirm name, source URL, and base servings.
3. Cross-check each ingredient against the steps (used / unused / shipped leftover).
4. Fix genuine errors: units, food names, times, yield — confirming shipped amounts first.
5. Remove `for 4 servings` clauses.
6. Add `ingredientReferences` to every step.
7. Re-fetch and verify times, servings, ref counts, and display strings.