The image model landscape — six families and what each is for — step 8 of 9
Write pick_image_model(task) that routes an image-generation
task to the right 2026 model.
task is a dict with optional keys:
budget_per_image: float (default 1.0)needs_text_in_image: boolneeds_character_consistency: boolphotoreal_art_directed: boolbatch_count: int (default 1)subjective_taste: boolinstruction_heavy: bool
Return one of the model name strings, in this priority order:
budget_per_image < 0.02→"gpt-image-1-mini"needs_text_in_image→"ideogram-3"needs_character_consistency→"flux-kontext-pro"photoreal_art_directed→"flux-1.1-pro"batch_count >= 10→"nano-banana"subjective_taste→"midjourney-v7"instruction_heavy→"gpt-image-1"- default →
"imagen-4"
Four tasks run. Expected output:
poster: ideogram-3
hero: flux-1.1-pro
batch: nano-banana
cheap: gpt-image-1-mini
⌘↵ runs the editor.read, then continue.
Write pick_image_model(task) that routes an image-generation
task to the right 2026 model.
task is a dict with optional keys:
budget_per_image: float (default 1.0)needs_text_in_image: boolneeds_character_consistency: boolphotoreal_art_directed: boolbatch_count: int (default 1)subjective_taste: boolinstruction_heavy: bool
Return one of the model name strings, in this priority order:
budget_per_image < 0.02→"gpt-image-1-mini"needs_text_in_image→"ideogram-3"needs_character_consistency→"flux-kontext-pro"photoreal_art_directed→"flux-1.1-pro"batch_count >= 10→"nano-banana"subjective_taste→"midjourney-v7"instruction_heavy→"gpt-image-1"- default →
"imagen-4"
Four tasks run. Expected output:
poster: ideogram-3
hero: flux-1.1-pro
batch: nano-banana
cheap: gpt-image-1-mini
this step needs the editor
on desktop today; in the app (coming soon). save your spot and we'll bring you back here when you're ready.