Sam Okafor

Freelance creative developer · Lisbon · available Q3

Interfaces, measured.

I build fast, exact web interfaces for founders and agencies. No claims on this page, only readings: the live audit panel is measuring this very site while you read this sentence.

Shipped for teams at fintech, retail and media companies across the EU. References on request, latency numbers on delivery.

LIVE AUDIT · this page measuring
Transfer weight
88KB
First paint
0.2s
DOM nodes
380
Frame rate
60fps
Layout shift
0.00CLS

Readings come from this browser's Performance APIs, not a marketing table.

Method

Opinions are cheap. Readings are not.

  1. 01

    Budget first

    Every project starts with a performance budget in the contract: weight, paint time, interaction latency. If a design decision blows the budget, the budget wins.

  2. 02

    Motion with a job

    Animation earns its place by explaining something: where a panel came from, what just changed, what to do next. Decorative motion gets cut in review, including mine.

  3. 03

    Accessible by construction

    Keyboard flow, contrast and semantics are written in from the first commit, not audited in at the end. Retrofitting accessibility costs three times what building it does.

  4. 04

    Handover you can read

    You get a documented design system, not a folder of divs: tokens, component states, and a README your next developer will thank you for.

Selected work

Three problems, three readings.

Latency waterfall diagram: request bars shrinking from 3.8 seconds to 0.9 seconds 1s2s3s4s before: 3.8s interactive after: 0.9s interactive

Fintech · checkout rebuild · 2025

Meridian Pay: a checkout that stopped losing people

Meridian's mobile checkout took 3.8 seconds to become interactive and 14 percent of buyers left before it did. I rebuilt the flow as a three-field form with optimistic validation and moved everything non-critical off the main thread.

  • 0.9s to interactive
  • 11% more completed payments

Design agency · system build · 2024

Studio Norte: one token file, forty screens

Norte's designers were redrawing the same components in every file. I built their product's design system as a single token source feeding CSS, Figma and documentation, with every component state written down once.

  • 40screens on one system
  • 3x faster page assembly
Token map diagram: one source node fanning out to component nodes tokens.json buttonfield cardnav hoverfocuserror
Live coverage timeline: a reading line rising steadily across election night 20:00 polls close23:30 first calls03:00 peak 190k concurrent readers, zero dropped updates

Media · live data front end · 2024

O Ponto: election night without a spinner

A national news site needed live results that would not fall over at midnight. I built the results front end as a stream of server-sent patches over a static shell: no polling, no reload, and a reading experience that stayed calm while the numbers did not.

  • 190k concurrent readers held
  • 0dropped update batches

Working together

Two ways to hire me.

Most projects start here

Project build

A defined interface, built end to end: scope, performance budget, design system, delivery. Fixed price agreed after a scoping call, typically 3 to 8 weeks.

  • Performance budget written into the contract
  • Weekly demo on a live URL, not screenshots
  • Documented handover your team can extend
Book a scoping call

Embedded weeks

I join your team two to four days a week: unblocking a launch, hardening a front end, or pairing with your developers on the tricky ten percent. Weekly rate, one month minimum.

  • Your repo, your process, my readings
  • Audit of the existing front end in week one
  • Knowledge stays with your team when I leave
Ask about availability

Contact

Tell me what is slow, unclear, or ugly.

Three fields, thirty seconds. I reply within two working days with either a call slot or an honest "I am not the right person for this".

Your message goes to me, not a CRM. Nothing here is tracked beyond the readings you already saw.