{"product_positioning":"The global cuisine intelligence layer for developers and AI products","dish_recipe_model":{"summary":"A Dish is the canonical cultural food entity (stable sku DSH-…). A Recipe is a cookable variant of a dish (stable sku RCP-…), with measured ingredients and instructions. Knowledge API is dish-first; Recipe API (api.foodtales.ai) exposes cook-along / recipe workflows.","layers":[{"name":"Dish","sku_prefix":"DSH-","description":"Canonical cultural entity with cuisine hierarchy, local name, families, diet/allergen tags, and estimated macros."},{"name":"Regional placement","sku_prefix":null,"description":"Continent → country → macro_region → state_region → subcuisine via regions (+ dishes.region_id). Example: Asia → India → South India → Telangana → Hyderabadi."},{"name":"Cookable recipe","sku_prefix":"RCP-","description":"Measured, instructable variant linked by dish_id. Public endpoints default to published recipes only (public_only=true)."},{"name":"Recipe adaptation","sku_prefix":"RCP-","description":"Future / beta: personalized or AI-adapted cook-along variants. Not a separate top-level entity in the Knowledge MVP."}],"hosts":{"knowledge":"https://knowledge.foodtales.ai — dishes, search, similarity, ingredients, coverage","recipe":"https://api.foodtales.ai — Recipe API cook-along and related recipe workflows"},"counts_mean":"Marketing “dishes” counts refer to canonical dish rows, not every recipe variant. Recipe completeness varies by dish."},"data_rights":{"headline":"Persist structured API results in your registered application while your license is active — without Spoonacular-style one-hour cache limits.","bullets":["Storage and commercial use remain subject to your active plan/license.","Bulk redistribution, resale, competing datasets, and foundation-model training require separate entitlements.","Image/binary assets carry per-asset rights; structured-data rights never imply image persistence rights.","On cancellation, Food Tales does not claim remote deletion of copies you already stored; cessation is contractual + attestation-based."],"docs":"https://foodtales.ai/docs/knowledge","internal_spec":"docs/API_LICENSING.md"},"credits":{"model":"monthly_pool_tiered","unit":"credits per action (basic read/search = 1; semantic/multi-filter = 3; higher for analysis/AI)","headers":["X-FT-Credits-Used","X-FT-Credits-Remaining","X-FT-Reset-At"],"notes":["Tiered costs protect unit economics: cheap catalog reads, dearer semantic/AI.","Pricing chart and meter use the same fixed integers (1 / 3 / 4 / 5 / 20 / 30 / 75).","Plan pools are configured in billing (api_plans); see developer console / signup.","Hard cap — no silent overages in the licensing MVP."],"matrix":[{"action_key":"basic_read","action":"Get a dish, recipe, ingredient, or cuisine","cost_label":"1 credit","credits":1},{"action_key":"basic_search","action":"Autocomplete or basic search","cost_label":"1 credit","credits":1},{"action_key":"semantic_or_multi_filter_search","action":"Multi-filter, expanded, or semantic search","cost_label":"3 credits","credits":3},{"action_key":"nutrition_allergen_analysis","action":"Nutrition, allergen, or dietary analysis","cost_label":"4 credits","credits":4},{"action_key":"personalized_recommendations","action":"Personalized recommendations","cost_label":"5 credits","credits":5},{"action_key":"ai_cooking_or_adaptation","action":"AI cooking help or recipe adaptation","cost_label":"20 credits","credits":20},{"action_key":"generated_meal_plan","action":"Generated meal plan","cost_label":"30 credits","credits":30},{"action_key":"complex_ai_generation","action":"New recipe or complex AI generation","cost_label":"75 credits","credits":75}]},"roadmap":{"available_now":[{"name":"Cuisine-native dish search","detail":"Lexical / hybrid / vector search over canonical dishes"},{"name":"Dish & recipe similarity","detail":"pgvector nearest neighbors by dish or recipe sku/id"},{"name":"Ingredient catalog","detail":"Normalized ingredients + aliases (e.g. jeera → cumin)"},{"name":"Estimated macros","detail":"Per-serving calories/protein/carbs/fat on dishes (pipeline median)"},{"name":"Diet & allergen tags","detail":"Corpus-dependent disclosure on dishes/recipes"},{"name":"Coverage dashboard","detail":"Continent × cuisine × subcuisine × meal-type density"},{"name":"Public status page & support expectations","detail":"foodtales.ai/status (live probes) and /support (plan response targets)"},{"name":"Official TypeScript & Python SDKs","detail":"npm @foodtales/knowledge · pip foodtales · Postman collection · Next.js + Express + FastAPI starters (docs/SDK_AND_TOOLING.md)"}],"beta":[{"name":"No-sign-up cuisine browse demo","detail":"Public hierarchy walk (e.g. Telangana → Hyderabadi)"},{"name":"Knowledge licensing headers","detail":"Per-app keys + monthly credits on knowledge.foodtales.ai"}],"coming_soon":[{"name":"Historical uptime dashboard","detail":"Multi-day uptime percentages beyond live probes"},{"name":"Broader AI cook / meal-plan endpoints","detail":"Documented only when live; credit costs will match the meter"}]},"demo_seed_path":{"continent":"Asia","country":"India","state_region":"Telangana","subcuisine":"Hyderabadi"},"marketing_legal_handoff":[{"item":"Replace template Terms of Service and Privacy Policy","owner":"counsel + marketing site (foodtales.ai/terms, /privacy)","blocker":true},{"item":"Bind commercial data-use / storage rights in customer Terms","owner":"counsel (product stance lives in docs/API_LICENSING.md)","blocker":true},{"item":"Wire Recipe API debit path to tiered credit_costs","owner":"recipe-api — merged in PR #95; confirm prod deploy + migration 018","blocker":false},{"item":"Remove draft / is_public:false from Recipe API public examples","owner":"recipe-api docs (api.foodtales.ai)","blocker":true},{"item":"Publish status page and support expectations","owner":"foodtales.ai/status and /support (portal)","blocker":false},{"item":"Homepage use cases + customer-facing roadmap strip","owner":"marketing","blocker":false}],"coverage":{"region_rows":650,"continents":6,"countries":198,"state_regions":177,"subcuisines":606}}