Design & engineering studioWebsites, stores, systems
Free audits openAlgeria --:--:--

A 50-year-old dive school in Tipaza, taken off WhatsApp and onto a system it runs itself.

Sector
Dive school, tourism
Role
Product design, web development, analytics
Period
March 2025 to ongoing
0.49 sLargest Contentful Paint

Google's good threshold is 2.5 s.

0.001Cumulative Layout Shift

Nothing moves under the reader's thumb while the page loads.

520 KBPage weight, 59 requests

The web median is close to 2.5 MB for the same job.

10Structured-data types

Reservation, Offer, Review, Service and six more.

Measured on the live site on 27 August 2026.

(01)

The brief.

Club SEC 17 has taught people to dive off Port de Tipaza since 1974. Its reputation arrived long before its infrastructure did: every reservation, availability check and follow-up ran through two personal phone numbers.

We built the operating layer that reputation deserved: a self-service booking flow with real capacity behind it, a staff dashboard that replaced memory with a shared record, QR-verifiable certificates, and a consent-tracked photo delivery pipeline. It ships on Next.js, loads its largest element in under half a second, and the club runs it without us.

The audience is French-speaking leisure divers and tourists around Tipaza and Algiers, booking a first baptême or a P1 to P3 certification. It is a cash market with no online payment, so the site's job is not to take money. It is to hold an accurate, confirmable place in a real diary.

Where it started

As reported by the club.

  • Two personal phone numbers as the entire booking system
  • Capacity tracked by memory, cross-checked by scrolling chat history
  • No structured record of past divers to re-engage
  • Certificates unverifiable once out of the club's hands
  • No analytics, so no answer to where bookings come from
(02)

What it had to achieve.

  1. Move discovery-dive reservations off phone and WhatsApp onto a self-service flow the diver completes alone.
  2. Give staff one place to see and manage capacity instead of reconstructing it from chat threads.
  3. Make a certificate checkable by a third party without the club being in the loop.
  4. Put a measurement layer in place so the next decisions are read rather than guessed.
(03)

The work.

Self-service booking with real capacity behind it

Per-date capacity limits, and detection of an existing upcoming reservation on the same phone number. Duplicate detection keys on the phone number rather than an account, because this audience will not create one. The flow has to work for a first-time visitor who arrived from Instagram ninety seconds ago.

Replaces a WhatsApp thread where staff checked availability by memory. Mobile LCP 0.52 s, 40 requests.

The booking page at phone width, with the booking button within thumb reach

An admin dashboard that replaced staff memory

Reservations, availability, photos, certificates, messages and users behind one sign-in. It shows how many divers are coming and who still has to be phoned, with a nine-day capacity chart and sea-closed days hatched.

The system did not abolish the phone call, it scheduled it. Confirmation still happens by phone the day before, because that is how the club runs. The dashboard makes sure nobody is missed, and counts the attempts when someone does not pick up.

The staff dashboard with today and tomorrow counters, a nine-day capacity chart and a call list
The staff dashboard with today and tomorrow counters, a nine-day capacity chart and a call list

Certificates that verify themselves

Each certificate is generated automatically with a QR code that leads to a public verification route. A third party enters one eight-character code and gets an answer, with the club out of the loop.

The certificate verification page with a single code field
The certificate verification page with a single code field

Watermarked photo delivery, with consent on the record

Every delivery link is scoped to one recipient and one set of photographs, with a consent step per recipient. There is no public URL to screenshot. Before, photos went out by hand over WhatsApp and Instagram with no record of who agreed to what.

The measurement layer

Google Analytics 4 and Microsoft Clarity are live. Before, there was no analytics of any kind, and so no way to tell a good decision from a lucky one.

(04)

Evidence.

MetricMeasuredBenchmark
LCP, desktop0.49 sGood under 2.5 s
LCP, mobile0.52 sGood under 2.5 s
Cumulative Layout Shift0.001Good under 0.1
Time to first byte197 msGood under 800 ms
Page weight520 KBMedian site about 2.5 MB
Images through the optimising pipeline67 of 69
Structured-data types10
Security headersHSTS + CSP

Desktop LCP was measured in headless Chromium at 1440 by 900, mobile at 390 by 844 at 2x. CLS is accumulated over the full load, excluding shifts after user input. Time to first byte is navigation timing from Vercel's edge. Page weight is transferred bytes across 59 requests on the home page.

(05)

What changed.

BeforeAfter
Taking a bookingPhone and WhatsApp, manually cross-checkedSelf-service form with real capacity behind it
Knowing a date is fullStaff memory and chat historyPer-date limits enforced at submission
Double-booking riskLive whenever two people answered at onceDuplicate detection on the phone number
Record of past diversWhatsApp scrollbackStructured reservations in a staff dashboard
CertificatesAd hoc, unverifiable outside the clubGenerated with a QR code and a public verification route
Photo deliveryManual sends, no consent recordWatermarked, token-scoped, consent recorded
Behavioral analyticsNoneGA4 and Microsoft Clarity live

The before column is the club's own account, not something we measured. The after column is observable on the live site.

(Client's word)

“Before, every booking went through two phones and we were always afraid of overbooking. Now every reservation, every diver and the whole history of the club is in one place, and we run it ourselves.”

President, Club SEC 17
(Diver's word)

“Plonger fi SEC 17 kanet une aventure inoubliable! L'eau kanet cristalline ou les guides kanou yaarfou chaque détail du site.”

Isak Bourahla, certified P2 diver
(06)

Where it stands.

  • The club takes reservations without a person mediating every one of them.
  • Capacity is enforced by the system rather than remembered by staff.
  • A certificate issued in Tipaza can be checked from anywhere.
  • Two measurement tools are live, so the next decisions have data underneath them.

We do not claim a booking-volume or conversion lift. That needs a tracked baseline over a full season, and that data does not exist yet.

What's next

  1. Define the conversion events in GA4 so booking starts, completions and abandonment are counted.
  2. Read a full season of Clarity recordings against the booking screen.
  3. Add alt text to the 45 of 69 gallery images that still ship without it.
(07)

Screens.

The staff dashboard at phone width
Certificate verification at phone width
The staff sign-in at phone width

Running on WhatsApp too?

Get your free audit
Next caseSaaS platformSkyPages