Write prompts as portable contracts
OpenAI, Claude, Gemini, and strong open-weight models differ in features and behavior. The portable layer is the part every capable model can understand: what job it is doing, which sources count, what output shape is required, what is out of bounds, and how to say unknown.
A cross-model prompt should be boring enough to test. If two models receive the same contract, you can compare schema following, receipt quality, uncertainty handling, and overreach. If you rewrite the prompt for each model, you lose the comparison.
The AHA is that model routing starts with comparable failures, not brand preference.
Aha moment
A portable prompt is the contract all models can be graded against, not the phrase that sounds best for one model.
Try this
Write one prompt with role, task, source ledger, constraints, output schema, uncertainty, and stop rules, then compare two model outputs field by field.
Watch for
- Model-specific rewrites that ruin comparison
- Schemas without unknown or blocked states
- Prompts that ask for confidence without evidence reasons