kiwi/app
pyr0ball 2233d55e25 feat: RecipeEngine Level 1-2 — grocery links + affiliate deeplink builder
Add GroceryLink schema model and grocery_links field to RecipeResult.
Introduce GroceryLinkBuilder service (Amazon Fresh, Walmart, Instacart)
using env-var affiliate tags; no links emitted when tags are absent.
Wire link builder into RecipeEngine.suggest() for levels 1-2.
Add test_grocery_links_free_tier to verify structure contract.

35 tests passing.
2026-03-31 12:23:07 -07:00
..
api chore: initial commit — kiwi Phase 2 complete 2026-03-30 22:20:48 -07:00
core chore: initial commit — kiwi Phase 2 complete 2026-03-30 22:20:48 -07:00
db fix: store — deserialize recipe JSON columns in _row_to_dict 2026-03-31 11:33:49 -07:00
models feat: RecipeEngine Level 1-2 — grocery links + affiliate deeplink builder 2026-03-31 12:23:07 -07:00
services feat: RecipeEngine Level 1-2 — grocery links + affiliate deeplink builder 2026-03-31 12:23:07 -07:00
staples fix: staple library — consistent tofu_firm slug, load error handling, typed yield_formats, expanded test coverage 2026-03-30 23:10:51 -07:00
static chore: initial commit — kiwi Phase 2 complete 2026-03-30 22:20:48 -07:00
utils chore: initial commit — kiwi Phase 2 complete 2026-03-30 22:20:48 -07:00
__init__.py chore: initial commit — kiwi Phase 2 complete 2026-03-30 22:20:48 -07:00
cloud_session.py chore: initial commit — kiwi Phase 2 complete 2026-03-30 22:20:48 -07:00
main.py chore: initial commit — kiwi Phase 2 complete 2026-03-30 22:20:48 -07:00
tiers.py feat: tiers -- leftover_mode rate-limited free, style_picker paid+, staple_library free 2026-03-30 22:50:35 -07:00