Bangalore, India Available for work
Hritik Arora
Hritik Arora
Product Designer
7 years · Currently at Upland Software

I turn ambiguous problems
into clear product bets.

I spend most of my time before the problem is defined. Consumer discovery at Amazon, enterprise systems at Upland. Different enough that what transfers between them had to be earned.

AI handles scaffolding. I don’t use it to frame problems or decide what a user meant. Those are the two places where being wrong is expensive and being fast is worthless.

Work

Selected case studies

2023E-commerceDiscovery+$10.9MM GMS · 28-day A/B

Amazon : Product Finder

Customers knew the job: "secure my front door." Not the product. A four-question flow translates that intent into the vocabulary the catalogue understands, turning a wall of results into a short, confident shortlist.

Read case study ↗
2023E-commerceConversion+$1.26MM revenue · 28-day A/B

Amazon : Know Your Purchase

The trust signals were already on the page, just scattered across it. Synthesized quality proof, review sentiment, and seller trust into one module a skeptical buyer could actually read before committing.

Read case study ↗
2025Enterprise SaaSModernisation14 → 4 fields

RightAnswers : Solution Manager Redesign

The brief was a UI refresh. The audit found six modules that had never shared a design model. Restructured Solution Manager end to end: navigation, forms, content lifecycle, solo, from audit to delivery.

Read case study ↗
2025Enterprise SaaSDesign system6 → 1 components

Upland : Date & Time System

Six products, six different date and time pickers, none built the same way. Defined one interaction contract, accessible by default, and shipped it as a component every team could adopt instead of rebuild.

Read case study ↗

How I work

Five steps, and the places I keep AI out of.

01
Frame the problem
Heuristic audit, support logs, constraints from PM and engineering.
ConfluenceTeamsAI · none
Research and synthesis
Interviews, then clustering. Every theme checked against source.
ClaudeConfluenceAI · clustering, verified by hand
02
03
Design and prototype
Flows and states first. Prototype in code, not Figma.
FigmaSplineClaudeAI · scaffolding
Test and iterate
Real users and stakeholders. Watch what breaks.
TeamsFigmaAI · none
04
05
Ship and measure
Spec the states nobody asked about. Then measure.
ConfluenceGithubClaudeAI · analysis support

Experience

2024 – Present
Product Designer
Upland Software
2021 - 2024
UX Designer
CX100 · Client work: Amazon, Jio Embibe
2020 – 2021
UX/UI Designer
Freelance
2018 – 2020
UX/UI Designer
League SX
Amazon India · Search & Discovery

Helping customers buy the right product in categories they don't know how to shop

Platform
Amazon India
Category
OHL · Search & Discovery
Scope
Pilot → global launch
Outcome
+$10.9MM GMS

A guided discovery experience for Amazon India's OHL vertical, built to close the gap between what a customer wants to do and the product that actually does it.

The problem
Customers arrived with clear intent and no vocabulary. Search matched keywords; it couldn't translate a goal into a specification.
My role
Sole designer, end to end. The audit, flow architecture, UI, the A/B experiment, and the case for global rollout.
The result
+$10.9MM incremental GMS in a 28-day test. A template carried the pattern across the vertical.
769 → 198 → 34 results in four plain-language questions, with the specification taught at the moment of choosing. 16.6s, no audio.

The intent-to-specification gap

OHL covers more than 1,000 product types, most bought once every few years: a lock when you move, a geyser when the old one dies. Customers show up knowing the job ("secure my front door") and almost nothing about the product that does it. Search "door lock" and the catalogue answers with rim locks, mortise locks, aldrop bolts, handle sets and digital locks, ranked against the keyword, not the person.

The vocabulary that unlocks the catalogue (lock type, material, finish, access method) is exactly what an infrequent buyer has no reason to own. The gap isn't missing results. It's the missing translation between intent and specification.

WHAT THE CUSTOMER KNOWS "I need to secure my front door." Clear goal. Confident about the outcome, nothing about the product. NO TRANSLATION ? WHAT THE CATALOGUE NEEDS Rim lock Mortise Padlock Aldrop bolt Digital lock Brass Handle set Deadbolt Filterable, but only if you already speak the language.
The gap, stated plainly. Intent lives on the left, the specification vocabulary on the right, and standard search offers no bridge between them.

How I knew this was the real problem

I didn't take the gap on faith. Before proposing anything, I audited three sources of evidence: two from customer behaviour and one from the catalogue itself. They met from opposite sides. Customers could describe the job, not the product. The catalogue was indexed on the product alone. That gave me a problem statement I could defend to skeptical stakeholders, and it pointed the whole solution at translation instead of ranking.

Signal 01

Search behaviour

A large share of sessions scrolled, re-queried and left without opening a product. People were looking without finding. Results weren’t missing. The way in was.

Signal 02

After the purchase

Returns, questions and reviews traced back to one root cause: the wrong type bought for the job. A mismatch of understanding, surfacing downstream as cost.

Signal 03

Catalogue audit

I went through the locks catalogue by hand. Every filter was expressed in seller language: type, material, finish, access method. Nothing described what a lock is for. The catalogue was organised around what a product is. Customers arrive knowing what they need it to do.

Prior attempts

Two fixes already existed. Neither one closed the gap.

Amazon India had tried to solve this twice. I used both tools the way an honest customer would, and wrote down exactly where each broke. That gave the search and ads teams a shared reference to argue against when the harder decisions came.

EXISTING · GUIDED NAVIGATION Filters Lock type▾ Material▾ Finish▾ Requires vocabulary the buyer doesn't have. Single-turn, no education. EXISTING · BUYING GUIDE Editorial article Right content, wrong moment: read before the decision, not during it.
Guided Navigation was fast, but it assumed expertise. The Buying Guide taught well, but it sat upstream of the decision, where few customers ever reached it.

Guided Navigation was fast, but it assumed you already knew

Guided Navigation was single-turn filter refinement with no education. To use it you already had to know the lock type, material and finish you wanted, the exact knowledge the customer lacked. It also couldn't grow. Its widgets shared placements with GCCP ad units and conflicted with dynamic ranking, so "add guidance to filters" was ruled out before it started.

The Buying Guide taught well, at the wrong moment

The Buying Guide was long-form education before selection. The content was sound. The timing wasn't. Chiclet choices were unintuitive, nothing branched, and nothing it taught became a live refinement. It asked customers to study before they could shop.

Product Finder had to be as quick as Guided Navigation and as informed as the Buying Guide. It had to deliver both inside the decision, under placement rules neither tool had to respect.

The insight

A discovery problem, reframed as a translation problem

Both earlier tools treated this as discovery: better results, faster. But speed does nothing for a customer who can't name what they're looking for. The real job was translation: converting plain-language intent into the specification the catalogue understands, and teaching just enough, at the right moment, to make the choice feel obvious.

Provide the right guidance during discovery so customers can find the most relevant product and make a confident purchase decision. The brief I wrote for myself, and held every decision to
THE OLD FRAMING "A discovery problem" Surface better results, faster. THE REFRAME "A translation problem" Turn intent into specification, and teach at the moment of decision.
One shift in framing reorganised the whole solution space: from ranking results to translating intent, with education moved into the flow.

Naming the gap this precisely was the highest-leverage move I made. It compressed a sprawling "improve discovery" mandate into one sentence India and Global stakeholders could agree on before any UI existed. Vague problems produce vague debates. A specific gap produces specific decisions.

Design strategy

Designing for 1,000 categories before designing one screen

Locks was the pilot, never the deliverable. A flow that only worked for locks would never earn a rollout across 1,000+ types, so the first decision was an architecture rather than a screen: a configurable Q&A template where question type, option format, education and branching are all config, not code. Get the template right and a new category becomes a content exercise.

Q&A TEMPLATE · CONFIG question_typeimage · text option_formattiles · price educationinline · below branchingby answer LocksPILOT Fans Water purifiers Geysers · Power tools + 995 more categories
One template, every category. Making the system configurable was the precondition for global expansion being viable at all.

Architecture before pixels, so the sequence held

I mapped the complete flow before opening a single screen: search → ingress banner → mandatory Q1 (location) → mandatory Q2 (lock type, with education) → contextual questions → filtered results with applied tags. Fixing the structure first meant UI exploration happened inside a stable frame, instead of quietly baking assumptions into early comps. I built this alongside engineering from the start, because a template is only real if it's buildable. Pairing early meant the config schema I designed matched what the platform could actually render, not an ideal it couldn't.

Search query"door lock" Ingress bannernon-intrusive Q1 · Locationmandatory Q2 · Lock type+ education Contextualoptional · branches Filtered resultsapplied tags
The end-to-end architecture, fixed before UI work began: two mandatory questions, contextual branching, and results carrying the answers through as removable tags. I built it alongside engineering, so the config schema matched what the platform could actually render.
02Flow & Ingress

Resolve structure

Fixed the flow and the ingress-placement debate with a business case, before any screen encoded an assumption.

03UI & Decisions

Explore & decide

Prototyped three UI patterns to expose failure modes, then locked each decision with a documented trade-off.

Three directions, prototyped to their failure modes

Each direction was built far enough to fail in a specific, instructive way. Two reproduced the exact problems of the tools we were replacing. The third became Product Finder.

Buying-guide-style exploration: a Lock Finder screen led by a video and long educational content before any selection, with chiclet options below.
Buying-guide typeRejected

Education-first. Chiclets read as unintuitive, and it was slow to the decision. The Buying Guide's problem in new packaging.

Accordion exploration: Product Finder questions stacked as collapsible accordion sections for lock usage, type, material and finish.
AccordionRejected

Stacked form. Tidier, but still front-loaded education. And it couldn't express multi-node branching, because a choice at one level never reshaped the next.

Filter-style exploration: Product Finder as an inline filter with image tiles, price ranges, expandable education below each option, and a live result count.
Filter styleShipped

Inline + branching. Education below each option, live result counts, real branching. As fast as navigation, as informed as a guide. The one direction that solved both.

Craft & trade-offs

Five decisions that made it work

Five decisions carried the most weight. The first was less a design choice than a negotiation with the team that owned the real estate.

01 · Ingress · the contested one

Winning a way in without taking from the ads business

The entry point was a revenue decision, not a design one. The high-visibility option (a dynamic inline widget) sat on top of GCCP ad inventory and dynamic ranking. Rather than design around a constraint I couldn't move, I took it to the ads team early and we settled on a written trade-off: a static "Find the right Locks" banner in a predictable slot that never competes for ad space or reorders results.

The trade I madeThe static banner is less prominent than a dynamic widget would have been. I accepted lower visibility for zero conflict with ad revenue and ranking, and turned discoverability into something we'd measure in the experiment rather than assume. I studied Groww's calculator entry as precedent: a quiet, task-focused affordance can still pull real traffic.
Amazon India search results page for 'locks', showing the 'Find the right Locks: Check the Product Finder' static banner placed between product listings, visually distinct from filter chips and ad units.
The static ingress banner, live on the locks SRP
02 · Questions

Mandatory questions that do the work, not the user

Q1, "Where would you use the lock?", is photo-based: pick Main Door, Bedroom, Window, Drawer/Wardrobe or Bathroom/Balcony. That sets the frame for Q2, "Main Door Lock Type," where each option is an image tile carrying its real price range, Rim lock ₹450-₹8120, Handle set ₹740-₹1900, Digital Door Lock ₹4000-₹50000, down to Padlock and Towerbolt. A live match count updates on every tap.

Free text and long dropdowns tested worse, for exactly the reason the project existed. They asked customers to produce vocabulary they didn't have. Image tiles carry the meaning instead, so recognition does the work rather than recall. The education ("Rim Lock: fixes on the edge of the door frame, no cavity needed") sits folded under the selected type. It's there when you want it, and out of the way when you don't.

  • Photo-based selection: recognition over recall
  • Real price ranges on the tiles anchor the choice in budget from the first tap
  • One answer required to proceed, so the flow never stalls on an optional field
Product Finder Q1 screen: 'Where would you use the lock?', photo tiles for Main Door (selected), Bedroom, Window, Drawer/Wardrobe and Bathroom/Balcony, with a Next button.
Q1 · Usage
Product Finder Q2 screen: 'Main Door Lock Type', image tiles with real price ranges for Rim lock, Handle Set, Digital Door Lock, Padlock, Aldrop and Towerbolt, an expandable 'Which lock type is right for me' education carousel, and a live 'See 198 results' count.
Q2 · Lock type
03 · Contextual branching

Questions that adapt to prior answers

Optional questions branch on the Q2 answer. Rim Lock asks about Material and Finish. Digital Door Lock asks about Access Method and Special Features. A generic set would have been simpler to build, but it would show irrelevant options the moment a customer committed. One wrong question costs more trust than five right ones earn back.

Q2 · Lock typeselection made Rim Lock Material Finish Digital Lock Access method Special features Filtered results
04 · Live result count

A running count that turns a form into exploration

Every selection updates a live count of matching products. Watching it fall from 769 → 198 → 34 reframes the whole interaction. Each answer visibly does something, so the flow reads as exploration instead of a form to endure. A step counter ("2 of 4") would have shown progress, but not that the answers were narrowing anything. The count does both, and every tap feels consequential.

MATCHING PRODUCTS 1,200start 769Q1 198Q2 34 final · curated set Each answer visibly narrows the field progress you can feel, not just read.
05 · How it shipped

Building the template into the pilot

The strategy had to survive a deadline. The fast way to launch the pilot was a hand-built flow. The durable way was to ship the configurable template underneath from day one. I made the case for the slower path. A bespoke locks flow would prove the idea, and then need rebuilding to prove it anywhere else.

The trade I madeShipping the template cost us time on the pilot that a one-off wouldn't have. In return, the day the India numbers came in, extending to fans, geysers or power tools was configuration. Portability was the precondition for the rollout being viable. It had to exist before the results, not after.
CONFIG question:"Which type?" format:image_tiles price_range:true education:below_option branch_on:answer Which type? Which is right? + Matches34 Continue
2-3
Contextual optional questions per lock type
4-6
Steps from search to filtered results
1,200→34
Products shown, unguided vs guided
1,000+
Product types the template supports
Validation & impact

28 days, a clean 50/50 split, one unambiguous result

I designed the experiment with the applied-science team: 28 days, 50% of India's OHL traffic, control on the standard results page and treatment on Product Finder. The primary metric was incremental GMS. The guardrail was ad revenue, the same GCCP concern that shaped the ingress decision, now measured directly. That let us prove the banner earned its slot without quietly taxing ads. It didn't. The treatment lifted GMS while holding ad revenue flat.

I led the readout and carried the numbers into the rollout conversation. The lift was clean enough that Global greenlit worldwide expansion off the India data alone. Because the template already existed, other teams could extend the pattern without a rebuild.

India traffic28-day window 50 / 50 CONTROL Unfiltered results · 1,200+ TREATMENT Product Finder · guided to 34 OUTCOME +$10.9MM incremental GMS → WW rollout Primary metric: incremental GMS ↑ Guardrail: ad revenue held flat
No ambiguity in the signal. The revenue outcome and the decision to expand globally were both direct outputs of the India result.
The treatment experience

What the guided path delivered

Where control saw an undifferentiated wall of listings, treatment landed on a curated results page. The customer's answers carried through as removable applied tags (Rim Lock, Zinc Alloy, Antique Brass), and the count collapsed to a relevant set. That is the endpoint the +$10.9MM was measured against: not more results, but the right ones, arrived at with confidence.

Product Finder results page: search reads 'Door locks for main door', with applied removable filter tags (Rim Lock, Zinc Alloy, Antique Brass) and a curated set of relevant lock listings.
The curated results the guided path produced
+$10.9MM
Incremental GMS28-day A/B experiment · 50/50 audience split · Amazon India
→ WW
India results directly triggered the worldwide rollout decision
28 days
Experiment duration
Clean test, unambiguous revenue signal
50 / 50
Audience split
Control vs treatment, India OHL vertical
1,200→34
Results narrowed
From undifferentiated catalogue to a curated set
1,000+
Product types supported
One template scales across all OHL categories
Reflection

What I'd carry forward, and what I'd revisit

Carry forward

Name the gap before you design

Framing this as an intent-to-specification gap compressed a broad "improve discovery" mandate into one defensible sentence. It's the highest-leverage move in a project. I now spend real time on it before touching a screen.

Carry forward

Constraints are a brief, not a wall

The ingress banner began as a limit from the ads business and became the sharpest decision in the project. Taking the constraint to the team that owned it, early, turned a blocker into a defined space to design inside.

Carry forward

Quantified feedback beats instruction

A live result count did more for perceived progress than any copy could. "769 → 198 → 34" told customers they were getting closer without a word of guidance. It's a pattern I've reached for well beyond this flow.

What I'd revisit

The static banner was right under the constraints. It trades visibility for safety, and I shipped it without fully knowing who the quieter entry point never reached. With the engagement data the experiment produced, the next iteration is a query-aware trigger that still lives inside the ad-placement rules, earning back visibility from evidence rather than assumption.

The through-line: scale is an architecture decision

The change that moved the most money was never visible in a single screen. It was the template that made every screen unnecessary to design one at a time. The intent-to-specification gap shows up anywhere customers know the job and not the product. Designing the pattern to travel from day one is what turned an India experiment into a platform decision.

Next project Amazon : Know Your Purchase → Turning Amazon's scattered trust signals into one confident answer for high-consideration furniture buyers.
Amazon India · Furniture PDP

Designing for confidence at the moment of commit

Platform
Amazon India
Surface
Furniture PDP
Scope
Launch → WW dial-up
Outcome
+14 bps · +$1.26MM

Know Your Purchase, a product-page module that turns Amazon's scattered trust signals into one confident answer to the question a furniture buyer is actually asking: should I commit?

The problem
On a considered furniture buy, the customer has already found the product. They stall at commit. The trust signals exist, but they sit scattered across the page and read as claims.
My role
Design lead, end to end: research synthesis, the module's IA and interaction, the ship-vs-ads negotiation, and the weblab.
The result
+14 bps conversion and +$1.26MM incremental revenue in a 28-day test. Enough to green-light a worldwide dial-up.
Both signals in situ: Quality Verified opened into inspectable proof and an accreditation modal, then 16,000 reviews resolved into aspect-level sentiment. 11.6s, no audio.

The signals were all there. They weren't arranged as an answer.

The furniture PDP was not missing trust signals. It had a "Quality Verified" badge, a warranty strip, customer ratings by feature, and thousands of reviews. The problem was arrangement. The signals sat scattered down the page as separate claims: a badge in one place, feature ratings far below, reviews below that. A buyer asking "is this actually any good, and can I trust who's selling it?" had to assemble that answer across screens. Most didn't. They stalled at commit, or defaulted to the cheapest option. Furniture makes the stakes plain. A bed or a sofa is a five-figure purchase. You choose it from photos and text, and you live with it for years. On a decision that size, evidence spread across the page is close to no evidence.

SCATTERED · THE OLD PDP Quality badge Warranty strip Feature ratings 🙁 "Is this actually good?" SCROLLS · BOUNCES SYNTHESISE SYNTHESISED · KYP Know Your Purchase Quality Verified · 20+ lab checks What owners say · by aspect Brand & seller trust What if it goes wrong One block. One read. One decision.
Not an information problem. A synthesis problem. The signals existed. The work was structuring them into one scannable answer at the point of hesitation.

Where the friction actually lived

The current PDP is the evidence. Trust cues are real, but disconnected. A replacement/warranty strip in one place, "customer ratings by feature" much further down, reviews below that. None of it framed to answer the buyer's underlying doubt.

Existing Amazon furniture PDP for a bed, showing trust signals scattered down the page: a 10-day replacement / Quality Verified / 1-year warranty strip, product details, and a separate 'customer ratings by feature' block far below.
The existing PDP, trust cues present, but scattered
The reframe

The four questions a buyer can't shake

Instead of "surface more trust content," I reframed the problem around the buyer's actual questions. Sitting with reviews, returns, and support logs, the hesitation nearly always reduced to four. A confident purchase is just a page that answers all four before the customer has to go looking. That reframe became the module's information architecture. Every element earns its place by answering one of the four.

THE BUYER ASKS KYP ANSWERS "Is it actually well made?"build, material, durability Quality Verified20+ lab checks, per-test proof "What do people who own it say?"looks, comfort, real use What customers sayaspect-level review sentiment "Can I trust this brand & seller?"who am I actually buying from Brand & Sellerratings, recency, order volume "What if something goes wrong?"the safety net Warranty & Supportreplacement, service paths
The four-question frame became the spec. If a proposed element didn't answer one of these, it didn't ship. That mattered enormously once space got scarce.

Annotating the proposed module against those questions made the intent legible to partners early, engineering, the reviews-science team, and the ads business could all see why each block existed, not just what it showed.

The proposed Know Your Purchase module: a Quality Verified lab-test video, then a 'What are customers saying' list with aspect sentiment: Looks & Design, Material & Build Quality, Comfort, Delivery & Assembly, Brand, Seller, Customer Service.
The module, mapped to the buyer's questions
Signal 01 · Verification

Turning a badge into proof

"Quality Verified" already existed as a badge. A badge is a claim, and a claim doesn't move a skeptical five-figure buyer. Evidence does. So the first module rebuilt Quality Verified as proof you can inspect: a lab-test video, a plain statement that the product cleared 20+ checks by a Govt-accredited lab, and a carousel that translates those checks into outcomes a person cares about: sturdy material, defect-free finish, flaw-free fabric and stitching, verified dimensions.

THE CLAIM QualityVerified A badge. Says nothing about why. PROVE THE PROOF Lab-test video 20+ checks Govt-accredited lab · NABL · ISO/IEC 17025 Sturdy material Defect-free finish Still skeptical? Read the accreditation → ISO/IEC 17025 · NABL · sample inspection · T&C
The trust ladder: badge → visible checks → per-test outcomes → a full accreditation modal for the buyer who needs to go deeper.
Decision · depth on demand

A modal for skeptics, not a wall of text for everyone

The accreditation story is dense: independent testing lab, ISO/IEC 17025, NABL, sample inspection, the badge awarded only after all checks clear. Early versions put all of that on the page, and design rightly flagged them as too textual. The fix wasn't to cut the credibility. Skeptics need it. The fix was to tuck it behind a "Know more" modal. Confident buyers move on. Doubters get the full proof one tap away.

Trade-offConsidered inline accreditation copy for maximum transparency. Chose a modal. The page stays scannable and short, which the ads constraint demanded, and the heavy proof is one tap away for the people who actually want it.
The Quality Verified detail modal: an expanded lab-test video and the full accreditation explanation, 20+ checks by an independent ISO/IEC 17025 lab accredited by NABL, with sample inspection and a quality badge awarded once all checks clear.
The accreditation modal, depth for the skeptic
Signal 02 · Reviews

Turning 16,000 reviews into a signal

The reviews carried real trust, and they were hard to use. Thousands of them, unstructured, hard to skim for the one thing you care about. Partnering with the reviews-science team, we distilled them into aspect-level sentiment, the dimensions people actually weigh a bed or sofa on: Looks & Design, Material & Build Quality, Comfort, Delivery & Assembly, Brand, Seller, Customer Service. Each shows as a % positive drawn from real review analysis, not a star average.

16,000 reviews ASPECT SENTIMENT Looks & Design91% Material & Build87% Comfort76% Delivery & Assembly80% Brand85% Seller75% Tap an aspect to drill down ↓ Looks & Design91% Looks88% positive"…grains look so royal" Design94% positive"…feels like a king" Filtered reviews · Positive 302 / Negative 56 Verified purchase · 5★"…quality and price is good. Support followed up…"
Aggregate → aspect → snippet → the full review. Every level down is optional; the buyer stops at whatever depth answers their doubt.
Interaction · progressive depth

From a number to the sentence that earns trust

A percentage builds confidence. A specific review sentence adds to it. So each aspect opens into representative snippets, and any aspect becomes a filter on the full review list: a Positive / Negative toggle, keywords highlighted in context. A buyer can go from "85% positive on build" all the way to reading the exact reviews behind it, without leaving the flow.

  • Aspect % anchors the judgment at a glance
  • Snippets make the sentiment concrete and human
  • Aspect-filtered reviews let doubt resolve itself against real evidence
The final review flow: 'What are customers saying' with Looks & Design expanded to Looks 88% and Design 94% plus snippets, and the aspect-filtered reviews screen showing Positive 302 / Negative 56 with keyword-highlighted review cards.
Aspect sentiment → aspect-filtered reviews
The constraint that shaped everything

The fight for page space

Here is what made this a hard design problem rather than a nice one. Two rich modules, verification and reviews, want a lot of vertical room. Page height on a PDP is not free. Everything the module added pushed ad placements further down the page, and past a certain point that costs measurable ad revenue. A feasibility review with engineering and the ads business was blunt: the tall, text-heavy versions would not pass for launch. The design had to fit the height the ads business could afford to give up.

The real brief wasn't "design a trust module." It was "design the most convincing trust module that fits inside the height the ads business can afford to give up."

AD-VIABILITY / HEIGHT BUDGET Text-heavy (AQA) "TOO TEXTUAL" · FAILS Full widget STILL OVER BUDGET Compressed final FITS · SHIPS ✓ ↓ ad inventory
Every exploration measured against one line: the height beyond which ad viewability, and revenue, drops. Convincing wasn't enough. It had to be convincing and short.

Three directions, killed for height before one survived it

We didn't arrive at the compressed module by taste. I built three directions, and each failed against a version of the same constraint before one survived it: too textual, too tall, or too heavy for tech to ship without dropping ads. What survived kept the proof and the sentiment and shed everything that was explanation for its own sake.

Exploration: Amazon Quality Assured, a text-heavy accordion with long accreditation copy and stacked Design/Strength/Assembly sections.
Text-first (AQA)Too textual

Accreditation and test detail as long copy. Credible, but a wall. Design flagged it, and the height was unworkable.

Exploration: the full Quality Verified widget with every aspect expanded, including images and per-aspect review cards, very tall.
Full widgetOver budget

Everything expanded: imagery, per-aspect cards. The most complete version, and the most over the height the ads business could give.

Final compressed module: Quality Verified video plus a collapsible aspect-sentiment list, fitting within the height budget.
Compressed finalShipped

Video proof plus collapsible aspects, with depth on demand behind taps. Same conviction, a fraction of the height. This one passed.

Compression became the design. Collapsible aspects, a modal for the accreditation, snippets and filters behind taps. Every rich thing still exists, but its default state is small. The page reads in seconds, and the depth is there for anyone who wants it.

Impact

Did it earn its space?

Because the module was funded, in effect, out of the ads business's page height, the bar was specific. The confidence it added had to outweigh the ad revenue its height cost. So the experiment measured that directly: a clean 28-day A/B, control versus treatment, 50% of India traffic, read on conversion and revenue. It cleared the bar, and cleared it well enough that the India result set up a worldwide dial-up of the weblab.

+14 bps
Incremental conversion (OPS-i)28-day A/B · control vs treatment · 50% audience · Amazon India
→ WW
India result set up the worldwide weblab dial-up
+$1.26MM
Incremental revenue
OPS lift over the 28-day window
28 days
Experiment duration
Clean control-vs-treatment read
50 / 50
Audience split
India, furniture PDP traffic
7
Trust aspects synthesised
From 16k+ unstructured reviews

The number I care about most isn't the revenue. It's what the revenue proves. A module built under a hard space constraint, with its richest content deliberately collapsed, still moved a five-figure-purchase decision. Confidence, structured well, was worth more than the page height it cost.

How it shipped

Convincing the people whose space it took

None of this ships without the ads and engineering partners agreeing to give up the height. The four-question framing and the compressed, depth-on-demand design were as much a negotiation artifact as a design one. They let me argue, concretely, that every pixel was doing trust work, and that the conversion upside was worth the ad trade. The weblab result settled the argument for the WW rollout.

The Know Your Purchase module in its full PDP context, sitting inside the product page below the buy box and product details.
The module in its PDP home
Reflection

What building trust taught me, and what I'd revisit

Carry forward

Confidence is a synthesis problem

The signals were all on the page already. The value wasn't new information. It was structuring what existed into a single answer at the moment of doubt. I now look for the synthesis before assuming I need more content.

Carry forward

Proof beats claims

A "Quality Verified" badge is a claim. A lab-test video and 20+ inspectable checks are proof. Turning the same fact from assertion into evidence is often the whole design job on a trust surface.

Carry forward

Constraints are a design tool

The ad-height limit forced depth-on-demand: collapse, modal, filter. The compressed module wasn't a lesser version. The constraint is what made it disciplined enough to ship and to work.

What I'd revisit

The module leads with positive sentiment, % positive up front, negatives one tap away behind the toggle. It converted, but I'm not sure it's the most trustworthy default. My instinct now is that surfacing balanced sentiment more prominently could build deeper, stickier confidence, especially for the most skeptical buyers. I'd want to test a more visible negative view against the current one rather than assume positivity-first wins. The second open thread is the lab-test video. It's the strongest single proof point, but I never measured whether people actually watched it or scrolled past. That number would tell me how much height the video truly earns.

The through-line

Product Finder was about the moment before you know what you want. Know Your Purchase is about the moment after, when you've found it and still hesitate. Designing for that pause is a different craft. Less about paths and filters, more about assembling scattered proof into the confidence to commit, and doing it in whatever small space the business can spare.

Next project RightAnswers : Solution Manager → Modernising an enterprise knowledge platform: earning the scope, then restructuring before touching the surface.
ENTERPRISE SAAS · KNOWLEDGE MANAGEMENT

Redesigning RightAnswers: When the Brief Needed Rethinking

PRODUCT
RightAnswers, Upland Software
ROLE
Lead Product Designer
SCOPE
Audit · IA · Flows · UI delivery
PLATFORMS
Salesforce · ServiceNow

Support agents using RightAnswers were spending more time navigating the platform than using it. The product worked technically, but the experience had accumulated years of structural inconsistency. The brief was a UI refresh. It became something bigger.

A product that worked technically. An experience that didn’t.

Enterprise knowledge management is a hard design problem. Support teams manage thousands of articles across product lines, juggling approval workflows, governance and taxonomies while agents pull answers under SLA pressure. A wrong or stale article costs time on every ticket that touches it.

RightAnswers had the integrations and the infrastructure. Solution Manager, the core authoring interface, was where it fell apart. The damage was structural, not visual. Modules had been built independently, with no shared model holding them together.

What was asked

Align Solution Manager with the Upland design system and clean up the visual inconsistencies. A well-defined brief, deliverable in weeks.

What the audit found

Structural failures beneath the visual ones, in the workflows, the information architecture, and the interaction model. A cleaner surface would have masked them, not fixed them.

What was delivered

A full UX restructure, now live across enterprise support teams globally, with Airbnb as a named deployment, and patterns contributed back to the Upland design system.

01 · EVIDENCE

What the audit found

The audit found one root cause behind six modules of symptoms. The product had been built feature by feature, for longer than its architecture could sustain. It showed in four places (the interaction model, the information architecture, the forms, and the content lifecycle) and each got worse at the scale RightAnswers was sold into.

Solution Manager before the redesign
The product as agents saw it every day. Navigation structured around system architecture, not tasks. The same feature set reachable through eleven separate entries.
Agents were working around the product, not with it. That's the clearest signal that a UX problem runs deeper than the interface.

Behavioural inconsistency across modules

Dropdowns that expanded in one module collapsed in another. Confirmation dialogs appeared inconsistently. Tab navigation broke without warning. Each module had been built as a standalone product, so users could never build confidence in a system that didn't work the same way twice.

Navigation organised around the system, not the task

Finding an article in review took a different path than finding one in draft, and bulk actions sat three levels deep. The product had menus for features. It needed menus for tasks.

Multi-step processes with no progressive disclosure

Article creation opened with 14 fields, metadata, categorisation, audience targeting, expiry, before a word of content. Experienced users built workarounds to defer them; new users made errors. Every interaction assumed all decisions had to happen at once.

Content lifecycle without governance guardrails

Articles moved between statuses with no audit trail, and expiry surfaced only after content had gone stale in front of customers. At thousands of articles per team, that absence was a real governance risk. Outdated answers reaching customers through agents with no way to know.

An interaction model that broke at enterprise volume

PATTERN AUDIT · SIX MODULES × FIVE FAILURE PATTERNSSolutionsCollectionsTaxonomyWorkflowsFeedbackAdminBehavioural inconsistency×3×2×3×2×3×2System-shaped navigation×2×2×1×3×1×2No progressive disclosure×3×1×2×1×1×2No lifecycle guardrails×1×2×1×3×2×1Breaks at volume×2×1×2×2×3×1Each dot: a distinct variant of the same interaction performing the same functional role.30 cells, no two modules matching. The root cause wasn’t a bug, it was the absence of a shared model.
Pattern audit, interaction variants mapped across all six modules, colour-coded by failure type. Five symptoms, one root cause: no shared design foundation.
02 · THE PIVOT

The case for more scope

Two weeks into the audit, the brief was wrong. Aligning Solution Manager with the design system and cleaning up visuals was deliverable in weeks, but it would have painted over structural failures instead of fixing them. So I made the case to expand scope, backed by the audit rather than by opinion.

A UI refresh delivered as scoped would have put visual consistency on top of a structurally broken experience. Agents would have seen a tidier interface and hit the same fragmented navigation, the same overloaded forms, the same missing states. The friction would have survived the redesign.

THE PIVOTFrom a refresh brief to a restructureTwo weeks turned a visual clean-up into a structural one, and reordered the work.WEEK 0The briefAlign with the Upland design system;clean up the visuals.WEEK 2The evidenceAudit surfaces structural failuresbeneath the visual ones.THE CALLRetire the briefCase made, before a single screenwas redesigned.DELIVERYFull restructureWorkflows, IA, interaction model visuals last.ORDER OF WORK1 · Workflows2 · Information architecture3 · Interaction model4 · Visual alignment, lastThe evidence retired the original brief: structure first, visuals last.
The pivot, as it happened: brief at week zero, evidence at week two, the call to retire the brief, and the order of work that followed, visuals last.

The expanded scope addressed four compounding problems, in a deliberate order:

  • The workflow problem: multi-step tasks with no progressive disclosure, presenting too many decisions at once
  • The IA problem: navigation structured around system architecture, not around user tasks
  • The consistency problem: six modules built independently, with no shared interaction model between them
  • The visual problem: UI misalignment with the Upland design system, addressed last, once the structure was resolved
THE TRADE-OFF

Accepted: running a full audit before opening Figma slowed the visible output in the early weeks. Gained: every decision that followed had a rationale grounded in evidence, not aesthetic preference. And a scope the stakeholders had already agreed to.

03 · STRATEGY

Structure before surface

With scope agreed, the sequencing was the strategy. Design the final UI last, not first. Without the structural work underneath it, visual consistency would only be cosmetic.

Discovery

AUDIT PHASE
  • Mapped every component and interaction pattern across all 6 modules, end-to-end
  • Identified divergent interaction patterns performing the same functional role across different modules
  • Traced navigation failures to their root: IA structured around system architecture, not user tasks or mental models
  • Produced a pattern audit that became the primary artifact for making the scope expansion arguable

User flows

FLOW PHASE
  • Remapped the article creation journey: surfaced the 14-field first-screen problem that was driving completion errors
  • Mapped the review and approval workflow: found that steps had been added over time without any ever being removed
  • Documented the gap between how flows were designed and how users were actually navigating them
  • Used flow mapping to establish the case for progressive disclosure before any interface design began

Information architecture

STRUCTURE PHASE
  • Restructured navigation around four user modes: authoring, organising, reviewing, administering
  • Reduced primary navigation depth from 4 levels to 2 across the most-used task flows
  • Renamed navigation items around user tasks rather than system feature names
  • Resolved the IA before designing any screens, giving the visual work a structural foundation to anchor to
01DISCOVERYAudited the interfaceA heuristic pass across Solution Manager, every inconsistency logged, then grouped.3ConsistencyNEW SOLUTION button differs byscreenDropdown icon side inconsistentHeader label missing its plural“s”3Feedback & affordancesNo tooltip on truncated textInline messages, notsnackbar/dialogColumns can’t be resized by drag3Findability & densityColumn picker: last-used not ontopNo sort by last-modifiedNo date-range filter or scoringhint3Navigation & layoutPagination cramped; belongs atbottomFilters vs. filter-iconconfusionArchived state missing fromfiltersWHAT USERS SAID“Confusing for first-time users”“Steep learning curve for newusers”“Using decision trees is like amaze”“Customers switch off at themention of KCS”Twenty-plus findings and direct user feedback, the map that turned a UI refresh into a system uplift.
A heuristic audit of Solution Manager, grouped into four themes, with direct user feedback.
02FLOWSRebuilt the sequenceThe as-is editor demanded everything upfront, the redesign staged it around writing.AS-IS EDITOReverything on loadREDESIGNEDstaged around writingMAIN CONTENT · 4 fieldsTitleAISummaryAIKeywordsAIMain bodyAIPROPERTIES · 8 on loadCollectionWorkgroupStatusLanguageRefresh dateSearch boostTaxonomyAttributesSUPPLEMENTARY · a dozen modalsSpell check · Review · Import · Find similar · +8 more1WriteTitle and body. Nothing else blocks the author.2ClassifyOn save: taxonomy, attributes, collection.3GovernDownstream: review, approvals, translations.14 fields → 4 on loadFrom the as-is inventory to a write-first flow, “create knowledge easily and enjoyably.”
The as-is editor’s upfront wall, restaged into a write-first flow.
03STRUCTURERestructured the IAA deep feature tree became a shallow, task-based map.BEFORE11 items · 4 levels deepAFTER4 task modes · 2 levelsSolution ManagerDashboardSolutions listNew solutionBulk editorTaxonomyAttributesFeedbackProcessTypesRecentManageL1 · L2 · L3 · L4AuthoringNew solutionSolution editorTemplatesOrganisingTaxonomyAttributesCollectionsBulk editorReviewingApprovalsFeedbackHistoryAdministeringSettingsPermissionsWorkgroupsL1 · L211 → 4 modes4 → 2 levelsShallow by design, every task reachable in two clicks.Navigation renamed around tasks, not features, IA resolved before any screens were designed.
A deep feature tree restructured into a shallow, task-based map.
04 · THE BETS

Three bets that shaped the redesign

These aren't visual improvements. They're decisions about how the product should behave, each with a cost accepted deliberately. The Upland design system alignment came after all three were resolved.

BET 01 · PROGRESSIVE DISCLOSURE

Showing the right things at the right time, not everything at once

Article creation opened with 14 mandatory fields before any content: metadata, categorisation, audience targeting, expiry, all on load. I cut it to 4, staged the rest, and surfaced governance fields contextually. Core content first, classification on save.

  • Staged creation: core content first, classification on save
  • Governance fields surfaced contextually, not on load
  • 14 upfront fields reduced to 4, remainder staged or removed
  • Classification errors reduced by deferring decisions until context existed
THE TRADE-OFF

Accepted: the step count increased slightly. Gained: the cognitive weight at each step dropped significantly, and completion errors fell with it.

PROGRESSIVE DISCLOSURE · ARTICLE CREATION1Write, core content firstTitle0 classification fields on load2Classify on saveCollectionTaxonomyTemplateAudience3Govern in contextExpiry · when relevant14 → 4Upfront fields, remainder staged or removedWrite → classify → governDecisions deferred until context exists;classification errors fell as a result
TASK-FREQUENCY ANALYSIS · COMMON SESSIONSSearch & open articleEdit / update contentChange statusReview queueAssign / approveManage taxonomyExportConfigure templatesAdmin settingsTop 20% of actions ≈the overwhelming majorityof daily interactionsLong tail moved behindexplicit affordancesNAVIGATION LANDMARKS11 → 4 primary sections · common tasks reachable in 2 interactions, previously four
BET 02 · TASK-FREQUENCY HIERARCHY

Organised by what people actually do, not what the product offers

Every screen had been designed for completeness: every option present, regardless of how often it was used. Action-frequency analysis of common user sessions showed that the top 20% of actions accounted for the overwhelming majority of daily interactions. The redesign surfaced those actions at the primary level and moved the long tail behind explicit affordances. Users stopped scanning full menus to find one item.

  • Primary actions surfaced by usage frequency, not alphabetical order
  • Secondary and admin actions moved behind explicit affordances
  • Navigation landmarks consolidated from 11 to 4 primary sections
  • Common tasks reachable in 2 interactions, previously four
THE TRADE-OFF

Accepted: the long tail now costs an extra click, and power users notice. Gained: the tasks people run hundreds of times a day stopped paying a scanning tax on every visit.

BET 03 · SHARED INTERACTION MODEL

One experience, not a collection of modules

The most consequential work was the least visible. Auditing every pattern across six modules exposed the full scope of the fragmentation. I unified it into one model, so learning one module means learning them all.

6 modules
Unified under one interaction model
One library
Shared pattern library replacing divergent logic
Upland-wide
Patterns adopted beyond this product
None
Re-onboarding required between modules
THE TRADE-OFF

Accepted: months of work with nothing visibly new to demo. Gained: users who learn one module have learned them all, permanently.

AFTER · ONE SHARED INTERACTION MODELSolutionsCollectionsTaxonomyWorkflowsFeedbackAdminDisclosure & dialogsNavigation & landmarksForms & stagingStatus & lifecycleTables & volumeStatus pillContextual action menuProgressive formInline disclosureFilter panelBulk action barSame matrix as the audit, every variant resolved to one behaviour. The same affordances mean the same things everywhere.
The unified component set, shared interactions applied across all six modules. The same matrix as the audit, resolved to one behaviour per pattern.
05 · CONSTRAINTS

Working the constraints

Solution Manager ships inside Salesforce, ServiceNow, direct portals and more, environments RightAnswers doesn't control. Every pattern had to hold up everywhere it rendered, not just in a clean Figma frame.

Support agents on SLA timers, knowledge managers accountable for governance, administrators managing integrations, each needed the same interface to behave predictably under very different pressure.

One designer carrying audit, IA, flows, component design and UI delivery. The artifacts had to do the persuading. The pattern audit argued for scope. The flow maps argued for the structure.

20+
Embedded deployment contexts, Salesforce, ServiceNow, direct portal
3 roles
Agents, knowledge managers, administrators, one interface, four modes
Solo
One designer across audit, IA, flows, components, and delivery
Evidence-led
Artifacts carried the stakeholder case at every phase
06 · OUTCOMES

What shipped, and what it changed

The metrics here are structural, not instrumented. This was an enterprise redesign, not a consumer product with A/B infrastructure. The evidence is in what the redesign retired: 14 fields to 4, six modules to one model, 11 navigation landmarks to 4. Now live across enterprise support teams globally, Airbnb among them.

BEFOREPre-redesign navigation
Pre-redesign IA: 11 primary items, grouped by feature and system architecture.
AFTERRedesigned navigation
Post-redesign IA: 4 primary sections, grouped around authoring, organising, reviewing, administering.
End-to-end
Content lifecycle redesigned as one system
Creation, review, approval, and expiry now behave as one governed flow instead of disconnected module features.
6 → 1
Navigation models unified
Six module-specific models replaced by a single interaction model users learn once.
Airbnb
Named enterprise deployment at launch
Among several large-scale support organisations running the redesigned product.
Upland
Design system contribution
Patterns extended into the broader Upland product suite.

The design system went in both directions

Aligning with the Upland design system was the final phase, and it ran both ways. The structural complexity of Solution Manager surfaced gaps in the system's own patterns. I fed them back, so the work strengthened the system it drew from.

The redesigned Solution Manager workspace
Redesigned Solution Manager, the delivered interface across its primary surface: guided filters, saved views, and a readable table at enterprise volume.
Redesigned solution history
Version history with change types and clear comparison entry points.
Redesigned compare view
Card-based compare: changes grouped and counted per section.
07 · HINDSIGHT

The project that was almost too small to change anything

Resolving the IA first made the design system work actually land

Visual consistency is meaningless on a fragmented navigation model. The component library would have looked correct in Figma and shipped compromises into every embedded context, because the structure underneath it hadn't changed.

Enterprise users reward predictability, not novelty

This user base isn't looking for delight. They're agents on SLA timers and managers governing large content estates. The redesign optimised for the thing they actually needed: an interface that behaves the same way every time.

What this project taught me about scope

A product's visual layer can be healthy while its structure fails. The only way to tell is to audit the flows, IA and interaction model first. That audit is what turned a cosmetic brief into a structural one.

The scope expansion was the senior move, not a discovery miss. It was the right call, at the right moment, with the right evidence. Redefining the problem before solving the one you were handed is often the whole job.

Next project Upland : Date & Time System → Collapsing six uncoordinated date and time pickers into one accessible component the whole product suite shares.
UPLAND DESIGN SYSTEM · COMPONENTS

One Date & Time System to Replace Six Fragmented Pickers

PLATFORM
Upland Design System
CATEGORY
Design Systems · Components
SCOPE
Audit to adoption
IMPACT
Multi-product · WCAG AA

Every Upland product asked people for a date and a time. No two products asked the same way.

Date and time entry had grown the way it usually does: product by product, deadline by deadline. One product opened a custom dropdown under the field. Another used a pair of native selects. A third relied on a masked text field. A fourth had inherited a third-party widget nobody wanted to touch. Each behaved differently, validated differently, and failed differently.

Product ATimeFilterSortProduct Bhh:mmFilterSortProduct C07:35 PMFilterSortProduct D7:35 --FilterSortProduct ETimeFilterSortProduct FHHMMFilterSortSix products · six uncoordinated implementations of the same patterns · no shared foundation
The before state: the same interaction, rebuilt independently across the product suite, different entry metaphors, different validation, different accessibility.

The audit surfaced two consistent gaps. A consistency gap: the same task resolved through four different entry metaphors and two time formats, so nothing users learned in one product transferred to the next. And an accessibility gap: keyboard support and ARIA behaviour ranged from solid to absent, with no shared standard to audit against.

We weren't designing a picker. We were designing the one interaction every product borrows. It had to behave like infrastructure, not like a feature.

01 · SUMMARY

The short version

The gap

Date and time pickers existed in six uncoordinated versions across Upland products. Interaction models, validation rules, and accessibility all diverged. Every product team paid the maintenance bill separately.

The approach

Audit every implementation across products. Define one interaction model. Design a modular Date & Time Picker family for the Upland Design System, with accessibility as a hard constraint and engineering in the room from the first spec.

The result

One unified model adopted across products, with every state and variant documented. A reusable field-and-picker foundation that removes duplicated design and development work from every future form.

02 · CONTEXT

My role on this project

I led the component work end-to-end: the cross-product audit, the interaction model, component architecture, accessibility decisions, and delivery specs. I worked with product managers to anchor the design in real product requirements rather than a hypothetical ideal, and with engineering to pressure-test feasibility and edge-case behaviour before anything was marked ready.

The design decisions I drove centered on:

  • One interaction model across every product and form factor, the desktop dropdown and the mobile dial share the same states and the same outcomes
  • Accessibility as an architectural constraint from the first spec, not a compliance pass at the end
  • Component APIs modular enough to fit each product’s requirements without forking behavior
  • State and variant documentation complete enough that adoption needs no translation between design and engineering
03 · AUDIT

What six versions of one component look like

I catalogued every date and time entry point across the suite and scored each implementation on the things that actually determine user experience: the entry model, time-format handling, keyboard operation, and ARIA behaviour. Visual drift was the least of it. The deeper problem was that the interaction contract changed from product to product.

THE AUDITSame intent, four metaphors, no shared rulesEach pattern from the scan, scored on how a value is entered, shown, and confirmed.SURFACEENTRY METAPHORFORMAT SHOWNCONFIRM / FEEDBACKRange pickerCalendarNov 16 - Nov 22Cancel · OKDate filterTypedmm/dd/yyyynoneRange calendarCalendar3 months shownquick chipsInline fieldTypedMM/DD/YYYY hinterror inlineTime entryTypedh:mm + AM/PMon commitH/M stepperStepperh : mmCancel · SetTime listListHH:mm 24hauto-commitFour entry metaphors:CalendarTypedStepperListFormats, confirmation and keyboard behaviour disagree even inside one metaphor.
The audit matrix. Four entry metaphors, inconsistent formats, patchy keyboard and screen-reader support, and a clear consolidation call for each implementation.

The matrix did more than describe the problem. It made the consolidation decision defensible. Stakeholders didn't have to be persuaded that fragmentation existed, they could see which implementation carried each strength, and what the unified model needed to keep from each.

04 · INTERACTION PRINCIPLES

One model, two form factors

Before drawing components, I defined the contract they all had to honour. Components change. The contract is what makes six products feel like one platform.

ONE MODELTrigger → pick → confirm → committedEvery variant follows one interaction contract, in two form factors.Trigger fieldOne anatomy: label, value, iconPickerDocked · modal · dial · inputConfirmCancel / OK, or auto on selectCommitted valueFormatted, validated, announcedDESKTOPDocked panel by default, modal availableMOBILEModal by default, both form factors share the modalOne contract across date and time, the variants differ only in the picker surface.
The unified model: trigger field → picker → confirm → committed value. Desktop opens under the field; mobile opens a modal dial. Same states, same outcomes.

Field, picker, confirmation, in that order, with the same actions in the same places. A user who learns the picker in one Upland product already knows it in every other.

On desktop the picker opens under the field. On mobile it opens as a modal dial. Different rendering, identical states and outcomes. The form factor is an implementation detail, not a different design.

Every picker carries an input toggle. People who know what they want to type shouldn't be forced through a widget to say it.

Constrained inputs prevent the mistakes they can. Clear error states and unambiguous recovery handle the rest.

Where established platform patterns matched user expectations, we followed them. Invention was reserved for genuine Upland product needs, not for novelty.

05 · COMPONENT ARCHITECTURE

A modular family, not a monolith

Date and Time Pickers shipped as one family assembled from shared primitives: the trigger-field anatomy, the header with the selected value, a selection surface, calendar grid or clock dial, and the action bar. Products configure the family to their requirements. They don't fork its behaviour.

DATE SIDEThree types, one anatomyDocked, modal and modal-input, sharing the trigger field, states and views.DOCKED12/24/2023▦September 2024 ▾MODALSelect dateTue, Sep 26CANCEL OKMODAL INPUTEnter dateMM/DD/YYYYHeadline · outlined field · text buttonsCANCEL OKSTATESInactiveFocusedOpenedOpened · dateOpened · monthOpened · yearRead-onlyDisabledDisabled · hoverRange selectorVIEWSDate inputRangeRange inputDate selectorMonth selectorYear selectorConstraints: fixed height · fixed width · with / without icon · with / without labelThe taxonomy from discovery: types × states × views, under one set of constraints.
The date side of the family: shared trigger-field anatomy, the calendar surface, and the primitives both components are assembled from.
TIME SIDETwo entry modes, one contractTyped input and clock dial, the same states, confirmation and period selection.INPUTEnter time07:35AMPMHour · minute · period selectorCANCEL OKDIAL121234567891011Clock dial: centre, track, selectorSTATESInactiveFocusedOpenedHour selectedMinute selectedOpened · inputRead-onlyDisabledDisabled · hoverTime range selectorVIEWSInputInput · dialLandscape inputHourMinuteAM/PMBoth modes live in one component, the dial is a view, not a different picker.
The time side: entry and dial variants, the full state matrix, breakpoints, and motion tokens, ready to use, not ready to finish.
  • Modular slots, the same anatomy carries date, time, and combined date-and-time entry
  • A full state matrix per component: empty, focused, per-unit selection, filled, error, read-only, and disabled, each designed, not implied
  • Breakpoint behavior and motion tokens documented alongside the layouts
  • 12- and 24-hour support driven by locale, not by product-level overrides
06 · ACCESSIBILITY

Accessibility as an architectural constraint

The audit's accessibility gap set the bar for the redesign. Every component in the family is fully keyboard-operable, every interactive state has an explicit ARIA decision, and behaviour is screen-reader tested before it's marked ready. Designing to that constraint from the first spec forced every interaction state to be explicit, which made the components better, not just compliant.

ACCESSIBILITYDesigned in, not bolted onThe system component, annotated, semantics, keyboard, announcement and motion.ENTER TIME07:35AMPMHourMinuteCANCEL OKrole="dialog" aria-modalaria-label="Select minutes"focus ring ≥ 3:1 contrastKEYBOARDTabnext control← →adjust valueEnterconfirmEscdismissSCREEN READER“Time, 7:35 PM, minutes selected, 35”Reduced motion respectedrole, labels, focus contrast, a full keyboard map and screen-reader wording, specified with the component.
The accessibility spec: keyboard legend, ARIA annotations per state, focus and contrast standards, and reduced-motion behavior.
  • Full keyboard operation, Tab between controls, arrows to adjust values, Enter to confirm, Esc to dismiss
  • An ARIA decision for every interactive state, announced values included
  • Focus visibility and contrast held to WCAG AA across every state and variant
  • Reduced-motion preferences respected in every animated transition
07 · COLLABORATION

Designed with engineering, not handed to it

Product managers kept the component honest about real requirements: which formats their users actually work in, which constraints their forms actually need. Engineering reviews shaped the component API and settled behaviour questions early, while they were still cheap to change.

Designed in the happy path. Decided in the edge cases.

Locale formats and 12/24-hour handling, min/max constraints, disabled dates and ranges, prefilled versus empty fields, how invalid entry recovers. Those working sessions with engineering are where the picker stopped being a mockup and became a contract both disciplines could build against.

WITH ENGINEERINGBuilt in the open, questioned in the openThe real discussion points from build reviews, resolved in the spec.?Uneven bottom bar sizeFooter heights differed between variants, one spec now pins them.?Widths going decimalText width 17 forced sub-pixel widths, rounded at the token level.?Uneven symbol sizesIcons differed between mobile and desktop, one asset set, two densities.?Path vs. lineWould stroke rendering differ? Verified together before the spec froze.Raised as “points to discuss” in build reviews, answered in the spec, not left to interpretation.Sub-pixel widths, symbol parity, footer heights, path-vs-line, craft questions, answered once.
The handoff artifact: live documentation where every prop, state, and accessibility behavior is explorable in the browser, adoption without translation.
08 · IMPACT

What changed

6 → 1
Fragmented implementations replaced by one interaction model
Learn the picker once, know it in every Upland product.
1
Source of truth for date & time entry
One spec and one component family, adopted across products instead of rebuilt per team.
WCAG AA
Accessibility baseline across every state and variant
Keyboard operation, ARIA decisions, and screen-reader behavior verified before ship.
2
Components, one foundation
Date and Time are assembled from the same primitives, field anatomy, action bar, and state system now seed future form components.
  • Design and development duplication removed for date and time entry, product teams consume the component, they don’t rebuild it
  • Consistent behavior across products and edge cases, agreed with engineering before release rather than discovered after it
  • A reusable foundation that shortens the path for every form-heavy feature that follows
IMPACTFull variant coverage, ready to useThe same component, everywhere, six scattered implementations resolved into one.ENTER TIME07:35AMPMHourMinuteCANCEL OK7:35 PMTimeCOVERAGE6 implementations → 1 componentDate + time · desktop + mobileAll states specced, ready to useOne picker for date and time, both form factors, every state, adopted as the system standard.
The system in three artifacts: full variant coverage, one implementation per pattern, and documentation teams can explore instead of interpret.
09 · LOOKING BACK

Lessons learned

Six pickers side by side ended debates that no deck could. When stakeholders can see the fragmentation, and see exactly what each implementation does well, the consolidation conversation moves from whether to how.

The component was designed in the happy path and defined in the edge cases. The sessions with engineering on locales, constraints, and error recovery contributed more to the final quality than any polish pass on the visuals.

Teams didn't switch because a system existed. They switched because every state was already designed, every variant already documented, and the cost of adopting was lower than the cost of maintaining their own. That's a design outcome, and it was deliberate.

What I'd explore next: extending the model to range selection and duration entry, and deepening locale coverage. The same contract, stretched over the adjacent problems products will hit next.

Back to the start Amazon : Product Finder → A guided discovery tool for categories where customers know the job but not the product.