Skip to content

200 members. 62 countries. One source of truth.

A fifty-year-old FMCG network with no way to show its own value. We built ESMA a custom platform (public site, member dashboard and native app) where every company, event and connection finally lives in one structured, searchable, provable place.

At a glance ESMA International Network
Client
ESMA International Network
Sector
Non-profit · FMCG trade network
Role
Product design · Design system · Front‑end · Back‑end · Native app
Build
Laravel · Bespoke CMS · iOS & Android

In short

The problem
A 200-company network with no way to show a member what their membership actually returned.
What we built
A platform ESMA owns outright: public site, member dashboard, and native iOS and Android apps.
What changed
Members are searchable and self-served rather than scrollable in one list, and applications run as a governed workflow instead of an inbox thread.
Platform overview · 33 s
ESMA International Network, the public site across devices

Overview

The network was the product. The website wasn’t.

ESMA has connected manufacturers, distributors and agents in packaged consumer goods since 1976. Two hundred-plus member companies. Sixty-two countries. Membership by invitation only, screened by the CEO and approved by the Board. Fifty years of that produces something rare: a room where introductions actually convert. What it did not produce was a way to find anyone in it. We rebuilt ESMA as a product: one public platform, one members’ area, one native app, one design system underneath all three.

1976

Founded

200+

Member companies

62

Countries

3

Products, one system

The challenge

A membership problem, not a website problem.

Every member joins ESMA for three things: an endorsement that carries weight, visibility with the right buyers, and access to a room they can’t get into. None of the three shows on a brochure site. A member could be listed for a decade and never know if one distributor had looked them up. The network’s own data (who makes what, sells where, in which sectors, under which brands) lived in spreadsheets and in the CEO’s head.

Unsearchable

Two hundred companies presented as a flat list. No categories, no countries, no product taxonomy. Finding a Portuguese frozen-goods distributor meant emailing the CEO.

Unprovable

Members funded a network whose returns were entirely anecdotal. No visibility data, no engagement signal, nothing to bring to a renewal conversation.

Unscalable

A governance process (invitation, CEO screening, Board decision, onboarding) running on inbox threads, with no state anywhere in the system.

The foundation

Three products. One vocabulary.

Before a single page was designed, we built the system all three products would speak. Atomic naming, three breakpoints, every component drawn in every state it would ever hold, well past the happy path. Form fields ship in six states, calendar days in eleven, the profile-edit flow in forty-eight. It’s the reason the app, the dashboard and the public site look like one organisation rather than three vendors.

185

Component sets

530

Icon variants

50

Colour tokens

3

Breakpoints

~110

Designed screens

The centrepiece

A directory that thinks in taxonomies.

The directory is the asset the whole network is built on, so we modelled it properly rather than listing it. Six filter facets work simultaneously over two hundred companies: company name, member category, product category with a nested sub-tier, country, trade sector and brand. A buyer looking for organic beverages, chilled, sold into Iberian supermarket chains gets there in four clicks instead of one email.

Step 01

Model the network

Every member resolves across five axes at once. Product categories nest, so “Food products, then Frozen” filters without duplicating the record.

Step 02

Filter, don’t browse

Six facets, applied live and combinable. Selected filters stay visible and individually removable, so nobody loses their way three refinements deep.

Step 03

Profile as business record

Headcount, trade sectors, brands, product categories, temperature class, multiple mapped addresses and named contacts with direct lines.

Step 04

Built to be maintained

Members edit their own record through a guided six-step flow. The directory stays accurate because keeping it accurate is in the member’s interest.

The profile

Everything a buyer needs. Nothing they don’t.

A member profile does two contradictory jobs: read like a company’s best foot forward, and function as a structured record a stranger can assess in ninety seconds. We split it in two, narrative and imagery on one axis, hard facts on the other. Identity, company numbers, named points of contact, mapped locations, classification, and links whose every click is tracked back to the member’s dashboard.

ESMA member profile

Events engine

Every shape a programme can take.

ESMA runs conventions, seminars, webinars and trade fairs across dozens of countries. Single-day and four-day, one stage and three in parallel, free and ticketed. Rather than force the association to fit one template, we designed the engine to absorb all of it.

The schedule matrix

Four programme structures, drawn and built, so the engine bends to the event rather than the other way round. Mobile collapses a four-day, three-stage agenda into something still readable on a phone.

Multi-stage · multi-dayMulti-stage · in contentSingle-stage · multi-daySingle-stage · single day

The filter & calendar layer

Filter by name, category, location and cost, then pick a date, a range, a set of loose dates, or a preset. Every selection state is drawn, including the asynchronous ones a developer usually has to invent.

11 day statesRange selectLoading · empty · next monthToday · this week · this month

Knowledge layer

Open enough to attract. Gated enough to matter.

Four content types, each with its own archive, template and filtering. News stays open and indexable, doing the work of acquisition. Reports, documents and regulatory updates sit behind membership, doing the work of retention. One shelf, two jobs.

News & Announcements

Public and indexed. Member wins, convention recaps, trade-fair coverage. This is the part of the hub that brings strangers in.

Articles & Reports

Member-gated PDFs. Market analysis and sector reporting a non-member can see exists but cannot open, which is precisely the point.

Document Library

Member-gated downloads with attachment handling, mirrored inside the dashboard so the same file is one click away either way.

Regulatory Updates

Compliance and market-access changes across 62 countries. The shortest shelf life and the highest urgency, so it gets its own archive.

Membership

Invitation only. Rendered as a process.

ESMA’s exclusivity is the mechanism itself. Applicants are screened by the CEO and confirmed by the Board, and the resulting endorsement is precisely what members are buying. So we built the funnel as a governance workflow with real states behind it.

Step 01

Request an invitation

Applications are accepted from the web and the app alike, into one governed queue.

Step 02

Review & CEO screening

The CEO screens each applicant, the same authority the endorsement is built on.

Step 03

Board decision

Confirmed by a Board decision. Exclusivity is the mechanism.

Step 04

Onboarding & profile

Approved members are onboarded straight into a guided profile setup.

International

The core membership for manufacturers, distributors and agents operating across borders.

Associate

For organisations adjacent to the network that add value without the full trading profile.

Corporate

For larger groups whose footprint spans several categories and markets at once.

The payoff

Membership, with the receipts.

Members have always paid for visibility. Now they can see it. Every member’s dashboard reports how their profile is actually performing: clicks on the website link, on each named contact, on the map and on every social channel, filterable by year and month. A renewal conversation stops being a matter of faith.

Some content is blurred to protect client and member data.

ESMA International Network, in the hand

Under the hood

Bespoke because the shelf had nothing on it.

A five-axis member taxonomy, a governance workflow with real states, per-member analytics, four gated content types, a multilingual front end and a native app on the same data. There is no plugin for that. We built it as a custom Laravel application so ESMA owns its own system of record, with no licence dependencies, no platform tax, and a data model that can still be extended in twenty years.

Engineered

Custom Laravel application on a purpose-built data model. No plugin does this.

Member taxonomy across five simultaneous axes, with nested product categories.

Membership lifecycle as first-class states: applied, screened, approved, onboarded.

Per-member click analytics across links, contacts and social channels.

Role-based member area with team user management.

A front end built for translation, with copy held apart from the interface.

Native iOS & Android on the same data, with push and guest-mode browsing.

Applications accepted from web and app alike, into one governed queue.

Designed

One system, three products.

An atomic design system of 185 component sets and 1,421 variants, with three breakpoints applied to pages and components, every interactive element drawn in every state, a centralised modal system, and QA sign-off tracked component by component. Accessibility designed to WCAG 2.1 AA across both grounds (designed to that standard; an audit has not been run).

Stack

LaravelBespoke CMSiOSAndroidDesign SystemFigma

The result

One network. Three products. Zero seams.

ESMA now runs on a platform it owns outright. Two hundred member companies are searchable across five axes instead of scrollable in one list. Applications arrive as a governed workflow rather than an inbox thread. Members maintain their own records, manage their own teams, and see for themselves what their membership is returning. And it’s the same product in a browser, in the members’ area and in the hand, because it was one system from the first component.

110+

Screens designed

185

Component sets

3

Products shipped

62

Countries served

Across surfaces

One product, four ways in.

The same data and the same design system, seen through every surface a member touches, from the public website on desktop and on mobile to the native app and the member dashboard behind the login. Open any frame to read the page in full.

ESMA website homepage
Member Directory, the searchable network
A member profile as a business record
Events Hub, the calendar and upcoming conventions
A single event page
Resources Hub, news, reports and regulatory updates
About, the network and its history
Membership, why FMCG companies join
Member login
ESMA website homepage on mobile
The mobile menu open
Member Directory on mobile
A member profile on mobile
Events Hub on mobile
A single event page on mobile
Resources Hub on mobile
About on mobile
Membership on mobile
Member login on mobile
The native app, visitor home
Member Directory in the app
Directory filters, category, member type, product category
A member profile in the app
An event in the app
App login
The membership application form in the app
The member area in the app
Profile statistics, click sources, month by month
The app main menu
The app menu with network contacts
The member dashboard, profile completeness and click analytics
The member dashboard on mobile
Dashboard notifications on mobile
Managing event registrations from the dashboard
Event registrations on mobile
Editing a company profile, the member owns their own record
Editing a company profile on mobile
User management, a company adding its own colleagues
User management on mobile
The document library, filtered by category
The document library on mobile
The help centre
The help centre on mobile

Some content is blurred to protect client and member data.

See it live

Seen enough? Go and use it.

The platform is live on the web and on both app stores. Take a look, or pass it on to someone who should.

Let’s talk

Got a project
in mind?

Prefer a call?

Book a free 30-minute call

Opens a booking panel here, or a new tab if scripts are blocked. Cookie Policy.

Fields are required unless marked optional.

You’ll hear back from Mark or Adam within one working day.

We use what you send only to reply to you. See our privacy policy.

This site is protected by reCAPTCHA and the Google Privacy Policy and Google Terms of Service apply.