← Irene Porro / Selected workLet’s talk ↗
RelayB2B SaaS / Staffing marketplace

Product design · Workflow rules · Design system · Onboarding

How a staffing order moves
between companies, MSPs and agencies.

Relay connects companies that need workers with the MSPs and agency branches that find them. I design how a staffing order moves through that chain: who owns it, how urgency shows, how it ends, and what each side is allowed to see.

Explore the design decisions ↓
Problem

A staffing order passes through companies, MSPs and agency branches, and nobody was sure who owned it or how it ended.

My role

Product Designer for the whole product: order rules, interface, design system, prototypes and user training.

Result

Launched after about five years in development; used by around 200–300 people who learned it through the training site I built.

Order detail with sticky summary, branch pledges and order team
Order detail · One order, many branchesEnlarge screen ↗
My roleProduct Designer, end to end

Workflow rules, interface, design system, prototypes, QA audits and user training, across every role.

ProductMulti-tenant marketplace

Client companies, MSPs, agency branches, workers and platform admins in one product.

The scope150+ routes · 5 role types

From the service order to fulfillment, assignments and timekeeping.

Relay is an anonymized identity for a live product at my current company. Screens are portfolio reconstructions of my shipped and proposed designs, with illustrative data. Shared HR modules such as time off and payroll are covered in the Meralis case; this case focuses on what is unique to the marketplace.

01 / The problem behind the brief

One order goes through a lot of people.

A company asks for fourteen pickers on Monday. The MSP splits that service order into job orders, invites agency branches, collects pledges and chases candidates through compliance, while the company waits to review them.

Every handoff created a question: who owns this order now, is it at risk, did it fail or was it cancelled, and which details should the client never see?

My work was to answer those questions with clear rules and show them on screen.

The chain

Client company · places a service order

MSP · distributes job orders

Agency branches · pledge and fill

Workers · assigned and clocked in

The rule set I designed

Ownership · Urgency ·
Outcome · Visibility

Four rules every screen follows

Each decision below is one of these rules made visible.

02 / Decisions that shaped the experience

Decisions about the order,
from request to fill.

Four decisions on the order, from the recruiter’s grid to the client’s view.

01 / Urgency

Showing urgency without a wall of red cards.

Orders auto-close at their start date. Recruiters needed to see risk early, but a grid full of red cards stops meaning anything.

The decision
Three calm steps: an amber status under 48 hours, an inline note under 24, and red only in the final 12, with the next action on the card.
The guardrail
Only unfilled orders escalate. A fully staffed order stays calm, and there are no red backgrounds, pulsing or countdown seconds.
Why it matters
Orders closing soon are grouped and sorted first, so the most urgent work is always at the top.
Open orders grid with urgency states
Open orders · Closing soon grouped firstEnlarge screen ↗
02 / Outcomes, not deletions

Replacing “Deleted” with real outcomes.

The old “Deleted” tab mixed failed orders, cancelled orders and mistakes, and implied the history was gone.

The decision
Tabs become Pending, Open, Closed and Voided. A closed order shows what happened (fully filled, incomplete, unfilled) separately from how it closed (automatically or by a staffer).
The guardrail
No order is deleted. Void is only for MSP entry errors, needs a reason, and voiding a service order voids its job orders with an audit record.
Why it matters
Reports can now tell a hard-to-fill order apart from a data-entry mistake.
Closed orders with outcome and closure columns, and a void dialog that requires a reason
Closed orders · Outcome vs. closure, void with reasonEnlarge screen ↗
03 / Ownership

Making it clear who owns each order.

Several MSP users and branches work the same order. Without clear ownership, nobody felt responsible for the gap.

The decision
Every order has a host who owns it, co-hosts who help without taking ownership, and participants who can pledge and submit.
The guardrail
Cross-branch invites apply to one order only and stay pending until accepted. A sticky summary keeps fill, branches and time left in view while you switch sections.
Why it matters
Pledges make capacity explicit before filling starts, so fill rate is measured against a commitment.
Order detail with sticky summary, branch pledges, submitted candidates and order team
Order detail · Pledges and the order teamEnlarge screen ↗
04 / Visibility

What the client sees, and what stays internal.

The client company and the MSP look at the same order, but the client should never see branch pledges, internal notes or fill-rate targets.

The decision
The client view is built around progress and the decisions only they can make: accepting or declining candidates.
The guardrail
Internal data is removed for the client role in the data itself, and the screen tells MSP users what the client can’t see.
Why it matters
Clients see their progress without seeing how the MSP works with its agencies.
Client view of the same order with request progress and candidates to review
Client view · Progress and candidate reviewEnlarge screen ↗

03 / The system underneath

Built on a design system shared with Meralis.

Relay runs on Foundry, the token-based system I maintain for both products. Here it fixed a brand color that failed contrast (2.6:1 → 4.86:1) and gave status and role badges different colors so they don’t get confused.

Read the Foundry case ↗

05 / Where it landed

Shipped after five years in development.

Relay had been in development for about five years when I joined in 2024. Clear order rules, flows validated with stakeholders before each feature and a shared design system helped the team get it to production. Around 200–300 people use it today, together with Meralis, and the training site below is what they learned with.

Every feature I design ships with a documented handoff, and most features now go from design to release within one two-week sprint. The user training site came out of the same habit: writing things down so new people can learn on their own.

04 / User training

Training new users on the whole workflow.

New users struggled because they learned screens without understanding the chain behind them. I designed and built a training site: five animated journeys (order, recruiter, worker, payroll and time off) that show how work moves between teams, linked to role-based lessons and exercises.

What I would do earlier: write the order rules (ownership, outcomes, who sees what) in a shared document before designing any screen. A lot of my later work was turning rules people had in their heads into something written.

Training site with an animated order journey and a library of five journeys
User training · Animated journeys by roleEnlarge screen ↗