APDES-119 · Article experienceSenior Product Designer

I turned a crowded article page into a shared product system

How I used research, collaborative workshops, and AI-assisted coded prototypes to align Editorial, Revenue, Product, and Engineering around one article experience.

16Interviews
2Live workshops
15Participant builds
2Coded directions tested

Outcome

Positive movement on both goal metrics, with no guardrail regressions.

Section 1 · The problem

One page. Many owners.

The article page is AP's real front door: 60% of visits land directly on an article, compared with 5% on the homepage.

But the experience had grown module by module. Every team had a valid goal; no one owned how those goals composed into a single read.

Control

The page as readers encountered it, mobile and desktop
The existing AP article page on mobile 1234
Mobile
The live AP article page on desktop, the floating player overlapping the skyscraper ad1234
Desktop

Chrome first, story second

This is the same article at two breakpoints, and it has the same problems at both. The opening is a queue: ad, video, Primis, ad, newsletter, Dianomi, and the reporting is somewhere below all of it. Primis, the video advertising and article recirculation unit, floats above the page instead of sitting in it. On desktop it lands across the skyscraper in the rail, so two paid units share one corner and neither is fully seen. Above it all, the dark header pushes the photograph down, so a reader meets chrome first and reporting second.

  1. 1The dark header fills 40% of the phone and 44% of the desktop before the photo
  2. 2Ads compete for the opening: the banner on mobile, the skyscraper on desktop
  3. 3Primis floats over the page and lands on top of the ads
  4. 4An accessibility widget is pinned on top in the corner
TeamLegitimate goal, competing for the same space
EditorialProtect the story, clarity, and trust.
RevenueBalance advertising and Donations without overwhelming the read.
ProductConnect Design and Development through a shared system.
AudienceCreate useful paths into newsletters and the next story.

The problem was not that the page had too many goals. It was that the goals were designed separately.

Section 2 · Research

Listen before layout.

I separated reader needs from organizational needs, then looked for the tension they shared. Six user interviews showed how the page felt. Ten stakeholder interviews explained why it had become that way.

6user interviews

Readers wanted a clearer start.

They needed quick orientation, fewer competing elements, and media that supported the story instead of sitting on top of it.

10stakeholder interviews

Teams optimized their own moment.

Editorial, Ad Ops, Donations, Product, and Audience each had legitimate requirements, but no shared model for sequencing them.

Shared signal

The opening had to earn attention before the page asked for action.

Section 3 · Designing the collaboration

I built the room a design tool.

For two 90-minute workshops, I created a kit of reusable article components in Figma. Participants could build a desktop article, translate it to mobile, and feel the cost of every decision.

The wireframes made abstract priorities concrete: if a team moved an ask up, something else had to move down.

Participant builds

FigJam boards from the workshops
Editorial participant workshop board
Editorial

Protect the opening

Reduce what appears before the reporting begins.

Visuals participant workshop board
Visuals

Support the story

Use imagery to create rhythm without overtaking the opening.

Revenue participant workshop board
Revenue

Place asks with intent

Make commercial moments work with reader momentum.

What the room revealed

The teams did not need fewer goals. They needed one composition.

Seven participants independently protected the opening. Four matched the ask to the reader relationship.

Section 4 · Design decisions

Measured, not styled.

Three decisions carried the reading experience: how long a line of text runs, how much air sits around anything that is not text, and where the Primis player lives, the video advertising and recirculation unit that runs on every article. Each was settled by comparison and measurement rather than by preference, then verified in the build.

The same values went to Ad Ops, because a placement rule written in paragraph counts drifts the moment paragraphs get taller.

Line length

How we landed on 624px

Body copy at base size, compared against today's AP standard, AP Live Blog, and two peers. Bar length is text column width, scaled to the widest.

AP standard, today716px · 87 ch
Washington Post640px
Article base XL, chosen624px · 76 ch
AP Live Blog620px · 75 ch
AP test616px · 76 ch
New York Times600px · 66 ch
AP test538px · 70 ch
AP test460px · 66 ch

Measured on the live prototype at 624px: the longest line runs 76 characters, the average full line 71. Today's page runs 87.

Proposed direction

The column stops at 624px.

From 1024 up, the text column holds at 624px however wide the screen gets. The extra width goes to margins and the rail, not to the line.

Two steps of spacing

Content responsive tokens, drawn at real pixel height
Mobile · 412px20px screen margin
Content responsive · Default · 16px
Content responsive · Generous · 32px
Ad unit
Content responsive · Generous · 32px
Content responsive · Default · 16px
Content responsive · Generous · 32px
Newsletter module
Content responsive · Generous · 32px
XL · 1440px40px screen margin · 624px text column
Content responsive · Default · 24px
Content responsive · Generous · 48px
Ad unit
Content responsive · Generous · 48px
Content responsive · Default · 24px
Content responsive · Generous · 48px
Newsletter module
Content responsive · Generous · 48px
Default: paragraph to paragraph, 16px to 24px
Generous: paragraph to any module or ad, 32px to 48px
Fixed: 16px padding inside the unit, the same at both sizes

Gaps drawn at real pixel height, widths scaled to fit. Each gray bar is one line of text: 24px rhythm on mobile, 27px on XL.

TokenUsed forUnder 10241024 and up
DefaultParagraph to paragraph16px24px
ExpandedParagraph to next H224px40px
GenerousParagraph to module or ad, both sides32px48px
Screen marginsPage gutter20px40px
Fixed defaultComponent padding, never scales16px16px

How it holds

Generous minus Default

A module carries its own margin of Generous minus Default, so whatever sits above it, the total always lands on Generous at every breakpoint.

Proposed direction

Ads are a slot, not an exception.

Ads, pull quotes, audio and images all count as inserted units and share one placement rule. That is how a minimum run of text between any two units becomes enforceable in code rather than agreed in a meeting.

Checked against the standards, not against my eye.

StandardSourceTargetMobile · 412pxXL · 1440pxResult
Line lengthBringhurst, Baymard45 to 75 charactersAvg 47, longest 53Avg 71, longest 76Meets
Line length ceilingWCAG 1.4.8 (AAA)80 characters max5376Meets
Line heightWCAG 1.4.8 (AAA)At least 1.5 times type size1.5 (24px)1.5 (27px)Meets
Paragraph spacingWCAG 1.4.8 (AAA)At least 1.5 times line spacing40px against 36 needed51px against 40.5 neededMeets*
Body sizeMaterial, Apple HIG16px or larger16px18pxMeets
Text contrastWCAG 1.4.6 (AAA)7:1 or higher17.6:117.6:1Meets
Reflow at 320pxWCAG 1.4.10 (AA)No sideways scrollingArticle passes, comments overflow 21pxn/aFix in comments

*Measured baseline to baseline. Under a stricter reading that counts only the empty gap, both sizes fall short. This is a AAA criterion, so it is not required for compliance, and I would rather show the asterisk than round it off. The one real failure sits outside the article: at 320px the Report button in each comment pushes the page 21px wide.

Where Primis lives

A video advertising and article recirculation unit. Mobile, captured from the prototypes on apnews.design
✕
Sits on top of the UIFloats above the page and lands on whatever is underneath. Here it covers the byline.
✕
Asks to be dismissedReaders told us they close it on arrival.
Old

Live page: the player floats

The existing AP article page on mobile, the player floating over the bylinePrimis
New

Redesign: the player docks

The Primis player loading inside the content flow under the navPrimis
✓
Loads in the flowEnters under the nav with a headline beside it, above the article headline.
✓
Covers nothingDocks and stays for the whole read without sitting on text. No display ad in the first view.

Desktop

Where the float costs inventory rather than text
Old

Live page: float over the rail

Desktop article page today, the floating player sitting over the skyscraper adPrimis, floating
✕
Two ads in one cornerThe float lands on the 300x600 skyscraper, so two paid units compete for the same space.
✕
Undercounted hereThe live site also runs a billboard above the nav, which this prototype leaves out.
New

Redesign: docked in the rail

Desktop article page with the Primis player docked at the top of the right railPrimis, docked
✓
Nothing covers anythingThe player holds the top of the rail as part of the layout, with nothing underneath it.
✓
The rail still earnsRecirculation runs beneath it, suggested stories below that, and the ad unit further down.

Why this matters on desktop

Protecting the read did not cost inventory. It bought some.

On mobile, docking means the player stops covering the story. On desktop it means the player stops covering another ad. The obvious objection to a reading-first hierarchy is that it must come out of revenue, and on this page it does not.

Proposed direction

Dock the player.

Today the player sits on top of the reading experience and asks to be dismissed. Docked, it loads as part of the article and stays in view for the whole read without covering a word of it. The close button stays.

Section 5 · Prototype, refine, build

Prototyped in code. Finished in Figma. Built for real.

I built every part of the article page in code first, as a working prototype, using OpenCode. That let us judge each component with real content and real behavior before committing to a design.

From there I refined and finalized the designs in Figma and committed them to the system. Now they are being built into AP’s codebase, each one a fully functional component in Storybook, which becomes our coded library.

AP News Design System

Maple

Design system, in Figma

Storybook

Coded component library
  1. 1Prototype in code
  2. 2Refine in Figma
  3. 3Commit to Maple
  4. 4Build in Storybook

What we coded, shown at true proportions and at one shared scale, so the sizes compare honestly. The parts not pictured are named below.

Slot Components

Composite patterns built from base elements. Slot components accept structured content and render it in a defined layout.

Alert Bar

Campaign

Alert Bar, Campaign

Full-width red bar with one line of copy and an outlined pill button, here for Giving Tuesday.

Article Header

Left aligned

Article Header, Left aligned

Red section eyebrow, condensed headline, and a gray dek beneath it.

Engagement Bar

Filled and Outlined

Engagement Bar, Filled and Outlined

Google follow, Share, and a comment count, in both treatments at article width.

Byline

Stack, one author

Byline, Stack, one author

Photo, name, title, affiliation, bio, timestamp, and language link.

Audio Embed

XL, 622px

Audio Embed, XL

Inline audio player at the 622px article width.

Article Body

Lede emphasis

Article Body, Lede emphasis

A larger opening paragraph, then body copy at the reading measure.

Pull Quote

Attributed

Pull Quote, Attributed

Red left rule, the quotation in body type, and the speaker in condensed type.

Article Image

Horizontal, 3:2

Article Image, Horizontal, 3:2

Lead photo with caption, credit, and a license link.

Article Image

Vertical

Article Image, Vertical

Portrait photo held at its own proportions, 281.94 by 500, with the caption beneath.

Primis

Docked

Primis, Docked

More from AP video with a playlist and close button, sitting above the article rather than over it.

Recirculation Module

Related Stories

Recirculation Module, Related Stories

Three stories with thumbnails and read times.

App Promo

App Store

App Promo, App Store

Headline, one line of copy, and the App Store badge.

Newsletter Signup

Expanded

Newsletter Signup, Expanded

Newsletter name, a one-line pitch, and a Subscribe button.

Newsletter Signup

Compact

Newsletter Signup, Compact

Newsletter name with a single follow button.

Donation Card

Short appeal

Donation Card, Short appeal

Headline, two lines of copy, and a Donate Now button.

Donation Appeal Card

Editor letter

Donation Appeal Card, Editor letter

A signed note from AP Executive Editor Julie Pace, with her portrait and a Donate Now button.

Ad Unit

Rail sizes

Ad Unit, Rail sizes

160x600 and 300x600 skyscrapers and a 300x250 medium rectangle, with initial load and subload budgets.

Also in the library:

Author BioArticle CardHeroFeature GridArticle ListCarouselConversationHeaderFooter

Section 6 · From code to prototype

Code became an early design tool.

With the components built, assembling a whole article was composition rather than construction. Instead of waiting for a final handoff, I could put hierarchy, responsive behavior, modules and real article length in front of someone in a browser.

What we landed on is the visual system, measured against the live site. The two prototypes below are not a decision. They are the next round of tests, built so the questions the workshops left open can be answered against something real.

Two prototypes queued for testing

Scroll variants on mobile, both with the docked Primis player
Reader First Scroll prototype on mobile, Primis docked under the nav, reporting ahead of media
Prototype

Reader First

Reporting takes the opening. Headline, byline, then straight into the story, with the 320x50 banner after the byline and media further down. Queued to test whether a bolder entry changes how far readers get.

Natural Pause Scroll prototype on mobile, Primis docked under the nav, lead media after the headline
Prototype

Natural Pause

Headline, then the listen player and share row, then the lead image. Modules land at the breaks rather than in the opening. Queued to test module placement, not styling.

How AI changed my process

I prototype in code before the idea feels finished.

  1. 1DecideA design question comes out of research or a workshop.
  2. 2Build in codeA production-like prototype, built with AI assistance.
  3. 3Show the teamEditorial, Revenue, and Engineering react to the real thing.
  4. 4ReviseCompare, adjust, and go again while the question is still open.
Real responsive behavior
Real article length
Real component constraints
Faster cross-functional feedback

AI accelerated the making. Research and design judgment determined what was worth making.

Section 7 · From prototype to product

The prototype became the system.

The coded directions were not disposable demos. Working with Development, we translated the patterns into reusable Storybook components for AP's new headless front end.

Designers could now work with the same building blocks the product would use, making later experiments faster, more consistent, and easier to implement.

1Research evidence
2Figma components
3Coded components in Storybook
4Coded prototypes
5Live site

Design decisions became reusable product infrastructure.

View the live component library
Article header
Byline
Article body
Lead media
Audio embed
Pull quote
Related coverage
Newsletter signup
Donation card
Ad unit
Primis player
Alert bar

Cross-functional delivery

Revenue

Donations and Ad Ops

Product

Design and Development

Editorial

Story structure and trust

Section 8 · Testing and outcome

Test the direction, not the taste.

I first tested preference to choose a direction, then used a live experiment to learn whether the new hierarchy changed behavior without damaging the business around it.

Both preference studies set a variant against the same control: the article page as it was live at the time of testing, not as it stands today. Eleven participants across the two.

Preference tells you which page people say they would rather read. It does not tell you what they do. Both results below are directional, which is why the prototypes in section 5 are still queued tests rather than a decision.

Preference test 1

5 of 7preferred Reader First over the control

Points toward a bolder, reading-first hierarchy. Directional, not decisive.

Preference test 2

4 of 4preferred Natural Pause over the control

Points toward a lighter entry and a more deliberate module rhythm. Directional, not decisive.

Live experiment

Positive movement on both goal metrics

More readers reached the article end and continued to another story. Guardrails remained clean.

Across both studies, 1 of 11 participants chose the control. That control is the page as it was then, so the comparison is against what readers were getting at the time rather than against anything currently shipping.

+2.4%Article completion
+8.5%Articles per person
No regressionsBusiness and performance guardrails

What this project changed in my practice

Design the collaboration. Then design the page.

The strongest artifact was not a screen. It was a shared way for teams to see tradeoffs, make decisions, and carry those decisions into code.

Figma, AI-assisted prototyping, Storybook, and the live component library became one connected design workflow, not separate handoffs.

AP News · DES-119 Research, facilitation, product design, prototyping, testing
Next
Next

AP News: Donations