The last mile

AI generates the 80%. The last 20% is what users remember.

AI generates the 80%. The last 20% is what users remember.

Every AI-generated page is missing the same things: favicons, OG images, keyboard shortcuts, loading skeletons, error states with personality, hover transitions. The things that only exist because someone thought about them.

Metadata and identity

DetailWhy it matters
Favicon (light + dark mode SVG)The tab bar is the most persistent brand surface
Open Graph imageHow the product looks when shared on Slack, Twitter, LinkedIn
<title> that's useful, not generic"Dashboard
theme-color meta tagTints the browser chrome on mobile
apple-touch-iconHome screen icon on iOS

Interaction states

AI generates the default state. Not the other four:

StateWhat to check
HoverDoes every interactive element change on hover?
FocusIs the focus ring visible, styled, and following border-radius?
ActiveDoes the button depress or shift on click?
DisabledIs it visually distinct from enabled? Is the cursor set?
LoadingSkeleton, spinner, or progress bar. Not a blank space

Keyboard support

PatternMinimum bar
Tab orderFollows visual order, skips decorative elements
EscapeCloses modals, drawers, popovers
EnterSubmits forms, activates focused buttons
Arrow keysNavigates tabs, menus, radio groups

Can the primary task be completed without touching the mouse? If not, that's a bug.

Responsive refinement

AI generates for one breakpoint. Check three:

BreakpointCommon AI failures
Mobile (375px)Text too small, touch targets too close, horizontal overflow
Tablet (768px)Awkward column count (3 → 2 looks weird at some widths)
Wide (1440px+)Content stretches, line-length exceeds 80ch

Micro-transitions

Elements that benefit from a transition:

Do not animate: text colour in body copy, layout shifts, scrollbar appearance.

Test every transition with prefers-reduced-motion. If a user has motion sensitivity, every transition should disappear or reduce to an opacity fade.

The 15-minute polish pass

After the three-pass edit from the previous lesson, run this final checklist.

  1. Tab through the page. Fix broken focus order. Style the focus ring.
  2. Resize to 375px. Fix overflow, touch targets, text size.
  3. Hover every interactive element. Add missing hover states.
  4. Check the tab title and favicon. Replace defaults.
  5. Inspect the <head>. Add og:image, theme-color, apple-touch-icon.
  6. Trigger every error state. Submit empty forms. Disconnect wifi. Load with slow 3G.
  7. Test with keyboard only. Escape closes overlays. Enter submits.

Common mistakes