FRANK
ANAYA

Work / UX & information architecture

One mental model instead of five

The best UX work on semashow.com is invisible. Editors used to fight five competing page structures. Now they think about one.

5→1
mental models
65
pages migrated
15
written ADRs
5
page variants
semashow.com semashow.com homepage — the platform this case study is about

The problem

The legacy site had five audience areas — home, attendee, exhibitor, media, public — and each had accreted its own page structure over fifteen years. Editors had to remember which rules applied where. Training was slow, mistakes were common, and every new feature had to be built five times. The CMS wasn't a tool; it was a hazing ritual.

The design decision

Simplify the model in the user's head, and whole classes of error stop existing. That's the deepest UX work I know, and nobody screenshots it for Dribbble.

I collapsed the content model: one page entity, five variants. Every route alias resolves to the same kind of page; a variant field decides which Twig template renders it. Editors see one form and learn one structure. The theme handles the polymorphism. The alternative — five content types — is what most Drupal builds do, and it's why most Drupal builds need a training manual. Content types multiply; mental models should not.

Before and after, in one picture

Before — five structures, five rulebooks

Home pagesAttendee pagesExhibitor pagesMedia pagesPublic pages

Different fields, different rules, different training for each. Errors everywhere the rules disagreed.

After — one entity, five variants

canvas page
homeattendeeexhibitormediapublic

One form, one mental model. The theme renders the differences; the editor never has to think about them.

Adoption is a design deliverable

A design decision that lives in one person's head dies when they leave. I wrote the reasoning into Architecture Decision Records — options considered, costs, why this one won — and walked stakeholders through them. When someone later proposed re-splitting a variant into its own content type, the ADR answered the question before the meeting happened. Documents end debates; opinions restart them.

Editor experience, down to the details

  • Preview that tells the truth. I stripped admin chrome — page title, breadcrumbs, status messages — from the editing render so the editor's preview matches the live site exactly. What you see is what ships, literally.
  • Guardrails over crashes. An editor once wanted to delete a component that a saved page still referenced — the kind of action that takes a Drupal site down with a useless error. The workflow now blocks it, explains why, and routes the change through config where the dependency graph stays consistent. The editor was unblocked the same hour, and the rule is documented so nobody meets that crash fresh.
  • 65 legacy pages migrated into the new model with every path alias preserved, via idempotent seed scripts that can rebuild any environment without touching editor content.

Now doing the same at organizational scale

The same muscle is currently pointed at sema.org, the association's flagship property, which we're redesigning with an external vendor. I'm the client-side UX lead: planning and running the usability testing rounds, synthesizing findings into direction the vendor's designers act on, and representing our editorial and business stakeholders in every design decision. Inside-the-building UX work and vendor-management UX work are different sports. I'm playing both at once, and the testing findings are already changing what ships.

Practice areas: information architecture, content modeling, editor experience (EX), usability testing, journey mapping, stakeholder facilitation, Drupal 11, Twig template variants, Architecture Decision Records.