← All work

Adlab

Change an offer once. Every website follows.

Adlab runs a network of comparison websites. I built the place where their team manages every offer — and the connection that pushes each change out to all their sites at once.

My role
Sole developer
When
2024 — now

A deal that’s out of date is worse than no deal at all. Adlab needed every one of their websites to show the right offer, the moment it changed — without an army of people editing pages.

How it works

  1. 01

    Too many websites to keep in step

    Adlab publishes deals on many websites. When a price changes, it has to change everywhere — fast. Doing that by hand, site by site, means mistakes and old prices left behind.

  2. 02

    One place for every offer

    So the team now edits each offer in one place — the catalogue. Brands, prices, lists of “the best five deals” — all managed once, with each person seeing only what they’re allowed to change.

  3. 03

    A messenger instead of a crowd

    When something changes, the catalogue doesn’t wait for the websites to ask. A messenger announces the change to every site, and keeps trying until each one has heard it.

  4. 04

    The websites update themselves

    Each website runs a small plugin I built. It hears the announcement, fetches the new offer and shows it — no one logs in to change anything.

  5. 05

    Counting what matters

    A small script on every site notes each click on an offer, and the signup forms let people switch electricity deal in minutes. Both report to one place, so there’s one honest number for what worked.

editon change“update!”clickssignupsAdlab’s teammanages offersThe catalogueevery offer, onceThe messengerannounces changesThe websitesWordPress pluginSignup formsswitch in minutesClick counteron every siteElberegnercounts the results
  • Built by me
  • Outside service
  • People

Choices I made

  1. 01

    Announce changes instead of waiting to be asked

    If every website checked for news every minute, the catalogue would be flooded — and prices would still lag behind.

    The catalogue announces each change, and every site fetches only what it needs.

    The catch A website has to be reachable to hear the news — so the messenger keeps retrying until it is.

  2. 02

    Lists that build themselves

    Some lists are chosen by hand. Others should always show “the five best deals right now”.

    Lists can be hand-picked or built automatically from rules the team sets.

    The catch The rules have to be simple enough that the team can predict what a list will show.

  3. 03

    Throw away what isn’t used

    A connection to ad networks had been built, but nothing ever used it.

    I removed it completely instead of maintaining it “just in case”.

    The catch If it’s ever needed, it gets built again — properly, for a real need.

The result

Under the hood — for the technical reader

Stack Laravel · Filament · WordPress · Next.js · TypeScript

  • Offer catalogue 2025

    A back office for offers, brands and collections, with imports, custom fields, roles and per-team API keys.

    Laravel · Filament · Horizon · Pest

  • WordPress plugin 2025

    Connects any WordPress site to the catalogue — updates arrive by webhook, lists render with shortcodes, and the plugin updates itself.

    WordPress · PHP

  • Signup forms 2025

    Electricity signup flows for DCC Energi and white-label partners, pre-filled from the comparison, with address lookup and optional MitID.

    Next.js · React · Tailwind

  • Click tracking 2025

    A small script served from a CDN that follows visits and offer clicks across the sites.

    TypeScript