Sam Jennings
Case Study · 04Royal LePage WolstencroftJuly 2026

Onboarding ran out of an inbox. Now it runs itself.

How I built a real estate brokerage its own onboarding and e-signature platform — self-hosted, Canadian-resident, and filing its own paperwork.

Client
Royal LePage Wolstencroft
Sector
Real estate brokerage
Timeline
Five days
Stack
Next.js · Supabase · DocuSeal
The brief

Not a website. The thing the business runs on.

A brokerage brings on two very different kinds of people. Employees — administration, conveyancing, management — and Realtors, who are independent contractors. Each arrives with a stack of documents that has to be signed, countersigned, and filed somewhere it can be found again in five years.

Email was the system. Documents went out as attachments, came back signed in whatever state the signer managed, and were filed into the HR drive by hand. It worked the way manual processes work — fine for one hire at a time, and unable to answer “what is this person still waiting on?” without somebody going and looking.

The ask was a portal to keep track of it. What it needed was a signing platform with the brokerage’s own name on the infrastructure — because these are employment records, and where they live and who holds the audit trail is part of the specification, not an afterthought.

Audit findings

Four problems.

01

No single source of truth

Where a new hire stood lived in somebody's sent folder. Answering “what is this person still waiting on?” meant opening an inbox, a shared drive, and a spreadsheet, then guessing.

02

Two intakes treated as one

Employees and Realtors need different documents, different checklists, and different filing. The manual process ran them down the same track and corrected by hand afterwards.

03

Filing done by dragging

Signed PDFs were downloaded from email and dropped into the HR drive by hand. Naming drifted, folders diverged, and the occasional document simply never landed.

04

Rented custody of employment records

Off-the-shelf signing services charge per envelope forever and hold the signed record — and its audit trail — wherever the vendor chooses to. For employment files, that placement is not a detail.

The system

Five moving parts. One surface.

This is a live system holding real employment records, so there are no screenshots on this page and no link to click. Here is the shape of it instead — which is the more useful thing to look at anyway.

Admincreates the hireNew hireone link, no loginTHE PORTALNext.js · Verceldashboard + progresstwo-track checklistscandidate hubsetup sheetinvite-only authPostgres + AuthSupabaseCanadian regionSIGNING ENGINEDocuSeal · self-hostedDocker + Caddy, TLSCanadian VPSnightly off-box dumpsFiling workercron, every 5 minutessigned PDF + audit trailHR systemexisting Drivefolder structureEmaildaily digest, nudgesexpiry alertscreate requestwebhook: signedrequest / data flowsignature event — the only way an item completes
The portal is the only surface anyone touches. Everything to the right of it — signing, filing, notifying — runs without a person in the loop.
5
Days from first commit
to a running system
2
Onboarding tracks,
one platform
0
Per-signature fees,
now or ever
0
Signed documents
filed by hand

A signing platform isn’t a form tool. Its database is evidence — so it gets backed up like evidence, and no template is ever edited after somebody has signed it.

What I built

The full scope.

  • /
    A self-hosted signing engine
    DocuSeal in Docker behind Caddy on a Canadian VPS, with TLS, key-only SSH, a firewall, and automatic security updates. No per-signature fee, and the signed record never leaves infrastructure the brokerage controls.
  • /
    The portal
    Next.js on the App Router, deployed on Vercel, invite-only. A dashboard showing every active onboarding with real progress, a per-document checklist, and per-signer status rather than a single “sent” flag.
  • /
    Two tracks, one system
    Employee and Realtor intakes are separate paths — their own document packs, their own checklists, their own filing conventions — selected at the moment a hire is created instead of patched up later.
  • /
    A candidate hub
    The new hire gets one link. No account, no password, no attachments. They see what is left to sign, sign it, and watch the list close out.
  • /
    Signature status that can't be faked
    Completed signatures arrive by webhook and are applied automatically. Signature items cannot be ticked off by hand at all — if the checklist says it's signed, a real signature exists behind it.
  • /
    Automated filing
    A worker on the VPS polls for completed documents every five minutes and files the signed PDF alongside its audit trail into the brokerage's existing HR folder structure, using the naming convention that structure already expected.
  • /
    Notifications and nudges
    Transactional email when a candidate finishes and when a document is fully executed, a daily digest of everything outstanding, automatic nudges for candidates who have gone quiet, and alerts on anything time-limited.
  • /
    A provisioning sheet
    Each hire generates a setup sheet covering accounts, systems, board and web listings, and access — so the operational half of onboarding is ready on day one instead of discovered during week two.
  • /
    Evidence discipline
    Nightly off-box database dumps and weekly snapshots, because the signing database is the evidence. Templates are versioned and never edited in place once anyone has signed one.
Judgement calls

The part I refused to automate.

Before wiring a single real document into the system, I read the brokerage’s entire document pack end to end. Some of it wasn’t ready to be automated yet — and automation is very good at taking a document nobody has finished reviewing and putting it in front of a hundred people.

So the platform shipped complete and proven end to end on placeholder templates, with a standing rule written into the spec: no draft document becomes a live template until it has been through proper review. The machine was ready before the paperwork was, and that’s the right order — the reverse is how a brokerage ends up with two hundred signatures on a document it has to re-paper.

Two other things stayed out on purpose. Anything collecting full payment card details never went near the portal — that’s a compliance regime I wasn’t going to drag a hiring tool into for the sake of tidiness. And files that are access-restricted by design stayed where their restrictions already worked.

Knowing what not to put through the system is most of what makes it safe to hand over.

Got a process that only works because somebody remembers?

Most businesses have one — onboarding, quoting, approvals, intake. Email carries it, a person chases it, and nobody can say where it stands without asking. That’s the kind of thing I build out.