# import_log

created_at: 2026-03-25 13:05:22.640186
status: partial
provider: claude
filename: El_Torito_Sweet_Corn_Cake.pdf
recipe_title: El Torito Sweet Corn Cake
unmatched_items: ["margarine", "shortening"]
modifier_results: []
unit_warnings: []
resolution_tiers: {"exact": 9, "created": 2}
raw_ai_response:
  {"title": "El Torito Sweet Corn Cake", "description": "A sweet and moist corn cake from El Torito Restaurant in California. The recipe doubles easily and can be baked or cooked in a water bath.", "servings": 12, "prep_time": 30, "cook_time": 50, "cuisine": "Mexican", "instructions": "Step 1: Place butter and shortening in mixer bowl and whip until soft; continue whipping until fluffy and creamy. Add masa gradually while mixing; add water gradually and mix thoroughly.\n\nStep 2: Place corn kernels in blender or food processor fitted with metal blade; coarsely chop. Stir into the masa harina. Place (regular) cornmeal, sugar, whipping cream, baking powder and salt in large mixing bowl; mix quickly. Add masa mixture and mix lightly, just until blended. Pour into greased 8-inch-square baking pan. Cover with foil.\n\nStep 3: Method 1: Bake in 350-degree oven 40 to 50 minutes or until corn cake has a firm texture.\n\nStep 4: Method 2: Place pan in a larger pan and pour boiling water half way up corn cake pan. Bake at 350 degrees 40 to 50 minutes, checking water level and adding more boiling water, if necessary. When cooked through, remove corn cake pan from water.\n\nStep 5: Let cooked cake stand at room temperature for few minutes before cutting into squares or using a small ice cream scoop to serve.", "ingredients": [{"name": "butter", "quantity": "1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "margarine", "quantity": "1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "shortening", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "masa harina", "quantity": "1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "water", "quantity": "3", "unit": "tbsp", "modifiers": "cold", "package_qty": "", "package_unit": ""}, {"name": "corn kernels", "quantity": "10", "unit": "oz", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cornmeal", "quantity": "3", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "sugar", "quantity": "1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "whipping cream", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "baking powder", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-25 13:17:41.415496
status: partial
provider: claude
filename: El_Torito_Sweet_Corn_Cake.pdf
recipe_title: El Torito Sweet Corn Cake
unmatched_items: ["shortening"]
modifier_results: [{"ingredient": "Butter", "ingredient_id": 659, "modifiers": ["or", "margarine"]}]
unit_warnings: []
resolution_tiers: {"compound": 1, "failed": 1, "exact": 8}
raw_ai_response:
  {"title": "El Torito Sweet Corn Cake", "description": "A sweet corn cake recipe from El Torito Restaurant in California. This Mexican-style corn cake has a moist texture and can be prepared using two methods - baking or water bath.", "servings": 12, "prep_time": 30, "cook_time": 50, "cuisine": "Mexican", "instructions": "Step 1: Place butter and shortening in mixer bowl and whip until soft; continue whipping until fluffy and creamy. Add masa gradually while mixing; add water gradually and mix thoroughly.\n\nStep 2: Place corn kernels in blender or food processor fitted with metal blade; coarsely chop. Stir into the masa harina. Place (regular) cornmeal, sugar, baking powder and salt in large mixing bowl; mix quickly. Add masa mixture and mix lightly, just until blended. Pour into greased 8-inch-square baking pan. Cover with foil.\n\nMethod 1: Bake in 350-degree oven 40 to 50 minutes or until corn cake has a firm texture.\n\nMethod 2: Place pan in a larger pan and pour boiling water half way up corn cake pan. Bake at 350 degrees 40 to 50 minutes, checking water level and adding more boiling water, if necessary. When cooked through, remove corn cake pan from water.\n\nStep 3: Let cooked cake stand at room temperature for few minutes before cutting into squares or using a small ice cream scoop to serve.\n\nStep 4: Store leftovers in the refrigerator.", "ingredients": [{"name": "butter or margarine", "quantity": "1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "shortening", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "masa harina", "quantity": "1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "water", "quantity": "3", "unit": "tbsp", "modifiers": "cold", "package_qty": "", "package_unit": ""}, {"name": "corn kernels", "quantity": "10", "unit": "oz", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cornmeal", "quantity": "3", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "sugar", "quantity": "1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "whipping cream", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "baking powder", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-25 13:29:23.313836
status: success
provider: claude
filename: El_Torito_Sweet_Corn_Cake.pdf
recipe_title: El Torito Sweet Corn Cake
unmatched_items: []
modifier_results: []
unit_warnings: []
resolution_tiers: {"exact": 10}
raw_ai_response:
  {"title": "El Torito Sweet Corn Cake", "description": "A sweet corn cake from El Torito Restaurant in California, made with masa harina, corn kernels, and cornmeal. The recipe doubles easily and turns out well with either baking or boiling method.", "servings": 10, "prep_time": 30, "cook_time": 45, "cuisine": "Mexican", "instructions": "Step 1: Place butter and shortening in mixer bowl and whip until soft; continue whipping until fluffy and creamy. Add masa gradually while mixing; add water gradually and mix thoroughly.\n\nStep 2: Place corn kernels in blender or food processor fitted with metal blade; coarsely chop. Stir into the masa harina. Place (regular) cornmeal, sugar, whipping cream, baking powder and salt in large mixing bowl; mix quickly. Add masa mixture and mix lightly, just until blended. Pour into greased 8-inch-square baking pan. Cover with foil.\n\nStep 3 (Method 1): Bake in 350-degree oven 40 to 50 minutes or until corn cake has a firm texture.\n\nStep 4 (Method 2): Place pan in a larger pan and pour boiling water half way up corn cake pan. Bake at 350 degrees 40 to 50 minutes, checking water level and adding more boiling water, if necessary. When cooked through, remove corn cake pan from water.\n\nStep 5: Let cooked cake stand at room temperature for few minutes before cutting into squares or using a small ice cream scoop to serve.\n\nStep 6: Store leftovers in the refrigerator. Makes 10 to 12 small servings.", "ingredients": [{"name": "butter", "quantity": "1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "shortening", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "masa harina", "quantity": "1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "water", "quantity": "3", "unit": "tbsp", "modifiers": "cold", "package_qty": "", "package_unit": ""}, {"name": "corn kernels", "quantity": "10", "unit": "oz", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cornmeal", "quantity": "3", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "sugar", "quantity": "1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "whipping cream", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "baking powder", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-25 13:33:48.466923
status: partial
provider: claude
filename: Onion_ring_Loaf_Tony_Romas.pdf
recipe_title: Onion Ring Loaf (Ala Tony Roma's)
unmatched_items: ["pancake mix"]
modifier_results: []
unit_warnings: []
resolution_tiers: {"plural": 1, "exact": 5, "created": 1}
raw_ai_response:
  {"title": "Onion Ring Loaf (Ala Tony Roma's)", "description": "A copycat recipe of Tony Roma's famous onion ring loaf featuring onion rings baked in a savory pancake batter loaf. The onions are soaked in a milk and egg mixture, dipped in pancake mix, fried until golden, then baked into a loaf.", "servings": 4, "prep_time": 30, "cook_time": 15, "cuisine": "American", "instructions": "Step 1: Slice onions crosswise and separate into rings.\nStep 2: Combine milk, eggs and salt to taste in mixing bowl.\nStep 3: Soak onion rings in mixture 30 minutes.\nStep 4: Place pancake mix in shallow bowl.\nStep 5: Heat oil for frying in skillet to 375 degrees.\nStep 6: Remove onion rings from milk mixture, dip in pancake mix and place in hot oil.\nStep 7: Fry rings until golden brown.\nStep 8: Drain fried onion rings on paper towels.\nStep 9: Pack fried onion rings solidly, but loosely, without pressing, into 8x4-inch loaf pan.\nStep 10: Bake at 400 degrees 10 to 15 minutes.\nStep 11: Turn onto serving plate.\nStep 12: Garnish with parsley.", "ingredients": [{"name": "white onions", "quantity": "6", "unit": "whole", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "milk", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "eggs", "quantity": "3", "unit": "whole", "modifiers": "beaten", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1", "unit": "pinch", "modifiers": "to taste", "package_qty": "", "package_unit": ""}, {"name": "pancake mix", "quantity": "2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "oil", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "parsley", "quantity": "1", "unit": "bunch", "modifiers": "", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-25 13:59:03.796366
status: partial
provider: claude
filename: Arbys_Sauce.pdf
recipe_title: Arby's Sauce
unmatched_items: ["catsup", "hot pepper sauce"]
modifier_results: []
unit_warnings: []
resolution_tiers: {"created": 2, "exact": 5}
raw_ai_response:
  {"title": "Arby's Sauce", "description": "A copycat recipe for Arby's signature sauce made with catsup, water, and spices. This tangy condiment keeps for a month or two in the refrigerator.", "servings": 1, "prep_time": 5, "cook_time": 10, "cuisine": "American", "instructions": "Step 1: Combine all ingredients in a small saucepan and cook over medium heat, stirring constantly, until the sauce begins to boil, 5 to 10 minutes.\nStep 2: Remove the sauce from the heat. Cover and allow to cool.\nStep 3: Pour into a covered container for storage in your refrigerator.\nStep 4: Keeps for a month or two. Makes 1 cup.", "ingredients": [{"name": "catsup", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "water", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "garlic powder", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "onion powder", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "hot pepper sauce", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-25 14:00:01.329210
status: partial
provider: claude
filename: Bloomin_Onion_Outback.pdf
recipe_title: Outback Bloomin' Onion
unmatched_items: []
unit_warnings: []
resolution_tiers: {"exact": 14, "compound": 3}
raw_ai_response:
  {"title": "Outback Bloomin' Onion", "description": "A deep-fried blooming onion appetizer with seasoned coating, served with a creamy chili sauce.", "servings": 4, "prep_time": 20, "cook_time": 3, "cuisine": "American", "instructions": "Step 1: Combine cayenne mix cornstarch, flour and seasonings until well blended.\nStep 2: Add beer, mix well. Cut about 3/4\" off top of onion and peel.\nStep 3: Cut into onion 12 to 16 vertical wedges but do not cut through bottom root end.\nStep 4: Remove about 1\" of petals from center of onion.\nStep 5: Dip onion in seasoned flour and remove excess by shaking.\nStep 6: Separate petals to coat thoroughly with batter.\nStep 7: Gently place in fryer basket and deep-fry at 375 to 400 for 1-1/2 minutes.\nStep 8: Turn over and fry 1-1/2 minutes longer or until golden brown.\nStep 9: Drain on paper towels. Place onion upright in shallow bowl and remove center core with circular cutter or apple corer. Serve hot with Creamy Chili Sauce.", "ingredients": [{"name": "cornstarch", "quantity": "1/3", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "flour", "quantity": "1 1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "2", "unit": "tsp", "modifiers": "minced", "package_qty": "", "package_unit": ""}, {"name": "paprika", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "beer", "quantity": "24", "unit": "fl oz", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "vidalia onion", "quantity": "4", "unit": "whole", "modifiers": "4 to 6 inch diameter", "package_qty": "", "package_unit": ""}, {"name": "flour", "quantity": "2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "paprika", "quantity": "4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "garlic powder", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cayenne chili sauce", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "mayonnaise", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "sour cream", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "tomato chili sauce", "quantity": "1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cayenne", "quantity": "1/2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Onion", "ingredient_id": 472, "modifiers": ["vidalia", "4 to 6 inch diameter"]}, {"ingredient": "Cayenne", "ingredient_id": 242, "modifiers": ["chili", "sauce"]}, {"ingredient": "Tomato", "ingredient_id": 512, "modifiers": ["chili", "sauce"]}]


created_at: 2026-03-25 14:40:42.250643
status: success
provider: claude
filename: Bloomin_Onion_Outback.pdf
recipe_title: Outback Bloomin' Onion
unmatched_items: []
modifier_results: [{"ingredient": "Cornstarch", "ingredient_id": 442, "modifiers": ["more if needed"]}]
unit_warnings: []
resolution_tiers: {"exact": 14, "alias": 3}
raw_ai_response:
  {"title": "Outback Bloomin' Onion", "description": "A copycat recipe for the famous Outback Steakhouse appetizer featuring a deep-fried blooming onion with seasoned coating served with creamy chili sauce.", "servings": 4, "prep_time": 20, "cook_time": 5, "cuisine": "American", "instructions": "Step 1: Combine flour, paprika, garlic powder, pepper and cayenne and mix well for seasoned flour.\nStep 2: Combine mayo, sour cream, chili sauce and cayenne and mix well for creamy chili sauce.\nStep 3: Combine cornstarch, flour and seasonings until well blended.\nStep 4: Add beer and mix well.\nStep 5: Cut about 3/4 inch off top of onion and peel.\nStep 6: Cut into onion 12 to 16 vertical wedges but do not cut through bottom root end.\nStep 7: Remove about 1 inch of petals from center of onion.\nStep 8: Dip onion in seasoned flour and remove excess by shaking.\nStep 9: Separate petals to coat thoroughly with batter.\nStep 10: Gently place in fryer basket and deep-fry at 375 to 400 degrees for 1-1/2 minutes.\nStep 11: Turn over and fry 1-1/2 minutes longer or until golden brown.\nStep 12: Drain on paper towels.\nStep 13: Place onion upright in shallow bowl and remove center core with circular cutter or apple corer.\nStep 14: Serve hot with Creamy Chili Sauce.", "ingredients": [{"name": "cornstarch", "quantity": "1/3", "unit": "cup", "modifiers": "more if needed", "package_qty": "", "package_unit": ""}, {"name": "all-purpose flour", "quantity": "1 1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "2", "unit": "tsp", "modifiers": "minced", "package_qty": "", "package_unit": ""}, {"name": "paprika", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "beer", "quantity": "24", "unit": "fl oz", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "vidalia onion", "quantity": "4", "unit": "whole", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "all-purpose flour", "quantity": "2", "unit": "cup", "modifiers": "as needed", "package_qty": "", "package_unit": ""}, {"name": "paprika", "quantity": "4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "garlic powder", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cayenne chili sauce", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "mayonnaise", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "sour cream", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "tomato chili sauce", "quantity": "1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cayenne", "quantity": "1/2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-25 14:45:11.874253
status: success
provider: claude
filename: Bloomin_Onion_Outback.pdf
recipe_title: Outback Bloomin' Onion
unmatched_items: []
unit_warnings: []
resolution_tiers: {"exact": 15, "alias": 1}
raw_ai_response:
  {"title": "Outback Bloomin' Onion", "description": "A copycat recipe for the famous Outback Steakhouse appetizer featuring a deep-fried blooming onion with seasoned flour coating, served with creamy chili sauce.", "servings": 4, "prep_time": 20, "cook_time": 5, "cuisine": "American", "instructions": "Step 1: Combine flour, paprika, garlic powder, pepper and cayenne to make seasoned flour and mix well.\nStep 2: Combine mayo, sour cream, chili sauce and cayenne to make creamy chili sauce and mix well.\nStep 3: Mix cayenne with cornstarch, flour and seasonings until well blended.\nStep 4: Add beer and mix well.\nStep 5: Cut about 3/4 inch off top of onion and peel.\nStep 6: Cut into onion 12 to 16 vertical wedges but do not cut through bottom root end.\nStep 7: Remove about 1 inch of petals from center of onion.\nStep 8: Dip onion in seasoned flour and remove excess by shaking.\nStep 9: Separate petals to coat thoroughly with batter.\nStep 10: Gently place in fryer basket and deep-fry at 375 to 400 degrees for 1 to 1-1/2 minutes.\nStep 11: Turn over and fry 1 to 1-1/2 minutes longer or until golden brown.\nStep 12: Drain on paper towels.\nStep 13: Place onion upright in shallow bowl and remove center core with circular cutter or apple corer.\nStep 14: Serve hot with Creamy Chili Sauce.", "ingredients": [{"name": "cornstarch", "quantity": "1/3", "unit": "cup", "modifiers": "more if needed", "package_qty": "", "package_unit": ""}, {"name": "all-purpose flour", "quantity": "1 1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "2", "unit": "tsp", "modifiers": "minced", "package_qty": "", "package_unit": ""}, {"name": "paprika", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "beer", "quantity": "24", "unit": "fl oz", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "vidalia onion", "quantity": "4", "unit": "whole", "modifiers": "4 to 6 inch diameter", "package_qty": "", "package_unit": ""}, {"name": "all-purpose flour", "quantity": "2", "unit": "cup", "modifiers": "as needed", "package_qty": "", "package_unit": ""}, {"name": "paprika", "quantity": "4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "garlic powder", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cayenne", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "mayonnaise", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "sour cream", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "chili sauce", "quantity": "1/2", "unit": "cup", "modifiers": "tomato", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Cornstarch", "ingredient_id": 442, "modifiers": ["more if needed"]}, {"ingredient": "Onion", "ingredient_id": 472, "modifiers": ["4 to 6 inch diameter"]}, {"ingredient": "Chili Sauce", "ingredient_id": 751, "modifiers": ["tomato"]}]


created_at: 2026-03-25 15:31:33.642493
status: success
provider: claude
filename: Bloomin_Onion_Outback.pdf
recipe_title: Outback Bloomin' Onion
unmatched_items: []
unit_warnings: []
resolution_tiers: {"exact": 16, "alias": 1}
raw_ai_response:
  {"title": "Outback Bloomin' Onion", "description": "A deep-fried blooming onion appetizer with seasoned coating, served with creamy chili sauce, inspired by the Outback Steakhouse classic.", "servings": 4, "prep_time": 20, "cook_time": 5, "cuisine": "American", "instructions": "Step 1: Combine flour, paprika, garlic powder, pepper and cayenne and mix well to make seasoned flour.\nStep 2: Combine mayo, sour cream, chili sauce and cayenne and mix well to make creamy chili sauce.\nStep 3: Mix Cayenne with cornstarch, flour and seasonings until well blended.\nStep 4: Add beer, mix well.\nStep 5: Cut about 3/4 inch off top of onion and peel.\nStep 6: Cut into onion 12 to 16 vertical wedges but do not cut through bottom root end.\nStep 7: Remove about 1 inch of petals from center of onion.\nStep 8: Dip onion in seasoned flour and remove excess by shaking.\nStep 9: Separate petals to coat thoroughly with batter.\nStep 10: Gently place in fryer basket and deep-fry at 375 to 400 for 1-1/2 minutes.\nStep 11: Turn over and fry 1-1/2 minutes longer or until golden brown.\nStep 12: Drain on paper towels.\nStep 13: Place onion upright in shallow bowl and remove center core with circular cutter or apple corer.\nStep 14: Serve hot with Creamy Chili Sauce.", "ingredients": [{"name": "cornstarch", "quantity": "1/3", "unit": "cup", "modifiers": "more if needed", "package_qty": "", "package_unit": ""}, {"name": "flour", "quantity": "1 1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "2", "unit": "tsp", "modifiers": "minced", "package_qty": "", "package_unit": ""}, {"name": "paprika", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "beer", "quantity": "24", "unit": "fl oz", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "vidalia onion", "quantity": "4", "unit": "whole", "modifiers": "4 to 6 inch diameter", "package_qty": "", "package_unit": ""}, {"name": "flour", "quantity": "2", "unit": "cup", "modifiers": "as needed", "package_qty": "", "package_unit": ""}, {"name": "paprika", "quantity": "4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "garlic powder", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cayenne", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "mayonnaise", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "sour cream", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "chili sauce", "quantity": "1/2", "unit": "cup", "modifiers": "tomato", "package_qty": "", "package_unit": ""}, {"name": "cayenne", "quantity": "1/2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Cornstarch", "ingredient_id": 442, "modifiers": ["more if needed"]}, {"ingredient": "Onion", "ingredient_id": 472, "modifiers": ["4 to 6 inch diameter"]}, {"ingredient": "Chili Sauce", "ingredient_id": 751, "modifiers": ["tomato"]}]


created_at: 2026-03-25 15:49:13.639312
status: success
provider: claude
filename: Spicy_Parmesan_Chicken_Pasta.pdf
recipe_title: Spicy Parmesan Chicken Pasta
unmatched_items: []
unit_warnings: ["\"clove\" for garlic"]
resolution_tiers: {"exact": 10}
raw_ai_response:
  {"title": "Spicy Parmesan Chicken Pasta", "description": "A flavorful pasta dish with marinated chicken in a spicy Parmesan sauce, served over penne pasta.", "servings": 4, "prep_time": 30, "cook_time": 15, "cuisine": "Italian", "instructions": "Step 1: In a medium bowl, combine 1/3 cup olive oil, 1/4 cup Parmesan cheese, garlic, brown sugar, soy sauce and red pepper flakes. Add the diced chicken to the marinade and stir to coat chicken. Cover bowl with saran wrap and chill in fridge. Let marinate at least 30 minutes, or up to 8 hours.\nStep 2: In a large pot of boiling water, cook pasta according to package directions; drain well. Toss cooked pasta with 1 teaspoon olive oil and remaining Parmesan cheese.\nStep 3: Meanwhile, heat a large skillet over medium high heat. Add the chicken and marinade mixture. Cook and stir chicken for 10-12 minutes, or until chicken is no longer pink. Stir in the pasta and gently toss to combine. Season with salt and pepper.\nStep 4: Serve immediately with sliced green onion and extra Parmesan cheese.", "ingredients": [{"name": "chicken breast", "quantity": "1", "unit": "lb", "modifiers": "boneless, skinless, diced in 1-inch pieces", "package_qty": "", "package_unit": ""}, {"name": "olive oil", "quantity": "1/3", "unit": "cup", "modifiers": "divided", "package_qty": "", "package_unit": ""}, {"name": "olive oil", "quantity": "1", "unit": "tsp", "modifiers": "divided", "package_qty": "", "package_unit": ""}, {"name": "Parmesan cheese", "quantity": "1/2", "unit": "cup", "modifiers": "freshly shredded, divided", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "4", "unit": "clove", "modifiers": "minced", "package_qty": "", "package_unit": ""}, {"name": "brown sugar", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "soy sauce", "quantity": "1/2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "red pepper flakes", "quantity": "1/2", "unit": "tsp", "modifiers": "more or less depending on heat tolerance", "package_qty": "", "package_unit": ""}, {"name": "penne pasta", "quantity": "8", "unit": "oz", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "green onion", "quantity": "1", "unit": "whole", "modifiers": "thinly sliced", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Chicken Breast", "ingredient_id": 587, "modifiers": ["diced in 1-inch pieces"]}, {"ingredient": "Red Pepper Flakes", "ingredient_id": 494, "modifiers": ["more", "less depending on heat tolerance"]}]


created_at: 2026-03-25 16:30:51.611180
status: success
provider: claude
filename: Chicken_Fried_Steak.pdf
recipe_title: Ann's Restaurant Chicken Fried Steak
unmatched_items: []
modifier_results: [{"ingredient": "Sirloin", "ingredient_id": 628, "modifiers": ["4 to 6-ounce", "tenderized"]}]
unit_warnings: []
resolution_tiers: {"exact": 17, "alias": 2}
raw_ai_response:
  {"title": "Ann's Restaurant Chicken Fried Steak", "description": "Classic chicken fried steak with a crispy coating, served with white gravy made from pan drippings.", "servings": 4, "prep_time": 20, "cook_time": 15, "cuisine": "American", "instructions": "Step 1: Dissolve cornstarch in milk. Add eggs and butter; set aside.\n\nStep 2: Meanwhile, combine flour, white pepper, salt, garlic powder and thyme.\n\nStep 3: Dip steaks into milk mixture, allowing excess to drip off. Then dredge in flour mixture to coat evenly. Set aside on wax paper for 10 minutes to allow breading to set.\n\nStep 4: Heat 1 inch of vegetable oil in skillet over medium-high heat. Fry steaks in hot oil until golden on each side, about 5 to 7 minutes. Drain on absorbent paper; keep warm while preparing gravy. Makes 4 servings.\n\nStep 5: For White Gravy: Dissolve 3 chicken bouillon cubes in 1 cup hot water. Set aside. Pour off frying oil from skillet. Melt 4 tablespoons butter in skillet over medium heat. Stir in 4 tablespoons flour and cook until flour bubbles. Do not allow to brown. Whisk in hot water, stirring constantly to prevent lumping. Stir in 2 cups of warm milk, 1 teaspoon white pepper, 1 teaspoon salt and 1/2 teaspoon ground nutmeg. Stir until gravy thickens. Reduce heat and keep warm. Adjust seasoning to taste.", "ingredients": [{"name": "cornstarch", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "milk", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "eggs", "quantity": "3", "unit": "whole", "modifiers": "beaten", "package_qty": "", "package_unit": ""}, {"name": "butter", "quantity": "1", "unit": "tbsp", "modifiers": "melted", "package_qty": "", "package_unit": ""}, {"name": "flour", "quantity": "2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "white pepper", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "garlic powder", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "thyme", "quantity": "1/4", "unit": "tsp", "modifiers": "ground", "package_qty": "", "package_unit": ""}, {"name": "sirloin steaks", "quantity": "4", "unit": "whole", "modifiers": "4 to 6-ounce, thinly sliced, tenderized", "package_qty": "", "package_unit": ""}, {"name": "vegetable oil", "quantity": "1", "unit": "cup", "modifiers": "for frying", "package_qty": "", "package_unit": ""}, {"name": "chicken bouillon cubes", "quantity": "3", "unit": "whole", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "water", "quantity": "1", "unit": "cup", "modifiers": "hot", "package_qty": "", "package_unit": ""}, {"name": "butter", "quantity": "4", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "flour", "quantity": "4", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "milk", "quantity": "2", "unit": "cup", "modifiers": "warm", "package_qty": "", "package_unit": ""}, {"name": "white pepper", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "nutmeg", "quantity": "1/2", "unit": "tsp", "modifiers": "ground", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-25 16:32:02.542278
status: success
provider: claude
filename: Texas_Chili.pdf
recipe_title: Real Texas Chili
unmatched_items: []
unit_warnings: ["\"clove\" for garlic"]
resolution_tiers: {"exact": 15, "alias": 2}
raw_ai_response:
  {"title": "Real Texas Chili", "description": "Authentic Texas-style chili with no beans, featuring beef stew meat, chili powder, cumin, and jalape\u00f1os, simmered in beer and beef broth.", "servings": 8, "prep_time": 20, "cook_time": 150, "cuisine": "American", "instructions": "Step 1: Heat a large Dutch oven coated with cooking spray over medium-high heat. Sprinkle beef with salt and pepper. Place half of beef in pan, cook 8 minutes or until browned. Remove from pan. Repeat procedure with remaining beef, remove from pan.\n\nStep 2: Add 3 cups onion to pan; saut\u00e9 5 minutes or until lightly browned. Add cumin, jalape\u00f1o, and garlic; saut\u00e9 1 minute. Add wine, scraping pan to loosen browned bits. Return beef to pan.\n\nStep 3: Stir in vinegar and next 4 ingredients (vinegar through beer); bring to a boil. Cover, reduce heat, and simmer 1 1/2 hours or until beef is tender, stirring occasionally. Uncover and simmer 1 hour, stirring occasionally. Stir in cilantro. Serve with onion and sour cream.", "ingredients": [{"name": "cooking spray", "quantity": "1", "unit": "pinch", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "beef stew meat", "quantity": "2", "unit": "lb", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "kosher salt", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1/2", "unit": "tsp", "modifiers": "cracked", "package_qty": "", "package_unit": ""}, {"name": "onion", "quantity": "3", "unit": "cup", "modifiers": "chopped", "package_qty": "", "package_unit": ""}, {"name": "cumin seeds", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "jalape\u00f1o pepper", "quantity": "3", "unit": "tbsp", "modifiers": "finely chopped", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "6", "unit": "clove", "modifiers": "minced", "package_qty": "", "package_unit": ""}, {"name": "red wine", "quantity": "1", "unit": "cup", "modifiers": "dry", "package_qty": "", "package_unit": ""}, {"name": "white vinegar", "quantity": "1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "chili powder", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "oregano", "quantity": "2", "unit": "tbsp", "modifiers": "dried", "package_qty": "", "package_unit": ""}, {"name": "beef broth", "quantity": "1", "unit": "can", "modifiers": "low-salt", "package_qty": "14.25", "package_unit": "oz"}, {"name": "beer", "quantity": "1", "unit": "can", "modifiers": "", "package_qty": "12", "package_unit": "oz"}, {"name": "cilantro", "quantity": "1/2", "unit": "cup", "modifiers": "fresh, chopped", "package_qty": "", "package_unit": ""}, {"name": "onion", "quantity": "1/2", "unit": "cup", "modifiers": "chopped", "package_qty": "", "package_unit": ""}, {"name": "sour cream", "quantity": "1/2", "unit": "cup", "modifiers": "fat-free", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Black Pepper", "ingredient_id": 419, "modifiers": ["cracked"]}, {"ingredient": "Beef Broth", "ingredient_id": 581, "modifiers": ["low-salt"]}]


created_at: 2026-03-25 16:33:10.490833
status: partial
provider: claude
filename: CROQUE_MONSIEUR.pdf
recipe_title: Croque Monsieur
unmatched_items: ["cayenne pepper"]
unit_warnings: []
resolution_tiers: {"exact": 9, "failed": 1, "alias": 2}
raw_ai_response:
  {"title": "Croque Monsieur", "description": "A classic French grilled ham and cheese sandwich topped with rich b\u00e9chamel sauce and melted Gruy\u00e8re cheese, served golden and bubbly from the broiler.", "servings": 4, "prep_time": 15, "cook_time": 15, "cuisine": "French", "instructions": "Step 1: Make b\u00e9chamel sauce: Melt butter in a small saucepan over medium heat until just starting to bubble. Add flour, and cook, whisking constantly, until smooth but not browned, about 3 minutes.\nStep 2: Whisking constantly, slowly add milk; continue cooking while whisking until mixture has thickened, about 3 minutes more. Remove from heat, and add salt, nutmeg, cayenne, and black pepper. Transfer to a bowl; place plastic wrap directly on surface of sauce, and set aside.\nStep 3: Heat broiler. Heat a griddle or large cast-iron skillet over medium-low heat. Smear one side of bread slices with mustard. Top 4 slices with a layer each of ham and cheese; cover with remaining 4 bread slices, pressing gently to adhere. Generously butter outer sides, spreading it all the way to the edges.\nStep 4: Place sandwiches on griddle or in skillet. Cook until golden brown and cheese has melted, 3 to 4 minutes a side. Transfer to work surface; divide b\u00e9chamel sauce evenly over tops, spreading to edges; sprinkle with grated cheese.\nStep 5: Transfer to broiler, and cook until topping is melted and golden, 2 to 3 minutes. Serve immediately.", "ingredients": [{"name": "butter", "quantity": "2", "unit": "tbsp", "modifiers": "unsalted, room temperature, for spreading", "package_qty": "", "package_unit": ""}, {"name": "all-purpose flour", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "milk", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/4", "unit": "tsp", "modifiers": "coarse", "package_qty": "", "package_unit": ""}, {"name": "nutmeg", "quantity": "1", "unit": "pinch", "modifiers": "freshly ground", "package_qty": "", "package_unit": ""}, {"name": "cayenne pepper", "quantity": "1", "unit": "pinch", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1", "unit": "pinch", "modifiers": "freshly ground", "package_qty": "", "package_unit": ""}, {"name": "French bread", "quantity": "8", "unit": "slice", "modifiers": "rustic, firm white sandwich bread", "package_qty": "", "package_unit": ""}, {"name": "mustard", "quantity": "1/4", "unit": "cup", "modifiers": "Dijon, whole-grain", "package_qty": "", "package_unit": ""}, {"name": "ham", "quantity": "1/4", "unit": "lb", "modifiers": "cooked, thinly sliced", "package_qty": "", "package_unit": ""}, {"name": "Gruy\u00e8re cheese", "quantity": "1/4", "unit": "lb", "modifiers": "thinly sliced", "package_qty": "", "package_unit": ""}, {"name": "Gruy\u00e8re cheese", "quantity": "1", "unit": "cup", "modifiers": "freshly grated", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Salt", "ingredient_id": 277, "modifiers": ["coarse"]}, {"ingredient": "French Bread", "ingredient_id": 16, "modifiers": ["rustic", "firm white sandwich bread"]}, {"ingredient": "Mustard", "ingredient_id": 715, "modifiers": ["Dijon"]}]


created_at: 2026-03-25 16:34:15.212960
status: success
provider: claude
filename: Orange_Julius.pdf
recipe_title: Orange Julius
unmatched_items: []
modifier_results: [{"ingredient": "Ice", "ingredient_id": 762, "modifiers": ["heaping"]}]
unit_warnings: []
resolution_tiers: {"exact": 6}
raw_ai_response:
  {"title": "Orange Julius", "description": "A refreshing blended orange drink made with orange juice, eggs, vanilla, and ice for a smooth, creamy beverage.", "servings": 2, "prep_time": 5, "cook_time": 0, "cuisine": "American", "instructions": "Step 1: Combine all of the ingredients in a blender set on high speed for exactly one minute.", "ingredients": [{"name": "orange juice", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "water", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "eggs", "quantity": "2", "unit": "whole", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "vanilla extract", "quantity": "3/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "granulated sugar", "quantity": "1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "ice", "quantity": "1", "unit": "cup", "modifiers": "heaping", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-25 16:35:09.053462
status: partial
provider: claude
filename: Chocolate_Chip_Cookies_.pdf
recipe_title: Chocolate Chip Cookies
unmatched_items: ["vanilla pudding and pie filling"]
unit_warnings: []
resolution_tiers: {"exact": 8, "fuzzy": 1, "failed": 1}
raw_ai_response:
  {"title": "Chocolate Chip Cookies", "description": "Classic chocolate chip cookies made with vanilla pudding mix for extra softness and flavor. The pudding mix creates a chewy texture and the recipe yields about 7 dozen cookies.", "servings": 84, "prep_time": 15, "cook_time": 10, "cuisine": "American", "instructions": "Step 1: Mix flour with baking soda.\nStep 2: Combine butter, the sugars, vanilla and pudding mix in large mixer bowl; beat until smooth and creamy.\nStep 3: Beat in eggs.\nStep 4: Gradually add flour mixture; then stir in chips and nuts. (Batter will be stiff.)\nStep 5: Drop by rounded measuring teaspoonfuls, about 2 inches apart, onto ungreased baking sheets.\nStep 6: Bake at 375\u00b0 for 8 to 10 minutes.", "ingredients": [{"name": "all-purpose flour", "quantity": "2 1/4", "unit": "cup", "modifiers": "unsifted", "package_qty": "", "package_unit": ""}, {"name": "baking soda", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "butter", "quantity": "1", "unit": "cup", "modifiers": "softened", "package_qty": "", "package_unit": ""}, {"name": "granulated sugar", "quantity": "1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "light brown sugar", "quantity": "3/4", "unit": "cup", "modifiers": "firmly packed", "package_qty": "", "package_unit": ""}, {"name": "vanilla", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "vanilla pudding and pie filling", "quantity": "1", "unit": "package", "modifiers": "instant", "package_qty": "4", "package_unit": "serving size"}, {"name": "eggs", "quantity": "2", "unit": "whole", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "chocolate chips", "quantity": "1", "unit": "package", "modifiers": "", "package_qty": "12", "package_unit": "oz"}, {"name": "nuts", "quantity": "1", "unit": "cup", "modifiers": "chopped, optional", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "All-Purpose Flour", "ingredient_id": 37, "modifiers": ["unsifted"]}, {"ingredient": "Light Brown Sugar", "ingredient_id": 58, "modifiers": ["firmly packed"]}]


created_at: 2026-03-25 16:36:04.732263
status: success
provider: claude
filename: Plum_Sweet__Sour_Sauce_for_egg_rolls.pdf
recipe_title: Plum Sweet & Sour Sauce
unmatched_items: []
modifier_results: []
unit_warnings: []
resolution_tiers: {"exact": 8}
raw_ai_response:
  {"title": "Plum Sweet & Sour Sauce", "description": "A tangy and sweet plum-based sauce perfect for egg rolls, combining crushed pineapple, vinegar, soy sauce, and plum preserves or orange marmalade.", "servings": 1, "prep_time": 5, "cook_time": 15, "cuisine": "Asian", "instructions": "Step 1: Heat pineapple (with syrup), sugar, 1 cup water, the vinegar and soy sauce to boiling.\nStep 2: Mix cornstarch and 2 tablespoons water; stir into pineapple mixture.\nStep 3: Heat to boiling, stirring constantly.\nStep 4: Cool to room temperature; stir in sauce.\nStep 5: Cover and refrigerate.", "ingredients": [{"name": "pineapple", "quantity": "20", "unit": "oz", "modifiers": "crushed", "package_qty": "", "package_unit": ""}, {"name": "sugar", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "water", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "vinegar", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "soy sauce", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cornstarch", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "water", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "plum sauce", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-25 16:36:34.139965
status: success
provider: claude
filename: HK_Style_Sausage_Rolls.pdf
recipe_title: Hong Kong Style Sausage Rolls
unmatched_items: []
unit_warnings: []
resolution_tiers: {"plural": 2, "exact": 7, "alias": 1}
raw_ai_response:
  {"title": "Hong Kong Style Sausage Rolls", "description": "Soft and fluffy Hong Kong style bread rolls wrapped around sausages, made with tangzhong method for an extra tender texture.", "servings": 4, "prep_time": 10, "cook_time": 120, "cuisine": "Chinese", "instructions": "Step 1: Combine all dry ingredients: flour, salt, sugar and instant yeast in a bowl. Make a well in the center. Whisk and combine all wet ingredients: milk, egg and tangzhong, then add into the well of the dry ingredients. Knead until you get a dough shape and gluten has developed, then knead in the butter. Mind you, it'd be quite messy at this stage (That's why I used a bread maker). Keep kneading until the dough is smooth, not sticky and elastic. (Tip: you might like to test if the dough is ready. Stretch the dough with two hands. If it forms a thin \"membrane\" that's very elastic in texture. Use a finger to poke a hole. If the hole is a circle, not an irregular tear-off. That means you have successfully kneaded the dough to a perfect stage. Yet, don't over-knead the dough. Otherwise all the tissues inside would be broken apart.) The time of kneading all depends on how hard and fast you knead. (Note: I use bread maker to do this hardest part and messy job for me. I added the wet ingredients into my bread maker first, then followed by the dry ingredients. The yeast is the last to add.)\nStep 2: Knead the dough into a ball shape. Place in a greased bowl and cover with a wet towel or cling wrap. Let it proof till it's doubled in size, about 40 minutes (Note: the time will vary and depends on the weather. The best temperature for proofing is 28C. I still used my bread maker in this stage. And my bread maker has a heater.)\nStep 3: Transfer to a clean floured surface. Deflate and divide the dough into four to six equal portions. Knead into ball shapes. Cover with cling wrap, let rest for 15 minutes.\nStep 4: Knead each part into a long tube, about 41cm in length (it depends on how long your sausage). Roll to enclose the sausage, with seals facing down. Place rolls on a tray lined with baking paper, covered with cling wrap or a wet towel. Leave it for the 2nd round of proofing, about 45 to 60 minutes, until double in size.\nStep 5: Brush whisked egg on surface of rolls. Bake in a pre-heated 180C (356F) oven for 35 minutes, or until golden brown. Transfer onto a wire rack and let cool completely.", "ingredients": [{"name": "sausages", "quantity": "4", "unit": "whole", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "bread flour", "quantity": "350", "unit": "g", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "caster sugar", "quantity": "55", "unit": "g", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "5", "unit": "g", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "egg", "quantity": "56", "unit": "g", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "milk powder", "quantity": "7", "unit": "g", "modifiers": "optional", "package_qty": "", "package_unit": ""}, {"name": "milk", "quantity": "125", "unit": "ml", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "tangzhong", "quantity": "120", "unit": "g", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "instant yeast", "quantity": "5", "unit": "g", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "butter", "quantity": "30", "unit": "g", "modifiers": "cut into small pieces, softened at room temperature", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Butter", "ingredient_id": 659, "modifiers": ["cut into small pieces", "softened at room temperature"]}]


created_at: 2026-03-25 16:37:07.972217
status: success
provider: claude
filename: Fajita_Beef_Stir-Fry.pdf
recipe_title: Asian-Inspired Fajita Beef Stir-Fry
unmatched_items: []
unit_warnings: ["\"clove\" for garlic"]
resolution_tiers: {"alias": 1, "exact": 11}
raw_ai_response:
  {"title": "Asian-Inspired Fajita Beef Stir-Fry", "description": "A fusion stir-fry combining seasoned fajita beef with Asian sauces and aromatics, served over rice or noodles.", "servings": 4, "prep_time": 10, "cook_time": 10, "cuisine": "Asian", "instructions": "Step 1: Prepare the Sauce: In a small bowl, mix the soy sauce, oyster sauce, hoisin sauce, rice cooking wine, and sesame oil. Set aside.\nStep 2: Cook the Beef: Heat a wok or large skillet over high heat. Add a bit of vegetable oil, then add the seasoned fajita beef. Stir-fry for 2-3 minutes until the beef is cooked through. Remove the beef from the wok and set aside.\nStep 3: Cook the Aromatics: Add a bit more vegetable oil if needed, then stir-fry the minced garlic, minced ginger, and sliced onion for 2-3 minutes until fragrant and the onion is slightly softened.\nStep 4: Combine Everything: Return the beef to the wok, add the sauce, and toss everything together. If the sauce needs thickening, add the cornstarch slurry and cook until the sauce coats the beef and onions evenly.\nStep 5: Serve: Serve hot over rice or noodles.", "ingredients": [{"name": "fajita beef", "quantity": "1", "unit": "lb", "modifiers": "seasoned, sliced thinly", "package_qty": "", "package_unit": ""}, {"name": "soy sauce", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "oyster sauce", "quantity": "1", "unit": "tbsp", "modifiers": "optional, for extra umami", "package_qty": "", "package_unit": ""}, {"name": "hoisin sauce", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "rice cooking wine", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "sesame oil", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "2", "unit": "clove", "modifiers": "minced", "package_qty": "", "package_unit": ""}, {"name": "ginger", "quantity": "1", "unit": "tbsp", "modifiers": "minced, from a jar", "package_qty": "", "package_unit": ""}, {"name": "onion", "quantity": "1/2", "unit": "whole", "modifiers": "sliced", "package_qty": "", "package_unit": ""}, {"name": "vegetable oil", "quantity": "1", "unit": "tbsp", "modifiers": "for stir-frying", "package_qty": "", "package_unit": ""}, {"name": "cornstarch", "quantity": "2", "unit": "tsp", "modifiers": "mixed with 3 tbsp water, for thickening", "package_qty": "", "package_unit": ""}, {"name": "rice", "quantity": "1", "unit": "cup", "modifiers": "cooked, for serving", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Beef", "ingredient_id": 580, "modifiers": ["seasoned"]}, {"ingredient": "Ginger", "ingredient_id": 528, "modifiers": ["from a jar"]}, {"ingredient": "Cornstarch", "ingredient_id": 442, "modifiers": ["mixed with 3 tbsp water"]}]


created_at: 2026-03-25 16:37:36.136544
status: success
provider: claude
filename: Char_Sui_Chinese_BBQ_Pork.pdf
recipe_title: Hong Kong Style Char Sui (Chinese BBQ Pork)
unmatched_items: []
unit_warnings: ["\"clove\" for garlic"]
resolution_tiers: {"compound": 1, "exact": 16, "alias": 1}
raw_ai_response:
  {"title": "Hong Kong Style Char Sui (Chinese BBQ Pork)", "description": "Traditional Hong Kong-style Chinese BBQ pork marinated in a sweet and savory sauce, roasted until caramelized with a glossy honey glaze.", "servings": 8, "prep_time": 20, "cook_time": 40, "cuisine": "Chinese", "instructions": "Step 1: Cut the pork into long strips about 2 inches thick. Pork shoulder offers a balance of meat and fat for juiciness, resulting in a more authentic Hong Kong-style Char Siu. Pork tenderloin is a leaner option that cooks faster; adjust cooking times accordingly. Pat the pork dry with paper towels to help the marinade adhere better.\n\nStep 2: Make the marinade. For Option 1 (From Scratch): In a large bowl, combine all ingredients listed under \"Marinade Option 1.\" Mix thoroughly until well combined. For Option 2 (Using Store-Bought Char Siu Sauce): In a large bowl, combine the store-bought Char Siu sauce, honey, Shaoxing wine, and red food coloring (if using). Stir well to ensure all ingredients are fully integrated.\n\nStep 3: Add the pork strips to your chosen marinade, ensuring each piece is fully coated. Cover the bowl with plastic wrap and refrigerate for at least 4 hours, preferably overnight, to allow the flavors to penetrate deeply.\n\nStep 4: Preheat your oven to 400\u00b0F (200\u00b0C). Line a baking tray with aluminum foil for easy cleanup and place a wire rack on top. This setup allows for even heat circulation and prevents the pork from sitting in its juices.\n\nStep 5: Remove the pork from the marinade, letting excess marinade drip off. Reserve the leftover marinade for basting. Place the pork strips on the wire rack, spacing them evenly. Roast pork shoulder for 20 minutes or pork tenderloin for 15 minutes.\n\nStep 6: After the initial roasting time, remove the pork from the oven. Baste generously with the reserved marinade on all sides. Flip the pork pieces over. Return to the oven and roast for an additional 15 minutes for pork shoulder or 10 minutes for pork tenderloin.\n\nStep 7: In a small bowl, mix 2 tablespoons of honey with 1 tablespoon of hot water until the honey is diluted and easy to brush.\n\nStep 8: Remove the pork from the oven. Brush the honey glaze generously over each piece. Return the pork to the oven and roast for an additional 5 minutes for pork shoulder or 3-5 minutes for pork tenderloin. For a caramelized and slightly charred finish, you can broil the pork on high for the last 2 minutes, watching carefully to prevent burning.\n\nStep 9: Use a meat thermometer to ensure proper internal temperature. Pork shoulder should reach 160\u00b0F (71\u00b0C) and pork tenderloin should reach 145\u00b0F (63\u00b0C). This ensures the meat is safe to eat while remaining juicy and tender.\n\nStep 10: Remove the pork from the oven and let it rest for 10 minutes to retain its juices. Slice the pork into thin, bite-sized pieces. Serve hot with your choice of accompaniments.", "ingredients": [{"name": "pork shoulder", "quantity": "2", "unit": "lb", "modifiers": "cut into long strips about 2 inches thick", "package_qty": "", "package_unit": ""}, {"name": "hoisin sauce", "quantity": "3", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "honey", "quantity": "3", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "soy sauce", "quantity": "3", "unit": "tbsp", "modifiers": "light", "package_qty": "", "package_unit": ""}, {"name": "oyster sauce", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "Chinese five-spice powder", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "Shaoxing wine", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "sesame oil", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "3", "unit": "clove", "modifiers": "minced", "package_qty": "", "package_unit": ""}, {"name": "brown sugar", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "white pepper", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "red food coloring", "quantity": "1", "unit": "dash", "modifiers": "optional, for traditional color", "package_qty": "", "package_unit": ""}, {"name": "Char Siu sauce", "quantity": "1", "unit": "cup", "modifiers": "store-bought", "package_qty": "", "package_unit": ""}, {"name": "honey", "quantity": "1", "unit": "tbsp", "modifiers": "optional, for added sweetness", "package_qty": "", "package_unit": ""}, {"name": "Shaoxing wine", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "red food coloring", "quantity": "1", "unit": "dash", "modifiers": "optional", "package_qty": "", "package_unit": ""}, {"name": "honey", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "water", "quantity": "1", "unit": "tbsp", "modifiers": "hot", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Pork", "ingredient_id": 617, "modifiers": ["shoulder", "cut into long strips about 2 inches thick"]}, {"ingredient": "Char Siu Sauce", "ingredient_id": 752, "modifiers": ["store-bought"]}]


created_at: 2026-03-25 16:38:29.459805
status: success
provider: claude
filename: SUN-DRIED_TOMATO_SAUSAGE_SPINACH__FETA_FRITTATA.pdf
recipe_title: Sun-Dried Tomato Sausage Spinach & Feta Frittata
unmatched_items: []
unit_warnings: []
resolution_tiers: {"exact": 5, "alias": 3}
raw_ai_response:
  {"title": "Sun-Dried Tomato Sausage Spinach & Feta Frittata", "description": "A savory frittata made with sun-dried tomato sausage, spinach, and feta cheese, perfect for breakfast or brunch.", "servings": 4, "prep_time": 10, "cook_time": 15, "cuisine": "Mediterranean", "instructions": "Step 1: In a large nonstick frying pan, over medium high heat, melt the butter and saut\u00e9 the onion about 5 minutes, until translucent. Add the sausage and saut\u00e9 about 3 minutes, until beginning to brown.\nStep 2: Add the spinach and saut\u00e9 about 2 minutes, until just wilted.\nStep 3: In a mixing bowl, whisk the eggs with salt and pepper, to taste. Pour the eggs over the sausage mixture, stirring to combine.\nStep 4: Reduce the heat and top with the feta. Cover and cook 5-8 minutes more until the top is set. Transfer to a plate and cut into wedges to serve.", "ingredients": [{"name": "butter", "quantity": "3", "unit": "tbsp", "modifiers": "unsalted", "package_qty": "", "package_unit": ""}, {"name": "onion", "quantity": "1", "unit": "cup", "modifiers": "chopped", "package_qty": "", "package_unit": ""}, {"name": "baby spinach", "quantity": "10", "unit": "oz", "modifiers": "pre-washed", "package_qty": "", "package_unit": ""}, {"name": "sun-dried tomato sausage", "quantity": "4", "unit": "whole", "modifiers": "sliced", "package_qty": "", "package_unit": ""}, {"name": "eggs", "quantity": "8", "unit": "whole", "modifiers": "lightly beaten", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1", "unit": "pinch", "modifiers": "to taste", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1", "unit": "pinch", "modifiers": "freshly ground, to taste", "package_qty": "", "package_unit": ""}, {"name": "feta cheese", "quantity": "4", "unit": "oz", "modifiers": "", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Spinach", "ingredient_id": 407, "modifiers": ["pre-washed"]}, {"ingredient": "Sausage", "ingredient_id": 391, "modifiers": ["sun-dried tomato"]}]


created_at: 2026-03-25 16:47:48.499382
status: success
provider: claude
filename: CROQUE_MONSIEUR.pdf
recipe_title: Croque Monsieur
unmatched_items: []
unit_warnings: []
resolution_tiers: {"exact": 9, "alias": 4}
raw_ai_response:
  {"title": "Croque Monsieur", "description": "A classic French grilled ham and cheese sandwich topped with rich b\u00e9chamel sauce and melted cheese. First served in 1910 at a Paris caf\u00e9, this elegant sandwich has become a fixture on casual menus.", "servings": 4, "prep_time": 15, "cook_time": 15, "cuisine": "French", "instructions": "Step 1: Make b\u00e9chamel sauce: Melt butter in a small saucepan over medium heat until just starting to bubble. Add flour, and cook, whisking constantly, until smooth but not browned, about 3 minutes.\nStep 2: Whisking constantly, slowly add milk; continue cooking while whisking until mixture has thickened, about 3 minutes more. Remove from heat, and add salt, nutmeg, cayenne, and black pepper. Transfer to a bowl; place plastic wrap directly on surface of sauce, and set aside.\nStep 3: Heat broiler. Heat a griddle or large cast-iron skillet over medium-low heat. Smear one side of bread slices with mustard. Top 4 slices with a layer each of ham and cheese; cover with remaining 4 bread slices, pressing gently to adhere. Generously butter outer sides, spreading it all the way to the edges.\nStep 4: Place sandwiches on griddle or in skillet. Cook until golden brown and cheese has melted, 3 to 4 minutes a side. Transfer to work surface; divide b\u00e9chamel sauce evenly over tops, spreading to edges; sprinkle with grated cheese.\nStep 5: Transfer to broiler, and cook until topping is melted and golden, 2 to 3 minutes. Serve immediately.", "ingredients": [{"name": "butter", "quantity": "2", "unit": "tbsp", "modifiers": "unsalted, room temperature", "package_qty": "", "package_unit": ""}, {"name": "all-purpose flour", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "milk", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/4", "unit": "tsp", "modifiers": "coarse", "package_qty": "", "package_unit": ""}, {"name": "nutmeg", "quantity": "1", "unit": "pinch", "modifiers": "freshly ground", "package_qty": "", "package_unit": ""}, {"name": "cayenne pepper", "quantity": "1", "unit": "pinch", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1", "unit": "pinch", "modifiers": "freshly ground", "package_qty": "", "package_unit": ""}, {"name": "French bread", "quantity": "8", "unit": "slice", "modifiers": "rustic", "package_qty": "", "package_unit": ""}, {"name": "white sandwich bread", "quantity": "8", "unit": "slice", "modifiers": "firm, rustic", "package_qty": "", "package_unit": ""}, {"name": "mustard", "quantity": "1/4", "unit": "cup", "modifiers": "Dijon, whole-grain", "package_qty": "", "package_unit": ""}, {"name": "ham", "quantity": "1/4", "unit": "lb", "modifiers": "cooked, thinly sliced", "package_qty": "", "package_unit": ""}, {"name": "Gruy\u00e8re cheese", "quantity": "1/4", "unit": "lb", "modifiers": "thinly sliced", "package_qty": "", "package_unit": ""}, {"name": "Gruy\u00e8re cheese", "quantity": "1", "unit": "cup", "modifiers": "freshly grated", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Salt", "ingredient_id": 277, "modifiers": ["coarse"]}, {"ingredient": "French Bread", "ingredient_id": 16, "modifiers": ["rustic"]}, {"ingredient": "Sandwich Bread", "ingredient_id": 764, "modifiers": ["rustic"]}, {"ingredient": "Mustard", "ingredient_id": 715, "modifiers": ["Dijon"]}]


created_at: 2026-03-25 16:48:39.817177
status: success
provider: claude
filename: Chocolate_Chip_Cookies_.pdf
recipe_title: Chocolate Chip Cookies
unmatched_items: []
unit_warnings: []
resolution_tiers: {"exact": 8, "fuzzy": 1, "alias": 1}
raw_ai_response:
  {"title": "Chocolate Chip Cookies", "description": "Classic chocolate chip cookies made with vanilla pudding mix for extra softness and flavor. Makes about 7 dozen cookies.", "servings": 84, "prep_time": 15, "cook_time": 10, "cuisine": "American", "instructions": "Step 1: Mix flour with baking soda.\nStep 2: Combine butter, the sugars, vanilla and pudding mix in large mixer bowl; beat until smooth and creamy.\nStep 3: Beat in eggs.\nStep 4: Gradually add flour mixture; then stir in chips and nuts. (Batter will be stiff.)\nStep 5: Drop by rounded measuring teaspoonfuls, about 2 inches apart, onto ungreased baking sheets.\nStep 6: Bake at 375\u00b0 for 8 to 10 minutes.\nStep 7: Makes about 7 dozen.", "ingredients": [{"name": "all-purpose flour", "quantity": "2 1/4", "unit": "cup", "modifiers": "unsifted", "package_qty": "", "package_unit": ""}, {"name": "baking soda", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "butter", "quantity": "1", "unit": "cup", "modifiers": "softened", "package_qty": "", "package_unit": ""}, {"name": "granulated sugar", "quantity": "1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "light brown sugar", "quantity": "3/4", "unit": "cup", "modifiers": "firmly packed", "package_qty": "", "package_unit": ""}, {"name": "vanilla", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "vanilla pudding and pie filling", "quantity": "1", "unit": "package", "modifiers": "instant", "package_qty": "4", "package_unit": "serving size"}, {"name": "eggs", "quantity": "2", "unit": "whole", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "chocolate chips", "quantity": "1", "unit": "package", "modifiers": "", "package_qty": "12", "package_unit": "oz"}, {"name": "nuts", "quantity": "1", "unit": "cup", "modifiers": "chopped, optional", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "All-Purpose Flour", "ingredient_id": 37, "modifiers": ["unsifted"]}, {"ingredient": "Light Brown Sugar", "ingredient_id": 58, "modifiers": ["firmly packed"]}]


created_at: 2026-03-25 16:58:07.114413
status: success
provider: claude
filename: Banana_Bread.pdf
recipe_title: Banana Bread
unmatched_items: []
modifier_results: [{"ingredient": "Banana", "ingredient_id": 331, "modifiers": ["mashed"]}]
unit_warnings: []
resolution_tiers: {"plural": 2, "exact": 7}
raw_ai_response:
  {"title": "Banana Bread", "description": "A classic American banana bread made with ripe bananas, butter, and optional walnuts. Perfectly moist and delicious.", "servings": 8, "prep_time": 15, "cook_time": 60, "cuisine": "American", "instructions": "Step 1: Preheat oven to 350 degrees F. Grease a 9x5 inch loaf pan.\nStep 2: In a large bowl, mix mashed bananas with melted butter.\nStep 3: Mix in sugar, beaten egg, and vanilla extract.\nStep 4: Sprinkle baking soda and salt over mixture and stir to combine.\nStep 5: Add flour and mix until just combined. Do not overmix.\nStep 6: Fold in walnuts if using.\nStep 7: Pour batter into prepared loaf pan.\nStep 8: Bake for 55-65 minutes until a toothpick inserted in center comes out clean.\nStep 9: Let cool in pan for 10 minutes then turn out onto a wire rack to cool completely.", "ingredients": [{"name": "bananas", "quantity": "3", "unit": "whole", "modifiers": "ripe, mashed", "package_qty": "", "package_unit": ""}, {"name": "butter", "quantity": "1/3", "unit": "cup", "modifiers": "unsalted, melted", "package_qty": "", "package_unit": ""}, {"name": "sugar", "quantity": "3/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "egg", "quantity": "1", "unit": "whole", "modifiers": "beaten", "package_qty": "", "package_unit": ""}, {"name": "vanilla extract", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "baking soda", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "all-purpose flour", "quantity": "1 1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "walnuts", "quantity": "1/2", "unit": "cup", "modifiers": "chopped, optional", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-25 16:58:27.406691
status: partial
provider: claude
filename: Beef_Tacos.pdf
recipe_title: Beef Tacos
unmatched_items: ["taco shells"]
modifier_results: []
unit_warnings: []
resolution_tiers: {"exact": 9, "failed": 1, "plural": 1}
raw_ai_response:
  {"title": "Beef Tacos", "description": "Classic Mexican-style beef tacos with seasoned ground beef, fresh toppings, and a variety of garnishes served in crispy taco shells.", "servings": 4, "prep_time": 10, "cook_time": 10, "cuisine": "Mexican", "instructions": "Step 1: Brown ground beef in a skillet over medium-high heat. Drain excess fat.\nStep 2: Add taco seasoning and water. Stir to combine.\nStep 3: Simmer for 5 minutes until liquid is absorbed and beef is well seasoned.\nStep 4: Warm taco shells according to package directions.\nStep 5: Fill each shell with seasoned beef.\nStep 6: Top with shredded cheese, lettuce, diced tomatoes, and onion.\nStep 7: Add a dollop of sour cream and salsa.\nStep 8: Serve with lime wedges.", "ingredients": [{"name": "ground beef", "quantity": "1", "unit": "lb", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "taco seasoning", "quantity": "1", "unit": "package", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "water", "quantity": "2/3", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "taco shells", "quantity": "8", "unit": "whole", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cheddar cheese", "quantity": "1", "unit": "cup", "modifiers": "shredded", "package_qty": "", "package_unit": ""}, {"name": "lettuce", "quantity": "1", "unit": "cup", "modifiers": "shredded", "package_qty": "", "package_unit": ""}, {"name": "tomatoes", "quantity": "2", "unit": "whole", "modifiers": "diced", "package_qty": "", "package_unit": ""}, {"name": "sour cream", "quantity": "1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salsa", "quantity": "1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "onion", "quantity": "1/4", "unit": "cup", "modifiers": "diced", "package_qty": "", "package_unit": ""}, {"name": "lime", "quantity": "1", "unit": "whole", "modifiers": "cut into wedges", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-25 16:59:04.539710
status: success
provider: claude
filename: Chicken_Tikka_Masala.pdf
recipe_title: Chicken Tikka Masala
unmatched_items: []
modifier_results: [{"ingredient": "Yogurt", "ingredient_id": 234, "modifiers": ["plain"]}]
unit_warnings: ["\"clove\" for garlic"]
resolution_tiers: {"exact": 17, "plural": 1}
raw_ai_response:
  {"title": "Chicken Tikka Masala", "description": "A flavorful Indian dish featuring marinated chicken in a creamy tomato-based sauce with aromatic spices.", "servings": 4, "prep_time": 30, "cook_time": 41, "cuisine": "Indian", "instructions": "Step 1: Combine yogurt, lemon juice, cumin, paprika, turmeric, garam masala, and salt in a bowl. Add chicken and marinate at least 1 hour or overnight.\nStep 2: Thread chicken onto skewers or place on a baking sheet. Broil for 10-12 minutes until charred and cooked through. Set aside.\nStep 3: Melt butter in a large skillet over medium heat. Add onion and cook until golden, about 8 minutes.\nStep 4: Add garlic and ginger. Cook 2 minutes until fragrant.\nStep 5: Add cumin, paprika, and garam masala. Cook 1 minute.\nStep 6: Add crushed tomatoes and simmer 10 minutes.\nStep 7: Stir in heavy cream and simmer 5 minutes until sauce thickens.\nStep 8: Add cooked chicken and simmer 5 more minutes.\nStep 9: Garnish with fresh cilantro. Serve with rice or naan.", "ingredients": [{"name": "chicken breast", "quantity": "1 1/2", "unit": "lb", "modifiers": "cubed", "package_qty": "", "package_unit": ""}, {"name": "yogurt", "quantity": "1", "unit": "cup", "modifiers": "plain", "package_qty": "", "package_unit": ""}, {"name": "lemon juice", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cumin", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "paprika", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "turmeric", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "garam masala", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "butter", "quantity": "3", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "onion", "quantity": "1", "unit": "whole", "modifiers": "large, diced", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "4", "unit": "clove", "modifiers": "minced", "package_qty": "", "package_unit": ""}, {"name": "ginger", "quantity": "1", "unit": "tbsp", "modifiers": "fresh, minced", "package_qty": "", "package_unit": ""}, {"name": "cumin", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "paprika", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "garam masala", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "tomatoes", "quantity": "1", "unit": "can", "modifiers": "crushed", "package_qty": "14", "package_unit": "oz"}, {"name": "heavy cream", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cilantro", "quantity": "1/4", "unit": "cup", "modifiers": "fresh, chopped", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-25 16:59:33.904841
status: success
provider: claude
filename: Classic_Caesar_Salad.pdf
recipe_title: Classic Caesar Salad
unmatched_items: []
modifier_results: [{"ingredient": "Anchovy", "ingredient_id": 289, "modifiers": ["fillets"]}]
unit_warnings: ["\"clove\" for garlic"]
resolution_tiers: {"exact": 11, "compound": 1}
raw_ai_response:
  {"title": "Classic Caesar Salad", "description": "A classic Caesar salad with homemade dressing featuring romaine lettuce, Parmesan cheese, croutons, and a creamy anchovy-garlic dressing.", "servings": 4, "prep_time": 20, "cook_time": 0, "cuisine": "American", "instructions": "Step 1: In a large bowl, whisk together mayonnaise, lemon juice, garlic, Dijon mustard, Worcestershire sauce, anchovies, salt and pepper until smooth.\nStep 2: Add olive oil in a thin stream, whisking constantly until dressing is emulsified.\nStep 3: Add chopped romaine lettuce to the bowl and toss well to coat with dressing.\nStep 4: Add half the Parmesan cheese and toss again.\nStep 5: Top with croutons and remaining Parmesan cheese.\nStep 6: Serve immediately.", "ingredients": [{"name": "romaine lettuce", "quantity": "2", "unit": "head", "modifiers": "chopped", "package_qty": "", "package_unit": ""}, {"name": "mayonnaise", "quantity": "1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "lemon juice", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "2", "unit": "clove", "modifiers": "minced", "package_qty": "", "package_unit": ""}, {"name": "Dijon mustard", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "Worcestershire sauce", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "Parmesan cheese", "quantity": "1/2", "unit": "cup", "modifiers": "grated", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "croutons", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "olive oil", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "anchovy fillets", "quantity": "2", "unit": "whole", "modifiers": "minced", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-25 17:00:01.189384
status: success
provider: claude
filename: Eggs_Benedict.pdf
recipe_title: Eggs Benedict
unmatched_items: []
modifier_results: [{"ingredient": "Bacon", "ingredient_id": 579, "modifiers": ["canadian"]}]
unit_warnings: []
resolution_tiers: {"exact": 6, "plural": 2, "compound": 1, "alias": 1}
raw_ai_response:
  {"title": "Eggs Benedict", "description": "Classic American breakfast dish featuring poached eggs and Canadian bacon on toasted English muffins, topped with rich hollandaise sauce.", "servings": 2, "prep_time": 15, "cook_time": 15, "cuisine": "American", "instructions": "Step 1: Make hollandaise: Whisk egg yolks and lemon juice in a double boiler over simmering water until thickened.\nStep 2: Slowly drizzle in melted butter while whisking constantly until sauce is thick and creamy.\nStep 3: Season hollandaise with cayenne and salt. Keep warm.\nStep 4: Pan-fry Canadian bacon in a skillet until heated through. Set aside.\nStep 5: Fill a deep skillet with 3 inches of water. Add vinegar and bring to a gentle simmer.\nStep 6: Crack each egg into a small cup. Gently slide eggs into simmering water.\nStep 7: Poach eggs 3-4 minutes until whites are set but yolks are still runny.\nStep 8: Place toasted English muffin halves on plates. Top each with a slice of Canadian bacon.\nStep 9: Use a slotted spoon to remove poached eggs and place on top of bacon.\nStep 10: Spoon hollandaise sauce generously over each egg. Garnish with parsley. Serve immediately.", "ingredients": [{"name": "eggs", "quantity": "4", "unit": "whole", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "English muffins", "quantity": "2", "unit": "whole", "modifiers": "split, toasted", "package_qty": "", "package_unit": ""}, {"name": "Canadian bacon", "quantity": "4", "unit": "slice", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "white vinegar", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "egg yolks", "quantity": "3", "unit": "whole", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "lemon juice", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "butter", "quantity": "1/2", "unit": "cup", "modifiers": "unsalted, melted", "package_qty": "", "package_unit": ""}, {"name": "cayenne pepper", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "parsley", "quantity": "1", "unit": "tbsp", "modifiers": "fresh, chopped", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-25 17:00:25.169854
status: success
provider: claude
filename: French_Onion_Soup.pdf
recipe_title: French Onion Soup
unmatched_items: []
modifier_results: []
unit_warnings: []
resolution_tiers: {"exact": 14, "alias": 1}
raw_ai_response:
  {"title": "French Onion Soup", "description": "Classic French onion soup with deeply caramelized onions in a rich beef and chicken broth, topped with toasted baguette and melted Gruyere cheese.", "servings": 4, "prep_time": 15, "cook_time": 70, "cuisine": "French", "instructions": "Step 1: Melt butter with olive oil in a large heavy pot over medium heat.\nStep 2: Add onions and cook, stirring occasionally, for 15 minutes until softened.\nStep 3: Add sugar and salt. Continue cooking, stirring often, for 30-40 minutes until onions are deeply caramelized and golden brown.\nStep 4: Sprinkle flour over onions and stir to coat. Cook 2 minutes.\nStep 5: Add white wine and stir to deglaze, scraping up any browned bits.\nStep 6: Add beef broth, chicken broth, Worcestershire sauce, bay leaf, and thyme. Bring to a boil then reduce heat and simmer 20 minutes.\nStep 7: Remove bay leaf. Season with salt and pepper.\nStep 8: Ladle soup into oven-safe bowls. Top each with 2 slices of toasted baguette.\nStep 9: Cover generously with shredded Gruyere cheese.\nStep 10: Broil until cheese is melted, bubbly, and lightly browned, about 3-4 minutes. Serve immediately.", "ingredients": [{"name": "yellow onion", "quantity": "4", "unit": "whole", "modifiers": "large, thinly sliced", "package_qty": "", "package_unit": ""}, {"name": "butter", "quantity": "4", "unit": "tbsp", "modifiers": "unsalted", "package_qty": "", "package_unit": ""}, {"name": "olive oil", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "sugar", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "all-purpose flour", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "white wine", "quantity": "1/2", "unit": "cup", "modifiers": "dry", "package_qty": "", "package_unit": ""}, {"name": "beef broth", "quantity": "4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "chicken broth", "quantity": "2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "Worcestershire sauce", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "bay leaf", "quantity": "1", "unit": "leaf", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "thyme", "quantity": "1/2", "unit": "tsp", "modifiers": "dried", "package_qty": "", "package_unit": ""}, {"name": "baguette", "quantity": "8", "unit": "slice", "modifiers": "toasted", "package_qty": "", "package_unit": ""}, {"name": "Gruyere cheese", "quantity": "2", "unit": "cup", "modifiers": "shredded", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-25 17:01:01.661039
status: success
provider: claude
filename: New_England_Clam_Chowder.pdf
recipe_title: New England Clam Chowder
unmatched_items: []
modifier_results: [{"ingredient": "Clam", "ingredient_id": 296, "modifiers": ["juice reserved"]}]
unit_warnings: ["\"clove\" for garlic"]
resolution_tiers: {"exact": 13, "plural": 2}
raw_ai_response:
  {"title": "New England Clam Chowder", "description": "A creamy, hearty clam chowder with bacon, potatoes, and tender clams in a rich milk and cream base.", "servings": 6, "prep_time": 20, "cook_time": 30, "cuisine": "American", "instructions": "Step 1: Cook bacon in a large pot over medium heat until crispy. Remove bacon and set aside, leaving drippings in pot.\nStep 2: Add onion and celery to pot. Cook until softened, about 5 minutes.\nStep 3: Add garlic and cook 1 minute.\nStep 4: Sprinkle flour over vegetables and stir to coat. Cook 2 minutes.\nStep 5: Add chicken broth and reserved clam juice. Stir until smooth.\nStep 6: Add potatoes and thyme. Bring to a boil then reduce heat and simmer 15 minutes until potatoes are tender.\nStep 7: Stir in milk, heavy cream, and butter. Heat gently \u2014 do not boil.\nStep 8: Add clams and season with salt and white pepper.\nStep 9: Simmer 5 minutes. Garnish with bacon and fresh parsley.\nStep 10: Serve with oyster crackers.", "ingredients": [{"name": "bacon", "quantity": "4", "unit": "slice", "modifiers": "diced", "package_qty": "", "package_unit": ""}, {"name": "onion", "quantity": "1", "unit": "whole", "modifiers": "large, diced", "package_qty": "", "package_unit": ""}, {"name": "celery", "quantity": "3", "unit": "stalk", "modifiers": "diced", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "3", "unit": "clove", "modifiers": "minced", "package_qty": "", "package_unit": ""}, {"name": "all-purpose flour", "quantity": "3", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "chicken broth", "quantity": "2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "clams", "quantity": "2", "unit": "can", "modifiers": "drained, juice reserved", "package_qty": "6.5", "package_unit": "oz"}, {"name": "potatoes", "quantity": "3", "unit": "whole", "modifiers": "medium, peeled, diced", "package_qty": "", "package_unit": ""}, {"name": "whole milk", "quantity": "2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "heavy cream", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "butter", "quantity": "2", "unit": "tbsp", "modifiers": "unsalted", "package_qty": "", "package_unit": ""}, {"name": "thyme", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "white pepper", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "parsley", "quantity": "2", "unit": "tbsp", "modifiers": "fresh, chopped", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-25 17:01:36.503383
status: success
provider: claude
filename: Shrimp_Scampi.pdf
recipe_title: Shrimp Scampi
unmatched_items: []
modifier_results: []
unit_warnings: ["\"clove\" for garlic"]
resolution_tiers: {"exact": 10, "alias": 1}
raw_ai_response:
  {"title": "Shrimp Scampi", "description": "Classic Italian shrimp scampi with garlic, white wine, and lemon juice served over linguine pasta.", "servings": 4, "prep_time": 10, "cook_time": 15, "cuisine": "Italian", "instructions": "Step 1: Cook linguine according to package directions. Reserve 1/2 cup pasta water before draining.\nStep 2: Pat shrimp dry with paper towels. Season with salt and pepper.\nStep 3: Heat olive oil and 2 tablespoons butter in a large skillet over medium-high heat.\nStep 4: Add shrimp in a single layer and cook 1-2 minutes per side until pink. Remove from pan.\nStep 5: Add remaining butter to pan. Add garlic and red pepper flakes. Cook 1 minute until fragrant.\nStep 6: Add white wine and lemon juice. Simmer 2 minutes.\nStep 7: Return shrimp to pan. Add drained pasta and toss to combine. Add pasta water as needed.\nStep 8: Remove from heat. Stir in fresh parsley.\nStep 9: Serve immediately garnished with extra parsley and lemon wedges.", "ingredients": [{"name": "shrimp", "quantity": "1", "unit": "lb", "modifiers": "large, peeled, deveined", "package_qty": "", "package_unit": ""}, {"name": "butter", "quantity": "4", "unit": "tbsp", "modifiers": "unsalted", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "4", "unit": "clove", "modifiers": "minced", "package_qty": "", "package_unit": ""}, {"name": "white wine", "quantity": "1/2", "unit": "cup", "modifiers": "dry", "package_qty": "", "package_unit": ""}, {"name": "lemon juice", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "red pepper flakes", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "parsley", "quantity": "1/4", "unit": "cup", "modifiers": "fresh, chopped", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "linguine pasta", "quantity": "8", "unit": "oz", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "olive oil", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-25 17:06:21.666514
status: success
provider: claude
filename: Beef_Tacos.pdf
recipe_title: Beef Tacos
unmatched_items: []
modifier_results: []
unit_warnings: []
resolution_tiers: {"exact": 10, "plural": 1}
raw_ai_response:
  {"title": "Beef Tacos", "description": "Classic Mexican beef tacos with seasoned ground beef, fresh toppings, and zesty lime wedges. Quick and easy weeknight dinner ready in about 15 minutes.", "servings": 4, "prep_time": 10, "cook_time": 5, "cuisine": "Mexican", "instructions": "Step 1: Brown ground beef in a skillet over medium-high heat. Drain excess fat.\nStep 2: Add taco seasoning and water. Stir to combine.\nStep 3: Simmer for 5 minutes until liquid is absorbed and beef is well seasoned.\nStep 4: Warm taco shells according to package directions.\nStep 5: Fill each shell with seasoned beef.\nStep 6: Top with shredded cheese, lettuce, diced tomatoes, and onion.\nStep 7: Add a dollop of sour cream and salsa.\nStep 8: Serve with lime wedges.", "ingredients": [{"name": "ground beef", "quantity": "1", "unit": "lb", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "taco seasoning", "quantity": "1", "unit": "package", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "water", "quantity": "2/3", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "taco shells", "quantity": "8", "unit": "whole", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cheddar cheese", "quantity": "1", "unit": "cup", "modifiers": "shredded", "package_qty": "", "package_unit": ""}, {"name": "lettuce", "quantity": "1", "unit": "cup", "modifiers": "shredded", "package_qty": "", "package_unit": ""}, {"name": "tomatoes", "quantity": "2", "unit": "whole", "modifiers": "diced", "package_qty": "", "package_unit": ""}, {"name": "sour cream", "quantity": "1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salsa", "quantity": "1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "onion", "quantity": "1/4", "unit": "cup", "modifiers": "diced", "package_qty": "", "package_unit": ""}, {"name": "lime", "quantity": "1", "unit": "whole", "modifiers": "cut into wedges", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-25 18:07:34.161654
status: partial
provider: claude
filename: Vegetable__Rotini_Twist.pdf
recipe_title: Vegetable & Rotini Twist
unmatched_items: ["vegetables", "bouillon granules", "rotini"]
modifier_results: []
unit_warnings: []
resolution_tiers: {"exact": 5, "failed": 3}
raw_ai_response:
  {"title": "Vegetable & Rotini Twist", "description": "A light and flavorful pasta dish with fresh vegetables, rotini pasta, and savory bouillon, finished with optional Parmesan cheese.", "servings": 6, "prep_time": 15, "cook_time": 10, "cuisine": "Italian", "culinary_type": "Main Course", "instructions": "Step 1: In large skillet, cook onion, garlic and Italian seasoning in olive oil until tender.\nStep 2: Add vegetables, water and bouillon. Cover and simmer 5 to 7 minutes or until vegetables are tender-crisp.\nStep 3: Toss vegetables with Savory Pasta.\nStep 4: Serve immediately, with Parmesan cheese if desired.", "ingredients": [{"name": "onion", "quantity": "1/4", "unit": "cup", "modifiers": "chopped", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "1", "unit": "tsp", "modifiers": "minced", "package_qty": "", "package_unit": ""}, {"name": "Italian seasoning", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "olive oil", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "vegetables", "quantity": "8", "unit": "cup", "modifiers": "assorted fresh, cut-up", "package_qty": "", "package_unit": ""}, {"name": "water", "quantity": "1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "bouillon granules", "quantity": "1", "unit": "tbsp", "modifiers": "Wyler's Beef-Flavor", "package_qty": "", "package_unit": ""}, {"name": "rotini", "quantity": "1", "unit": "package", "modifiers": "savory pasta, prepared", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-25 19:09:47.510332
status: success
provider: claude
filename: Vegetable__Rotini_Twist.pdf
recipe_title: Vegetable & Rotini Twist
unmatched_items: []
unit_warnings: []
resolution_tiers: {"exact": 6, "alias": 2}
raw_ai_response:
  {"title": "Vegetable & Rotini Twist", "description": "A light and flavorful pasta dish featuring rotini tossed with fresh vegetables, garlic, and Italian seasonings. Quick to prepare and served with optional Parmesan cheese.", "servings": 6, "prep_time": 10, "cook_time": 10, "cuisine": "Italian", "tags": ["Quick", "Under 30 Minutes", "Weeknight", "Family Friendly", "Stovetop", "Low Calorie"], "culinary_type": "Main Course", "instructions": "Step 1: In large skillet, cook onion, garlic and Italian seasoning in olive oil until tender.\nStep 2: Add vegetables, water and bouillon. Cover and simmer 5 to 7 minutes or until vegetables are tender-crisp.\nStep 3: Toss vegetables with Savory Pasta.\nStep 4: Serve immediately, with Parmesan cheese if desired.", "ingredients": [{"name": "onion", "quantity": "1/4", "unit": "cup", "modifiers": "chopped", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "1", "unit": "tsp", "modifiers": "minced", "package_qty": "", "package_unit": ""}, {"name": "Italian seasoning", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "olive oil", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "vegetables", "quantity": "8", "unit": "cup", "modifiers": "assorted fresh, cut-up", "package_qty": "", "package_unit": ""}, {"name": "water", "quantity": "1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "bouillon granules", "quantity": "1", "unit": "tbsp", "modifiers": "Wyler's Beef-Flavor", "package_qty": "", "package_unit": ""}, {"name": "rotini", "quantity": "1", "unit": "package", "modifiers": "savory pasta, prepared", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Mixed Vegetables", "ingredient_id": 769, "modifiers": ["cut-up"]}, {"ingredient": "Bouillon Granules", "ingredient_id": 770, "modifiers": ["Wyler's Beef-Flavor"]}, {"ingredient": "Pasta Shapes", "ingredient_id": 683, "modifiers": ["savory pasta", "prepared"]}]


created_at: 2026-03-25 22:07:35.270320
status: success
provider: claude
filename: Char_Sui_Chinese_BBQ_Pork.pdf
recipe_title: Hong Kong Style Char Sui (Chinese BBQ Pork)
unmatched_items: []
unit_warnings: ["\"clove\" for garlic"]
resolution_tiers: {"compound": 1, "exact": 16, "alias": 1}
raw_ai_response:
  {"title": "Hong Kong Style Char Sui (Chinese BBQ Pork)", "description": "Authentic Hong Kong-style Chinese BBQ pork with a sweet and savory marinade, roasted to perfection with a caramelized honey glaze. Can be made with traditional pork shoulder or lean pork tenderloin.", "servings": 6, "prep_time": 20, "cook_time": 45, "cuisine": "Chinese", "tags": ["Make Ahead", "Weekend Project", "Baked", "High Protein", "Savory", "Sweet"], "culinary_type": "Main Course", "instructions": "Step 1: Cut the pork into long strips about 2 inches thick. Pork Shoulder offers a balance of meat and fat for juiciness, resulting in a more authentic Hong Kong-style Char Siu. Pork Tenderloin is a leaner option that cooks faster; adjust cooking times accordingly. Pat the pork dry with paper towels to help the marinade adhere better.\n\nStep 2: Make the marinade. For Option 1 (From Scratch): In a large bowl, combine all ingredients listed under \"Marinade Option 1.\" Mix thoroughly until well combined. For Option 2 (Using Store-Bought Char Siu Sauce): In a large bowl, combine the store-bought Char Siu sauce, honey, Shaoxing wine, and red food coloring (if using). Stir well to ensure all ingredients are fully integrated.\n\nStep 3: Add the pork strips to your chosen marinade, ensuring each piece is fully coated. Cover the bowl with plastic wrap and refrigerate for at least 4 hours, preferably overnight, to allow the flavors to penetrate deeply.\n\nStep 4: Preheat your oven to 400\u00b0F (200\u00b0C). Line a baking tray with aluminum foil for easy cleanup and place a wire rack on top. This setup allows for even heat circulation and prevents the pork from sitting in its juices.\n\nStep 5: Remove the pork from the marinade, letting excess marinade drip off. Reserve the leftover marinade for basting. Place the pork strips on the wire rack, spacing them evenly. Roast for 20 minutes for Pork Shoulder or 15 minutes for Pork Tenderloin.\n\nStep 6: After the initial roasting time, remove the pork from the oven. Baste generously with the reserved marinade on all sides. Flip the pork pieces over. Return to the oven and roast for an additional 15 minutes for Pork Shoulder or 10 minutes for Pork Tenderloin.\n\nStep 7: In a small bowl, mix 2 tablespoons of honey with 1 tablespoon of hot water until the honey is diluted and easy to brush.\n\nStep 8: Remove the pork from the oven. Brush the honey glaze generously over each piece. Return the pork to the oven and roast for an additional 5 minutes for Pork Shoulder or 3-5 minutes for Pork Tenderloin. For a caramelized and slightly charred finish, you can broil the pork on high for the last 2 minutes, watching carefully to prevent burning.\n\nStep 9: Use a meat thermometer to ensure proper internal temperature. Pork Shoulder should reach 160\u00b0F (71\u00b0C). Pork Tenderloin should reach 145\u00b0F (63\u00b0C). This ensures the meat is safe to eat while remaining juicy and tender.\n\nStep 10: Remove the pork from the oven and let it rest for 10 minutes to retain its juices. Slice the pork into thin, bite-sized pieces. Serve hot with your choice of accompaniments.", "ingredients": [{"name": "pork shoulder", "quantity": "2", "unit": "lb", "modifiers": "cut into long strips about 2 inches thick", "package_qty": "", "package_unit": ""}, {"name": "hoisin sauce", "quantity": "3", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "honey", "quantity": "3", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "soy sauce", "quantity": "3", "unit": "tbsp", "modifiers": "light", "package_qty": "", "package_unit": ""}, {"name": "oyster sauce", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "five-spice powder", "quantity": "1", "unit": "tbsp", "modifiers": "Chinese", "package_qty": "", "package_unit": ""}, {"name": "Shaoxing wine", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "sesame oil", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "3", "unit": "clove", "modifiers": "minced", "package_qty": "", "package_unit": ""}, {"name": "brown sugar", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "white pepper", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "food coloring", "quantity": "1", "unit": "dash", "modifiers": "red, optional", "package_qty": "", "package_unit": ""}, {"name": "Char Siu sauce", "quantity": "1", "unit": "cup", "modifiers": "store-bought", "package_qty": "", "package_unit": ""}, {"name": "honey", "quantity": "1", "unit": "tbsp", "modifiers": "optional", "package_qty": "", "package_unit": ""}, {"name": "Shaoxing wine", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "food coloring", "quantity": "1", "unit": "dash", "modifiers": "red, optional", "package_qty": "", "package_unit": ""}, {"name": "honey", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "water", "quantity": "1", "unit": "tbsp", "modifiers": "hot", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Pork", "ingredient_id": 617, "modifiers": ["shoulder", "cut into long strips about 2 inches thick"]}, {"ingredient": "Five Spice Powder", "ingredient_id": 149, "modifiers": ["Chinese"]}, {"ingredient": "Char Siu Sauce", "ingredient_id": 752, "modifiers": ["store-bought"]}]


created_at: 2026-03-26 14:04:09.480159
status: success
provider: claude
filename: Fajita_Beef_Stir-Fry.pdf
recipe_title: Asian-Inspired Fajita Beef Stir-Fry
unmatched_items: []
unit_warnings: ["\"clove\" for garlic"]
resolution_tiers: {"alias": 1, "exact": 12}
raw_ai_response:
  {"title": "Asian-Inspired Fajita Beef Stir-Fry", "description": "A quick and flavorful fusion dish combining seasoned fajita beef with Asian stir-fry sauces, aromatics, and vegetables. Served over rice or noodles for a complete meal.", "servings": 4, "prep_time": 10, "cook_time": 10, "cuisine": "Asian", "tags": ["Quick", "Under 30 Minutes", "Stovetop", "Weeknight", "High Protein", "One Pan"], "culinary_type": "Main Course", "instructions": "Step 1: Prepare the Sauce: In a small bowl, mix the soy sauce, oyster sauce, hoisin sauce, rice cooking wine, and sesame oil. Set aside.\nStep 2: Cook the Beef: Heat a wok or large skillet over high heat. Add a bit of vegetable oil, then add the seasoned fajita beef. Stir-fry for 2-3 minutes until the beef is cooked through. Remove the beef from the wok and set aside.\nStep 3: Cook the Aromatics: Add a bit more vegetable oil if needed, then stir-fry the minced garlic, minced ginger, and sliced onion for 2-3 minutes until fragrant and the onion is slightly softened.\nStep 4: Combine Everything: Return the beef to the wok, add the sauce, and toss everything together. If the sauce needs thickening, add the cornstarch slurry and cook until the sauce coats the beef and onions evenly.\nStep 5: Serve: Serve hot over rice or noodles.", "ingredients": [{"name": "fajita beef", "quantity": "1", "unit": "lb", "modifiers": "seasoned, sliced thinly", "package_qty": "", "package_unit": ""}, {"name": "soy sauce", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "oyster sauce", "quantity": "1", "unit": "tbsp", "modifiers": "optional, for extra umami", "package_qty": "", "package_unit": ""}, {"name": "hoisin sauce", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "rice cooking wine", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "sesame oil", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "2", "unit": "clove", "modifiers": "minced", "package_qty": "", "package_unit": ""}, {"name": "ginger", "quantity": "1", "unit": "tbsp", "modifiers": "minced, from a jar", "package_qty": "", "package_unit": ""}, {"name": "onion", "quantity": "1/2", "unit": "whole", "modifiers": "sliced", "package_qty": "", "package_unit": ""}, {"name": "vegetable oil", "quantity": "1", "unit": "tbsp", "modifiers": "for stir-frying", "package_qty": "", "package_unit": ""}, {"name": "cornstarch", "quantity": "2", "unit": "tsp", "modifiers": "mixed with water, for thickening", "package_qty": "", "package_unit": ""}, {"name": "water", "quantity": "3", "unit": "tbsp", "modifiers": "for thickening", "package_qty": "", "package_unit": ""}, {"name": "rice", "quantity": "1", "unit": "cup", "modifiers": "cooked, for serving", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Beef", "ingredient_id": 580, "modifiers": ["seasoned"]}, {"ingredient": "Ginger", "ingredient_id": 528, "modifiers": ["from a jar"]}, {"ingredient": "Cornstarch", "ingredient_id": 442, "modifiers": ["mixed with water"]}]


created_at: 2026-03-26 15:34:33.683336
status: success
provider: claude
filename: Bloomin_Onion_Outback.pdf
recipe_title: Outback Bloomin' Onion
unmatched_items: []
unit_warnings: []
resolution_tiers: {"exact": 16, "alias": 1}
raw_ai_response:
  {"title": "Outback Bloomin' Onion", "description": "A copycat recipe for the iconic Outback Steakhouse Bloomin' Onion - a deep-fried blooming onion with seasoned coating served with creamy chili sauce.", "servings": 4, "prep_time": 20, "cook_time": 5, "cuisine": "American", "tags": ["Copycat", "Fried", "Appetizer", "Comfort Food", "Game Day", "Crispy"], "culinary_type": "Appetizer", "instructions": "Step 1: Combine cornstarch, flour and seasonings until well blended in a bowl.\nStep 2: Add beer and mix well.\nStep 3: Cut about 3/4 inch off top of onion and peel.\nStep 4: Cut into onion 12 to 16 vertical wedges but do not cut through bottom root end.\nStep 5: Remove about 1 inch of petals from center of onion.\nStep 6: Dip onion in seasoned flour and remove excess by shaking.\nStep 7: Separate petals to coat thoroughly with batter.\nStep 8: Gently place in fryer basket and deep-fry at 375 to 400 degrees for 1-1/2 minutes.\nStep 9: Turn over and fry 1-1/2 minutes longer or until golden brown.\nStep 10: Drain on paper towels.\nStep 11: Place onion upright in shallow bowl and remove center core with circular cutter or apple corer.\nStep 12: Serve hot with Creamy Chili Sauce.", "ingredients": [{"name": "cornstarch", "quantity": "1/3", "unit": "cup", "modifiers": "more if needed", "package_qty": "", "package_unit": ""}, {"name": "flour", "quantity": "1 1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "2", "unit": "tsp", "modifiers": "minced", "package_qty": "", "package_unit": ""}, {"name": "paprika", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "beer", "quantity": "24", "unit": "oz", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "vidalia onion", "quantity": "4", "unit": "whole", "modifiers": "4 to 6 inch diameter", "package_qty": "", "package_unit": ""}, {"name": "flour", "quantity": "2", "unit": "cup", "modifiers": "as needed", "package_qty": "", "package_unit": ""}, {"name": "paprika", "quantity": "4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "garlic powder", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cayenne", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "mayonnaise", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "sour cream", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "chili sauce", "quantity": "1/2", "unit": "cup", "modifiers": "tomato", "package_qty": "", "package_unit": ""}, {"name": "cayenne", "quantity": "1/2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Cornstarch", "ingredient_id": 442, "modifiers": ["more if needed"]}, {"ingredient": "Onion", "ingredient_id": 472, "modifiers": ["4 to 6 inch diameter"]}, {"ingredient": "Chili Sauce", "ingredient_id": 751, "modifiers": ["tomato"]}]


created_at: 2026-03-27 23:00:21.129279
status: success
provider: claude
filename: Bagel_Casserole.pdf
recipe_title: Bagel Breakfast Bake
unmatched_items: []
modifier_results: [{"ingredient": "Monterey Jack", "ingredient_id": 202, "modifiers": ["cheese"]}]
unit_warnings: []
resolution_tiers: {"plural": 2, "exact": 5, "compound": 1}
raw_ai_response:
  {"title": "Bagel Breakfast Bake", "description": "A bacon-egg-and-bagel casserole that's perfect for Sunday morning. This make-ahead dish combines toasted bagels, eggs, cheese, bacon, and green onions in a savory bake.", "servings": 6, "prep_time": 10, "cook_time": 75, "cuisine": "American", "tags": ["Make Ahead", "Breakfast / Brunch", "Comfort Food", "Family Friendly", "Baked"], "culinary_type": "Breakfast / Brunch", "instructions": "Step 1: Arrange bagels in 2- to 2\u00bd-quart baking dish.\nStep 2: In large bowl with wire whisk, beat eggs, milk, Monterey Jack, bacon, green onions, salt, and pepper. Pour over bagels, pressing down slightly to submerge. Cover and refrigerate for 1 hour or up to overnight.\nStep 3: Preheat oven to 350\u00b0F. Uncover dish and bake for 45 to 55 minutes or until center is set.\nStep 4: Cool for 15 minutes before serving.", "ingredients": [{"name": "bagels", "quantity": "4", "unit": "whole", "modifiers": "toasted, chopped", "package_qty": "", "package_unit": ""}, {"name": "eggs", "quantity": "6", "unit": "whole", "modifiers": "large", "package_qty": "", "package_unit": ""}, {"name": "whole milk", "quantity": "2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "Monterey Jack cheese", "quantity": "4", "unit": "oz", "modifiers": "shredded", "package_qty": "", "package_unit": ""}, {"name": "bacon", "quantity": "4", "unit": "slice", "modifiers": "cooked, finely chopped", "package_qty": "", "package_unit": ""}, {"name": "green onions", "quantity": "4", "unit": "whole", "modifiers": "sliced", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1/4", "unit": "tsp", "modifiers": "ground", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-27 23:01:27.731961
status: partial
provider: claude
filename: Bunny_banana_pancakes.pdf
recipe_title: Bunny Banana Pancakes
unmatched_items: ["whipped cream"]
unit_warnings: []
resolution_tiers: {"plural": 1, "exact": 3, "compound": 3, "failed": 1}
raw_ai_response:
  {"title": "Bunny Banana Pancakes", "description": "Adorable bunny-shaped pancakes made with just three ingredients: ripe bananas, eggs, and flour. Perfect for a fun breakfast that will have people hopping out of bed.", "servings": 4, "prep_time": 15, "cook_time": 15, "cuisine": "American", "tags": ["Breakfast / Brunch", "Kid Friendly", "Family Friendly", "Few Ingredients", "Stovetop", "Sweet"], "culinary_type": "Breakfast / Brunch", "instructions": "Step 1: Place large cookie sheet in oven and preheat to 225\u00b0F.\nStep 2: In blender, puree bananas until smooth. Add eggs; pulse until combined. Pulse in flour until just combined.\nStep 3: Lightly grease griddle or 12-inch nonstick skillet; heat over medium heat for 1 minute or until hot.\nStep 4: To make the bunny shapes, drop \u00bc cup batter for body, 2 tablespoons batter for head, 1 tablespoon batter in oval shape for each foot, and 1 tablespoon batter in elongated shape for each ear onto hot griddle. Cook for 2 to 3 minutes or until bubbles start to form and edges look dry. With spatula, turn pancakes, and cook for 1 to 2 minutes longer or until puffy and underside is golden brown. Transfer pancakes to cookie sheet and keep warm.\nStep 5: Repeat with remaining batter, greasing griddle again if necessary. Arrange pancakes into bunny shapes on plates. Garnish with whipped cream and coconut for tail and banana slices and chocolate chips for feet, if using. Serve with maple syrup, if using.", "ingredients": [{"name": "bananas", "quantity": "2", "unit": "whole", "modifiers": "very ripe, large", "package_qty": "", "package_unit": ""}, {"name": "eggs", "quantity": "3", "unit": "whole", "modifiers": "large", "package_qty": "", "package_unit": ""}, {"name": "self-rising flour", "quantity": "3/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "whipped cream", "quantity": "1", "unit": "pinch", "modifiers": "optional", "package_qty": "", "package_unit": ""}, {"name": "flaked coconut", "quantity": "1", "unit": "pinch", "modifiers": "sweetened, optional", "package_qty": "", "package_unit": ""}, {"name": "banana", "quantity": "1", "unit": "whole", "modifiers": "sliced, optional", "package_qty": "", "package_unit": ""}, {"name": "mini chocolate chips", "quantity": "1", "unit": "pinch", "modifiers": "optional", "package_qty": "", "package_unit": ""}, {"name": "maple syrup", "quantity": "1", "unit": "pinch", "modifiers": "optional", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Flour", "ingredient_id": 40, "modifiers": ["self-rising"]}, {"ingredient": "Coconut", "ingredient_id": 338, "modifiers": ["flaked"]}]


created_at: 2026-03-27 23:02:22.552349
status: success
provider: claude
filename: Classic_cheese_omelette.pdf
recipe_title: Classic Cheese Omelet
unmatched_items: []
modifier_results: [{"ingredient": "Bread", "ingredient_id": 3, "modifiers": ["toasted country-style"]}]
unit_warnings: []
resolution_tiers: {"exact": 7, "plural": 1}
raw_ai_response:
  {"title": "Classic Cheese Omelet", "description": "A simple cheese omelet that cooks quickly. Be sure to have your seasonings and cheese nearby so you don't accidentally overcook your omelet.", "servings": 4, "prep_time": 5, "cook_time": 15, "cuisine": "American", "tags": ["Quick", "Under 30 Minutes", "Stovetop", "Breakfast / Brunch", "Few Ingredients", "Family Friendly"], "culinary_type": "Breakfast / Brunch", "instructions": "Step 1: Preheat oven to 200\u00b0F. Place 4 dinner plates in oven to warm. In medium bowl, place eggs, water, salt, and pepper. With fork, beat mixture with 25 to 30 quick strokes to blend without making it fluffy. (Overbeating toughens the proteins in the egg whites.)\n\nStep 2: In an 8-inch nonstick skillet, melt 1\u00bd teaspoons butter over medium heat until hot. When butter stops sizzling, pour or ladle \u00bd cup egg mixture into skillet.\n\nStep 3: After egg mixture begins to set around edges (about 25 to 30 seconds), carefully push cooked egg from side of skillet toward center with heat-safe spatula so uncooked egg can reach bottom of hot skillet. Repeat 8 to 10 times around skillet, tilting as necessary, for 1 to 1\u00bd minutes.\n\nStep 4: Cook until omelet is almost set but still creamy and moist on top. Place skillet handle facing you, and sprinkle \u00bc cup cheese on half of omelet.\n\nStep 5: With spatula, fold uncovered half over filling.\n\nStep 6: Shake pan gently to loosen any egg or filling from edge, then slide omelet to edge of skillet. Holding skillet above warm plate, tip skillet so omelet slides onto plate. Keep warm in oven. Repeat with remaining butter, egg mixture, and cheese to make 4 omelets total. Sprinkle with green onions and serve with toast, if using.", "ingredients": [{"name": "eggs", "quantity": "8", "unit": "whole", "modifiers": "large", "package_qty": "", "package_unit": ""}, {"name": "water", "quantity": "1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1/2", "unit": "tsp", "modifiers": "coarsely ground", "package_qty": "", "package_unit": ""}, {"name": "butter", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cheddar cheese", "quantity": "4", "unit": "oz", "modifiers": "shredded", "package_qty": "", "package_unit": ""}, {"name": "green onions", "quantity": "1", "unit": "pinch", "modifiers": "chopped, for garnish", "package_qty": "", "package_unit": ""}, {"name": "bread", "quantity": "1", "unit": "pinch", "modifiers": "toasted country-style, optional", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-27 23:04:39.250557
status: partial
provider: claude
filename: Spiced_banana_chocolate_muffins.pdf
recipe_title: Spiced Banana-Chocolate Muffins
unmatched_items: ["bittersweet chocolate"]
unit_warnings: []
resolution_tiers: {"compound": 2, "exact": 9, "plural": 1, "failed": 1}
raw_ai_response:
  {"title": "Spiced Banana-Chocolate Muffins", "description": "Delicious breakfast muffins combining mashed bananas, chocolate, and warm spices like cinnamon and ginger, topped with a chocolate drizzle.", "servings": 18, "prep_time": 15, "cook_time": 25, "cuisine": "American", "tags": ["Breakfast / Brunch", "Baked", "Family Friendly", "Comfort Food", "Under 1 Hour", "Sweet"], "culinary_type": "Breakfast / Brunch", "instructions": "Step 1: Preheat oven to 400\u00b0F. Line 18 muffin-pan cups with paper liners.\n\nStep 2: In large bowl with wire whisk, mix oats, flour, sugar, baking powder, baking soda, salt, cinnamon, and ginger. In medium bowl, whisk bananas, buttermilk, oil, and egg until blended. With rubber spatula, fold banana mixture into flour mixture until just combined. Divide batter among prepared muffin cups.\n\nStep 3: Bake for 20 to 25 minutes or until toothpick inserted in centers of muffins comes out clean. Cool in pans on wire racks for 10 minutes. Remove muffins from pans; cool completely on wire racks.\n\nStep 4: Drizzle tops with chocolate.", "ingredients": [{"name": "old-fashioned oats", "quantity": "2", "unit": "cup", "modifiers": "uncooked", "package_qty": "", "package_unit": ""}, {"name": "white whole wheat flour", "quantity": "1 3/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "brown sugar", "quantity": "1/2", "unit": "cup", "modifiers": "packed", "package_qty": "", "package_unit": ""}, {"name": "baking powder", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "baking soda", "quantity": "3/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cinnamon", "quantity": "1/2", "unit": "tsp", "modifiers": "ground", "package_qty": "", "package_unit": ""}, {"name": "ginger", "quantity": "1/4", "unit": "tsp", "modifiers": "ground", "package_qty": "", "package_unit": ""}, {"name": "banana", "quantity": "1 3/4", "unit": "cup", "modifiers": "mashed", "package_qty": "", "package_unit": ""}, {"name": "buttermilk", "quantity": "1", "unit": "cup", "modifiers": "low-fat", "package_qty": "", "package_unit": ""}, {"name": "vegetable oil", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "egg", "quantity": "1", "unit": "whole", "modifiers": "beaten", "package_qty": "", "package_unit": ""}, {"name": "bittersweet chocolate", "quantity": "2", "unit": "oz", "modifiers": "melted", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Oats", "ingredient_id": 556, "modifiers": ["old-fashioned"]}, {"ingredient": "Brown Sugar", "ingredient_id": 53, "modifiers": ["packed"]}, {"ingredient": "Banana", "ingredient_id": 331, "modifiers": ["mashed"]}]


created_at: 2026-03-27 23:10:45.799168
status: partial
provider: claude
filename: Apple_donuts.pdf
recipe_title: Apple Doughnuts
unmatched_items: ["dried lavender", "granola", "chocolate-hazelnut spread", "marshmallows"]
unit_warnings: []
resolution_tiers: {"exact": 14, "compound": 3, "plural": 3, "failed": 4}
raw_ai_response:
  {"title": "Apple Doughnuts", "description": "Fresh apple slices cored and cut into horizontal rings, topped with creative combinations of nut butter or cream cheese frosting and fruit, coconut, marshmallows, nuts, or seeds.", "servings": 1, "prep_time": 10, "cook_time": 0, "cuisine": "American", "tags": ["No Cook", "Quick", "Kid Friendly", "Family Friendly", "Snack", "Sweet"], "culinary_type": "Snack", "instructions": "Step 1: Core the apple and slice it into horizontal rings to create doughnut shapes.\nStep 2: Choose your frosting (nut butter or cream cheese) and spread it on the apple rings.\nStep 3: Add your choice of sprinkles such as fruit, coconut, marshmallows, nuts, or seeds.\nStep 4: Enjoy immediately or refrigerate until ready to serve.", "ingredients": [{"name": "apple", "quantity": "1", "unit": "whole", "modifiers": "cored, sliced into rings", "package_qty": "", "package_unit": ""}, {"name": "greek yogurt", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "lemon zest", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "honey", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "poppy seeds", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "apple", "quantity": "1", "unit": "whole", "modifiers": "cored, sliced into rings", "package_qty": "", "package_unit": ""}, {"name": "blueberry cream cheese", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "blueberries", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "apple", "quantity": "1", "unit": "whole", "modifiers": "cored, sliced into rings", "package_qty": "", "package_unit": ""}, {"name": "cream cheese", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "pistachios", "quantity": "1", "unit": "tbsp", "modifiers": "chopped", "package_qty": "", "package_unit": ""}, {"name": "dried lavender", "quantity": "1", "unit": "pinch", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "apple", "quantity": "1", "unit": "whole", "modifiers": "cored, sliced into rings", "package_qty": "", "package_unit": ""}, {"name": "strawberry cream cheese", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "granola", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "strawberries", "quantity": "1", "unit": "tbsp", "modifiers": "sliced", "package_qty": "", "package_unit": ""}, {"name": "apple", "quantity": "1", "unit": "whole", "modifiers": "cored, sliced into rings", "package_qty": "", "package_unit": ""}, {"name": "chocolate-hazelnut spread", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "coconut", "quantity": "1", "unit": "tbsp", "modifiers": "shredded", "package_qty": "", "package_unit": ""}, {"name": "marshmallows", "quantity": "1", "unit": "tbsp", "modifiers": "mini", "package_qty": "", "package_unit": ""}, {"name": "apple", "quantity": "1", "unit": "whole", "modifiers": "cored, sliced into rings", "package_qty": "", "package_unit": ""}, {"name": "peanut butter", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "banana", "quantity": "1", "unit": "tbsp", "modifiers": "sliced", "package_qty": "", "package_unit": ""}, {"name": "chocolate chips", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Apple", "ingredient_id": 328, "modifiers": ["sliced into rings"]}, {"ingredient": "Apple", "ingredient_id": 328, "modifiers": ["sliced into rings"]}, {"ingredient": "Cream Cheese", "ingredient_id": 190, "modifiers": ["blueberry"]}, {"ingredient": "Apple", "ingredient_id": 328, "modifiers": ["sliced into rings"]}, {"ingredient": "Apple", "ingredient_id": 328, "modifiers": ["sliced into rings"]}, {"ingredient": "Cream Cheese", "ingredient_id": 190, "modifiers": ["strawberry"]}, {"ingredient": "Apple", "ingredient_id": 328, "modifiers": ["sliced into rings"]}, {"ingredient": "Apple", "ingredient_id": 328, "modifiers": ["sliced into rings"]}]


created_at: 2026-03-27 23:11:47.985697
status: success
provider: claude
filename: Best-ever_hot_cocoa.pdf
recipe_title: Best-Ever Hot Cocoa
unmatched_items: []
modifier_results: [{"ingredient": "Chocolate Chips", "ingredient_id": 140, "modifiers": ["semisweet"]}]
unit_warnings: []
resolution_tiers: {"fuzzy": 2, "exact": 3}
raw_ai_response:
  {"title": "Best-Ever Hot Cocoa", "description": "The ultimate homemade hot chocolate mix made with cocoa, sugar, chocolate, and salt. Store at room temperature and prepare individual servings in the microwave with milk.", "servings": 3, "prep_time": 10, "cook_time": 2, "cuisine": "American", "tags": ["Quick", "Under 30 Minutes", "Comfort Food", "Kid Friendly", "Make Ahead", "Few Ingredients"], "culinary_type": "Beverage", "instructions": "Step 1: In food processor with knife blade attached, process cocoa, sugar, chocolate, and salt until almost smooth. Store in tightly sealed container at room temperature for up to 6 months.\nStep 2: For each serving, combine 3 tablespoons cocoa mix and 1 cup milk in a microwave-safe mug. Microwave on High for 1\u00bd to 2 minutes or until blended and hot, stirring once.", "ingredients": [{"name": "cocoa", "quantity": "1 1/2", "unit": "cup", "modifiers": "unsweetened", "package_qty": "", "package_unit": ""}, {"name": "sugar", "quantity": "1 1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "chocolate", "quantity": "6", "unit": "oz", "modifiers": "semisweet, coarsely chopped", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "milk", "quantity": "1", "unit": "cup", "modifiers": "whole", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-27 23:13:03.573063
status: partial
provider: claude
filename: Cocoa_croissants.pdf
recipe_title: Cocoa Croissants
unmatched_items: ["chocolate-hazelnut spread"]
modifier_results: []
unit_warnings: []
resolution_tiers: {"exact": 1, "failed": 1, "plural": 1}
raw_ai_response:
  {"title": "Cocoa Croissants", "description": "Transform store-bought puff pastry and chocolate-hazelnut spread into fancy pastry shop treats with this easy croissant recipe.", "servings": 8, "prep_time": 15, "cook_time": 25, "cuisine": "French", "tags": ["Dessert", "Baked", "Quick", "Family Friendly", "Weekend Project", "Few Ingredients"], "culinary_type": "Bread & Pastry", "instructions": "Step 1: Preheat oven to 400\u00b0F. Line 1 large cookie sheet with parchment paper.\n\nStep 2: On lightly floured surface, roll pastry into 14-inch square. Cut pastry into quarters to form 4 squares. Cut each square diagonally to form 8 triangles.\n\nStep 3: Spread 2 teaspoons chocolate-hazelnut spread on each triangle; starting at wider end, roll up pastry. Place rolls on parchment-lined cookie sheet. Lightly brush rolls with egg.\n\nStep 4: Bake for 23 to 25 minutes or until pastry is golden brown.", "ingredients": [{"name": "puff pastry", "quantity": "1", "unit": "whole", "modifiers": "frozen, thawed", "package_qty": "", "package_unit": ""}, {"name": "chocolate-hazelnut spread", "quantity": "16", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "egg", "quantity": "1", "unit": "whole", "modifiers": "beaten", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-27 23:50:40.741022
status: partial
provider: claude
filename: Fizzy_cranberry_lemonade_punch.pdf
recipe_title: Fizzy Cranberry-Lemonade Punch
unmatched_items: ["cranberry-juice cocktail", "frozen lemonade concentrate", "seltzer"]
unit_warnings: []
resolution_tiers: {"failed": 3, "compound": 1, "exact": 1}
raw_ai_response:
  {"title": "Fizzy Cranberry-Lemonade Punch", "description": "A refreshing, fizzy punch made with cranberry juice, lemonade, and seltzer, perfect for pool parties and summer cookouts.", "servings": 12, "prep_time": 10, "cook_time": 0, "cuisine": "American", "tags": ["Quick", "No Cook", "Family Friendly", "Potluck", "Budget Friendly", "Under 30 Minutes"], "culinary_type": "Beverage", "instructions": "Step 1: In large pitcher, stir cranberry-juice cocktail and lemonade concentrate until blended. Stir in seltzer and ice cubes, if using. Add orange slices and serve.", "ingredients": [{"name": "cranberry-juice cocktail", "quantity": "4", "unit": "cup", "modifiers": "chilled", "package_qty": "", "package_unit": ""}, {"name": "frozen lemonade concentrate", "quantity": "6", "unit": "oz", "modifiers": "thawed", "package_qty": "", "package_unit": ""}, {"name": "seltzer", "quantity": "1", "unit": "L", "modifiers": "chilled", "package_qty": "", "package_unit": ""}, {"name": "ice cubes", "quantity": "1", "unit": "cup", "modifiers": "optional", "package_qty": "", "package_unit": ""}, {"name": "orange", "quantity": "1", "unit": "whole", "modifiers": "cut into 1/4-inch-thick slices, each slice cut in half", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Ice", "ingredient_id": 762, "modifiers": ["cubes"]}, {"ingredient": "Orange", "ingredient_id": 363, "modifiers": ["cut into 1/4-inch-thick slices", "each slice cut in half"]}]


created_at: 2026-03-27 23:51:20.434791
status: success
provider: claude
filename: Funny_bunny_quesadilla.pdf
recipe_title: Funny Bunny Quesadilla
unmatched_items: []
modifier_results: [{"ingredient": "Flour Tortilla", "ingredient_id": 41, "modifiers": ["round"]}]
unit_warnings: []
resolution_tiers: {"exact": 6, "fuzzy": 1}
raw_ai_response:
  {"title": "Funny Bunny Quesadilla", "description": "A fun, single-serve quesadilla shaped like a bunny with cheese filling and vegetable features for a kid-friendly snack.", "servings": 1, "prep_time": 5, "cook_time": 5, "cuisine": "American", "tags": ["Quick", "Kid Friendly", "Stovetop", "Few Ingredients", "Snack", "Family Friendly"], "culinary_type": "Snack", "instructions": "Step 1: Place handful (about 2 tablespoons) of shredded cheese in center of round flour tortilla. Fold bottom up about a third of the way.\n\nStep 2: Fold in right side, then left, forming square bottom.\n\nStep 3: Hold at folds and use kitchen scissors to cut two slits, about 1 inch apart, on round side, forming \"ears\" with flap between them.\n\nStep 4: Lower flap to meet square edge. Lightly toast on a tray in toaster oven until cheese melts. Add cherry-tomato nose, carrot eyes, chive whiskers, celery mouth, and red-onion or cabbage ear accents.", "ingredients": [{"name": "flour tortilla", "quantity": "1", "unit": "whole", "modifiers": "round", "package_qty": "", "package_unit": ""}, {"name": "cheese", "quantity": "2", "unit": "tbsp", "modifiers": "shredded", "package_qty": "", "package_unit": ""}, {"name": "cherry tomato", "quantity": "1", "unit": "whole", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "carrot", "quantity": "1", "unit": "piece", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "chive", "quantity": "1", "unit": "piece", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "celery", "quantity": "1", "unit": "piece", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "red onion", "quantity": "1", "unit": "piece", "modifiers": "", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-27 23:53:46.302599
status: success
provider: claude
filename: Pretzel_bites.pdf
recipe_title: Pretzel Bites
unmatched_items: []
unit_warnings: []
resolution_tiers: {"exact": 4, "plural": 1}
raw_ai_response:
  {"title": "Pretzel Bites", "description": "Traditional pretzels packed with flavor in bite-sized form. Boiled in baking soda water and baked until golden, these homemade pretzel bites are far better than anything from a vending machine.", "servings": 36, "prep_time": 20, "cook_time": 15, "cuisine": "American", "tags": ["Baked", "Snack", "Kid Friendly", "Savory", "Weeknight"], "culinary_type": "Snack", "instructions": "Step 1: Preheat oven to 450\u00b0F. Line 1 large rimmed baking sheet with double layer of paper towels and 2 large cookie sheets with parchment paper.\nStep 2: Roll pizza dough into 36 cherry-size balls (about \u00bd ounce each).\nStep 3: In small pot, bring 5 cups water to boiling over high heat. Stir in baking soda.\nStep 4: Working in batches, drop balls into boiling water. Boil for 1 minute or until slightly puffed. With slotted spoon, remove balls and place on paper towels; drain. Place balls \u00bd inch apart on prepared cooking sheet. Brush with egg; sprinkle with salt.\nStep 5: Bake for 12 to 15 minutes or until golden. Serve with mustard.", "ingredients": [{"name": "pizza dough", "quantity": "1.25", "unit": "lb", "modifiers": "fresh or frozen, thawed, at room temperature", "package_qty": "", "package_unit": ""}, {"name": "baking soda", "quantity": "1/3", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "egg", "quantity": "1", "unit": "whole", "modifiers": "large, beaten", "package_qty": "", "package_unit": ""}, {"name": "sea salt", "quantity": "1", "unit": "pinch", "modifiers": "coarse", "package_qty": "", "package_unit": ""}, {"name": "Dijon mustard", "quantity": "1", "unit": "pinch", "modifiers": "with seeds, for serving", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Sea Salt", "ingredient_id": 278, "modifiers": ["coarse"]}, {"ingredient": "Dijon Mustard", "ingredient_id": 703, "modifiers": ["with seeds"]}]


created_at: 2026-03-28 23:40:14.372183
status: partial
provider: claude
filename: Smoky_guacamole.pdf
recipe_title: Smoky Guacamole
unmatched_items: ["ground chipotle chile"]
modifier_results: [{"ingredient": "Tortilla", "ingredient_id": 34, "modifiers": ["chips"]}]
unit_warnings: []
resolution_tiers: {"plural": 1, "exact": 6, "failed": 1, "compound": 1}
raw_ai_response:
  {"title": "Smoky Guacamole", "description": "Holy moly, wait 'til you taste this guacamole! The secret? Pan-grilled avocados. Use avocados with thick, pebbly, green skin like Hass, Pinkerton, or Reed.", "servings": 6, "prep_time": 6, "cook_time": 10, "cuisine": "Mexican", "tags": ["Quick", "Under 30 Minutes", "Stovetop", "Grilled", "Smoky", "Few Ingredients"], "culinary_type": "Appetizer", "instructions": "Step 1: Heat large ridged grill pan over medium-high heat until hot.\n\nStep 2: Brush cut sides of avocados with oil. Place avocados, cut-side down, in grill pan, and cook for 2 to 4 minutes or until grill marks appear.\n\nStep 3: Transfer avocados to cutting board; cool slightly. Remove avocados from peel. Mash with lime juice, garlic, salt, and chipotle until almost smooth. Stir in onion and cilantro.\n\nStep 4: Transfer guacamole to serving bowl. Cover and refrigerate for about 1 hour or until cold. Serve with tortilla chips.", "ingredients": [{"name": "avocados", "quantity": "2", "unit": "whole", "modifiers": "ripe, halved, pitted", "package_qty": "", "package_unit": ""}, {"name": "vegetable oil", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "lime juice", "quantity": "3", "unit": "tbsp", "modifiers": "fresh", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "1", "unit": "clove", "modifiers": "crushed", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "ground chipotle chile", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "red onion", "quantity": "1/4", "unit": "cup", "modifiers": "finely chopped", "package_qty": "", "package_unit": ""}, {"name": "cilantro", "quantity": "1/4", "unit": "cup", "modifiers": "finely chopped, fresh", "package_qty": "", "package_unit": ""}, {"name": "tortilla chips", "quantity": "1", "unit": "bag", "modifiers": "for serving", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-28 23:41:03.421351
status: partial
provider: claude
filename: Strawberry_lemonade.pdf
recipe_title: Strawberry Lemonade
unmatched_items: ["lemonade"]
modifier_results: [{"ingredient": "Strawberry", "ingredient_id": 372, "modifiers": ["hulled"]}]
unit_warnings: []
resolution_tiers: {"plural": 1, "failed": 1}
raw_ai_response:
  {"title": "Strawberry Lemonade", "description": "The right mix of sweet, sour, and refreshing, this drink will bring you cool relief on those hot summer days.", "servings": 8, "prep_time": 15, "cook_time": 0, "cuisine": "American", "tags": ["Quick", "No Cook", "Family Friendly", "Make Ahead", "Budget Friendly", "Sweet"], "culinary_type": "Beverage", "instructions": "Step 1: In blender, puree strawberries. Strain through fine-mesh sieve set over a medium-size bowl. You should end up with about 1 cup strained puree.\nStep 2: In large pitcher, stir lemonade and puree until blended. Cover and refrigerate until chilled, at least 30 minutes.", "ingredients": [{"name": "strawberries", "quantity": "12", "unit": "oz", "modifiers": "hulled", "package_qty": "", "package_unit": ""}, {"name": "lemonade", "quantity": "2", "unit": "quart", "modifiers": "store-bought", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-28 23:41:49.214158
status: partial
provider: claude
filename: Barbecue_chicken_tacos.pdf
recipe_title: BBQ Chicken Tacos
unmatched_items: ["barbecue sauce"]
unit_warnings: []
resolution_tiers: {"compound": 1, "failed": 1, "exact": 4, "plural": 2}
raw_ai_response:
  {"title": "BBQ Chicken Tacos", "description": "Quick and tasty tacos made with rotisserie chicken, barbecue sauce, fresh corn, tomatoes, and lettuce, served with sour cream.", "servings": 4, "prep_time": 5, "cook_time": 10, "cuisine": "American", "tags": ["Quick", "Under 30 Minutes", "Weeknight", "Family Friendly", "Comfort Food"], "culinary_type": "Main Course", "instructions": "Step 1: In large bowl, combine chicken, barbecue sauce, corn, tomatoes, and lime juice.\n\nStep 2: Place stack of tortillas between paper towels on microwave-safe plate. Microwave on High for 10 to 15 seconds or until warm.\n\nStep 3: Divide lettuce and chicken mixture among warm tortillas; fold over to eat out of hand. Serve with sour cream.", "ingredients": [{"name": "chicken meat", "quantity": "2", "unit": "cup", "modifiers": "shredded, rotisserie", "package_qty": "", "package_unit": ""}, {"name": "barbecue sauce", "quantity": "1/3", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "corn kernels", "quantity": "1.5", "unit": "cup", "modifiers": "cut from cobs", "package_qty": "", "package_unit": ""}, {"name": "tomatoes", "quantity": "2", "unit": "whole", "modifiers": "plum, chopped", "package_qty": "", "package_unit": ""}, {"name": "lime juice", "quantity": "1", "unit": "tbsp", "modifiers": "fresh", "package_qty": "", "package_unit": ""}, {"name": "flour tortillas", "quantity": "8", "unit": "whole", "modifiers": "soft taco-size", "package_qty": "", "package_unit": ""}, {"name": "iceberg lettuce", "quantity": "3", "unit": "cup", "modifiers": "thinly sliced", "package_qty": "", "package_unit": ""}, {"name": "sour cream", "quantity": "0.5", "unit": "cup", "modifiers": "light", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Chicken", "ingredient_id": 586, "modifiers": ["meat", "rotisserie"]}, {"ingredient": "Corn Kernels", "ingredient_id": 436, "modifiers": ["cut from cobs"]}, {"ingredient": "Tomato", "ingredient_id": 512, "modifiers": ["plum"]}, {"ingredient": "Flour Tortilla", "ingredient_id": 41, "modifiers": ["soft taco-size"]}]


created_at: 2026-03-28 23:42:33.280050
status: partial
provider: claude
filename: Classic_chicken_Parmesan.pdf
recipe_title: Classic Chicken Parmesan
unmatched_items: ["bread crumbs"]
modifier_results: [{"ingredient": "Bread", "ingredient_id": 3, "modifiers": ["crusty"]}]
unit_warnings: []
resolution_tiers: {"failed": 1, "exact": 5, "alias": 1, "compound": 1}
raw_ai_response:
  {"title": "Classic Chicken Parmesan", "description": "Seasoned bread crumbs and store-bought marinara sauce makes prepping this dish easy and quick.", "servings": 4, "prep_time": 20, "cook_time": 30, "cuisine": "Italian", "tags": ["Comfort Food", "Baked", "Family Friendly", "Under 1 Hour"], "culinary_type": "Main Course", "instructions": "Step 1: Preheat oven to 450\u00b0F. Spray baking dish with nonstick cooking spray.\nStep 2: On medium plate, combine bread crumbs and Parmesan. In shallow bowl, with fork, beat eggs.\nStep 3: Dip chicken in egg. Coat with crumb mixture, firmly pressing so mixture adheres.\nStep 4: In 12-inch skillet, heat oil over medium-high heat until hot. Add chicken; fry for 7 minutes or until golden brown, turning over once.\nStep 5: Transfer chicken to prepared baking dish. Top with marinara sauce and mozzarella. Bake for 20 minutes or until chicken is no longer pink throughout and sauce is bubbling. Serve with crusty bread, if using.", "ingredients": [{"name": "bread crumbs", "quantity": "1/2", "unit": "cup", "modifiers": "Italian-seasoned", "package_qty": "", "package_unit": ""}, {"name": "Parmesan cheese", "quantity": "1/2", "unit": "cup", "modifiers": "grated", "package_qty": "", "package_unit": ""}, {"name": "eggs", "quantity": "2", "unit": "whole", "modifiers": "large", "package_qty": "", "package_unit": ""}, {"name": "chicken breast", "quantity": "4", "unit": "piece", "modifiers": "small, halved", "package_qty": "", "package_unit": ""}, {"name": "olive oil", "quantity": "3", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "marinara sauce", "quantity": "3/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "mozzarella cheese", "quantity": "6", "unit": "oz", "modifiers": "shredded", "package_qty": "", "package_unit": ""}, {"name": "crusty bread", "quantity": "1", "unit": "whole", "modifiers": "optional", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-28 23:43:06.861119
status: partial
provider: claude
filename: Creamy_potatoes.pdf
recipe_title: Super-Creamy Potatoes
unmatched_items: ["half-and-half", "light cream"]
unit_warnings: []
resolution_tiers: {"plural": 1, "exact": 2, "failed": 2}
raw_ai_response:
  {"title": "Super-Creamy Potatoes", "description": "Half-and-half and good ol' butter are the secrets to these spectacular mashed spuds. Double the recipe if you're serving a crowd.", "servings": 6, "prep_time": 15, "cook_time": 25, "cuisine": "American", "tags": ["Comfort Food", "Side Dish", "Creamy", "Family Friendly"], "culinary_type": "Side Dish", "instructions": "Step 1: In large saucepot, combine potatoes, enough cold water to cover by 1 inch, and 1\u00bd tablespoons salt. Partially cover and heat to simmering over high heat. Uncover and simmer for 20 to 25 minutes or until potatoes are very tender but not falling apart, stirring occasionally.\n\nStep 2: Meanwhile, in 2-cup glass measuring cup, combine half-and-half and butter. Microwave on High for 1 minute or until butter melts.\n\nStep 3: Drain potatoes well; return to empty pot. Mash potatoes or put through ricer. Stir in milk mixture and \u00bd teaspoon salt.", "ingredients": [{"name": "Yukon gold potatoes", "quantity": "2", "unit": "lb", "modifiers": "peeled, cut into halves", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1", "unit": "pinch", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "half-and-half", "quantity": "3/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "light cream", "quantity": "3/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "butter", "quantity": "3", "unit": "tbsp", "modifiers": "cut up", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Yukon Gold Potato", "ingredient_id": 544, "modifiers": ["cut into halves"]}, {"ingredient": "Butter", "ingredient_id": 659, "modifiers": ["cut up"]}]


created_at: 2026-03-28 23:43:52.865202
status: success
provider: claude
filename: Hoisin_glazed_salmon.pdf
recipe_title: Hoisin-Glazed Salmon
unmatched_items: []
unit_warnings: []
resolution_tiers: {"plural": 2, "exact": 5, "compound": 1}
raw_ai_response:
  {"title": "Hoisin-Glazed Salmon", "description": "Zippy salmon fillets brushed with hoisin sauce and baked in foil packets with cauliflower, peanuts, and cilantro for ultra-moist fish and easy cleanup.", "servings": 4, "prep_time": 20, "cook_time": 15, "cuisine": "Asian", "tags": ["Under 1 Hour", "Weeknight", "High Protein", "One Pan", "Baked", "Family Friendly"], "culinary_type": "Main Course", "instructions": "Step 1: Preheat oven to 425\u00b0F.\n\nStep 2: Tear four (18-by-12-inch) sheets of foil. For each packet, place 1 piece foil on cutting board with longer side of foil facing you. Place 1 salmon fillet in center of each. Brush each fillet with 1 tablespoon hoisin sauce and sprinkle with pinch of crushed red pepper, if using.\n\nStep 3: In large bowl, combine cauliflower, oil, and salt, tossing to coat. Arrange cauliflower around each fillet. Fold foil around salmon and vegetables; tightly crimp the edges to form total of 4 packets.\n\nStep 4: Place packets on large cookie sheet. Bake for 15 minutes or until cauliflower is tender. Open packets carefully, allowing steam to escape. Garnish with peanuts and cilantro.", "ingredients": [{"name": "salmon fillets", "quantity": "4", "unit": "whole", "modifiers": "6 ounces each, skin removed", "package_qty": "", "package_unit": ""}, {"name": "hoisin sauce", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "red pepper", "quantity": "1", "unit": "pinch", "modifiers": "crushed, optional", "package_qty": "", "package_unit": ""}, {"name": "cauliflower florets", "quantity": "1.5", "unit": "lb", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "vegetable oil", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "0.25", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "peanuts", "quantity": "0.25", "unit": "cup", "modifiers": "chopped", "package_qty": "", "package_unit": ""}, {"name": "cilantro", "quantity": "0.25", "unit": "cup", "modifiers": "chopped, fresh", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Salmon Fillet", "ingredient_id": 314, "modifiers": ["6 ounces each", "skin removed"]}, {"ingredient": "Cauliflower", "ingredient_id": 425, "modifiers": ["florets"]}]


created_at: 2026-03-28 23:44:27.257235
status: success
provider: claude
filename: Lemon-rosemary_chicken_and_potatoes.pdf
recipe_title: Lemon-Rosemary Chicken & Potatoes
unmatched_items: []
modifier_results: []
unit_warnings: []
resolution_tiers: {"plural": 2, "exact": 5}
raw_ai_response:
  {"title": "Lemon-Rosemary Chicken & Potatoes", "description": "Chicken thighs and potatoes cooked in individual foil packets with lemon, rosemary, and butter, creating juicy, flavorful portions with sealed-in taste.", "servings": 4, "prep_time": 15, "cook_time": 30, "cuisine": "American", "tags": ["Baked", "Weeknight", "Family Friendly", "One Pan", "Comfort Food"], "culinary_type": "Main Course", "instructions": "Step 1: Preheat oven to 425\u00b0F.\n\nStep 2: Tear four (18-by-12-inch) sheets of foil. For each packet, place 1 piece of foil on cutting board with longer side of foil facing you. Arrange one-quarter of potatoes, overlapping slightly in center of foil; top with pinch of salt and 1 chicken thigh. Drizzle with 1 tablespoon butter; sprinkle with \u00bc teaspoon salt and \u00bc teaspoon pepper. Top with one quarter of lemon slices and 1 teaspoon rosemary. Fold foil around chicken and vegetables; tightly crimp the edges to form total of 4 packets.\n\nStep 3: Place packets on large cookie sheet. Bake 30 for minutes or until potatoes are tender. Open packets carefully, allowing steam to escape.", "ingredients": [{"name": "red potatoes", "quantity": "4", "unit": "whole", "modifiers": "medium, thinly sliced", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1", "unit": "pinch", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "chicken thighs", "quantity": "4", "unit": "whole", "modifiers": "large, skinless, boneless", "package_qty": "", "package_unit": ""}, {"name": "butter", "quantity": "1/4", "unit": "cup", "modifiers": "melted", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1/2", "unit": "tsp", "modifiers": "ground", "package_qty": "", "package_unit": ""}, {"name": "lemon", "quantity": "1", "unit": "whole", "modifiers": "large, thinly sliced", "package_qty": "", "package_unit": ""}, {"name": "rosemary", "quantity": "4", "unit": "tsp", "modifiers": "fresh, chopped", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-28 23:45:15.286854
status: partial
provider: claude
filename: Spaghetti_bolognese.pdf
recipe_title: Spaghetti Bolognese
unmatched_items: ["pecorino cheese", "pecorino cheese"]
modifier_results: [{"ingredient": "Ground Beef", "ingredient_id": 602, "modifiers": ["chuck"]}]
unit_warnings: []
resolution_tiers: {"exact": 7, "compound": 1, "plural": 1, "failed": 2}
raw_ai_response:
  {"title": "Spaghetti Bolognese", "description": "Unlike classic Bolognese sauce, which takes hours to cook, this recipe is ready in a fraction of the time.", "servings": 6, "prep_time": 15, "cook_time": 40, "cuisine": "Italian", "tags": ["Comfort Food", "Weeknight", "Family Friendly", "Under 1 Hour", "Stovetop"], "culinary_type": "Main Course", "instructions": "Step 1: In large saucepot, heat oil over medium-high heat until hot. Add onion, garlic, and salt; cook for 10 minutes or until tender, stirring occasionally. Add beef. Cook, stirring and breaking up beef with side of spoon, for 5 minutes or until beef loses its pink color throughout. Add tomatoes; heat to boiling over high heat. Reduce heat and simmer for 10 minutes or until flavors are blended. Stir in pecorino and milk.\n\nStep 2: Meanwhile, cook pasta as label directs. Drain.\n\nStep 3: Add pasta to sauce, tossing to combine. Garnish with basil leaves and more pecorino, if using.", "ingredients": [{"name": "olive oil", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "onion", "quantity": "1", "unit": "whole", "modifiers": "medium, chopped", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "3", "unit": "clove", "modifiers": "chopped", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "ground beef chuck", "quantity": "1", "unit": "lb", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "tomatoes", "quantity": "1", "unit": "can", "modifiers": "crushed", "package_qty": "28", "package_unit": "oz"}, {"name": "pecorino cheese", "quantity": "2", "unit": "tbsp", "modifiers": "grated", "package_qty": "", "package_unit": ""}, {"name": "milk", "quantity": "1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "spaghetti", "quantity": "1", "unit": "lb", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "basil", "quantity": "1", "unit": "bunch", "modifiers": "fresh, optional", "package_qty": "", "package_unit": ""}, {"name": "pecorino cheese", "quantity": "1", "unit": "pinch", "modifiers": "grated, optional", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-28 23:45:53.899722
status: partial
provider: claude
filename: Steak__fingerling_fries.pdf
recipe_title: Steak & Fingerling Fries
unmatched_items: ["boneless top loin beef steaks"]
modifier_results: [{"ingredient": "Pesto", "ingredient_id": 718, "modifiers": ["prepared"]}]
unit_warnings: []
resolution_tiers: {"exact": 4, "compound": 2, "failed": 1}
raw_ai_response:
  {"title": "Steak & Fingerling Fries", "description": "Tender boneless top loin beef steaks served with crispy fingerling potatoes and a butter-pesto topping. A delicious main course featuring steaks cooked to perfection and sliced across the grain for maximum tenderness.", "servings": 4, "prep_time": 10, "cook_time": 20, "cuisine": "American", "tags": ["Comfort Food", "Stovetop", "High Protein", "Weeknight", "Crispy"], "culinary_type": "Main Course", "instructions": "Step 1: Preheat oven to 450\u00b0F.\n\nStep 2: On large rimmed baking sheet, combine potatoes, 1 tablespoon oil, and 1/4 teaspoon salt; tossing to coat. Bake for 20 minutes or until deep golden brown.\n\nStep 3: Meanwhile, in small bowl, combine butter and pesto.\n\nStep 4: Sprinkle steaks with remaining 1/2 teaspoon salt and pepper. In 12-inch skillet, heat remaining 1 tablespoon oil over medium-high heat until hot. Add steaks. Cook for about 6 minutes for medium-rare or until desired doneness, turning over once. Transfer steaks to cutting board. Let stand 5 minutes to set juices for easier slicing.\n\nStep 5: Slice steaks across grain. Serve with pesto butter and fries.", "ingredients": [{"name": "fingerling potatoes", "quantity": "1", "unit": "lb", "modifiers": "quartered lengthwise", "package_qty": "", "package_unit": ""}, {"name": "olive oil", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "3/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "butter", "quantity": "2", "unit": "tbsp", "modifiers": "softened", "package_qty": "", "package_unit": ""}, {"name": "prepared pesto", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "boneless top loin beef steaks", "quantity": "2", "unit": "whole", "modifiers": "1 1/4 pounds (each 1 inch thick)", "package_qty": "", "package_unit": ""}, {"name": "ground black pepper", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-28 23:47:44.105963
status: success
provider: claude
filename: Crispy_chocolate_chip_cookies.pdf
recipe_title: Crispy Chocolate-Chip Cookies
unmatched_items: []
unit_warnings: []
resolution_tiers: {"exact": 8, "plural": 1}
raw_ai_response:
  {"title": "Crispy Chocolate-Chip Cookies", "description": "Chocolate-chip cookies with a butterscotch flavor and an airy crunch, perfect for those who love a crispy cookie texture.", "servings": 48, "prep_time": 20, "cook_time": 40, "cuisine": "American", "tags": ["Dessert", "Make Ahead", "Freezer Friendly", "Family Friendly", "Baked", "Sweet"], "culinary_type": "Dessert", "instructions": "Step 1: In large bowl with wire whisk, mix flour, baking soda, and salt.\n\nStep 2: In another large bowl with mixer on medium-high speed, beat butter and sugars for 5 minutes or until very light and fluffy. Beat in 1 tablespoon water and vanilla. Beat in egg until combined. Reduce speed to low; gradually beat in flour mixture just until blended. Stir in chocolate chips.\n\nStep 3: Transfer dough to zip-seal plastic bag; squeeze out air and seal bag. Refrigerate for at least 24 hours, or up to 72 hours.\n\nStep 4: Preheat oven to 350\u00b0F. Line two large cookie sheets with parchment paper.\n\nStep 5: With 1\u00bd-inch-wide cookie scoop, scoop chilled dough 2 inches apart on prepared cookie sheets. Bake cookies for 10 to 12 minutes or until edges and centers are browned. Slide cookies, still on parchment, onto wire racks to cool completely. Repeat with remaining dough and cooled, newly lined cookie sheets.", "ingredients": [{"name": "all-purpose flour", "quantity": "1 1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "baking soda", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "butter", "quantity": "1", "unit": "cup", "modifiers": "unsalted", "package_qty": "", "package_unit": ""}, {"name": "brown sugar", "quantity": "1", "unit": "cup", "modifiers": "firmly packed", "package_qty": "", "package_unit": ""}, {"name": "granulated sugar", "quantity": "1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "vanilla extract", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "egg", "quantity": "1", "unit": "whole", "modifiers": "large", "package_qty": "", "package_unit": ""}, {"name": "chocolate chips", "quantity": "1", "unit": "bag", "modifiers": "semisweet", "package_qty": "12", "package_unit": "oz"}]}

modifier_results:
  [{"ingredient": "Brown Sugar", "ingredient_id": 53, "modifiers": ["firmly packed"]}, {"ingredient": "Chocolate Chips", "ingredient_id": 140, "modifiers": ["semisweet"]}]


created_at: 2026-03-28 23:48:54.532872
status: partial
provider: claude
filename: Fudgy_ice_cream_sandwiches.pdf
recipe_title: Homemade Fudgy Ice-Cream Sandwiches
unmatched_items: ["ice cream"]
modifier_results: []
unit_warnings: []
resolution_tiers: {"exact": 5, "alias": 1, "failed": 1}
raw_ai_response:
  {"title": "Homemade Fudgy Ice-Cream Sandwiches", "description": "These ultimate sandwiches pair ice cream (the flavor is your pick) with cookies that stay chewy\u2014even when frozen.", "servings": 12, "prep_time": 30, "cook_time": 10, "cuisine": "American", "tags": ["Dessert", "Make Ahead", "Freezer Friendly", "Family Friendly", "Kid Friendly", "Baked"], "culinary_type": "Dessert", "instructions": "Step 1: Preheat oven to 350\u00b0F. Line two large cookie sheets with parchment paper.\n\nStep 2: In 4-quart saucepan, combine butter, chocolate chips, condensed milk, and salt. Cook over medium-low heat for 5 to 6 minutes or until melted, stirring. Remove pan from heat. Stir in flour and vanilla until combined.\n\nStep 3: With 1\u00bd-inch-wide cookie scoop, scoop dough 2 inches apart on prepared cookie sheets. Flatten slightly. Bake 8 to 10 minutes or until tops are dry but still soft when pressed.\n\nStep 4: Cool cookies on cookie sheets on wire racks for 5 minutes. With spatula, transfer cookies to wire racks to cool completely. Repeat with remaining batter if necessary.\n\nStep 5: Press 1 small scoop ice cream between 2 cookies. Freeze sandwiches 1 hour or until firm.", "ingredients": [{"name": "butter", "quantity": "1/2", "unit": "cup", "modifiers": "room temperature", "package_qty": "", "package_unit": ""}, {"name": "semisweet chocolate chips", "quantity": "12", "unit": "oz", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "sweetened condensed milk", "quantity": "1", "unit": "can", "modifiers": "", "package_qty": "14", "package_unit": "oz"}, {"name": "salt", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "all-purpose flour", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "vanilla extract", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "ice cream", "quantity": "2", "unit": "cup", "modifiers": "slightly softened", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-28 23:49:32.959888
status: partial
provider: claude
filename: Fudgy_waffle_brownies.pdf
recipe_title: Fudgy Waffle Brownies
unmatched_items: ["bittersweet chocolate", "unsweetened cocoa", "ice cream"]
modifier_results: [{"ingredient": "Butter", "ingredient_id": 659, "modifiers": ["cut up"]}]
unit_warnings: []
resolution_tiers: {"exact": 8, "failed": 3, "plural": 1, "fuzzy": 1}
raw_ai_response:
  {"title": "Fudgy Waffle Brownies", "description": "Soft, fudgy brownies made in a waffle maker with a terrific texture\u2014perfect for those who prefer their waffles soft instead of hard and crunchy.", "servings": 12, "prep_time": 20, "cook_time": 15, "cuisine": "American", "tags": ["Dessert", "Kid Friendly", "Family Friendly", "Weeknight", "Few Ingredients", "Quick"], "culinary_type": "Dessert", "instructions": "Step 1: Preheat oven to 225\u00b0F. Preheat waffle maker.\n\nStep 2: In 4-quart saucepan, combine butter and chocolate. Cook over medium-low heat for 2 to 3 minutes or until melted and smooth, stirring. Remove pan from heat. Stir in sugar. Whisk in egg and vanilla until combined. Stir in milk.\n\nStep 3: In medium bowl with wire whisk, mix flour, cocoa, baking powder, and salt. Stir flour mixture into butter mixture just until smooth. Fold in chips.\n\nStep 4: Spray waffle maker with nonstick cooking spray. Pour 1/3 to 1/2 cup batter onto heated waffle maker. Close waffle maker; cook for 2 to 3 minutes or until just set and crisp around edges. With edge of thin silicone spatula, cut brownie into quarters and gently lift each quarter from waffle maker. Place waffle directly on oven rack to keep warm. Repeat with remaining batter. Serve with ice cream and berries, if using.", "ingredients": [{"name": "butter", "quantity": "6", "unit": "tbsp", "modifiers": "cut up", "package_qty": "", "package_unit": ""}, {"name": "bittersweet chocolate", "quantity": "1", "unit": "bar", "modifiers": "chopped", "package_qty": "35", "package_unit": "oz"}, {"name": "sugar", "quantity": "3/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "egg", "quantity": "1", "unit": "whole", "modifiers": "large, beaten", "package_qty": "", "package_unit": ""}, {"name": "vanilla extract", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "whole milk", "quantity": "1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "all-purpose flour", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "unsweetened cocoa", "quantity": "1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "baking powder", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "butterscotch chips", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "ice cream", "quantity": "1", "unit": "pinch", "modifiers": "optional", "package_qty": "", "package_unit": ""}, {"name": "berries", "quantity": "1", "unit": "pinch", "modifiers": "optional", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-28 23:50:34.760705
status: partial
provider: claude
filename: Little_cheesecakes.pdf
recipe_title: Cute Little Cheesecakes
unmatched_items: ["graham crackers"]
modifier_results: [{"ingredient": "Mint", "ingredient_id": 386, "modifiers": ["sprigs"]}]
unit_warnings: []
resolution_tiers: {"failed": 1, "exact": 9, "plural": 1, "compound": 1}
raw_ai_response:
  {"title": "Cute Little Cheesecakes", "description": "These irresistible mini cheesecakes feature a graham cracker crust and creamy filling, baked in muffin pans for perfect individual servings. Garnished with fresh raspberries and mint.", "servings": 24, "prep_time": 30, "cook_time": 20, "cuisine": "American", "tags": ["Dessert", "Make Ahead", "Party", "Holiday", "Family Friendly", "Baked"], "culinary_type": "Dessert", "instructions": "Step 1: Prepare Crust: Preheat oven to 350\u00b0F. Line 48 miniature muffin-pan cups with paper liners.\n\nStep 2: In food processor with knife blade attached, pulse graham crackers, sugar, and salt until finely ground. Add butter; pulse until mixture resembles wet sand. Press about 1 heaping teaspoon crumb mixture into bottom of each liner. Bake for 5 minutes or until pale golden. Cool completely on wire racks. Reduce oven temperature to 325\u00b0F.\n\nStep 3: Prepare Filling: In large bowl with mixer on medium speed, beat cream cheese and sugar for 3 minutes or until light and fluffy. Beat in vanilla and salt until combined. Add eggs 1 at a time, beating well after each addition. Beat in cream. Divide filling among prepared liners.\n\nStep 4: Bake for 12 to 15 minutes or until filling is set but still slightly jiggly and moist in center. Let cool in pans on wire racks for 5 minutes; transfer cheesecakes to wire racks to cool completely. Garnish with raspberries and mint sprigs.", "ingredients": [{"name": "graham crackers", "quantity": "1", "unit": "sleeve", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "sugar", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "butter", "quantity": "4", "unit": "tbsp", "modifiers": "melted", "package_qty": "", "package_unit": ""}, {"name": "cream cheese", "quantity": "2", "unit": "package", "modifiers": "softened", "package_qty": "8", "package_unit": "oz"}, {"name": "sugar", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "vanilla extract", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/8", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "eggs", "quantity": "3", "unit": "whole", "modifiers": "large", "package_qty": "", "package_unit": ""}, {"name": "heavy cream", "quantity": "1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "raspberries", "quantity": "1", "unit": "pinch", "modifiers": "for garnish", "package_qty": "", "package_unit": ""}, {"name": "mint sprigs", "quantity": "1", "unit": "pinch", "modifiers": "for garnish", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-28 23:51:53.901132
status: success
provider: claude
filename: Honey-lime_Ramen_salad.pdf
recipe_title: Honey-Lime Ramen Salad
unmatched_items: []
unit_warnings: []
resolution_tiers: {"compound": 1, "exact": 8, "plural": 1}
raw_ai_response:
  {"title": "Honey-Lime Ramen Salad", "description": "This recipe will remind you of cold sesame noodles, only with a fresher taste.", "servings": 4, "prep_time": 20, "cook_time": 0, "cuisine": "Asian", "tags": ["Quick", "Under 30 Minutes", "No Cook", "Light", "Make Ahead", "Weeknight"], "culinary_type": "Salad", "instructions": "Step 1: Cook noodles as label directs.\n\nStep 2: Meanwhile, in large bowl with wire whisk, mix tahini, soy sauce, lime juice, honey, and garlic until smooth. Add cucumber, tomatoes, and cabbage, tossing until well coated.\n\nStep 3: Drain noodles and rinse with cold water. Drain once more, shaking off as much excess water as possible. Add to bowl with vegetables along with cilantro. Toss until well combined. Serve immediately or refrigerate, covered, up to 1 day.", "ingredients": [{"name": "Chinese curly egg noodles", "quantity": "8", "unit": "oz", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "tahini", "quantity": "1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "soy sauce", "quantity": "3", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "lime juice", "quantity": "3", "unit": "tbsp", "modifiers": "fresh", "package_qty": "", "package_unit": ""}, {"name": "honey", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "2", "unit": "clove", "modifiers": "crushed with press", "package_qty": "", "package_unit": ""}, {"name": "English cucumber", "quantity": "1", "unit": "whole", "modifiers": "seedless, chopped", "package_qty": "", "package_unit": ""}, {"name": "grape tomatoes", "quantity": "1", "unit": "cup", "modifiers": "halved", "package_qty": "", "package_unit": ""}, {"name": "Napa cabbage", "quantity": "3", "unit": "cup", "modifiers": "thinly sliced", "package_qty": "", "package_unit": ""}, {"name": "cilantro", "quantity": "1/4", "unit": "cup", "modifiers": "finely chopped, fresh", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Egg Noodles", "ingredient_id": 674, "modifiers": ["chinese", "curly"]}, {"ingredient": "Garlic", "ingredient_id": 450, "modifiers": ["crushed with press"]}, {"ingredient": "English Cucumber", "ingredient_id": 446, "modifiers": ["seedless"]}]


created_at: 2026-03-28 23:52:24.531532
status: partial
provider: claude
filename: Quick_wraps_for_kids.pdf
recipe_title: Quick Wrap for Kids
unmatched_items: ["California avocados", "barbecue sauce"]
unit_warnings: []
resolution_tiers: {"plural": 2, "failed": 2, "exact": 2}
raw_ai_response:
  {"title": "Quick Wrap for Kids", "description": "A healthy and kid-friendly wrap filled with mashed avocado, turkey breast, cheese, barbecue sauce, and shredded carrots. Perfect for a quick snack or light meal.", "servings": 4, "prep_time": 15, "cook_time": 0, "cuisine": "American", "tags": ["Quick", "Kid Friendly", "No Cook", "Family Friendly", "Weeknight", "Under 30 Minutes"], "culinary_type": "Snack", "instructions": "Step 1: Place two teaspoons mashed avocado on tortilla, spreading to within 1 inch of tortilla edge.\nStep 2: Place 1 slice of turkey breast over mashed avocado.\nStep 3: Top with cheese and spread on 1/2 teaspoon barbecue sauce.\nStep 4: Sprinkle one-quarter of the carrots over the sauce.\nStep 5: Roll up tightly.\nStep 6: Place seam side down on plate.\nStep 7: Using serrated knife, slice in half.\nStep 8: Repeat procedure preparing four wraps.\nStep 9: Serve.\nStep 10: Note: Can be prepared 1 hour ahead of serving, wrap in plastic wrap to insure freshness.", "ingredients": [{"name": "flour tortillas", "quantity": "4", "unit": "whole", "modifiers": "fajita size, fat free", "package_qty": "", "package_unit": ""}, {"name": "California avocados", "quantity": "4", "unit": "slice", "modifiers": "ripe, mashed", "package_qty": "", "package_unit": ""}, {"name": "turkey breast", "quantity": "4", "unit": "slice", "modifiers": "deli, sodium-free", "package_qty": "", "package_unit": ""}, {"name": "barbecue sauce", "quantity": "2", "unit": "tsp", "modifiers": "prepared, divided", "package_qty": "", "package_unit": ""}, {"name": "mozzarella", "quantity": "4", "unit": "slice", "modifiers": "thin, low fat, divided", "package_qty": "", "package_unit": ""}, {"name": "carrots", "quantity": "1", "unit": "cup", "modifiers": "peeled, coarsely shredded, divided", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Flour Tortilla", "ingredient_id": 41, "modifiers": ["fajita size"]}, {"ingredient": "Turkey Breast", "ingredient_id": 631, "modifiers": ["deli", "sodium-free"]}]


created_at: 2026-03-28 23:53:17.259481
status: success
provider: claude
filename: Tomato_soup_with_Cupid_croutons.pdf
recipe_title: Tomato Soup with Cupid Croutons
unmatched_items: []
modifier_results: [{"ingredient": "Vegetable Broth", "ingredient_id": 181, "modifiers": ["lower-sodium"]}]
unit_warnings: []
resolution_tiers: {"exact": 9, "plural": 2}
raw_ai_response:
  {"title": "Tomato Soup with Cupid Croutons", "description": "A super-filling tomato soup loaded with vitamin C, topped with heart-shaped croutons that are sure to win everyone's affection.", "servings": 4, "prep_time": 15, "cook_time": 45, "cuisine": "American", "tags": ["Comfort Food", "Stovetop", "Family Friendly", "Weeknight"], "culinary_type": "Soup", "instructions": "Step 1: In 5- to 6-quart saucepot, heat oil over medium heat until hot. Add onion and garlic; cook for 10 minutes until tender, stirring. Add broth, tomatoes, bay leaves, and 1/2 teaspoon salt; heat to boiling over high heat. Reduce heat; simmer for 20 minutes, stirring occasionally.\n\nStep 2: Prepare heart croutons: Meanwhile, trim crusts from bread. With small, heart-shaped cookie cutter, cut hearts from bread slices; toast hearts in a toaster oven or by broiling on a sheet pan in the oven for a few minutes, until golden brown in color. Stir bread scraps into soup.\n\nStep 3: Remove and discard bay leaves. Stir in butter and sugar. In blender at low speed, with center part of blender's lid removed to allow steam to escape, blend tomato mixture in batches until smooth. Pour soup into large bowl after each batch. Return soup to same saucepan; stir in pepper. Heat through. Divide soup among 4 mugs. Serve topped with croutons.", "ingredients": [{"name": "olive oil", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "onion", "quantity": "1", "unit": "whole", "modifiers": "medium, chopped", "package_qty": "", "package_unit": ""}, {"name": "garlic", "quantity": "2", "unit": "clove", "modifiers": "chopped", "package_qty": "", "package_unit": ""}, {"name": "vegetable broth", "quantity": "3", "unit": "cup", "modifiers": "lower-sodium", "package_qty": "", "package_unit": ""}, {"name": "tomatoes", "quantity": "1", "unit": "can", "modifiers": "whole peeled", "package_qty": "28", "package_unit": "oz"}, {"name": "bay leaves", "quantity": "2", "unit": "leaf", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "white bread", "quantity": "4", "unit": "slice", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "butter", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "sugar", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "black pepper", "quantity": "1/4", "unit": "tsp", "modifiers": "ground", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-28 23:53:50.081944
status: success
provider: claude
filename: Turkey__white_bean_chili.pdf
recipe_title: Turkey & White Bean Chili
unmatched_items: []
unit_warnings: []
resolution_tiers: {"exact": 7, "plural": 1, "compound": 1}
raw_ai_response:
  {"title": "Turkey & White Bean Chili", "description": "A versatile and hearty chili made with lean ground turkey and white beans, perfect for a hot lunch. Can easily be customized with ground beef or different bean varieties.", "servings": 4, "prep_time": 15, "cook_time": 35, "cuisine": "American", "tags": ["Quick", "Under 1 Hour", "Stovetop", "Comfort Food", "Weeknight", "High Protein"], "culinary_type": "Stew", "instructions": "Step 1: In 12-inch skillet, heat oil over medium-high heat until hot. Add turkey and salt. Cook, stirring and breaking up turkey with side of spoon, for 6 to 8 minutes or until turkey loses its pink color throughout.\n\nStep 2: Add onion and cook for 4 minutes or until tender. Stir in chili powder and cumin; cook for 1 minute.\n\nStep 3: Add tomatoes with their juice, beans, and 1/2 cup water; heat to boiling over high heat. Reduce heat to medium and cook, uncovered, for 10 minutes or until flavors are blended, stirring occasionally. Ladle chili among 4 serving bowls and top with a dollop of yogurt.", "ingredients": [{"name": "olive oil", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "ground turkey", "quantity": "1", "unit": "lb", "modifiers": "lean (93%)", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "onion", "quantity": "1", "unit": "whole", "modifiers": "medium, chopped", "package_qty": "", "package_unit": ""}, {"name": "chili powder", "quantity": "4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cumin", "quantity": "1", "unit": "tbsp", "modifiers": "ground", "package_qty": "", "package_unit": ""}, {"name": "tomatoes", "quantity": "1", "unit": "can", "modifiers": "whole, chopped", "package_qty": "28", "package_unit": "oz"}, {"name": "white kidney beans", "quantity": "1", "unit": "can", "modifiers": "cannellini, rinsed and drained", "package_qty": "15", "package_unit": "oz"}, {"name": "yogurt", "quantity": "1/2", "unit": "cup", "modifiers": "plain nonfat", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Kidney Beans", "ingredient_id": 72, "modifiers": ["cannellini"]}, {"ingredient": "Yogurt", "ingredient_id": 234, "modifiers": ["plain nonfat"]}]


created_at: 2026-03-29 17:23:16.967127
status: success
provider: claude
filename: The_ultimate_waffles.pdf
recipe_title: The Ultimate Waffles
unmatched_items: []
modifier_results: [{"ingredient": "Oats", "ingredient_id": 556, "modifiers": ["old-fashioned"]}]
unit_warnings: []
resolution_tiers: {"compound": 2, "exact": 12, "plural": 1}
raw_ai_response:
  {"title": "The Ultimate Waffles", "description": "Oats, chopped pecans, and a touch of cinnamon make these waffles extra special.", "servings": 8, "prep_time": 30, "cook_time": 3, "cuisine": "American", "tags": ["Breakfast / Brunch", "Family Friendly", "Freezer Friendly", "Weekend Project"], "culinary_type": "Breakfast / Brunch", "instructions": "Step 1: Preheat oven to 225\u00b0F.\nStep 2: In medium bowl, combine oats and buttermilk. Let soak for 20 minutes.\nStep 3: Preheat waffle maker. In large bowl with wire whisk, mix flour, pecans, baking powder, baking soda, cinnamon, and salt. In medium bowl, whisk eggs, oil, honey, and vanilla until blended. Add egg mixture and oat mixture to flour mixture. Stir until just combined (small lumps are okay).\nStep 4: Spray waffle maker with nonstick cooking spray. Pour 1/3 cup batter onto heated waffle maker. Close waffle maker; cook for 3 minutes or until deep golden brown. Place waffle directly on oven rack to keep warm. Repeat with remaining batter.\nStep 5: Serve with strawberries, butter, and more honey, if using.", "ingredients": [{"name": "old-fashioned oats", "quantity": "1/2", "unit": "cup", "modifiers": "uncooked", "package_qty": "", "package_unit": ""}, {"name": "low-fat buttermilk", "quantity": "1 1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "whole wheat flour", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "pecans", "quantity": "1", "unit": "cup", "modifiers": "chopped", "package_qty": "", "package_unit": ""}, {"name": "baking powder", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "baking soda", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cinnamon", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/4", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "eggs", "quantity": "2", "unit": "whole", "modifiers": "large", "package_qty": "", "package_unit": ""}, {"name": "vegetable oil", "quantity": "3", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "honey", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "vanilla extract", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "strawberries", "quantity": "2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "butter", "quantity": "1", "unit": "pinch", "modifiers": "for serving, optional", "package_qty": "", "package_unit": ""}, {"name": "honey", "quantity": "1", "unit": "pinch", "modifiers": "for serving, optional", "package_qty": "", "package_unit": ""}]}


created_at: 2026-03-29 17:41:02.186774
status: success
provider: claude
filename: Whole-grain_blueberry_muffins.pdf
recipe_title: Whole-Grain Blueberry Muffins
unmatched_items: []
unit_warnings: []
resolution_tiers: {"compound": 1, "exact": 11, "plural": 2}
raw_ai_response:
  {"title": "Whole-Grain Blueberry Muffins", "description": "Delicious whole-grain blueberry muffins made with old-fashioned oats and whole wheat flour, topped with crunchy almond sugar.", "servings": 12, "prep_time": 20, "cook_time": 40, "cuisine": "American", "tags": ["Baked", "Family Friendly", "Make Ahead", "Breakfast", "Comfort Food"], "culinary_type": "Breakfast / Brunch", "instructions": "Step 1: Preheat oven to 400\u00b0F. Line 12-cup muffin pan with paper liners.\n\nStep 2: In blender, place oats and blend until finely ground. In large bowl with wire whisk, mix oats, whole wheat flour, all-purpose flour, \u00bc cup sugar, baking powder, baking soda, and salt. In small bowl with wire whisk, mix buttermilk, juice, oil, egg, and vanilla until blended. With rubber spatula, fold egg mixture into flour mixture until combined; fold in blueberries.\n\nStep 3: Combine nuts and remaining 1 tablespoon sugar. Divide batter among prepared muffin cups; sprinkle with almond sugar. Bake for 22 minutes or until toothpick inserted in centers of muffins comes out clean. Cool in pan on wire rack for 5 minutes. Remove muffins from pan; cool completely on wire rack.", "ingredients": [{"name": "old-fashioned oats", "quantity": "1", "unit": "cup", "modifiers": "uncooked", "package_qty": "", "package_unit": ""}, {"name": "whole wheat flour", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "all-purpose flour", "quantity": "1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "brown sugar", "quantity": "1/4", "unit": "cup", "modifiers": "packed", "package_qty": "", "package_unit": ""}, {"name": "brown sugar", "quantity": "1", "unit": "tbsp", "modifiers": "packed", "package_qty": "", "package_unit": ""}, {"name": "baking powder", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "baking soda", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salt", "quantity": "1/2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "buttermilk", "quantity": "1", "unit": "cup", "modifiers": "low-fat", "package_qty": "", "package_unit": ""}, {"name": "orange juice", "quantity": "1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "vegetable oil", "quantity": "2", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "egg", "quantity": "1", "unit": "whole", "modifiers": "large", "package_qty": "", "package_unit": ""}, {"name": "vanilla extract", "quantity": "1", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "blueberries", "quantity": "2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Oats", "ingredient_id": 556, "modifiers": ["old-fashioned"]}, {"ingredient": "Brown Sugar", "ingredient_id": 53, "modifiers": ["packed"]}, {"ingredient": "Brown Sugar", "ingredient_id": 53, "modifiers": ["packed"]}]


created_at: 2026-03-29 17:42:01.634857
status: success
provider: claude
filename: Watermelon_pizza.pdf
recipe_title: Watermelon Pizza
unmatched_items: []
unit_warnings: []
resolution_tiers: {"alias": 1, "exact": 4, "fuzzy": 1, "compound": 2}
raw_ai_response:
  {"title": "Watermelon Pizza", "description": "A fruity, patriotic dessert pizza made with watermelon slices topped with a sweet ricotta cream cheese mixture, berries, and coconut.", "servings": 4, "prep_time": 15, "cook_time": 0, "cuisine": "American", "tags": ["No Cook", "Quick", "Under 30 Minutes", "Kid Friendly", "Dessert", "Holiday"], "culinary_type": "Dessert", "instructions": "Step 1: In large bowl, combine ricotta, cream cheese, honey, and vanilla; stir with wooden spoon until blended.\n\nStep 2: Spread 3/4 cup cheese mixture on each watermelon slice; sprinkle each with 1/2 cup berries and 2 tablespoons coconut. Garnish slices with mint sprigs.", "ingredients": [{"name": "ricotta cheese", "quantity": "2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cream cheese", "quantity": "8", "unit": "oz", "modifiers": "softened", "package_qty": "8", "package_unit": "oz"}, {"name": "honey", "quantity": "1/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "vanilla extract", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "watermelon", "quantity": "4", "unit": "slice", "modifiers": "1-inch-thick, seedless", "package_qty": "", "package_unit": ""}, {"name": "berries", "quantity": "2", "unit": "cup", "modifiers": "assorted", "package_qty": "", "package_unit": ""}, {"name": "coconut flakes", "quantity": "1/2", "unit": "cup", "modifiers": "sweetened, toasted", "package_qty": "", "package_unit": ""}, {"name": "mint sprigs", "quantity": "1", "unit": "bunch", "modifiers": "fresh", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Watermelon", "ingredient_id": 373, "modifiers": ["1-inch-thick", "seedless"]}, {"ingredient": "Juniper Berries", "ingredient_id": 267, "modifiers": ["assorted"]}, {"ingredient": "Coconut", "ingredient_id": 338, "modifiers": ["flakes"]}, {"ingredient": "Mint", "ingredient_id": 386, "modifiers": ["sprigs"]}]


created_at: 2026-03-29 17:44:44.862449
status: success
provider: claude
filename: Iced_tea_with_fruit_juice.pdf
recipe_title: Iced Tea with Fruit Juice
unmatched_items: []
unit_warnings: []
resolution_tiers: {"compound": 3, "exact": 2}
raw_ai_response:
  {"title": "Iced Tea with Fruit Juice", "description": "A refreshing non-caffeinated iced tea blended with fruit juice, perfect for quenching thirst on hot days.", "servings": 8, "prep_time": 5, "cook_time": 5, "cuisine": "American", "tags": ["Quick", "Under 30 Minutes", "No Cook", "Family Friendly", "Budget Friendly"], "culinary_type": "Beverage", "instructions": "Step 1: In nonreactive 3-quart saucepan, heat juice to boiling over high heat. Remove from heat and stir in tea bags. Cover and steep 5 minutes.\n\nStep 2: Stir again and remove tea bags. Pour tea into heatproof 2\u00bd-quart pitcher. Add 4 cups cold water. Cover and let stand until ready to serve.\n\nStep 3: Fill tall glasses with ice cubes and pour tea over. Serve with sugar and lemon slices, if using.", "ingredients": [{"name": "peach juice", "quantity": "4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "tea bags", "quantity": "8", "unit": "whole", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "ice cubes", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "sugar", "quantity": "1", "unit": "pinch", "modifiers": "granulated, optional, to taste", "package_qty": "", "package_unit": ""}, {"name": "lemon", "quantity": "1", "unit": "whole", "modifiers": "thin slices, optional", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Peach", "ingredient_id": 475, "modifiers": ["juice"]}, {"ingredient": "Tea", "ingredient_id": 125, "modifiers": ["bags"]}, {"ingredient": "Ice", "ingredient_id": 762, "modifiers": ["cubes"]}, {"ingredient": "Sugar", "ingredient_id": 62, "modifiers": ["granulated"]}]


created_at: 2026-03-29 17:45:48.680219
status: partial
provider: claude
filename: Taco_dogs.pdf
recipe_title: Taco Dogs
unmatched_items: ["all-beef hot dogs"]
unit_warnings: []
resolution_tiers: {"failed": 1, "exact": 5, "compound": 2, "plural": 1}
raw_ai_response:
  {"title": "Taco Dogs", "description": "Chili dogs go taco-style thanks to our additions of salsa verde, crushed tortilla chips, and crisp lettuce.", "servings": 6, "prep_time": 5, "cook_time": 20, "cuisine": "American", "tags": ["Quick", "Under 30 Minutes", "Family Friendly", "Weeknight", "Stovetop", "Grilled"], "culinary_type": "Main Course", "instructions": "Step 1: Set ridged grill pan over medium heat until hot.\n\nStep 2: Place hot dogs on hot grill pan; cook for 7 to 9 minutes or until heated through (meaning every part of the meat is cooked), turning occasionally.\n\nStep 3: Meanwhile, in 10-inch skillet, heat oil over medium-high heat until hot. Add beef and chili powder. Cook, stirring and breaking up beef with side of spoon, for 3 to 4 minutes or until beef loses its pink color throughout. Stir in salsa. Cook for 1 minute longer or until heated through.\n\nStep 4: Place hot dogs in buns; top evenly with beef mixture. Top each hot dog with 3 tablespoons cheddar, 3 tablespoons tortilla chips, and lettuce.", "ingredients": [{"name": "all-beef hot dogs", "quantity": "6", "unit": "whole", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "vegetable oil", "quantity": "2", "unit": "tsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "ground beef", "quantity": "8", "unit": "oz", "modifiers": "sirloin (85%)", "package_qty": "", "package_unit": ""}, {"name": "chili powder", "quantity": "1", "unit": "tbsp", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "salsa verde", "quantity": "1/2", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "hot dog buns", "quantity": "6", "unit": "whole", "modifiers": "split and toasted", "package_qty": "", "package_unit": ""}, {"name": "cheddar cheese", "quantity": "3", "unit": "oz", "modifiers": "shredded (3/4 cup)", "package_qty": "", "package_unit": ""}, {"name": "tortilla chips", "quantity": "3/4", "unit": "cup", "modifiers": "crushed", "package_qty": "", "package_unit": ""}, {"name": "lettuce", "quantity": "1", "unit": "cup", "modifiers": "shredded", "package_qty": "", "package_unit": ""}]}

modifier_results:
  [{"ingredient": "Ground Beef", "ingredient_id": 602, "modifiers": ["sirloin (85%)"]}, {"ingredient": "Salsa", "ingredient_id": 721, "modifiers": ["verde"]}, {"ingredient": "Tortilla", "ingredient_id": 34, "modifiers": ["chips"]}]


created_at: 2026-03-29 18:54:46.880535
status: success
provider: claude
filename: Swiss_Miss_Cocoa_Mix.pdf
recipe_title: Swiss Miss Cocoa Mix
unmatched_items: []
modifier_results: [{"ingredient": "Milk", "ingredient_id": 225, "modifiers": ["non", "fat"]}]
unit_warnings: []
resolution_tiers: {"compound": 1, "exact": 1, "fuzzy": 1}
raw_ai_response:
  {"title": "Swiss Miss Cocoa Mix", "description": "A homemade cocoa mix that can be stored in a sealed container and used to make hot chocolate by adding a couple heaping tablespoons to hot water.", "servings": 1, "prep_time": 10, "cook_time": 0, "cuisine": "American", "tags": ["Quick", "Make Ahead", "Budget Friendly", "Few Ingredients", "Kid Friendly", "Sweet"], "culinary_type": "Beverage", "instructions": "Step 1: Sift all ingredients together three times.\nStep 2: Store this mixture in a tightly sealed container in a cool place.\nStep 3: When ready to use, add a couple of heaping tablespoons to hot water.", "ingredients": [{"name": "non fat dry milk", "quantity": "16", "unit": "oz", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "sugar", "quantity": "1", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}, {"name": "cocoa", "quantity": "3/4", "unit": "cup", "modifiers": "", "package_qty": "", "package_unit": ""}]}


# qa_session

started_at: 2026-03-27 16:06:29.706892
completed_at: 2026-03-27 19:29:26.544792
notes: minor bugs to be reviewed
smoke_results:
  {"route_dashboard": {"label": "GET /dashboard returns 200", "status": "pass", "detail": "route registered"}, "route_pantry": {"label": "GET /pantry returns 200", "status": "pass", "detail": "route registered"}, "route_planner": {"label": "GET /meal-planner returns 200", "status": "pass", "detail": "route registered"}, "route_shopping": {"label": "GET /shopping returns 200", "status": "pass", "detail": "route registered"}, "route_recipes": {"label": "GET /recipes returns 200", "status": "pass", "detail": "route registered"}, "route_changelog": {"label": "GET /changelog returns 200", "status": "pass", "detail": "route registered"}, "route_smoketest": {"label": "GET /smoketest returns 200", "status": "pass", "detail": "route registered"}, "db_demo_user": {"label": "Demo user exists and is active", "status": "pass", "detail": "demo id=10"}, "db_admin_user": {"label": "Admin user exists with admin role", "status": "pass", "detail": "admin exists"}, "db_recipes": {"label": "At least 1 recipe in system", "status": "pass", "detail": "19 recipes"}, "db_ingredients": {"label": "Ingredient table populated", "status": "pass", "detail": "769 ingredients"}, "db_units": {"label": "Unit table has entries", "status": "pass", "detail": "56 units"}, "db_clove_unit": {"label": "Clove unit exists in Unit table", "status": "pass", "detail": "clove found"}, "schema_is_demo": {"label": "user.is_demo column exists", "status": "pass", "detail": "is_demo found in user"}, "schema_culinary_type": {"label": "recipe.culinary_type column exists", "status": "pass", "detail": "culinary_type found in recipe"}, "schema_group_label": {"label": "recipe_ingredient_detail.group_label exists", "status": "pass", "detail": "group_label found in recipe_ingredient_detail"}, "schema_meal_type_sli": {"label": "shopping_list_item.meal_type exists", "status": "pass", "detail": "meal_type found in shopping_list_item"}, "schema_unit_sli": {"label": "shopping_list_item.unit exists", "status": "pass", "detail": "unit found in shopping_list_item"}, "schema_planned_meal": {"label": "planned_meal table exists", "status": "pass", "detail": "id found in planned_meal"}, "schema_modifier_notes": {"label": "pantry_item.modifier_notes exists (Phase 2 \u2014 expected pending)", "status": "pending", "detail": "Not yet built \u2014 Phase 2 Item 1"}, "data_no_orphan_pantry": {"label": "No orphaned pantry items", "status": "pass", "detail": "0 orphans"}, "data_recipes_typed": {"label": "All recipes have culinary_type", "status": "pass", "detail": "0 untyped"}, "data_no_bad_units": {"label": "No invalid units in pantry (cup/gallon raw)", "status": "pass", "detail": "all units normalised"}, "data_planned_meal_integrity": {"label": "All PlannedMealRecipe entries have valid recipe", "status": "pass", "detail": "all valid"}, "bp_social": {"label": "Social blueprint registered (26 routes)", "status": "pass", "detail": "23 social routes"}, "bp_admin": {"label": "Admin blueprint registered", "status": "pass", "detail": "66 admin routes"}}


started_at: 2026-03-27 19:29:26.621395
smoke_results:
  {"route_root": {"label": "GET / registered", "status": "pass", "detail": "registered: /"}, "route_dashboard": {"label": "GET /dashboard registered", "status": "pass", "detail": "registered: /dashboard"}, "route_recipes": {"label": "GET /recipes registered", "status": "pass", "detail": "registered: /recipes"}, "route_recipe_view": {"label": "GET /recipe/<id> registered", "status": "pass", "detail": "registered: /recipe/<int:recipe_id>"}, "route_upload": {"label": "GET /recipe/upload registered", "status": "pass", "detail": "registered: /recipe/upload"}, "route_edit": {"label": "GET /recipe/edit registered", "status": "pass", "detail": "registered: /recipe/edit/<int:recipe_id>"}, "route_pantry": {"label": "GET /pantry registered", "status": "pass", "detail": "registered: /pantry"}, "route_shopping": {"label": "GET /shopping registered", "status": "pass", "detail": "registered: /shopping"}, "route_planner": {"label": "GET /meal-planner registered", "status": "pass", "detail": "registered: /meal-planner"}, "route_changelog": {"label": "GET /changelog registered", "status": "pass", "detail": "registered: /changelog"}, "route_login": {"label": "GET /login registered", "status": "pass", "detail": "registered: /login"}, "route_register": {"label": "GET /register registered", "status": "pass", "detail": "registered: /register"}, "route_profile": {"label": "GET /profile registered", "status": "pass", "detail": "registered: /profile"}, "route_smoketest": {"label": "GET /smoketest registered", "status": "pass", "detail": "registered: /smoketest"}, "route_demo_login": {"label": "POST /demo-login registered", "status": "pass", "detail": "registered: /demo-login"}, "route_demo_logout": {"label": "GET /demo-logout registered", "status": "pass", "detail": "registered: /demo-logout"}, "db_admin_exists": {"label": "Admin user exists", "status": "pass", "detail": "1 admin(s)"}, "db_demo_exists": {"label": "Demo user exists and is_demo=True", "status": "pass", "detail": "demo user found"}, "db_no_pending_users": {"label": "No stuck pending registrations", "status": "pass", "detail": "0 pending"}, "db_recipes_exist": {"label": "Recipes exist in system", "status": "pass", "detail": "37 visible, 53 total"}, "db_recipes_unflagged": {"label": "Unflagged recipes exist for users", "status": "pass", "detail": "37 unflagged"}, "db_flagged_count": {"label": "Flagged recipe count", "status": "pass", "detail": "16 flagged"}, "db_recipes_typed": {"label": "All recipes have culinary_type set", "status": "pass", "detail": "0 untyped"}, "db_ingredients": {"label": "Ingredients table has 700+ entries", "status": "pass", "detail": "769 ingredients"}, "db_units": {"label": "Units table has 50+ entries", "status": "pass", "detail": "56 units"}, "db_modifiers": {"label": "Modifiers table populated", "status": "pass", "detail": "143 modifiers"}, "db_modifier_cats": {"label": "Modifier categories exist", "status": "pass", "detail": "12 categories"}, "db_tags": {"label": "Tags table populated", "status": "pass", "detail": "42 tags"}, "db_culinary_types": {"label": "Recipes have culinary types assigned", "status": "pass", "detail": "53 recipes with culinary type"}, "db_no_orphan_pantry": {"label": "No orphaned pantry items (missing ingredient)", "status": "pass", "detail": "0 orphans"}, "db_no_orphan_planned": {"label": "No orphaned PlannedMealRecipe records", "status": "pass", "detail": "10 planned meals"}, "db_shopping_lists": {"label": "ShoppingList table accessible", "status": "pass", "detail": "1 shopping lists"}, "schema_user_is_demo": {"label": "user.is_demo exists", "status": "pass", "detail": "is_demo found in user"}, "schema_user_is_staff": {"label": "user.is_staff or role exists", "status": "pass", "detail": "role found in user"}, "schema_recipe_culinary_type": {"label": "recipe.culinary_type exists", "status": "pass", "detail": "culinary_type found in recipe"}, "schema_recipe_is_flagged": {"label": "recipe.is_flagged exists", "status": "pass", "detail": "is_flagged found in recipe"}, "schema_rid_group_label": {"label": "recipe_ingredient_detail.group_label exists", "status": "pass", "detail": "group_label found in recipe_ingredient_detail"}, "schema_rid_group_order": {"label": "recipe_ingredient_detail.group_order exists", "status": "pass", "detail": "group_order found in recipe_ingredient_detail"}, "schema_sli_meal_type": {"label": "shopping_list_item.meal_type exists", "status": "pass", "detail": "meal_type found in shopping_list_item"}, "schema_sli_unit": {"label": "shopping_list_item.unit exists", "status": "pass", "detail": "unit found in shopping_list_item"}, "schema_planned_meal": {"label": "planned_meal table exists", "status": "pass", "detail": "planned_meal exists"}, "schema_planned_meal_recipe": {"label": "planned_meal_recipe table exists", "status": "pass", "detail": "planned_meal_recipe exists"}, "schema_site_setting": {"label": "site_setting table exists", "status": "pass", "detail": "site_setting exists"}, "schema_tag": {"label": "tag table exists", "status": "pass", "detail": "tag exists"}, "schema_recipe_tag": {"label": "recipe_tag table exists", "status": "pass", "detail": "recipe_tag exists"}, "schema_qa_session": {"label": "qa_session table exists", "status": "pass", "detail": "qa_session exists"}, "schema_ingredient_parent_id": {"label": "ingredient.parent_id exists (Chapter 2 \u2014 pending)", "status": "pending", "detail": "Not yet built \u2014 Chapter 2.1"}, "schema_pantry_modifier_notes": {"label": "pantry_item.modifier_notes exists (Chapter 2 \u2014 pending)", "status": "pending", "detail": "Not yet built \u2014 Chapter 2.1"}, "toggle_db_count": {"label": "SiteSetting has 30+ entries", "status": "pass", "detail": "55 settings"}, "toggle_no_dupes": {"label": "No duplicate SiteSetting keys", "status": "pass", "detail": "55 rows / 55 unique"}, "toggle_recipes_on": {"label": "feature_recipe_view ON", "status": "pass", "detail": "feature_recipe_view=true (expected true)"}, "toggle_upload_on": {"label": "feature_upload ON", "status": "pass", "detail": "feature_upload=true (expected true)"}, "toggle_edit_on": {"label": "feature_recipe_edit ON", "status": "pass", "detail": "feature_recipe_edit=true (expected true)"}, "toggle_ai_import_on": {"label": "feature_ai_import ON", "status": "pass", "detail": "feature_ai_import=true (expected true)"}, "toggle_ratings_on": {"label": "feature_ratings ON", "status": "pass", "detail": "feature_ratings=true (expected true)"}, "toggle_changelog_on": {"label": "feature_changelog ON", "status": "pass", "detail": "feature_changelog=true (expected true)"}, "toggle_registration_on": {"label": "feature_registration ON", "status": "pass", "detail": "feature_registration=true (expected true)"}, "toggle_mealplan_on": {"label": "feature_mealplan ON", "status": "pass", "detail": "feature_mealplan=true (expected true)"}, "toggle_shopping_on": {"label": "feature_shopping_list ON", "status": "pass", "detail": "feature_shopping_list=true (expected true)"}, "toggle_shop_generate_on": {"label": "feature_shop_generate ON", "status": "pass", "detail": "feature_shop_generate=true (expected true)"}, "toggle_pantry_on": {"label": "feature_pantry ON", "status": "pass", "detail": "feature_pantry=true (expected true)"}, "toggle_pantry_add_on": {"label": "feature_pantry_add ON", "status": "pass", "detail": "feature_pantry_add=true (expected true)"}, "toggle_profile_on": {"label": "feature_profile_edit ON", "status": "pass", "detail": "feature_profile_edit=true (expected true)"}, "toggle_demo_on": {"label": "feature_demo ON", "status": "pass", "detail": "feature_demo=true (expected true)"}, "toggle_mod_bypass_on": {"label": "mod_bypass_features ON", "status": "pass", "detail": "mod_bypass_features=true (expected true)"}, "toggle_deduct_off": {"label": "feature_pantry_deduct OFF (Ch.2 pending)", "status": "pass", "detail": "feature_pantry_deduct=false (expected false)"}, "toggle_shop_pantry_off": {"label": "feature_shop_pantry_link OFF (Ch.2 pending)", "status": "pass", "detail": "feature_shop_pantry_link=false (expected false)"}, "toggle_discover_off": {"label": "discover_enabled OFF (placeholder)", "status": "pass", "detail": "discover_enabled=false (expected false)"}, "toggle_community_off": {"label": "community_enabled OFF (placeholder)", "status": "pass", "detail": "community_enabled=false (expected false)"}, "toggle_cook_mode_off": {"label": "feature_cook_mode OFF (alpha)", "status": "pass", "detail": "feature_cook_mode=false (expected false)"}, "toggle_alert_off": {"label": "alert_enabled OFF by default", "status": "pass", "detail": "alert_enabled=false (expected false)"}, "toggle_ai_claude": {"label": "ai_provider_claude configured", "status": "pass", "detail": "ai_provider_claude=true (expected true)"}, "infra_version_file": {"label": "VERSION file exists", "status": "pass", "detail": "0.9.0-alpha"}, "infra_changelog": {"label": "CHANGELOG.md exists", "status": "pass", "detail": "found"}, "infra_roadmap": {"label": "ROADMAP_v2.md exists", "status": "pass", "detail": "found"}, "infra_restore_doc": {"label": "RESTORE.md exists", "status": "pass", "detail": "found"}, "infra_backup_dir": {"label": "instance/backups/ directory exists", "status": "pass", "detail": "found"}, "infra_backup_exists": {"label": "At least 1 DB backup exists", "status": "pass", "detail": "2 backups"}, "infra_backup_script": {"label": "backup_db.sh exists", "status": "pass", "detail": "found"}, "infra_secret_key": {"label": "SECRET_KEY configured", "status": "pass", "detail": "env var set"}, "infra_version_format": {"label": "VERSION matches expected format", "status": "pass", "detail": "0.9.0-alpha"}, "data_planned_meal_integrity": {"label": "All PlannedMealRecipe entries have valid recipe", "status": "pass", "detail": "all valid"}, "bp_social": {"label": "Social blueprint registered (26 routes)", "status": "pass", "detail": "23 social routes"}, "bp_admin": {"label": "Admin blueprint registered", "status": "pass", "detail": "66 admin routes"}}


