I'm building a receipts extraction pipeline. Some of the receipts can have 100+ line items. Different vendors may list net amount per line item (after discount) or other vendors may list gross amount then the discount amount below on its own line item. It's causing a nightmare when I try to make a one-size-fits-all BAML schema. When I optimize for one receipt type, it breaks the other receipt types. Should I just make one BAML file with different prompt sections dedicated to each receipt type - (single-pass with embedded vendor detection, but gets bloated/polluted context window) - the union return type IS the routing. OR is it a better practice to do multi-pass routing (multiple API calls so double the token cost and latency). I do think that the image file size for the prompt tokens is exponentially larger than more prompt instruction text though. I'm using gpt-4o-mini it's like 30-100k tokens ($0.005-0.015 per API call). And are there any known tricks for having the LLM iterate over long lists of say 100+ items - i.e. keeping the attention mechanism from truncating?