Context

Designers are builders now, and I have enjoyed that shift at work more than anything in years. I wanted to try it properly on something of my own, so Jelly Map is the result: Figma for thinking, Claude Code in the terminal for the logic and the data modelling, Lovable for the app, Xcode to ship it. The ambition was to take an idea of my own from design to a released iOS app in days, not months.

Jelly Map AppSwimming conditions intelligence for Ireland and the UK, from predictive modelling and live swimmer sightings

“Any jellyfish?” Researched, designed, built and shipped solo. People ask it hundreds of times a day at every ladder and slipway on the coast. This native iOS app answers it.

Dónal O'Mahony | Personal project | Research, design, build, ship

Jelly Map open on a phone held above cold Atlantic water at dawn beside a slipway swimming ladder, showing the dark mode tides and light screen

Goals

  1. 1

    One honest answer

    Should I get in? One screen, with an honest read on how confident the answer is.

  2. 2

    Live sightings

    Swimmer reports in two taps with no account, which existing jellyfish maps do not carry.

  3. 3

    Predict the gaps

    Cover the eight months a year when official bathing water sampling stops.

  4. 4

    Solo, end to end

    Research, model, build and ship a native app alone.

  5. 5

    Through App Review

    Approved by Apple and live on the App Store, with no team or company behind the submission.

01

Genesis

It started at home. My family are wary of jellyfish, in the sea here and on holiday every summer: can we swim, are there any in, what happens if one of us gets stung? Nobody could ever answer. I noticed the same question at the ladders and slipways near where I live: people queue to get in and out of the water, and “Any jellyfish?” comes up every time.

Asked hundreds of times a day, at every swim spot in Ireland and the UK

The person climbing out of the water usually knows the answer. Nobody else does, and there is no record of it once they leave.

Plenty of jellyfish maps exist: marine institutes, citizen science databases, bloom trackers. Excellent for researchers, but almost none carry live user sightings. That is the gap. Someone on a ladder does not want a species distribution map. They want to know what the last person saw.

Jelly Map nearest sightings feed, listing live reports from swimmers
Live, local, useful

Sightings from the people who just got out of the water.

Each report can be confirmed or cleared in one tap. No account required.

The live feed: swimmers verify each other in one tap.
02

Research

Family, friends, the local swimming crowd. Conversations at slipways and in WhatsApp groups. The scope tripled, and every expansion came from them.

1

“It’s not the jellyfish that worries me”

“I’d swim with jellyfish. I’m not swimming after heavy rain.”

Irish and UK coastal towns run combined sewers. Heavy rain overwhelms them and they discharge into the sea. Every regular swimmer knows this. Nobody knows when, because official notices follow fortnightly sampling and arrive days late.

That reframed the product around one question: is it safe to get in?

2

“Just tell me the tide”

“I check three apps every morning.”

The highest frequency ask, and the least glamorous. The habit already existed. I just had to be the app they opened first.

3

“There are way more than there used to be”

Unexpected. People wanted to talk about jellyfish: warming seas, longer seasons, new species. Older swimmers had long memories and strong opinions. That added a second layer to the product: species guide, sting first aid, what is in season and why.

Identify, understand, act

Species guide and sting first aid in one place.

Plain severity labels make the guide useful at the moment someone needs it.

Jelly Map guide with sting first aid and jellyfish species
Identify every species, with HSE and NHS sting first aid in seconds.
03

The intelligence

Tide, sea temperature, moon phase and the best swim window read as one screen. Four systems sit behind it, each one reading a set of signals, making a judgement a swimmer can act on, and refusing to do certain things.

01

Jellyfish likelihood

Reads

species in season and sting severity · sea temperature against seasonal norms · wind direction against each beach’s own orientation

Judges

whether an offshore bloom is likely to reach this bay today

Refuses

to let quiet reporting read as good news. Sightings can only ever push risk up.

02

Waste spill probability

Reads

live rainfall from official gauges · ground saturation over the previous 48 hours · travel time from overflow to that beach

Judges

whether this network has taken on more than it can hold, often hours before an official notice

Refuses

to outrank an authority. Council and EPA notices always win.

03

Tide & swim conditions

Reads

tide height and direction · sea temperature · wind, daylight and moon phase

Judges

when today is actually good to swim

Refuses

to invent a window when there is not one.

04

Alerts & digest

Reads

all three models, plus what it told you yesterday.

Judges

a strict priority order, official notice first, then modelled spill, then a sighting, then jellyfish risk

Refuses

to repeat itself, or to wake you to say everything is fine.

Until recently, this was the part a designer could not build. Working with an agent changed that. I brought the domain knowledge, the research and the judgement about what a swimmer would trust, and used the agent for the data plumbing and API work. Much of that work was debating whether a fallback was honest and whether a number could be stood over.

Jelly Map waste spills screen for Dublin Bay, showing low spill probability, rainfall, drift and the modelled plume map

The spill model in the product, hours ahead of an official notice

04

What changed

Free weather APIs are often non-commercial only, so I rebuilt around commercially licensed sources, Environment Agency gauges, Met Éireann and EPA Ireland, real tipping-bucket gauges within 7 km of every modelled outfall rather than a model grid. I also built a one-time €2.99 unlock rather than a subscription, then removed it once I realised the same licences stop applying the moment an app takes money: a paywall would have changed the legal basis of every feed in the app. The app is free, no purchase, no ads, and removing the paywall removed a category of work along with its running costs.

05

Shipped

  • 39 swim spots, Ireland and the UK
  • Jellyfish risk, sharpened by live reports
  • Community sightings: two taps, no account, confirm or clear to keep the feed honest
  • Spill prediction across 5 modelled catchments
  • Official notices, always outranking the model
  • Tides, sea temperature, wind, sun and moon
  • Species guide and sting first aid
  • A designed offline screen for poor coastal signal
The live product

Localised reports, shown at the beach they apply to.

Sightings and official water information share one map, close to the beach and current conditions.

Jelly Map live map of Dublin Bay with colour coded jellyfish sighting pins
Live information before you swim: official water data and live sightings from swimmers.

Outcome

App Store
Liveapproved by Apple, submitted and shipped solo
Swim spots
39live across Ireland and the UK
Modelled catchments
5for rainfall-driven spill probability
Prediction models
2jellyfish likelihood and spill probability
Price
Freeno purchase, no ads, no account
06

Stack

Design and direction

  • Figma: thinking, flows, visual language

Build

  • Lovable: the app itself. React, server rendered, live editable
  • Claude Code and Cowork: logic, data modelling, API adapters
  • Terminal and Git: version control and the hands-on bits

Data and backend

  • Supabase: Postgres for sightings, votes and cached conditions
  • Environment Agency, Met Éireann, MET Norway: observed rainfall and forecast
  • EPA Ireland: official bathing water notices
  • Open-Meteo: tides, sea temperature, marine
  • Mapbox and OpenStreetMap: maps and coastline

Ship

  • Capacitor: native iOS shell, local notifications, on-device preferences
  • Xcode: archive, signing, upload
  • App Store Connect: submission and review

Removed before launch

  • RevenueCat: in-app purchase. Built, tested, then taken out
07

Reflections

Showing how confident each answer is made the product more trustworthy. Building it alone also showed how far a designer can now take a product directly. That does not apply to everything, and it took a lot of reading, but for a project like this one designer can research, build and ship the whole thing.

Final Jelly Map app design shown on two phones at a sunlit rocky swimming spot, with nearest sightings and waste spill probability
Final app design