93e48ce639
fix: grocery_links — guard against empty ingredient names in build_links
2026-03-31 12:44:58 -07:00
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
3a064bcac8
feat: RecipeEngine Level 1-2 — corpus match, substitution, grocery list, hard day mode
2026-03-31 11:50:28 -07:00
2ca76bddec
feat: SubstitutionEngine — deterministic swap candidates with compensation hints
2026-03-30 23:13:49 -07:00
ba6766b1d9
fix: staple library — consistent tofu_firm slug, load error handling, typed yield_formats, expanded test coverage
2026-03-30 23:10:51 -07:00
12ebd11092
fix: ElementClassifier — guard empty input, safe JSON decode, dedup heuristic elements, strengthen test assertions
2026-03-30 23:10:49 -07:00
421a52cb50
feat: ElementClassifier -- ingredient element tagging with heuristic fallback
2026-03-30 22:59:46 -07:00
c166e5216a
chore: initial commit — kiwi Phase 2 complete
...
Pantry tracker app with:
- FastAPI backend + Vue 3 SPA frontend
- SQLite via circuitforge-core (migrations 001-005)
- Inventory CRUD, barcode scan, receipt OCR pipeline
- Expiry prediction (deterministic + LLM fallback)
- CF-core tier system integration
- Cloud session support (menagerie)
2026-03-30 22:20:48 -07:00