Your product has four thousand images with empty or filename alt text, and new media lands daily. Multimodal models can draft descriptions at scale — but raw model output shipped as alt text produces verbose, redundant, sometimes wrong descriptions. The pipeline is: triage, draft, edit, ship, with a human owning the editorial gate.
Tier: Foundation · Workflow area: Accessibility
This playbook builds that pipeline for both the backlog and the ongoing flow, whether images live in a CMS, a product catalog, or component code.
IMG_2041.jpg) alt text.Skip it for a codebase whose images are overwhelmingly decorative — there the fix is alt="" and a lint rule, not a description pipeline.
src props), how many lack useful alt text, and where descriptions get rendered.Triage decorative vs informative first, mechanically. Most alt-text volume disappears here. Write the triage rules down before any drafting:
alt="", no description drafted.figure caption, or details link).Have the model do a first-pass classification in batches, with a human spot-checking a sample of each class before the classes drive anything.
Draft with context, not just pixels. Alt text depends on what the image is for. Feed the model the surrounding content, and force brevity:
You write alt text following our style guide (attached). For each image
you get: the image, the page title, and the surrounding paragraph.
Rules:
- Informative images: one sentence, <=120 characters, no "image of"/
"picture of", present tense.
- Describe what matters for THIS context, not everything visible.
- If the image contains text, include the text verbatim.
- Complex images (charts/diagrams): 1-sentence alt PLUS a structured
long description: what it shows, axes/units, and the 2-3 takeaways.
- If you cannot determine the subject confidently, output NEEDS-HUMAN
instead of guessing.
Route every draft through the editorial gate. Load drafts into a review queue — a CMS draft state, a spreadsheet, or a PR if alt lives in code. The editor's job is fast verb-level editing: fix wrong specifics (models misread brands, counts, directions, and text-in-image), cut verbosity, align terminology with the product's vocabulary. Reviewing a draft is 5–10x faster than writing from scratch; that speed is the pipeline's whole economic case.
Ship into the right slot and prevent regression. Write approved text into the CMS field, database column, or component prop. Then close the loop for new media: make the alt field required-with-assist in the authoring flow — the model drafts on upload, the author confirms or edits before publish. Add a lint/CI rule (jsx-a11y/alt-text, CMS validation) so undescribed informative images cannot ship again.
Extend to time-based media. For video: model-drafted transcript from the audio track, human-corrected, plus a description of essential visual-only information. For audio: transcript with speaker labels. The same draft-edit-ship gate applies; auto-captions unedited are not compliance.
The model's job is volume; the editor's job is truth and brevity. Triage kills most of the work, context-fed drafting handles the rest at scale, and nothing reaches users without a human having read it.
Product imagery can be NDA'd (unreleased hardware, client data in screenshots) or contain personal data (user photos, medical imagery).
Never send user-uploaded photos, identifiable people, or regulated content (medical, minors, documents) to an external API without an explicit legal basis. The accessibility win does not amortize a privacy incident.
alt="" deliberately.