Skip to content

Case study

Bilingual member portal for 9,000 licensed members

Every January, licence renewals collapsed into phone calls and email. We rebuilt the portal and the public website as one bilingual system, so members renew themselves, staff work a queue, and the register updates the moment a record changes.

Named only with client approval Figures marked are illustrative Reply within one business day

app.client.com/dashboard

4,812

Active users

99.98%

Uptime

142ms

p95 latency

The engagement, in short

OlDevs rebuilt a provincial professional association's member portal and public website as a single bilingual system serving roughly 9,000 licensed members.Members now renew their own licences, log continuing education and update their records, while staff review submissions from a queue instead of a shared inbox. The public register is live and searchable by name, licence number and status rather than a nightly PDF export. In the first cycle, 94% of renewals were completed self-serve with 0 outages during renewal peak.

Key facts

01Client
A provincial professional association with roughly 9,000 licensed members
02Industry
Professional regulation and membership
03Services
Web app development, web development
04Duration
16 weeks
05Platforms
Member web application, public website and live register, English and French
06Outcome
94% of renewals completed self-serve in the first cycle

The challenge

A renewal season the old system could not survive

Annual licence renewals ran through a decade-old portal that timed out under load every January, which pushed hundreds of renewals onto staff to finish by phone and email. Members could not update their own records, and the public register was only ever as current as the previous night's PDF export. Neither the portal nor the website met the association's accessibility obligations or its commitment to serve members in French.

01

Timeouts at exactly the wrong moment

The old portal fell over when it was needed most. Renewal traffic concentrated into a few weeks each January, and every timeout turned a five minute self-serve task into a phone call the registrar's team had to finish by hand.

Legacy portal · Peak load

02

No self-serve record updates

Members could not change an address, employer or practice status without contacting staff. Every correction became a task for someone, and the register drifted out of step with reality between the moment a member's details changed and the moment someone keyed it in.

Manual data entry · Member records

03

A public register published overnight

The register the public relied on was a nightly PDF export. Anyone checking a licence saw yesterday's status, there was no way to search by licence number, and a change to a member's standing stayed invisible until the next export ran.

Public register · Stale data

04

French and accessibility added last

French content lagged behind English because it was maintained separately from the English pages. Members using a screen reader met form fields that were not properly labelled, so the association could not honestly claim WCAG 2.2 AA.

Bilingual content · WCAG 2.2 AA

What we built

One bilingual system for members, staff and the public

We rebuilt the member portal as a web application with self-serve renewals, continuing-education logging and a live public register searchable by name, licence number and status. The public website was rebuilt alongside it on the same design system, with every template written for WCAG 2.2 AA and English and French content managed from a single screen. Payments run through the association's existing merchant account, and staff review renewals from a queue rather than an inbox.

01

Self-serve renewal workflow

Members sign in, confirm their details, log continuing education and pay in one pass, with the application saving as they go. The validation rules the registrar's team set are enforced at entry, so a submission that reaches staff is already complete.

Web app · Renewals

02

Live public register

The register reads from the same records members edit, so a status change becomes public within minutes rather than overnight. Visitors search by name, licence number or status instead of opening a PDF and reading down it.

Public register · Search

03

English and French from one screen

Editors write both languages side by side in a single interface, and the templates carry language attributes, translated form errors and localised dates. A page cannot go live in one language while the other quietly falls behind.

EN and FR · Content model

04

Staff review queue

Renewals arrive in a queue with filters, assignment and notes, replacing the shared inbox. Staff can see what is waiting, who is handling it and what still needs checking, so a busy January is worked as a list rather than as an inbox.

Staff tools · Review queue

Process

How the engagement ran.

  1. Discovery with the registrar's team

    We mapped the renewal cycle end to end with the staff who run it, including the exceptions that never made it into any documentation, and agreed what a complete submission actually means.

  2. Design system and accessibility baseline

    We built the shared component library first and tested each component with a keyboard and a screen reader before any page used it, making WCAG 2.2 AA a build condition rather than a closing audit.

  3. Working demos every Friday

    From week two the registrar's team saw working screens each week. Workflow decisions were made against software they could click rather than wireframes, which kept rework out of the later weeks.

  4. A rehearsed renewal cycle

    Before the window opened we ran a full renewal cycle through the new portal under renewal-level load, so anything that would have timed out in January surfaced in a test instead of in front of members.

  5. Launch ahead of renewal season

    Portal and website went live together before the renewal window, with monitoring on the renewal path so problems were caught and handled while members were still online.

Stack

What it was built with.

Member and public front end

Member portal web applicationShared component libraryAccessible form patternsResponsive page templatesDesign tokens

Data and workflow

Member and licence recordsRenewal and continuing-education workflowPublic register searchScheduled and background jobsDocumented internal APIs

Bilingual publishing

Paired English and French content modelOne editing screen for both languagesLanguage attributes on every templateTranslated validation messagesLocalised dates and currency

Accessibility and testing

WCAG 2.2 AA component testingKeyboard-only test passesScreen reader test passesAutomated regression testsManual accessibility audits

Integration and operations

Existing merchant account for paymentsRenewal-level load testingMonitoring and alertingDocumented handover and runbooks

94%

Renewals completed self-serve in the first cycle

0

Outages during renewal peak

3 days → 20 min

Median time to publish a register change

Outcomes

What changed for the client.

01

January stopped being triage

94% of renewals were completed self-serve in the first cycle, and there were 0 outages during renewal peak. Staff spent the month on genuine exceptions rather than on keying in forms that members could have filled themselves.

02

The register tells the truth

Median time to publish a register change went from 3 days to 20 min. Employers, other regulators and the public now see a licence status that matches the record, which is the whole point of holding a register.

03

French is a first-class experience

Both languages are written, reviewed and published together, so the French experience is not a translation bolted on afterwards. Members choose a language once and every screen, receipt and error message follows.

04

Accessibility the association can demonstrate

Every template was built and tested to WCAG 2.2 AA with a keyboard and a screen reader, and the component library keeps new pages compliant by default rather than by inspection.

In their words

The client on the result.

Our January used to be triage. This year the phones were quiet, and for the first time the French experience is not a translation bolted on afterwards.
AP

Registrar, provincial professional association

Professional regulation & membership

FAQ

Questions about work like this.

Sixteen weeks from discovery to launch, with working screens demoed every Friday from week two. The schedule ran backwards from the renewal window, so the portal was live and monitored well before members arrived. Request a quote and we will scope your own timeline the same way.

Yes. English and French are managed side by side in one editing screen, and the templates carry language attributes, translated validation messages and localised dates and currency. A member chooses a language once and it holds across the portal, the website and the messages the system sends them.

It means the renewal form can be completed with a keyboard alone, that every field has a programmatic label, that errors are announced rather than only coloured, and that focus order and target sizes work for people using magnification or a screen reader. We tested with a keyboard and a screen reader as we built.

No. Payments run through the existing merchant account, so the association keeps its banking relationship, its reconciliation process and its card data handling boundary. The portal handles the renewal workflow and hands off to the provider for the payment itself.

The client does. On every OlDevs engagement the client owns all code, designs, accounts and intellectual property, and we hand over repositories, infrastructure definitions and runbooks at the end. Nothing in the build depends on a licence only we can renew.

Still have a question? Ask us when you request a quote

Let’s connect

Have a problem like this one?

Tell us what is not working. We’ll reply within one business day with how we would approach it and a tailored quote.

We’ll only use your details to prepare your quote. No lists, no spam.

Call us Request a quote