Skip to content

An HR suite employees can actually navigate

A human resources platform that brings onboarding, time off and employee records into one clean interface managers and staff use every day.

My team

Client Services · Bristol · your 6 direct reports, resolved from the reporting line

Team calendarSearch people and requestsMon 24 Aug 2026
Direct reports6Client Services
Away this week2Owen Mon–Wed · Sienna all week
Waiting on you2Dele and Marta
Next bank holidayMon 31 AugSummer bank holiday

Who is away this week

Mon 24 – Fri 28 Aug 2026 · annual leave in teal
PersonMon 24Tue 25Wed 26Thu 27Fri 28Days leftMid-year review
NBNadia BrennanSenior AssociateInInInInIn13Done
DODele OkonkwoAssociateInInInInIn9Done
MKMarta KowalczykAssociateInInInInIn17Booked
OPOwen PryceAnalystAnnual leaveInIn6Done
SHSienna HartSenior AssociateAnnual leave11Not started
FRFarid RahmanAnalystInInInInIn21Done

Waiting on you

Requests stay pending, visibly, until you decide
DO
Dele OkonkwoPending with youThu 10 Sep – Fri 11 Sep 2026 · 2 days annual leave9 left → 7 after · No one else away · sent Fri 21 Aug, 16:40
DeclineApprove
MK
Marta KowalczykPending with youMon 12 Oct – Fri 16 Oct 2026 · 5 days annual leave17 left → 12 after · No one else away · sent Sat 22 Aug, 10:05
DeclineApprove

What this view holds

Time off, capacity and reviewsFor your 6 reports only
Every figure links to its recordDays left opens the balance payroll uses
Pay, bank details, tax codesNever sent to a line manager's browser
Right-to-work documentsHeld for HR admins

How the work was scoped

Industry
Professional Services
Duration
16 weeks
Cooperation model
Time & materials
Services
Portal redesignWorkflow automationRole permissions
Integrations
HubSpotDocuSignXeroGoogle Workspace
Technologies
Next.jsTypeScriptTailwind CSSPostgreSQLNode.jsGraphQL
Team
1 Project lead1 Product designer2 Frontend engineers1 Backend engineer1 QA engineer

Client name withheld under NDA. Engagement details are shown to the extent our agreement permits.

The hard problem

01
  1. 01

    Employees submitted time-off by email, onboarding documents went missing, and managers spent hours pulling simple headcount reports.

    Time off arrived by email and was transcribed by hand, so a booking existed only if someone remembered to enter it. Onboarding documents were chased over Slack and lost when the chaser went on leave. The headcount discrepancy that started the engagement turned out to be eleven leavers still active in one portal and gone from the other two.

    We built a unified HR portal with self-serve time off, guided onboarding checklists, and role-based views for managers and HR admins.

How the pieces fit

  1. 01

    Audited employee and manager workflows across 5,000 users

    Every workflow was traced against the systems it actually touched, which is how the three portals turned out to disagree about eleven people.

  2. 02

    Designed a clean self-serve portal for time off and personal data

    Time off and personal data write through one employee record, so a balance on screen is the number payroll will use, not a copy of it.

  3. 03

    Automated new-hire onboarding checklists and reminder triggers

    The rules came out of HR's own exception list: twelve variations on a standard hire that had all been handled by memory until then.

  4. 04

    Built role-aware dashboards for managers and HR leads

    Permissions resolve server-side per request, so a manager sees their own reports because the query walks the reporting line. Nobody ticked a flag to make it so.

Introduction

The system we were asked to build

Legacy HR tools were spread across three portals with confusing menus. We redesigned employee self-service and manager workflows so the obvious path is the right one.

Five thousand employees across four countries, and HR had been assembled by acquisition: three portals, three logins, and a fourth system for payroll that none of them talked to. The trigger was a headcount report that took two days to produce and disagreed with itself, arriving in the same month the company committed to doubling in a year.

Product Design & Web

Self-Service Employee Portal

Lets employees manage PTO, update benefits and view pay stubs on their own.

Time off, benefits and payslips previously lived in three systems with three logins. We put a GraphQL layer in front of all three and modeled the employee as one record, so a balance shown on the dashboard is the number payroll will actually use. Requests write through immediately and display as pending instead of optimistically confirming: a silently failed booking was the single most common support ticket in the old system.

What shipped
  • One GraphQL layer over three legacy systems
  • Balances read from payroll, never a cached copy
  • Pending states instead of optimistic confirmations
Time off

Leave year 1 Jan – 31 Dec 2026 · balance read from payroll, not a copy

ExportSearch people and requestsMon 24 Aug 2026

Annual leave allowance

30 days · 1 Jan – 31 Dec 2026
Allowance30days
Taken12days
Booked5days
Left13days
12 taken5 booked5 in draft13 left
If you send this draft:13 left8 leftnothing changes until Rhys decides

New request

Draft · not sent
FromMon 19 Oct 2026
ToFri 23 Oct 2026
TypeAnnual leave
Working days5 days · no bank holiday

RCGoes to Rhys Coleman · shows as pending until decided

Send for approvalSave draft

Every request this leave year

Newest first · each row opens the request and its decision
DatesTypeDaysRequestedDecided byStateAllowance
Mon 19 Oct – Fri 23 Oct 2026Annual leave5Not sent—Draft · not sentwould use 5
Tue 29 Dec – Wed 30 Dec 2026Annual leave23 Aug 2026Rhys Coleman · 3 AugApproved · booked−2
Tue 1 Sep – Thu 3 Sep 2026Annual leave322 Jul 2026Rhys Coleman · 23 JulApproved · booked−3
Thu 30 Jul – Fri 31 Jul 2026Annual leave214 Jul 2026Rhys Coleman · 14 JulTaken−2
Mon 27 Jul – Tue 28 Jul 2026Annual leave29 Jul 2026Rhys Coleman · 10 JulDeclinednot counted
Fri 12 Jun 2026Annual leave11 Jun 2026You · 8 JunCancellednot counted
Fri 22 May 2026Annual leave111 May 2026Rhys Coleman · 11 MayTaken−1
Tue 7 Apr – Thu 9 Apr 2026Annual leave32 Mar 2026Rhys Coleman · 3 MarTaken−3
Mon 16 Feb – Fri 20 Feb 2026Annual leave512 Jan 2026Rhys Coleman · 12 JanTaken−5
Fri 2 Jan 2026Annual leave11 Dec 2025Rhys Coleman · 2 DecTaken−1
On screen

The time off page: a 30-day allowance split into 12 taken, 5 booked and 13 left, a 5-day draft that would leave 8, and every request this leave year with its state.

Onboarding · Imogen Latham

Checklist generated from offer OF-26-1184 · United Kingdom · permanent · client-facing role

Remind ownersSearch people and requestsMon 24 Aug 2026
IL

Imogen Latham

Associate, Client Services · Bristol

Offer acceptedFri 21 Aug, 14:10
Documents completeSat 22 Aug, 09:32
Day oneTue 1 Sep 2026
7 of 9 signed offAll before day one

Nine steps

Each with an owner, a due date and the reminders it took
#StepOwnerDueRemindersState
1Offer letter signedE-sign webhookImogen LathamMon 24 Aug0Fri 21 Aug
2Personal & emergency contactsStarter formImogen LathamWed 26 Aug0Fri 21 Aug
3Bank details & HMRC starter checklistStarter formImogen LathamWed 26 Aug1Sat 22 Aug
4Contract of employment signedE-sign webhookImogen LathamWed 26 Aug2Sat 22 Aug
5Right-to-work checkShare code verifiedLeah Okoro · HRFri 28 Aug1Sat 22 Aug
6Pension enrolment noticePayroll connectorSam Dutta · PayrollFri 28 Aug0Sat 22 Aug
7Laptop & accountsIT queue · IT-48213Ben Ashworth · ITFri 28 Aug0Mon 24 Aug
8Day-one induction with buddyCalendar inviteRhys ColemanTue 1 Sep0Open
9Probation objectives agreedReview formRhys ColemanTue 29 Sep0Open
4 reminders sent automatically · none chased by handSignatures tracked by webhook

Everyone mid-onboarding

5 people
ILImogen Latham7/9UK · permanent · starts Tue 1 Sep
LFLuca Ferri4/6Italy · contractor · starts Mon 7 Sep
PRPriyanka Rao5/9 Stalled · Right-to-work check · 3 days, no share code
TATom Achterberg3/10Netherlands · permanent · starts Mon 14 Sep
CWCiara Walsh2/8Ireland · fixed term · starts Mon 14 Sep

Checklists differ by role, country and contract. A stalled step rises to the top of this board instead of waiting to be noticed.

Automated Onboarding Flow

On screen

A new starter's onboarding board: nine steps, seven signed off before day one, each with an owner, a due date and the number of reminders it needed, beside everyone else mid-onboarding with a stalled step raised.

Guided onboarding checklist for new hires with automatic document collection and signature tracking.

The checklist is generated from the offer record, so a contractor in another country gets a different set of documents without anyone assembling it. Each step knows what unblocks it: signature tracking is webhook-driven off the e-sign provider, and equipment requests open a ticket in the IT queue automatically. HR watches one board of everyone mid-onboarding, with stalled steps pushed to the top.

What shipped
  • Checklists generated per role, country and contract
  • Webhook-driven signature tracking, no manual chasing
  • Stalled steps surfaced on a single HR board

Role-Based HR Dashboard

Gives managers and HR leads clear oversight of team capacity, performance reviews, and compliance.

Permissions resolve server-side on every request; hiding UI was never the control. A line manager sees capacity and review status for their own reports only; an HR admin sees the whole org and the compliance dates running out. Every figure on the board links through to the record that produced it, so a manager questioning a number reaches the source in one click instead of emailing HR and waiting a day.

What shipped
  • Server-side permission resolution, never hidden UI
  • Capacity, reviews and compliance dates on one board
  • Every figure links through to its source record
The month · July 2026

Whole organization · every figure opens the records that produced it

July 2026Search people and requestsMon 24 Aug 2026
Sign-ins1,284July 2026
Finished unaided94%journeys with no ticket to HR
People5,000across 4 countries
Compliance1 lapsed3 more inside 30 days

What each journey lost

Old portals against Staffbrook · per task
TaskStepsMinutes
Book annual leaveEmployee93−6142−12 min
Check a leave balanceEmployee61−571−6 min
Download a payslipEmployee82−6101−9 min
Update bank detailsEmployee114−7254−21 min
Change home addressEmployee72−5122−10 min
Report a sick dayEmployee104−6183−15 min
Approve a leave requestManager72−591−8 min
Pull a team headcountManager142−12451−44 min
Start a new-starter checklistHR234−199510−85 min
Across these 9 tasks: 71 steps and 210 minutes removedMeasured once per journey

Running out

Right to work & certificates · by time left
Driving licence checkJoe Whitlock · Facilities · Bristol
33 days pastWed 22 Jul 2026
First aid at work certificateAisha Karim · Operations · Leeds
4 days leftFri 28 Aug 2026
Right to work · Skilled Worker visaMateus Oliveira · Engineering · London
11 days leftFri 4 Sep 2026
Right to work · share code recheckYuki Tanaka · Client Services · Bristol
23 days leftWed 16 Sep 2026
Fire marshal trainingGrace Oduya · Facilities · London
38 days leftThu 1 Oct 2026
Right to work · Graduate visaSanjay Iyer · Analytics · Manchester
52 days leftThu 15 Oct 2026
Mental health first aiderBeth Carrow · People · Bristol
69 days leftSun 1 Nov 2026
Driving licence checkHarriet Cole · Client Services · Leeds
97 days leftSun 29 Nov 2026
Visible to HR admins onlyAll dates
On screen

The HR lead's month: 1,284 sign-ins, 94 percent finishing unaided, a task-by-task record of the steps and minutes taken out of the old journeys, and right-to-work checks and certificates ordered by time left: three expiring within 30 days and one driving licence 33 days past.

Process

Phase by phase

  1. Phase 1: HR Portal & Workflow Audit

    Employee Journey & Bottleneck Analysis

    Audited employee onboarding, PTO request bottlenecks, and performance review workflows across 5,000 employees.

    • HR Workflow Audit
    • Employee Journey Map
    • Usability Matrix
  2. Phase 2: Self-Service UI Design

    Employee & Manager Portal Interface

    Designed a clean self-serve portal for employee onboarding, PTO approvals, and team organizational charts.

    • Figma Design Specs
    • Self-Service Portal Prototype
    • Design Tokens
  3. Phase 3: RBAC & Payroll Integration

    Role-Based Access & Payroll Sync Engine

    Engineered strict role-based access control (RBAC) and automated synchronization with external payroll platforms.

    • RBAC Security Layer
    • Payroll Sync Connector
    • Audit Trail Logging
  4. Phase 4: Company Rollout & Training

    Enterprise Deployment & Staff Onboarding

    Deployed across all company departments, cutting HR administrative tickets by 50% in the first quarter after launch, measured against the quarter before.

    • Company Rollout Schedule
    • Staff Training Portal
    • Admin Documentation
Payroll run · August 2026

Bristol · monthly salaried · figures read from the employee record, synced to the payroll provider

Awaiting approvalSearch people and requestsMon 24 Aug 2026
Gross pay£23,374.996 people
Deductions£5,966.99PAYE, NI and pension
Take-home to pay£17,408.00Pay date Fri 28 Aug 2026
Approve byTue 25 Aug, 12:00Approve run
1 changed rate for a second look · Joel Mensah: salary £37,500 → £40,000 from 1 Aug 2026 · changed by Leah Okoro · 12 AugOpen change

Six people

All amounts for August · one row per person
EmployeeSalaryGrossPAYENIPensionDeductionsTake-home
EWEllis WarrenNo change since July£31,500£2,625.00£315.50£126.165%£131.25£572.91£2,052.09
JMJoel MensahRate changed · check£40,000£3,333.33£457.17£182.835%£166.67£806.67£2,526.66
RARuth AdebayoNo change since July£44,500£3,708.33£532.17£212.833%£111.25£856.25£2,852.08
KTKit ThorntonNo change since July£49,000£4,083.33£607.17£242.833%£122.50£972.50£3,110.83
AMAnjali MehtaNo change since July£54,500£4,541.67£769.33£258.336%£272.50£1,300.16£3,241.51
GLGeorge LindqvistNo change since July£61,000£5,083.33£986.00£269.174%£203.33£1,458.50£3,624.83
Run total£23,374.99£3,667.34£1,292.15£1,007.50£5,966.99£17,408.00
Read from the employee record at 09:12 · nothing retypedLeave balances in this run come from the same record
Approval trailPrepared · Sam Dutta · 09:12Second look at 1 change · Leah OkoroApprove · Joanna Whitfieldaudit log · PR-2026-08-BRS
On screen

The August run waiting on approval: gross, deductions and take-home for six people, with take-home footing to £17,408.00 and one changed rate flagged for a second look.

What it carries now

-50%

Admin ticket reduction

<24h

Onboarding time

94%

User adoption

Ticket volume is the HR service desk's own count, comparing the quarter before the portal with the quarter after. Onboarding time measures offer acceptance to all documents complete. Adoption is the share of employees who used self-service at least once in the first ninety days, which is a stricter test than the share who logged in.

Client name withheld under NDA. Figures are approximate, drawn from the engagement’s own reporting.

What it settled

What the architecture settled

Self-service employee PTO & onboarding reduced HR admin ticket volume by 50%.

The tickets that disappeared were mostly one question, "has my request gone through?", and a visible pending state answers it without anyone replying.

Automated payroll sync eliminated manual monthly re-entry across departments.

Payroll stopped being retyped because the portal never held its own copy of a figure payroll owned, so there was nothing to reconcile.

Employee onboarding completion time dropped from 5 days down to under 24 hours.

Onboarding collapsed from days to hours because the delay had never been the work. It was waiting for someone to notice the previous step had finished.

Ways of working

How the work was run

  1. 01

    A cross-functional team of 5 worked on a time & materials basis over 16 weeks, covering Portal redesign, Workflow automation, Role permissions. We shipped in two-week increments, each one releasable and reviewed live before it merged. Decisions were recorded as they were made, so the reasoning survived the people who made it.

    We shipped in two-week increments, tested against real HR staff with no product owner speaking for them, and each one went to a pilot department before the whole company. The team stayed embedded with HR operations throughout, which is how the accrual rules (the part every previous attempt had got wrong) were caught in week three instead of at launch.

One request, end to end

Five days of leave, from a draft to the payroll that pays it

Nadia has 13 days left. Follow her request through the allowance preview, her manager's approval and the payroll balance, and watch for the HR ticket that used to follow every one of these. Switch steps, or use the arrow keys once a tab is focused.

Nadia picks Mon 19 to Fri 23 October. The suite counts working days against her own calendar and bank holidays: five. Nothing is written anywhere yet.

NBNadia BrennanAnnual leave · Mon 19 – Fri 23 Oct 2026
Draft · not sent
30-day allowance12 taken · 5 booked13 left
  1. 1Draft 5 days14:02
  2. 2Preview 13 → 814:03
  3. 3Manager approves16:40
  4. 4Payroll & calendar16:40
Times are illustrative.
Where the request shows, from one record
  • Nadia's time off pageDraft · 5 days
  • Rhys's approvalsNothing yet
  • Team calendarNothing yet
  • Payroll leave balance13 left
The ticket that never had to be raisedHR service desk · “Has my holiday request gone through?”Nothing sent, so nothing to ask about yet.

Why the ticket disappears: the old portals confirmed a booking optimistically, and a silently failed one was the most common support ticket. A visible pending state answers the question before anyone has to ask it.

Architecture

From a leave request to the payroll that pays it, through one record

Three portals and a separate payroll system used to hold their own copies of a person. Now every screen, every manager and the payroll run read the same record, so there's nothing left to reconcile.

  1. 01 · Trigger
    Self-service actionA request writes through immediately and shows as pending, never as an optimistic confirmation that might silently fail.
  2. 02 · Ingestion
    One GraphQL layerSits in front of the three legacy portals, so the employee is modeled as one record instead of three disagreeing copies.
  3. 03 · Engine
    Permissions & workflow rulesAccess resolves server-side per request by walking the reporting line. Onboarding checklists are generated per role, country and contract.
  4. 04 · State
    Employee record in PostgreSQLBalances are read from payroll, never cached, and changes land in an audit trail.
  5. 05 · Delivery
    Payroll sync & role viewsPayroll is synchronized automatically instead of retyped each month, and every figure on a board links to the record behind it.
What can't go quietly wrong

Pay, right to work & who sees whose record

Payroll reads the figure and never retypes it

The portal holds no copy of a figure payroll owns. Balances and pay come from the one employee record through the payroll sync, and a changed rate is flagged for a second look before the run is approved.

Expiry dates surface before they lapse

Right-to-work checks and certificates sit on the HR admin board ordered by time left, so anything inside the next 30 days, or already past, sits at the top instead of in a spreadsheet.

Managers see their own reports, by query

Permissions resolve server-side on every request by walking the reporting line; nothing relies on hiding UI. Data a manager may not see never reaches their browser, and access is written to an audit trail.

Are your staff still emailing HR to ask whether their holiday went through? Scope your build in three minutes.

Scope your build
Have a project?

Let's talk

Running a large platform, shaping a first MVP, or getting a product ready for a funding round? Tell us where you are. We'll shape the process around it, and stay with you after launch.