{"$schema":"https://cookwala.ai/v1/schemas/recipe.schema.json","cookwala":"0.2.0","id":"fah-346","revision":1,"updated":"2026-10-05","legacy":{"dataUrl":"https://fifi.cooking/data/recipes/fah-346.json","pageUrl":"https://fifi.cooking/recipe/fah-346/"},"verification":{"level":"V0","generatedBy":"tools/export_fifi.py (deterministic, RFC-0009)","notes":"Described, not machine-verified: original ingredients and steps from fifi.cooking; quantities parsed from the text where possible; no end conditions, hazards or critical control points have been verified. Every step is an unclassified legacy step that a device never executes."},"dish":{"names":{"ar":"بطاطس نصف مقلية للتفريز","de":"Halbfrittierte Kartoffeln zum Einfrieren","el":"Μισοτηγανημένες πατάτες για κατάψυξη","en":"Half-Fried Potatoes for Freezing","es":"Patatas a medio freír para congelar","fa":"سیب زمینی های نیمه سرخ برای فریز","fr":"Pommes de terre à moitié frites pour le congélateur","he":"תפוחי אדמה חצי מטוגנים להקפאה","hi":"फ्रीज़ करने के लिए आधे-तले आलू","id":"Kentang setengah goreng untuk dibekukan","it":"Patate prefritte da congelare","ja":"冷凍用半生揚げポテト","ko":"냉동용 반쯤 튀긴 감자","ku":"Kartolê nîv qelandî ji bo cemidandinê","nl":"Voorgebakken patat om in te vriezen","pl":"Ziemniaki półsmażone do mrożenia","ps":"د کنګلولو لپاره نیم سره شوي کچالو","pt":"Batatas Semifritas para Congelar","ru":"Полуобжаренный картофель для заморозки","sv":"Halvstekt potatis för frysning","sw":"Viazi nusu vilivyokaangwa kwa kugandisha","te":"ఫ్రీజింగ్ కోసం సగం వేయిన బంగాళాదుంపలు","tr":"Dondurmak için Yarı Kızarmış Patates","ur":"فریزنگ کے لیے آدھی تلی ہوئی آلو","zh":"半成品冷冻薯条"},"localName":"بطاطس نصف مقلية للتفريز","cuisine":["EG"],"course":"main","tags":["Quick Meals","Frying","abuhaty"],"images":[{"url":"https://fifi.cooking/recipe-images/fah-346.jpg","role":"banner"},{"url":"https://fifi.cooking/recipe-images/thumbs/fah-346.jpg","role":"thumb"}],"difficulty":"easy"},"yield":{"servings":4.0},"ingredients":[{"ref":"potatoes","ingredientId":"cw.ing.potatoes","legacyId":"fah-346-i1","qty":{"value":0,"unit":"g"},"display":{"ar":"حسب الحاجة","en":"as needed"},"toTaste":true},{"ref":"oil_for_frying","ingredientId":"cw.ing.oil_for_frying","legacyId":"fah-346-i2","qty":{"value":0,"unit":"g"},"display":{"ar":"حسب الحاجة","en":"as needed"},"toTaste":true}],"equipment":[{"ref":"hob","class":"cw.eq.heat.hob"},{"ref":"pan","class":"cw.eq.vessel.pan.skillet"},{"ref":"knife","class":"cw.eq.tool.knife.chef"}],"process":{"nodes":[{"id":"n1","op":"cw.op.legacy_step","params":{"sourceStep":1,"phase":"cook","opHint":"cw.op.cut"},"attention":"continuous"},{"id":"n2","op":"cw.op.legacy_step","params":{"sourceStep":2,"phase":"cook","opHint":"cw.op.heat"},"attention":"continuous"},{"id":"n3","op":"cw.op.legacy_step","params":{"sourceStep":3,"phase":"cook","opHint":"cw.op.season"},"attention":"continuous"},{"id":"n4","op":"cw.op.legacy_step","params":{"sourceStep":4,"phase":"cook","opHint":"cw.op.fry"},"attention":"continuous"},{"id":"n5","op":"cw.op.legacy_step","params":{"sourceStep":5,"phase":"cook","opHint":"cw.op.drain"},"attention":"continuous"},{"id":"n6","op":"cw.op.legacy_step","params":{"sourceStep":6,"phase":"cook","opHint":"cw.op.cool"},"attention":"continuous"},{"id":"n7","op":"cw.op.legacy_step","params":{"sourceStep":7,"phase":"cook","opHint":"cw.op.transfer"},"attention":"continuous"},{"id":"n8","op":"cw.op.legacy_step","params":{"sourceStep":8,"phase":"cook","opHint":"cw.op.cut"},"attention":"continuous"},{"id":"n9","op":"cw.op.legacy_step","params":{"sourceStep":9,"phase":"cook","opHint":"cw.op.cut"},"attention":"continuous"},{"id":"n10","op":"cw.op.legacy_step","params":{"sourceStep":10,"phase":"cook","opHint":"cw.op.freeze"},"attention":"continuous"},{"id":"n11","op":"cw.op.legacy_step","params":{"sourceStep":11,"phase":"cook","opHint":"cw.op.freeze"},"attention":"continuous"},{"id":"n12","op":"cw.op.legacy_step","params":{"sourceStep":12,"phase":"cook","opHint":"cw.op.freeze"},"attention":"continuous"},{"id":"n13","op":"cw.op.legacy_step","params":{"sourceStep":13,"phase":"cook","opHint":"cw.op.fry"},"attention":"continuous"},{"id":"n14","op":"cw.op.legacy_step","params":{"sourceStep":14,"phase":"cook","opHint":"cw.op.fry"},"attention":"continuous"}],"edges":"implicit-from-inputs","totalTime":"PT30M","activeTime":"PT20M"},"safety":{"hazards":[],"allergens":{"eu14":[],"us9":[],"mayContain":[]},"supervision":{"default":"presence_required","reasons":{"all":"V0 document: a person cooks from the original steps; no step is machine-verified (RFC-0009)."}},"abort":{"steps":["heat_off","alert_user"]}},"text":{"ar":{"title":"بطاطس نصف مقلية للتفريز"},"en":{"title":"Half-Fried Potatoes for Freezing"}},"textSidecars":{"languages":["de","el","es","fa","fr","he","hi","id","it","ja","ko","ku","nl","pl","ps","pt","ru","sv","sw","te","tr","ur","zh"],"url":"/v1/recipes/{id}/text/{lang}.json"},"source":{"name":"قناة فاطمة أبو حاتي — يوتيوب","url":"https://www.youtube.com/watch?v=0MyN87i93t4&t=27s","collection":"abuhaty","citation":"Rewritten from the Fatma Abu Haty channel and credited; creator permission to be confirmed"},"license":"LicenseRef-source-credited","layers":{"r1":true,"r2":false,"r3":false},"nutrition":{"perServing":{"kcal":260,"protein":4,"fat":14,"carbs":30,"fiber":3,"sugar":1},"basis":"fifi.cooking estimate per serving (modelled from typical composition tables; not measured)"},"cost":{"buckets":{"produce":1,"fats":1},"total":2},"x-cookwala-text":"facts","hash":"sha256:7d01488b9e7bc187268ab67527775bade5df49570cded5a3c24e99103de59035"}
