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

4.1 KiB
Raw Blame History

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.
  • 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.