Recipes

Recipes

The Recipes tab is your family's shared cookbook. All recipes are visible to everyone in your family and sync in real time across every device — phone, laptop, or the kitchen tablet.

Recipe gallery with two saved recipes.

Adding a recipe

There are three ways to add a recipe:

  1. Manual entry — tap New recipe, fill in the title, ingredients, steps, and optional details (servings, prep/cook time, tags, notes). Available on every plan, including Free.
  2. Import from URL — paste a link to any recipe page on the web. FamilyHub fetches the page, strips the HTML, and sends the plain text to the AI extractor.
  3. Import from text — paste recipe text you copied from anywhere (Instagram caption, email, WhatsApp, a photo's OCR output). Same pipeline as URL import, just without the fetching step.

Both AI imports open the new recipe in the editor so you can review and tweak before saving. Nothing is persisted until you hit Save.

Recipe detail view for Pasta pesto — summary, servings, timing, ingredients, steps.

The predetermined recipe format

Every recipe — whether typed manually or extracted by the AI — lives in the same fixed shape:

FieldRequiredNotes
Titleyes
Summarynoone-liner shown on the card
Servingsnointeger
Prep / cook / total timenominutes
Tagsnocomma-separated, used for filtering
Ingredientsyes, ≥ 1quantity, unit, name, optional notes
Stepsyes, ≥ 1ordered; text is free-form
Notesnoanything extra: storage, variations, your own tips
Source URLnoset automatically when importing from a URL

When the AI imports a recipe it must return this exact shape or the import fails — there is no fallback, no partial save, no free-form prose. If the page you pasted isn't actually a recipe, FamilyHub surfaces a clear "could not extract a recipe from this text" message and nothing is stored.

How the AI import works (in short)

  1. Fetch (URL import only) — FamilyHub makes the request from the server, not your browser. Only HTTP/HTTPS is allowed; loopback, link-local, and site-local addresses are refused so the server cannot be tricked into reaching into your internal network. Response size is capped at 2 MB.
  2. Strip — the HTML is parsed with jsoup, scripts/ads/nav are dropped, and only the readable text is kept.
  3. Prompt — the text is sent to Claude (or OpenAI, if you configured BYOK) with a strict system prompt that says: "respond with exactly one JSON object matching this schema, nothing else."
  4. Parse — FamilyHub parses the response into the typed recipe shape. Unknown fields are dropped. Missing required fields → rejected. Non-JSON → rejected.
  5. Review — you see the extracted recipe in the editor. Every field is editable before you save.

Searching and filtering

Once you have a handful of recipes, the list view gets a search bar. It filters by title, summary, and tags — case-insensitive substring match. No network request; filtering is instant against the list already loaded in the browser.

Editing and deleting

Every recipe has Edit and Delete on its detail page. Edits save a new updatedAt timestamp, which determines the order of the list. Deletes are hard deletes — the recipe and its ingredients/steps are removed. If that matters to your family, archive by renaming rather than deleting until we ship a dedicated archive flow.

What plans include AI import?

PlanManual entryAI import (URL + text)
Freeyesno
Cloud BYOKyesyes (your API key)
Cloud Fullyesyes (hosted)
Self-hostedyesyes (your API key)

If you're on Free and try to import, you'll get a subscription-required error — upgrade to BYOK or Full, or switch to self-hosting with your own Anthropic/OpenAI key.

Privacy note

  • URL imports — FamilyHub's server makes the HTTP request; the target website sees the server's IP, not yours. It does not see which family is importing.
  • Text imports — the text you paste goes to the configured AI provider exactly once, to extract the recipe. It's not stored except as the final saved recipe in your database. On Full, the request rides on FamilyHub's hosted key; on BYOK or self-hosted, it rides on your own key and never touches FamilyHub's account.
  • Saved recipes — stored alongside your other family data. Exportable via the Export / Import admin screen, deletable any time.