GPT-4o made text, vision, and audio feel like one product surface rather than a chain of conversions.
That changes the product contract. The application has to know what was captured, what the model saw, and how a reviewer can locate the evidence later.
A request can keep those anchors explicit:
{
"requestId": "bug-4821",
"inputs": [
{ "kind": "screenshot", "assetId": "shot-1", "region": "submit-button" },
{ "kind": "audio", "assetId": "call-4", "timeRange": "00:42-01:05" },
{ "kind": "text", "source": "user-note" }
],
"receipts": ["screenshot:shot-1", "audio:call-4@00:42-01:05"]
}
If the UI cannot point to the exact crop, timestamp, or text source, the model may have done the perception work while the product lost the evidence.
Multimodal input should be treated as a record rather than a blob. Keep asset IDs, regions, timestamps, model version, and review links next to the result. When a user reports a miss, the system should be able to distinguish “the model did not see it” from “the application dropped the anchor afterward.”
That is the practical shift GPT-4o represented. Multimodal stopped being a demo category and became ordinary workflow plumbing.
Related posts

About Jeremy London
Engineering leader and builder in Denver. I write about AI platforms, agents, security, reliability, homelab infrastructure, and the parts of engineering work that have to survive production.