AltContext
A description such as “a person singing on a stage” can explain an activity while leaving out who is pictured. On a page about a particular performer, that identity may be important to understanding why the photograph is there.
I am building AltContext to bring that publishing context into WordPress image descriptions. The product combines the photograph with a site’s own people roster and information from the page. An editor reviews the proposed identity and the wording before applying the text. The intended benefit is more useful context for blind readers; establishing that benefit with readers is still part of the work ahead.
What supports the draft description
The photograph supplies visual information: a microphone, clothing, or something else visible in the scene. An image model can describe those details without having to identify the person from its general knowledge.
Names come from the publisher’s roster. In WordPress, an editor associates groups of faces with people and corrects mistaken groupings. A face in a new photograph can then be compared with those site-specific references. The result is a proposed match for review. The naming policy also determines whether a name may be used in the generated text.
The page supplies a different kind of information. A caption or surrounding paragraph can explain why the publisher chose an image and which details matter. A performer’s identity may be relevant to an event report, while an article about a garment may need more attention to the clothing. W3C’s image guidance describes how purpose and context shape an image’s text alternative.
I keep those sources distinct in the drafting workflow. Mentioning a person in an article does not establish that the person appears in its photograph. The reconciliation step separates visual observations from page or event context before drafting, so background information is not presented as something the image shows.
Review the proposal before applying it
The editor first needs enough information to judge the proposed identity. The workflow lets them compare the image with reference photographs and decide whether the person should be named. That decision informs the description, which can then be edited before it is saved.
I separate generation from applying the text. A generated draft is a proposal in the interface; it does not become a stored WordPress description simply because the service returned it. The editor can change the wording or decline a suggested name before applying the result.
The workflow also supports a longer description alongside alt text. Decorative images can skip generation and use an empty text alternative. The interface needs to accommodate those publishing decisions alongside the review of generated descriptions.
Connect the interface to the stored decision
I am responsible for the interaction design and the implementation behind it. The admin interface uses React and TypeScript, with PHP for the WordPress integration and Python/FastAPI for the supporting services. Working across those parts lets me follow an editorial action from the control on screen to the record it changes.
The service is designed around tenant-scoped recognition data and API isolation between publishers. I use task briefs and acceptance tests to define the work, and code review as part of the versioned delivery process. An interface change has to be considered alongside the WordPress integration and supporting service it uses.
I also use WorkBay’s UX-map workflow to inventory an existing interface or examine a proposed change. The resulting screens and flows can be reviewed by people and AI tools, and findings can be checked in the running interface after implementation. This supports review of structure and behaviour; it does not replace evaluation with editors and readers.
Try the decisions in a practice copy
The public practice guide uses names and descriptions prepared in advance from a recorded run. Recognition is not running while someone uses the guide.
For each photograph, choose whether to use the suggested names or leave the people unnamed. Once both choices have been made, the prepared description appears in an editable textarea. Use this description changes the demo image’s alt text. Keep the current description leaves it as it is, and Undo this change restores the original.
The guide does not require sign-in. Its changes affect only the demo image on that page, clear on reload, and do not publish to WordPress.
Make the processing and retention choices explicit
AltContext uses a WordPress host and a hosted processing service. WordPress remains the source of record for names, editorial corrections, and saved descriptions. Recognition and description processing run on Oracle Cloud Infrastructure, so images leave the WordPress host for that work. The hosted service also stores the recognition representations used for face comparison.
Recognition data is retained by default unless another retention mode is selected. The hosted records have retention settings and export and purge operations, with controls for withholding names from generated text. Export and purge operations leave an audit trail.
Purging hosted recognition data does not erase saved WordPress descriptions or that audit trail. Saved descriptions also remain available when a new service request cannot run. These are separate records with different lifetimes, and the controls have not undergone a legal compliance assessment.
Evaluate the description and the review
Model comparisons have examined whether supplied identities survive into the text and whether page context introduces unsupported claims. Automated checks cover the plugin and services, including accessibility checks on the admin interface. The implementation has not had an independent security audit.
Evaluation with blind readers and editors is still needed. Readers need descriptions that preserve useful context. Editors need to recognise plausible mistakes in a proposed match or a fluent draft and correct them before publication. Those are the outcomes that will establish whether the workflow is useful.