← Irene Porro / Selected workLet’s talk ↗
M MeralisEnterprise SaaS / HR & payroll

Product strategy · Interaction design · Design systems

HR and payroll for nine roles
that share one employee record.

Meralis runs HR for people who are already hired: their records, requests, documents and pay. I designed the product logic and interfaces so every role has a clear scope and every approval has a visible consequence.

Explore the design decisions ↓
Problem

HR and payroll software for nine roles, with access, approvals and documents scattered across separate screens.

My role

Sole Product Designer: product model, flows, interface, design system and handoff.

Result

Launched after years in development; used by around 200–300 people, with features shipping in one two-week sprint.

Meralis dashboard showing active payroll batches and direct deposit requests
HR overview · Payroll cycle and requests waiting on youEnlarge screen ↗
My roleSole Product Designer

From product models and workflows to interfaces, prototypes and developer guidance.

Product context4-year-old product, now live

Used by around 200–300 people together with its sister product.

The scopeHR, requests & payroll

Nine roles scoped by site and department, a unified requests hub, eSign, payroll batches and shared UI foundations.

Meralis is an anonymized identity for a live product at my current company. Screens are portfolio reconstructions with illustrative data; the case focuses on the design decisions behind them. Its sister product, a staffing marketplace, is covered in the Relay case.

01 / The problem behind the brief

The same employee looks different to every role.

A company with many sites employs people who can hold several assignments, each with its own site, department, rate and documents. HR, payroll, safety and line managers all touch those records.

Approvals lived in separate screens per request type, and access depended on what each screen asked for. The same manager could see a request in one place and an empty list in another.

My job was to make those relationships explicit before turning them into screens.

Before / Separate queues

Time off approvals

Compensation changes

Direct deposit updates

After / Shared product model

One person.
Several assignments.

Employee → Assignments → Scoped roles → Actions

Every request, document and paycheck keeps the assignment it belongs to.

02 / Start with authority

Access depends on the person’s assignments.

I mapped nine roles, from HR Admin and Payroll Manager to HR Rep, Safety Coordinator, HR Proxy, Site Manager and Department Manager, against what each one can see and approve for every request type.

Two rules shaped the product: a department manager never reviews a peer manager, and nobody but HR ever sees bank details. Scope is derived from the person’s assignments, so a dashboard widget and the full queue always show the same thing.

Role permissions matrix showing scope and access levels
Roles & access · Who can review what, by request typeEnlarge screen ↗

03 / Decisions that shaped the experience

Designing what happens
when the stakes are higher.

Four workflows show how product rules became visible, usable interactions.

01 / The requests hub

Bringing three approval queues together.

Time off, compensation and direct deposit each had their own approval screen. Reviewers checked three places, and managers saw empty lists where they had work to do.

The decision
One hub with a tab per request type, sorted oldest first, showing who the reviewer is on every row.
The guardrail
A visible but empty tab means “nothing waiting”. A missing tab means “not yours to review”, so nobody sees work they can’t act on.
Why it matters
Scope is calculated from the person’s assignments, so the dashboard card and the hub always agree.
Requests hub with time off, compensation and direct deposit in one queue
Requests · One queue, scoped by roleEnlarge screen ↗
02 / Banking approvals

Keep payroll moving while a change is reviewed.

A bank change needs a decision surface that explains what is active, what is being requested and what the reviewer needs to check.

The decision
Place current and requested account details side by side. Keep the verified method active during review.
The guardrail
Apply approved changes to future open cycles. Require a reason for rejection so the worker can correct the request.
The trade-off
OCR and match confidence help the reviewer inspect evidence. The final approval remains a human decision.
Banking approval comparing current and requested accounts with OCR support
Direct deposit · Current vs. requested, with proofEnlarge screen ↗
03 / Assignment-aware eSign

Send the right document for the right assignment.

One employee can work across several sites. A signature tied only to their identity loses the work context that gives the document its meaning.

The decision
Separate employee-level templates from assignment-aware ones. Block “Everyone” when a template needs a specific assignment.
The guardrail
Show employees and generated requests as separate counts, and explain exclusions before sending.
Why it matters
In this example, 46 employees produce 51 requests. The interface explains the difference instead of treating it as an error.
Assignment-aware signature dispatch with separate employee and request counts
eSign · One document per assignmentEnlarge screen ↗

04 / From design intent to delivery

Shared foundations for the product and the team building it.

As the platform grew, repeated interface decisions needed a shared foundation. I documented tokens, components, states and layout behavior so the next feature could build on an existing pattern.

The visual system separates brand identity from action and status. Purple provides continuity; hierarchy, spacing and semantic states help users read dense operational screens.

Brand / Primary#7029BD
Accent#8549D8
Soft surface#F4ECFC
AaInter
Clear hierarchy. Dense data.
Dense payroll bill codes table using shared interface components
Payroll batch · Dense data that stays readableEnlarge screen ↗

Behavior belongs in the handoff.

Loading, empty, disabled and permission states are part of the component contract.

Layout needs acceptance criteria.

Equal-height columns and internal scrolling are specified alongside the visual design.

Shared foundations support change.

About 150 tokens, 42 components and 51 documented flows give the team a shared base for implementation.

05 / What changed

From stalled to launched.

The product brings requests, documents and pay that were handled in separate places into one operating model. My contribution spans the relationships behind the product, the decisions within each flow and the shared interface foundations.

When I joined in 2024, this product had been in development for years without launching, and so had its sister product. I organized the work around flows, stakeholder validation and a shared design system, and both products shipped to production. Around 200–300 people use them today, and I designed the training they went through.

Every feature goes through the same path: meetings with stakeholders to validate what people will actually use, a flow before any screen, and a documented handoff. A feature now goes from design to release within a single two-week sprint, because developers start from shared components instead of new ones. PMs often mention the documentation as what makes onboarding new team members easy.

What I would do earlier: establish a shared product model and decision log at the start. In a product that keeps growing for years, rules that only live in people’s heads cause as many problems as inconsistent screens.