Phase 3: Kiwi-specific features (recipe engine) #4
Labels
No labels
backlog
beta-feedback
bug
duplicate
enhancement
help wanted
invalid
needs-design
needs-triage
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: Circuit-Forge/kiwi#4
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Phase 3: Recipe Engine
Design spec and implementation plan complete (2026-03-30). Implementation in progress on branch
feature/recipe-engine.Design spec:
circuitforge-plans/kiwi/superpowers/specs/2026-03-30-recipe-engine-design.mdImplementation plan:
circuitforge-plans/kiwi/superpowers/plans/2026-03-30-recipe-engine-plan.mdWhat is being built
A layered recipe suggestion engine — deterministic first, LLM only when rules run out, user always approves.
8 culinary elements: Seasoning, Richness, Brightness, Method, Depth, Aroma, Structure, Texture
4 creativity levels:
Style adapter: Cuisine-mode overlay (Italian, Latin, East Asian, Eastern European, Mediterranean) — Paid+ feature
Staple library: Free tier reference data (seitan, tempeh, firm tofu with yield formats)
Leftover mode: Moved from Premium to rate-limited Free (5/day free, unlimited Paid+)
Amendments added during implementation
Grocery list / low hanging fruit buy:
RecipeRequest.max_missing: int | None— filter to recipes missing at most N ingredientsRecipeSuggestion.missing_ingredients: list[str]— what to buy for that recipeRecipeResult.grocery_list: list[str]— aggregated shopping list across suggestionsHard day mode (accessibility):
RecipeRequest.hard_day_mode: bool = False— for depleted users, only show easy-method recipesUser settings — cooking equipment profile (Task 15, new):
user_settingskey-value table (TEXT key, JSON TEXT value)cooking_equipmentkey stores["microwave", "toaster", ...]GET/PUT /settingsendpointhard_day_mode=True, engine reads equipment from settings to expand what qualifies as easyImplementation progress
Data sources
AkashPS11/recipes_data_food.com(MIT) — 1.05M recipes, primary corpusomid5/usda-fdc-foods-cleaned(CC0) — functional submetadata baseFlavorGraph(lamypark/FlavorGraph, research) — flavor molecule graphalexdseo/RecipeBERT(Apache 2.0) — ingredient similarityflax-community/t5-recipe-generation— recipe generation backbonelishuyang/recipepairs(GPL-3.0 WARNING) — derive substitution pairs only, do not ship raw dataDeferred
pyr0ball referenced this issue from Circuit-Forge/roadmap2026-03-28 15:22:45 -07:00
Amendment: Affiliate grocery links (2026-03-31)
Adding grocery delivery affiliate links to the missing-ingredient grocery list feature.
Design:
GroceryLinkschema:ingredient,retailer,urlRecipeResult.grocery_links: list[GroceryLink]— populated alongsidegrocery_listapp/services/recipe/grocery_links.py—GroceryLinkBuilderTier split:
AMAZON_AFFILIATE_TAG,INSTACART_AFFILIATE_ID). Empty string = retailer disabled.Ideated by Daniel. Folding into Task 11 implementation.
Phase 3 — Recipe Engine Complete ✓
All 15 tasks implemented and merged to main (2026-03-31)
What shipped
cooking_equipmentkey-value store, wired into hard day modePOST /recipes/suggest,GET /recipes/{id},GET /staples/,GET/PUT /settings/{key}55 recipe engine tests + 8 task scheduler tests = 63 passing
Tier gating
Still pending (Phase 4)
grocery_links.py)Cloud instance rebuilt and live at https://menagerie.circuitforge.tech/kiwi
Closing — recipe engine fully implemented:
Shipped in
feature/orch-auto-lifecycle.