Enter password

Product Designer · Palmstreet

David Yeo

I design modular product systems that reduce operational chaos at scale.

Design System· Shipping Infrastructure· Live Commerce· AI as Thinking Partner· Figma → Storybook → Netlify· Seller Fulfilment· $3.3M/wk GMV· Design System· Shipping Infrastructure· Live Commerce· AI as Thinking Partner· Figma → Storybook → Netlify· Seller Fulfilment· $3.3M/wk GMV·
👨🏻‍🎨

About

Product Designer at Palmstreet. Using AI as a thinking partner: I design structured, scalable systems across 12+ product areas on a $3.3M/week live commerce platform. Design systems in Storybook. Shipping infrastructure. Live commerce features.

Figma Storybook Claude React TypeScript Slack Notion Git Granola Netlify

Animated Explorations

Interaction Prototypes & Motion Studies

Concepts exploring motion, feedback, and delight.

Animation Settings
TypeCharacter-by-character scramble
EasingLinear reveal
Char Delay30ms
Hold1200ms
LoopInfinite

Interaction 01

AI Generation Progress

Glitch-text loading animation for PalmStreet's Talk & List AI. Status messages scramble and resolve character by character while a sparkle icon spins, cycling through photo analysis, species ID, and listing generation.

No new listings
Animation Settings
TypeSpring physics
EasingCustom spring curve
Stiffness180
Damping12
Duration600ms
Delay0ms

Interaction 02

Pull-to-Refresh

Branded refresh with sprout lifecycle. Seed sprouts into a blooming plant during load, then wilts into an empty state when no content is found. Pull, grow, wither, repeat.

Home
Search
Saved
Profile
Animation Settings
TypeProperty interpolation
EasingEase In Out
Curve.42, 0, .58, 1
Duration250ms
Delay0ms

Interaction 03

Tab Bar Morph

Bottom nav with icon-to-label morph. The active tab expands to reveal its label while siblings compress. Pure CSS transitions.

0:12
Live Now
Animation Settings
TypeContinuous while held
EasingLinear
Duration1000ms
LoopInfinite

Interaction 04

Auction Countdown

Live auction timer with colour-shifting urgency ring. Green to amber to red as time runs out. Designed for live commerce streams where every second counts.

Current: $42.00
Bid placed
Animation Settings
TypeTap with ripple feedback
EasingEase Out
Curve.25, .1, .25, 1
Duration350ms
Delay50ms

Interaction 05

Bid Ripple

One-tap bid with material ripple feedback. Confirmation appears inline so the buyer never loses context during a live stream. Designed for speed under pressure.

Fulfilment Progress
Label purchased
Weather check
Heat pack added
Shipped
Animation Settings
TypeStaggered steps
EasingEase Out
Duration400ms
Stagger600ms
LoopInfinite

Interaction 07

Fulfilment Stepper

Four-step progress indicator with staggered dot reveals. Each step lights up sequentially with a green glow — label purchase, weather check, heat pack, ship confirmation.

Case Study 01

Palmstreet's Design System: Tokens, Storybook, AI, Playground.

Product Designer (sole designer) · AI-augmented workflow

Aug 2025 - Present Active

Display Large24 / 700 / -0.02em
Heading18 / 600 / -0.01em
Body14 / 400 / 0
Caption12 / 500 / .08em
Overline10 / 400 / .12em
Primary#B9EC51
Surface#121212
Card#1E1E1E
Success#5ABF73
Warning#F5931E
Error#E53935

Five type scales and six core colors, defined as JSON/TypeScript tokens that engineers import directly. No guessing at hex codes or font sizes - every value traces back to a single source of truth.

The token architecture bridges Figma and code. Change a value in the token file, and it propagates to Storybook, docs, and shipped product.

Primary Secondary Destructive Ghost
Small Default Large
Disabled Hover Pressed
Search...

Four button variants across three sizes with full state coverage: default, hover, pressed, disabled. Every variant maps to a Figma component with matching props.

Form controls (inputs, toggles, selects) follow the same token-driven approach. Engineers use the same prop names in code that designers see in Figma.

Shipped Pending Cancelled Gold Seller
DY
David Yeo
Product Designer
NOTIFICATION
New order #PS-4821 received
New
spacing.md
16px
radius.lg
12px
shadow.card
0 4px 24px

Status badges, avatars, notification rows, and spacing tokens - built as atoms that compose into larger patterns. Each component documents its own props, variants, and usage.

Atomic design approach: tokens feed atoms, atoms compose into molecules, molecules assemble into organism-level patterns engineers can drop into any feature.

Monstera Albo Cutting
@planthaus_to · Live Now
$145.00$180.00
#PS-4820
@rare_coins_nyc
Shipped
PH
PlantHaus Toronto
Gold Seller · 94% ship rate
Gold

Product cards, order rows, and seller profiles - three core patterns that repeat across the entire platform. Each is built from the same atoms: badges, avatars, type scales, and spacing tokens.

Patterns are documented with real data so engineers see exactly how content fills each slot. No lorem ipsum.

Design Drift
Button Color
#34C759
Token
#B9EC51
Body Font
16px
Token
14px
Card Radius
8px
Token
12px
6 of 12 values drifted from tokens

Every new feature started from scratch. Engineers who needed a colour or spacing value had to guess, eyedrop from Figma, or ask. The design file and the shipped product drifted apart with every sprint.

One designer covered 12+ product areas. Feature work couldn't stop for the system to get built. It had to happen in the margins, in parallel.

12+ simultaneous product streams, 1 designer

A design system is not a component library. It is a decision-making framework. The purpose is not pre-built buttons. The purpose is that every design decision gets made once, documented, and applied consistently.

Three jobs ran in parallel: reasoning about structure, executing in Figma, and evaluating tools. Separating them is what made solo execution possible.

"Choosing a token naming convention is design strategy. Building the colour ramp is execution. Each job needed a different tool."

Token Pipeline
🎨
Figma Variables
Color, type, spacing tokens
{ }
JSON / TypeScript
tokens.json → theme.ts
📖
Storybook
Live component docs
🚀
Netlify Deploy
ps-design-system.netlify.app
Deployed ✓

Five Phases

Phase 1: Traditional Figma. Components. No tokens. No code layer.

Phase 2: AI tool evaluation. Tested 6+ tools with a framework: what does this tool do well, what does it fail at, and where does it fit?

Phase 3: Claude as thinking partner. Token naming decisions, documentation drafts, competitor analysis, PRD structure.

Phase 4: Design system as code. JSON + TypeScript token files. Deployed on Storybook via Netlify.

Phase 5: Playbook. Usage guidelines. Engineering coordination. DS tokens referenced in audits.

Skeleton first, then layer. Core atoms only: type, colour, spacing, buttons. No complex components. Stakeholders asked "where are the modals?" The line held. Premature components create maintenance debt.

Separate design tokens for design and code. Figma variables are design-side. JSON/TypeScript files are the code source of truth. Two representations create a sync obligation. Worth it for the handoff friction it removes.

Storybook as shared reference, not Notion. A Notion page goes stale. Storybook is a URL anyone can open that renders actual components.

Shared repo for handoff and exploration. Local prototypes live alongside production components in the same repository. Engineers pull the branch, run Storybook, and interact with the design — no Figma access required. Exploration and handoff happen in the same place.

Claude for thinking, Figma Make for prototyping. Not interchangeable. Claude handles reasoning and design strategy. Figma Make handles interactive prototypes.

I built a local prod repo that consumes the design system tokens directly. Every prototype is a real component using real spacing, type, and color — no Figma-only fidelity gap.

Vercel auto-deploys every commit. PMs and engineers review prototypes via share-link, not screenshots. This is now the team's default review surface.

playground.vercel.app/refund-flow
Deployed · 2m ago
Copy link
Button Submit Refund
Status chip Approved
Color tokens
Type sample Aa heading / 16
Live
ps-design-system.netlify.app
3
AI tools adopted by team after evaluation
~50%
Time savings (Yufan, Pencil AI)
Active
Tokens in fulfillment engineering audit

"Mind blowing." — Yufan, PM

Design SystemAI EvaluationToken Architecture StorybookClaudeFigma Make
Same tokens, different surfaces
Seller Hub
PlantHaus Toronto
Gold · 94%
42 active orders
Create Label
Buyer Feed
🪴
Monstera Thai
$145Live

Same buttons. Same chips. Same colour tokens. Different surfaces — seller dashboards on desktop, buyer feeds on mobile, admin tools in between.

The system stops being a Figma library and becomes a shared vocabulary across product areas.

Within two months, every product area pulled from the same tokens. No more colour drift. No more guessing at spacing. Engineers shipped faster because they stopped reverse-engineering Figma.

Adoption Map
ShippingAdopted
OrdersAdopted
Live CommerceAdopted
Seller HubAdopted
AdminMigrating
Buyer WebQueued

Building a design system solo is prioritization, not craft. The hard part is deciding what not to build yet.

The surprise: AI as thinking partner, not UI generator. Token structure and tradeoff analysis proved most valuable. Articulating a problem clearly enough for AI to engage forces more precise thinking.

Case Study 02

Shipping & Fulfillment Infrastructure for $3.3M/wk Live Commerce.

Product Designer (sole designer) · Mobile + Web

Aug 2025 - Present Active

Competitive Audit
FeatureWhatnoteBayTikTokPS
Bulk Labels
Weather Check~~
Insurance
Hold Shipments~
Fee Display
Smart Rates~
Palmstreet: 3 / 11 features

Palmstreet ships live plants, reptiles, coins, and jewelry. When I joined, sellers purchased labels one at a time. No safety checks. No insurance. No bulk tools.

The gaps were costly. One antique seller stayed on a competitor because we lacked insurance. During cold seasons, live animals arrived dead: nothing flagged weather risk before shipment.

A competitive audit made the gap concrete: Palmstreet lagged behind Whatnot, eBay, and TikTok Shop on 8 of 11 core fulfillment features.

8 of 11 features missing vs. competitors

Every gap created downstream trust damage. A missing insurance option lost a seller. A bad weather tag killed a live animal. A wrong fee display eroded buyer confidence mid-stream.

Fix these in isolation and they conflict. Fix them as a system and each piece reinforces the next.

"Shipping was not fifteen separate features. It was one trust chain."

Shipping Orders
#48291 Monstera Thai · 4" Pending
#48292 Philodendron Pink Shipped
#48293 Alocasia Dragon Ready
Order #PS-48291
Monstera Thai · @cactus_mom · CA → NY
Weather Hold Safe to Ship
Label purchased
Weather check
Heat pack added
Shipped

Layer 1: Detection

Weather Check takes the ship-out date, shipping service, and buyer's ZIP code. Queries forecasted weather along the route. Returns a tag: Safe, Heat Pack, Cold Pack, or Do Not Ship.

Edge cases handled: multiple shipping services with different transit times, incomplete ZIP codes, address changes after the check runs.

All Ready to ship Shipment created Archived
RootRamblerIsabella Rose Taylor $345.45 Priority Mail Yesterday 02:15 Paid
TechGuruJason Lin $90.00 Priority Mail Oct 24, 11:50 Paid
NatureNerdAmelia Green $100.00 Priority Mail Oct 25, 09:30 Paid
3 selected
Weather Check ×
Checking weather along the route…
3 customers checked. 1 safe to ship, 1 needs a heat pack, 1 needs a cold pack.
USPS Priority MailSep 12, 2025
CustomerDest.Avg °FTag
RootRambler· Isabella
7875774°FSafe to ship
TechGuru· Jason
4567440°FHeat pack
NatureNerd· Amelia
3457389°FCold pack

Feature preview

Sellers select a batch of orders and run Weather Check. The system queries forecasted weather for each shipping route and tags every order with a verdict: Safe, Heat Pack, Cold Pack, Insulation, or Do Not Ship.

Sellers configure their own thresholds in Settings — min and max safe range, heat-pack zone, insulation zone — so the verdict matches what they ship.

Layer 2: Policy

Smart Shipping: $7.49 flat rate per 5lb USPS Ground Advantage box. One price. No decision fatigue. Modeled after Whatnot's approach because sellers already understood it.

Insurance: XCover via Shippo at 1.25% of insured value. One antique seller had stayed on PirateShip solely for this. Japan LA flagged it for high-value collectibles.

Shipping Settings
Smart Shipping
Rate $7.49 flat
Carrier USPS Ground Advantage
Max Weight 5 lb
Insurance XCover · 1.25%
Save Settings
Order Detail
#PS-48291 Active
Monstera Thai · 4"
Buyer: @cactus_mom · CA → NY
Hold Shipment
Weather risk
Buyer requested
Plant health check
Hold expires: 90 days
Confirm Hold Release

Layer 3: Execution

Unified shipping fee rules across LIVE, Purge, and Marketplace. Sellers see one system, not three. Built a priority-based dynamic fee display engine targeting >99% accuracy.

Hold Shipments replaced a seller workaround: ~44 daily orders using $0.50 "Hold Order" items to fake a hold. The real feature uses order-level holds with 90-day max and auto-release.

Every project connects. Weather Check could not exist without Shipment Management. Insurance could not ship without a solid label purchase flow. Hold Shipments only made sense once Weather Check created orders that needed holding.

Shipment Management (bulk) ← foundation → Weather Check → flags unsafe orders → Smart Shipping → One-Rate Program → Insurance & Signature ← add-ons → UPS Ghost Account ← on-demand carrier Fee Engine: unified rules + dynamic display + fraud gate
38,299
Shipments created
195,568
Orders processed
120+
Active sellers on system
$3.3M/wk
Platform GMV (record)

"One of the best features Palmstreet has built." — Yufan, PM

ShippingWeather CheckSmart Shipping InsuranceHold ShipmentsFee Rules
Seller Label Creation
1. Order Detail
#PS-4821
Monstera · CA→NY
@cactus_mom
Item · Wt · Dim
4" pot · 1.2 lb · 6×6×8
2. Smart Defaults
CarrierUSPS Priority
Insurance$50 incl.
Weather hold⚠ 32°F NY
Total
$8.42
3. Print
📄
Label Ready
Download PDF

Three-tap flow on mobile, single-page on web. Smart defaults pull from order context — carrier, weight, insurance, even weather holds for fragile plants in cold-weather destinations.

Same data model. Different UI surface depending on where the seller is.

Buyers historically distrusted live commerce shipping fees. Hidden markups eroded conversion. The redesign exposed every line item — weight-tier shipping, optional insurance, platform fee — so buyers could see what they were paying for.

Trust compounded: ship-confidence drove repeat purchases.

Checkout Summary
🪴
Monstera Thai
@planthaus_to · Live
$145.00
Item$145.00
Shipping (USPS Priority, 1.2 lb)$8.42
Insurance (up to $50)Incl.
Platform fee (6.9%)$10.00
Total$163.42
Confirm Purchase

Execution was the strength. The growth edge was getting upstream earlier — initiating research before anyone asked. That shift started with the next project.

Individual friction compounds: a 2-hour packing run becomes 6+ hours when regressions chain.

Weather Check· Smart Shipping· Insurance· Hold Shipments· UPS Ghost Account· Fee Rules· 15+ Projects· One Trust Chain· Weather Check· Smart Shipping· Insurance· Hold Shipments· UPS Ghost Account· Fee Rules· 15+ Projects· One Trust Chain·

Case Study 03

Bilateral Order Requests: A Reusable Pattern for Live Commerce.

Product Designer (sole designer) · Self-initiated research + PRD

Dec 2025 - Present Active

Address Change Flow
🛒
Buyer requests change
Buyer
🎧
CS agent receives ticket
CS Agent
📦
CS contacts seller
Seller
🎧
Seller replies to CS
CS Agent
🛒
CS updates buyer
Buyer
3 people · 64 tickets/week · 1 address change

Buyers had no self-service option for address changes after purchase. Each of the 64 weekly tickets required three people: buyer, seller, CS agent.

One aquatics seller purchased three labels in eleven minutes for the same package because a hub-versus-home address conflict was invisible in the label modal. Cost: $600+ in wasted labels.

64 weekly CS tickets from address changes alone

Address changes, cancellations, refund requests, hold requests: they all share the same shape. A buyer initiates. A seller approves. The platform mediates.

Design the underlying grammar once and every future request type becomes a configuration, not a new project.

"The real problem was not 'build an address change flow.' It was: what is the right model for bilateral requests on Palmstreet?"

Research Artifact · Competitive Analysis
PlatformModelProCon
ShopifySeller authorityFull controlNo buyer flow
EtsyCase systemMediatedSlow resolution
eBayTime gatesStructuredRigid windows
WhatnotAuto-approveFast for buyersChaotic for sellers
PoshmarkNo supportSimpleNo resolution path
Palmstreet → Approval-based: seller trust + buyer self-service

Competitive Analysis

Five platforms studied: Shopify, Etsy, eBay, Whatnot, Poshmark. Whatnot auto-approves: fast for buyers, chaotic for sellers who may have already purchased a label. Shopify gives sellers full authority but no buyer-facing flow.

eBay uses time gates. Poshmark avoids the problem entirely. My conclusion: approval-based is right for Palmstreet. Sellers are small businesses with real stakes in each shipment.

The Reusable Pattern

I wrote a full PRD from scratch. Flowcharts, edge case mapping, user stories for both sides, implementation order. Reviewed with three PMs before any design work.

Then I documented the pattern: Request → Pending → Seller Decision → Outcome. Every buyer-to-seller request follows this grammar. Four features share one model: Buyer Change Address, Cancel Order, Refund Order, Hold Shipments.

Request Refund
🪴
Monstera Thai · 4"
Order #PS-48291 · $42.00
Reason
Arrived damaged
Wrong item received
Changed my mind
Refund$42.00
Refund approved

Approval-based, not auto-approve. Seller trust is more fragile than buyer trust on a marketplace. Tradeoff: more friction for buyers than Whatnot's model.

One rejection ends the flow. Prevents infinite resubmission loops. Abuse surface too high for a resubmit option in V1.

Label purchase auto-approves. If a seller buys a label using the new address, that action IS the approval. Adding a manual tap after is redundant friction.

Designed as a reusable framework. Engineers build the pattern once. PMs spec new request types without reinventing the model.

60-70%
CS ticket reduction target
4+
Flows using this pattern
2
Platforms: Mobile + Web Seller Hub
Self-led
PRD, competitive analysis, framework docs

"High quality UX research outputs... set a strong example of what a thoughtful and effective research process looks like." — Yufan, PM

Request/Approval PatternBuyer Change AddressCancel RefundCross-Platform
Address Change · Bilateral Flow
1. Buyer requests
@cactus_mom
Order #PS-4821
From: 123 Oak St, NY
To: 456 Elm Ave, NY
Pending Seller
2. Seller reviews
PlantHaus Toronto
Pre-ship · 2h window
Old → New diff shown
ApproveDecline
3. Confirmed
✓ Address updated
Both notified
Audit log entry
No CS ticket needed

The pattern: buyer initiates, seller approves, both confirm. Status carries through every touchpoint. Audit trail for support, no manual ticket.

Same shape applies to cancellations, item swaps, and refunds — that's why it became a reusable framework rather than a one-off feature.

Sellers run shops between dayjobs. Approval needs to be one-handed, mid-commute, sub-30-second.

The mobile hub surfaces inbound requests as cards: diff highlighted, approve/decline as primary actions, full context one tap away.

Inbox · 3 pending
Address change2h left
@cactus_mom · #PS-4821
123 Oak St, New York NY
456 Elm Ave, New York NY
ApproveDecline
Cancel request5h left
@thaihouse · #PS-4789
Refund12h left
@plantmoms · #PS-4775

This was fully self-initiated. I saw the ticket volume, built the competitive analysis, wrote the PRD, and presented it to three PMs before anyone asked me to.

The pattern abstraction came from writing the PRD, not from designing the UI. Deep problem framing before Figma made the reusable framework obvious.

Content Calendar· Channels 2.0· Design Sprint· @Mentions· Threading· Enterprise CMS· Frontline Comms· 500K+ Workers· Content Calendar· Channels 2.0· Design Sprint· @Mentions· Threading· Enterprise CMS· Frontline Comms· 500K+ Workers·

Case Study 04

WorkJam Content Calendar: Unifying 7 Modules for Enterprise Admins.

Lead Product Designer (Engagement Domain) · Researcher

Oct 2022 - Nov 2023

Content Modules
📢
Announce
📊
Surveys
📚
Training
Tasks
📖
Knowledge
🔗
Links
📋
Dashboard
7 silos · No unified view · 40 min/piece

WorkJam's platform had seven content modules, each in its own silo. Admins managing 10,000+ employees juggled Excel, Monday.com, and multiple browser tabs. No single view of what the company was communicating on any given day.

Client interviews across TJX, Target, Woolworth's, Ulta Beauty, and Ross confirmed the same friction everywhere.

7 siloed modules, 40 min per content piece

The problem was not "build a calendar." WorkJam treated content management as seven separate workflows when admins needed one. A calendar was the interface. The real solution was a centralized hub that collapsed seven module workflows into a single operational view.

"A calendar was the interface. The real solution was a centralized hub."

Design Sprint
1
Monthly Calendar Grid
Too abstract
2
GitHub-Style Heatmap
Good signal, wrong primary
3
Module-Grouped Lists
Re-fragmented view
Modular Tables + Daily Digest
Shipped

WorkJam's First Design Sprint

I led a week-long collaborative workshop with product, design, and development. We mapped admin journeys, identified friction points, brainstormed solutions, and prototyped three directions.

Iteration 1: Monthly calendar. Too abstract. Iteration 2: GitHub-style heatmap. Interesting but secondary. Iteration 3: Module-grouped lists. Re-fragmented the view.

Final direction: Modular content tables with daily digest default and switchable views (daily, list, week, month).

Daily digest: Answers "what is happening today?" with actionable cards on first load.

"View as" filter: Admins see content as different user roles see it: store manager, regional lead, frontline employee.

Location picker: Filter by store, region, or department.

Inline content creation: Create surveys, posts, and trainings without leaving the calendar.

Cross-module scheduling: One timeline for all seven content types.

Daily List Week Month Today · Mar 23
Q1 Safety Training
Training
New POS System Rollout
Announcement
Employee Satisfaction Survey
Survey
Inventory Count Checklist
Task

Clients: TJX, Target, Woolworth's, Ulta Beauty, Ross — each managing 10,000+ frontline employees across hundreds of locations.

Two-audience challenge: Admins at HQ need powerful scheduling, role-based previews, and cross-module visibility. Frontline workers need glanceable content on shared devices between tasks. The calendar had to serve both without compromise.

89% voluntary adoption across WorkJam's customer base. The design earned engagement — enterprise software where usage can't be mandated.

30%
Content creation time decrease (40→28 min)
25%
Content update efficiency boost
20%
Faster publication speed
CEO
"Will cement WorkJam as leading WFM solution"
Enterprise CMSDesign SprintContent Management FrontlineAdmin ToolsB2B SaaS
Two Audiences · One Calendar
Admin · HQ Desktop
Daily Week Month List + New
Q1 Safety TrainingTraining
POS RolloutAnnounce
Engagement SurveySurvey
Inventory CountTask
Frontline · Mobile
Today · Mar 23
Due nowQ1 Safety TrainingStart →
ReadPOS Update Mon
LaterInventory · 3pm

Admins get density: switchable views (daily/week/month/list), cross-module timeline, "view as" simulator. Built for sustained planning sessions on desktop.

Frontline workers get a today list. Three cards. Tap to act. Optimized for the 90-second slot between tasks.

Admins managing 400+ stores need to scope content to specific locations, departments, positions, and certification statuses without leaving the calendar.

The "View as" simulator was the breakthrough — admins could preview the calendar exactly as a Northeast morning-shift store associate would see it.

View Filters
LocationNortheast · 42 stores
DeptRetail Floor
PositionStore Associate
CertPOS Trained
ShiftMorning · On-shift now
1,247workers will see this

One week of structured collaboration eliminated months of potential misalignment. The Design Sprint taught me more about stakeholder alignment than any feature spec.

The first direction is rarely wrong about everything — it is usually right about one thing. The heatmap was wrong as a primary view but right as a signal that admins wanted density awareness. That insight survived three pivots.

Case Study 05

WorkJam Channels 2.0: Communication for 500K+ Frontline Workers.

Product Designer

Jan 2024 - Jun 2024

#store-updatesChannels 1.0
Admin: New POS update Monday.
Alex: Does this apply to express?
Maria: Which store?
Sam: I already did the training
Admin: @Alex — (no @mention support)
📷 Single image only
Wrong crop ✗
No threading No @mentions No moderation

Channels 1.0 was built for one-way announcements. No tagging. No threaded replies. Single image attachments at incorrect sizes. No moderation beyond deleting a post.

Meta Workplace was shutting down. WorkJam's clients needed communication built for people who work on their feet, on shared devices, across 50+ languages.

500,000+ frontline employees across enterprise clients

Frontline communication is not Slack for retail. A store associate checking their phone during a break has 90 seconds, not 90 minutes. Every interaction must be completable in under three taps.

The admin who manages 400 stores needs granular targeting, not "post to #general." Speed for end users. Power for admins. Both on the same platform.

"90 seconds, not 90 minutes. Every interaction had to respect that constraint."

#store-updates
Channel · 1,247 members
SM
Sarah Martinez
SL
Sam Lee
SP
Sandra Park
Type a message...

@Mentions

The most requested feature. I designed a dynamic mention dropdown filtered by the channel's Target Audience Engine settings, not the full company directory. Real-time filtering across datasets of 100,000+ users.

Micro-interaction rules from internal testing: dropdown stays active through one space (first + last name), dismisses on second space or Escape, auto-dismisses on zero results. Compliant with labour laws around terminated employee data.

JR
Jamie Ross2hPinned
New POS update rolling out Monday. Please review the training before your next shift.
3 replies
AL
Alex Liu1h
Does this apply to express registers too?
JR
Jamie Ross45mAnswer
Yes, all registers. Express lanes get it Tuesday.
MK
Maria Kim30m
Training completed. Ready for Monday.

Threaded Comments

Replaced flat comment streams that devolved into unusable noise at scale. Multi-level threading with infinite scroll pagination for long threads.

Mark-as-answer for resolved questions. Pin posts for persistent visibility. Close post to stop further replies on time-sensitive announcements.

Rich Text Editor

Eliminated the dependency on Canva and external content creation tools. Admins create branded posts with formatted text, inline media, and scheduled publishing directly inside WorkJam.

Reduced the creation-to-publish cycle for 80%+ of posts. No more context-switching between tools to produce a single announcement.

B
I
U
📷
@
New POS system training is now available.
Schedule: Mon 9:00 AMPublish
TM
Taylor MorganStore #412
New display setup complete! Here's how it looks
🪴
🏪
📦
+2

Media Attachments

Single attachments render at actual dimensions instead of a fixed crop. Multiple attachments display in a responsive grid with a "+N" indicator when exceeding four items.

Interactive gallery view for full-screen browsing on both mobile and web. Consistent rendering across iOS, Android, and desktop.

Cross-Platform · Channels 2.0
#general
#store-updates
#compliance
#store-updates
@Sarah check the display?
Heading there now
Responsive Web
#store-updates
@Sarah check?
On my way
@Jamie POS ok
iOS Native
#store-updates
@Sarah check?
On my way
@Jamie POS ok
Android Native

Responsive Web + Native Mobile

Channels 2.0 shipped across responsive web, iOS native, and Android native with full feature parity. Every interaction — @mentions, threading, media, moderation — works identically across all three platforms.

Platform conventions respected: iOS swipe gestures, Android material patterns, desktop keyboard shortcuts. The same employee posts from their laptop at HQ and checks replies on a shared tablet at the store. Experience feels continuous, not duplicated.

Target Audience filtering for mentions. A mention should only surface people who can see that channel. Searching the full directory exposes names outside the audience scope.

Scheduled posts retain @mentions. Mentions resolve at publish time, not creation time. If a mentioned user leaves before publish, the mention surfaces as invalid with clear feedback. Required for compliance with labour laws around terminated employee data.

Platform-native, not platform-identical. Same features everywhere, but interactions adapt to each OS. iOS swiping, Android back gestures, desktop hover states. Consistency of capability, not of pixels.

Rich Text Editor · Before / After
Channels 1.0
Plain text only. No formatting.
New POS update Monday. See attachment.
Open Canva to format → Open Drive to upload → Paste link back
3-tool workflow · 8+ min/post
Channels 2.0
B I U 📷 @
New POS update Monday.
Training in @Learning Hub.
🖼
Mon 9:00 AMPublish
1-tool workflow · < 90 sec

The biggest cycle-time win. Channels 1.0 forced admins through Canva, Drive, and back. The new RTE collapsed bold/italic, inline media, mentions, and scheduling into one composer.

80%+ of posts stopped needing external tools. Authoring time dropped from 8+ minutes to under 90 seconds.

Frontline workers compose from their phones during shifts. The mobile RTE had to feel native — iOS share sheet, Android camera intent, gallery picker, and inline image preview without leaving the composer.

Multi-attach with reorder, crop, and delete — all gestures, no nested menus. Optimized for one-handed use on shared devices.

New Post · #store-updates
B I U @
Display refresh complete. @Sarah ready for review
🌿
🪴
🌸
🍃
+2
+
📷🖼📁🎥
CancelPost
Media Rendering · Same Post, Three Layouts
1 image · full bleed
TM
Taylor M.2h
New display ready
🌿
Original aspect, no crop
2-3 images · grid
JR
Jamie R.4h
Three angles
4+ images · +N
SM
Sarah M.1d
Setup gallery
+5

Channels 1.0 fixed-cropped every image to a square. Detail got lost. Posts felt generic.

The new rendering: single images keep their aspect ratio, 2-3 lay out in responsive grids with one feature image, 4+ collapse the overflow into a "+N" tile that opens a full-screen gallery. Tap any image to enter the lightbox.

80%+
Posts no longer need external tools
Starbucks
Currys cited redesign in continued adoption
500K+
Frontline employees across enterprise clients
3 platforms
Web, iOS, Android with full parity
@MentionsThreadingRich Text Media GridNative MobileScheduled PostsCompliance

Case Study 06

WorkJam Channels Platform: Search & Moderation at Enterprise Scale.

Product Designer

Jan 2024 - Jun 2024

With core communication features shipped — @mentions, threading, rich text, and media — the next challenge was making Channels work at enterprise scale.

500,000+ frontline employees across TJX, Starbucks, Currys, and Ulta Beauty needed to find content fast, trust moderation, and move seamlessly between devices. The infrastructure had to match the interaction quality.

Global Search Patterns

Designed cross-channel search that enabled 40% faster content discovery than the single-channel search in Channels 1.0.

Snippet display instead of full post cards — keeps search fast and pushes interaction to the channel context where it belongs. Recent search logic, live search vs. advanced search page distinctions, and content highlighting with deep linking.

These patterns became the global search design guidelines for the entire WorkJam platform, governing search across all modules.

safety trainingPOS updateschedule
Search channels...
📋
Q1 Safety Training
Complete the updated safety module by...
#store-updates · Training
⚠️
Safety Protocol Changes
New fire safety procedures effective...
#compliance · Announcement
Monthly Safety Check
Store managers: submit safety audit...
#managers · Task
#store-updates Admin
TM
Taylor M.4h
Anyone else having issues with the break room vending machine? Third time this week.
⚑ Flag 📌 Pin ✕ Remove
JR
Jamie R.2h
New POS training available in Learning Hub.
Post flagged for review

Moderation Toolkit

Channel-specific permissions for mentions, reactions, and comment management. Admin, owner, and moderator roles with distinct capabilities.

Content flagging and removal without disrupting the conversation flow. Channel owners finally had tools to manage their spaces — the number one gap in Channels 1.0.

Cross-Platform Parity

Web + iOS + Android with dark and light mode. @mentions work identically everywhere. Dropdown positioning and dismiss gestures adapt to each platform's conventions.

The same person might post from a desktop in the morning and check replies on a shared tablet during lunch. The experience must feel continuous, not duplicated.

Desktop
#store-updates
@Sarah Martinez can you check the new display?
Sure, heading there now 👍
@Jamie Ross POS update looks good on Lane 3
Mobile
#store-updates
@Sarah check the new display?
Heading there now 👍
@Jamie POS update looks good
Target Audience
LocationNortheast · 42 stores
DeptRetail Floor
PositionStore Associate
ShiftMorning (6a-2p)
1,247employees targeted

Target Audience Engine

The foundation powering mentions, moderation, and content targeting. Managers segment audiences in under one minute using filters: Location, Department, Position, Certification status, and real-time shift information.

Precision targeting reduces information overload — the key UX challenge for frontline platforms serving 10,000+ employees.

Frontline workers have 90 seconds between tasks. Every interaction must complete in under three taps. Shared devices. Variable connectivity. 50+ languages. The interface has to earn usage — it can't be mandated.

Enterprise admins manage 400+ stores. They need granular targeting, compliance controls, moderation at scale, and analytics. Power features that don't leak complexity to the frontline.

The defining challenge: instinct is to default to the admin (they're the buyer). But if frontline workers don't use it, the admin's investment fails. Both audiences designed for simultaneously, not sequentially.

Labour law compliance: Terminated employee data cleared from mention dropdowns. On-premise content restrictions. Mandatory acknowledgments with read receipts. HIPAA-ready for healthcare clients.

89% voluntary adoption across WorkJam's customer base. Enterprise software where design quality drives adoption, not mandate.

Clients at scale: TJX, Starbucks, Currys, Ulta Beauty — each with 10,000+ frontline employees across hundreds of locations, multiple time zones, and diverse regulatory environments.

40%
Faster content discovery via cross-channel search
Global
Search patterns adopted platform-wide
Starbucks
Currys cited redesign in continued adoption
50+
Languages supported across all platforms
SearchModerationCross-Platform Dark ModeTarget AudienceCompliance B2B Enterprise
Search · Two Modes
Frontline · Mobile
🔍 safety
Recent
📋
Q1 Safety Training
#store-updates
Safety Protocol
#compliance
3 results · scoped to your role
Admin · Desktop · Advanced
Posts Files Comments Replies
🔍 safety training
All channelsLast 30 daysPinned only
Q1 Safety Training
#store-updates · 42 stores · 8d ago
Safety Protocol Changes
#compliance · all stores · 14d ago
Monthly Safety Audit
#managers · 12 results

Same search engine. Two surfaces.

Frontline gets recent searches scoped to their role — three taps, no filters, no syntax. Admins get tabs, content-type pills, date ranges, channel scoping, and cross-channel cursor pagination. Power users get power; everyone else gets speed.

Designing for frontline workers requires rethinking every interaction through a time-pressure lens. A desk worker explores a dropdown for 10 seconds; a store associate on break cannot.

Cross-platform design isn't "make it work on three screens." It's understanding the same person uses multiple devices throughout their day. The experience must feel continuous, not duplicated.

The search patterns I established for Channels became the standard across all WorkJam modules — the strongest signal that infrastructure-level design thinking outlasts any single feature.

Get in Touch

Let's build something awesome.

"If you give me six hours to design a website, I will spend the first four writing the prompt."