.h
product design · mobile & web · construction saas

Qualifications
Management.
Field & Office.

Five months of customer-driven design on a construction platform. Safety managers needed to verify worker credentials on site and manage thousands of qualifications from the office — I designed the full system: mobile Safety Cards in the field, a web workers table for ops at scale, bulk assign flows, and the admin layer that defines how every tag behaves.

Product Designer Mobile & Web Enterprise Customer-Led Construction SaaS
duration
5 months
build & iterate
my role
Product Designer
2-designer team
platforms
Mobile · Web
iOS & Android + desktop
origin
Customer requests
feedback-driven
collaborators
PM · EM
+ co-designer
domain
Safety & compliance
same product family as Safety Hub

Customers asked.
We designed.

Every feature in this case study came from customer feedback and requests — not a roadmap brainstorm. Safety managers on active job sites needed to verify who was qualified to work. Office admins needed to manage compliance across hundreds of workers and dozens of qualification types. The product didn’t have a unified way to do either.

“This makes my life on the site so much easier.”
— Safety manager, field user
01 — field verification

No way to check credentials on site

Supervisors had to call the office or dig through spreadsheets to confirm whether a worker’s OSHA, first aid, or equipment certifications were current. On a busy job site, that delay is a safety risk.

02 — admin at scale

Qualifications lived in disconnected places

Project admins managing 500–1,000 workers had no single view of who was compliant, who was expiring, and which tags were missing attachments or expiry dates entirely.

03 — inconsistent rules

Every qualification type behaved differently

Some tags required expiry dates, some didn’t. Some needed proof attachments, others didn’t. Without a configurable system, every screen had to hard-code exceptions.

Designer on a
two-person team.

I worked alongside one other designer, a PM, and an engineering manager. I owned design across all four surfaces below — from mobile field flows to the web admin configuration layer.

01

Translating requests into flows

Customer feedback arrived as feature requests and pain points. I turned those into structured flows with validation rules, empty states, and error handling — before any screen was built.

02

Cross-platform consistency

The same qualification grammar — tag, expiry, attachments, compliance status — had to work on a phone in the field and in a 1,000-row web table. I defined the shared patterns both surfaces followed.

03

Edge cases as first-class design

Expired vs. expiring vs. no expiry. Tag assigned but no data uploaded. Bulk assign with shared or per-worker dates. I designed for these states explicitly, not as afterthoughts.

04

Iteration with engineering

Five months of build cycles meant constant refinement with the EM and dev team — adjusting modal flows, table column behavior, and mobile form validation as we learned what worked in production.

Configure. Operate. Verify.

Three layers, one data model. Admins configure qualification tags. Office users operate at scale through the workers table. Field users verify credentials on site through the Safety Card.

web — configure

Tags Management

Define qualification tags, categories, expiry rules, colors, and abbreviations. The configuration layer that drives behavior everywhere else.

web — operate

Workers Table

Filter, export, configure columns, and bulk-assign qualifications to hundreds of workers. The admin command center for compliance at scale.

mobile — verify

Safety Card

View, assign, and edit a worker’s qualifications from the directory. NFC write for physical card sync. Read-only mode for restricted users.

Credentials in the field.

From the directory, any contact gets a Safety Card — a live view of their qualifications with expiry status, proof attachments, and the ability to assign or edit on the spot.

01 — view & empty state

See who’s qualified at a glance.

The Safety Card shows all assigned qualifications with clear expiry status — active, expiring, or expired. If a worker has none, the empty state prompts assignment immediately instead of showing a dead end.

Safety Card — filled + empty state assets/qualifications-mobile-safety-card.png
02 — assign qualification

Tag, date, proof — in one flow.

Pick a qualification tag, set an expiry date if the tag requires it, and attach proof via camera, photo library, or file upload. Validation adapts: mandatory expiry shows errors on save; optional expiry stays flexible.

Add qualification flow + validation states assets/qualifications-mobile-add-qual.png
03 — edit & delete

Change what matters. Protect what can’t.

Editing opens a bottom drawer where only expiry date and attachments are editable — the tag itself is locked. Deleting requires a confirmation alert with irreversible-action language.

Edit drawer + delete confirmation assets/qualifications-mobile-edit.png

Compliance at scale.

The workers table is where project admins live. Dynamic qualification columns, configurable visibility, powerful filters, bulk actions, and CSV export — all built for sites managing hundreds or thousands of workers.

01 — dynamic table

Every tag is a column. Every cell tells a story.

Each qualification tag becomes a column showing expiry date, attachment status, or explicit states like “no data uploaded” or “tag not assigned.” Admins configure which columns are visible per project.

Workers table with tag columns assets/qualifications-web-workers-table.png
02 — filter & export

Find the workers who need attention.

Filter by company, project, worker status, qualification tag, and expiry state (expired, upcoming, no expiry, custom range). Export selected workers to CSV with or without attachments.

Filter panel + export actions assets/qualifications-web-filters-export.png
03 — bulk assign

One tag. Many workers. Smart defaults.

Select workers, choose a single qualification tag, then set expiry dates per worker or apply one date to all. Toggle off if any individual date changes. Attach proof per worker. Validation blocks assign until required fields are complete.

Bulk assign single tag flow assets/qualifications-bulk-assign.png

The rules engine.

Before any qualification can be assigned on mobile or web, an admin defines it here — name, abbreviation, color, category, and whether an expiry date is required.

configure tags & categories

Define once. Apply everywhere.

CRUD for qualification tags and categories. Set expiry requirements, notice periods, and tag colors. Delete actions include destructive confirmations explaining platform-wide impact — because removing a tag removes it from every worker profile.

Tags management settings assets/qualifications-tags-management.png

Built for the field.
Validated by it.

Feedback came throughout the five-month build — not just at the end. These represent the kind of response we heard as features shipped.

“This makes my life on the site so much easier.”

— Safety manager, field user

“I used to spend half my Monday chasing expired certs. Now I filter the table and bulk-assign in ten minutes.”

— Project admin, web user

“Being able to pull up someone’s Safety Card right from the directory — that’s exactly what we asked for.”

— Site superintendent

“The bulk assign saved us during onboarding week. Forty new workers, one OSHA tag, done.”

— Safety coordinator

What shipped.

A complete qualification system across mobile and web — from field verification to admin operations to platform configuration.

4
Product surfaces
Safety Card (mobile), Workers Table (web), Bulk Assign (web), Tags Management (web).
5 mo
Build & iterate
Customer requests translated into shipped features across five months of design and engineering cycles.
1
Shared data model
Tag, expiry, attachment, and compliance status behave consistently across every surface.
3
Cell state types
Expiry + attachment, no data uploaded, and tag not assigned — each with explicit UI treatment.
NFC
Field hardware sync
Write to NFC from the Safety Card for physical credential cards on site.
CSV
Export at scale
Bulk export with or without attachments for audit and reporting workflows.

What I’d carry forward.

Customer requests are a design brief.

When every feature traces back to a real request, prioritization becomes obvious. The hard part isn’t deciding what to build — it’s designing it so the same logic works on a phone and in a 1,000-row table.

Configure the rules, then design the surfaces.

Tags Management wasn’t glamorous, but it was the foundation. Once expiry-required vs. optional was a tag-level setting, every form on mobile and web could adapt automatically instead of hard-coding exceptions.

Empty and error states are the product.

“No qualifications to display,” “please select a date,” “worker has tag but no data uploaded” — these aren’t polish. They’re the moments where users either trust the system or abandon it.

Scale changes the interaction model.

Assigning one qualification to one worker is a form. Assigning one tag to forty workers is a table with a “same date for all” toggle, per-row overrides, and validation that blocks until every required field is filled. Same action, different design.

.more work