// 004  ·  Product Design

Fior — Water Truth

fíor  ·  Irish  ·  true, real, pure

Product Design UX Research Design Systems IoT Health Project Management Prototyping with AI

A mobile app paired with RYAKKA, a bespoke IoT sensor that reads six drinking-water parameters at home and collapses them into four plain verdicts: Excellent, Good, Medium, Bad. Designed for an Irish context where the official reports are annual PDFs and compliance is reported as averages — but the person at the tap still has no idea what came out today.

Role Researcher & UX Designer
Timeline Jun 2025 — Ongoing
Team Solo
Platform iOS · Android · IoT

Challenge

In Ireland, 497,000 people are served by at-risk public water supplies (EPA, 2023), and roughly 52% of surface waters fall short of good ecological status. Headline compliance looks reassuring at 99.8%, but the consumer still only gets annual reports in technical language. There is no daily, plain-English verdict on the water coming out of the tap right now — and no way to act on it.

Solution

Fior is a mobile companion to RYAKKA, a home sensor reading six parameters (TDS, TOC, COD, UV275, EC, temperature). The app collapses those readings into a 4-state Verdict Ladder — Excellent, Good, Medium, Bad — with context for what each result means and what, if anything, to do next. The language is calm, not alarmist; every claim is sourced, not asserted.

Impact

Conceptual MVP — not shipped, but validated. Research drove a persona pivot from a rural-first hook to an urban-renter primary persona for go-to-market. The output: a token-first design system (281 tokens across three layers, 2,356+ bindings), 15 navigable hi-fi screens, and a single Verdict Ladder component that carries the whole app's point of view on health and honesty.

The Research That Shaped Fior

I moved to Ireland in 2022. The first thing my kettle taught me was what limescale looks like — a white crust on the heating element after a week, no matter how often I rinsed it. The tap water was technically safe — the EPA said so. I still didn't really know what was in it.

That gap — between “water is technically safe on the national average” and “I, today, in my house, can confirm it” — became the brief. The consumer category barely exists in Ireland: EPA data sits in institutional reports, not in people's pockets. Fior closes the distance.

// Evidence Base · EPA 2025
  • 99.8%+ of Irish public water samples comply with bacterial and chemical limits — but that national average masks localised risk.
  • ~497,000 people remain on “at-risk” supplies (EPA Remedial Action List, end-2024).
  • The lead limit halves in 2036 (10 → 5 µg/L). Highest risk sits with infants, children, and pregnant women. EPA flagged national progress as “far too slow” (Jul 2025).
  • Surface water quality is declining — only 52% of surface waters are in satisfactory ecological condition, down from 54%.

Sources: EPA · Drinking Water Quality 2024 · EPA · Water Quality Report 2019–2024

Step 01
01

Impact Mapping

Broad Blast Radius · Four Impact Categories

Started broad, on purpose. The prompt was “what are the impacts of untreated water in Ireland?” — not “what app should we build?”. Mapping the blast radius first stops a project from collapsing into a single feature before the problem is understood.

  • Health — waterborne illness, lead exposure, long-term public health
  • Drinking water quality — compliance gaps, private wells, monitoring blind spots
  • Environment — surface water decline, agricultural runoff, estuarine damage
  • Economy — healthcare cost, bottled-water dependency, tourism risk

Each category unlocked a different angle for the next round of questions.

Step 02
02

Problem Statement & Persona Pivot

Statement Held · Primary Persona Shifted

First cut of the problem statement: “Rural households in Ireland need a reliable and affordable way to access clean and safe water, because untreated water can cause health, environmental, and economic issues.”

That statement survived until personas were sketched — and then it pivoted.

// Tension · Persona Pivot

The sharpest primary persona turned out to be the Concerned Renter (urban, 25–40, Dublin / Cork / Galway). Rural well owners have higher objective risk, but renters have higher engageable risk: they can't modify plumbing, they suspect lead pipes, they already buy filtered jugs, and they live inside the quantified-self product category.

Rural well owners became the secondary persona; new parents the tertiary. The problem statement held — the primary target shifted from who was most at risk to who was most likely to act.

Step 03
03

How Might We — 8 Directions

Diverge · One Angle per Impact Vector

Eight How-Might-We prompts, one per impact vector. The aim was not to pick a winner here — it was to surface angles so the ideation round wouldn't start pre-committed.

  • Access… make water testing available to anyone, anywhere in Ireland?
  • Education… turn EPA data into something people actually read?
  • Monitoring… give households a way to check their water continuously?
  • Community… aggregate local readings into a shared map?
  • Tech Leverage… use sensors and phones to move the cost floor down?
  • Feedback Loops… show change over time, not just a snapshot?
  • Service… connect every reading to a next action (boil, filter, call)?
  • Incentives… reward contribution to the community data set?
Step 04
04

Ideation — Four Product Directions

Converge · Filter on Daily Value + Moat + Scope

The HMWs collapsed into four plausible products. Each was scored against three filters: personal daily value, defensibility, and scope discipline (could a solo designer prototype it end-to-end?).

  • 01 Map of clean water sources — directory play, weak personal loop. Rejected
  • 02 Education app — content-led, hard to sustain, no moat. Rejected
  • 03 Monitor + Improve — daily personal value, hardware moat via RYAKKA, contains scope. ★ Selected
  • 04 Community treatment hub — operational product, far out of scope for this brief. Rejected
// Why Direction 03

Personal value every single day — you don't check a map every day, but you do drink water every day. A hardware moat through RYAKKA, the companion IoT sensor that turns six parameters into one verdict. And a scope a solo designer can actually ship end-to-end: six readings, one verdict, one app. Clean boundary.

Step 05
05

First Wireframe — The Spine

4-Screen ASCII · Ancestor of the 15-Screen Hi-Fi

Before any pixel, a four-screen ASCII sketch. Home → Test → Result → Suggestions. That spine is still visible in the 15-screen hi-fi prototype: Home became Dashboard, Test became Measuring, Result became the verdict screen, Suggestions stayed as a hub.

┌────────────────┐   ┌────────────────┐   ┌────────────────┐   ┌────────────────┐
│   HOME         │   │   TEST         │   │   RESULT       │   │  SUGGESTIONS   │
│                │   │                │   │                │   │                │
│  Last test:    │ → │  [ Dip RYAKKA] │ → │   GOOD · 76    │ → │  1. Boil 3 min │
│  08:42 · Good  │   │   measuring…   │   │   TDS · TOC    │   │  2. Filter jug │
│                │   │    ◉ ◉ ◉       │   │   COD · UV275  │   │  3. Log source │
│  [Test again]  │   │                │   │   EC  · TEMP   │   │                │
└────────────────┘   └────────────────┘   └────────────────┘   └────────────────┘
// 4-screen sketch · direct ancestor of the 15-screen hi-fi ← Scroll horizontally to see the full flow →

Everything that followed — 281 design tokens, eight colour ramps, the Verdict Ladder component, the Inter → Nunito migration — was thickening the spine. The spine itself never moved.

A Token-First Foundation

Fior's design system was built directly in code, not translated from Figma. Three layers of tokens, a typography migration mid-project, and a single four-state component that carries the whole product's point of view on health and honesty.

281
Design Tokens
2,356+
Token Bindings
0
Hardcoded Hex
Principle 01
01

Three-Layer Token Architecture

Primitives → Semantic → Component

Every token in the system sits in one of three layers. Primitives hold raw values. Semantic tokens map meaning onto those values (primary, surface, danger). Component tokens bind the semantic layer to a specific UI part. Swap a primitive, the upper layers update automatically.

01 · Primitive --blue-500 #2B8FD9
02 · Semantic --color-primary = --blue-500
03 · Component --button-bg-primary = --color-primary
  • 281 tokens across the three layers — small enough to hold in your head
  • 2,356+ bindings across components, screens, and states
  • Zero hardcoded hex in the component layer — every value traces up through semantic to primitive
Principle 02
02

Inter → Nunito Migration

One Primitive Swap · 2,356 Bindings Updated

Mid-project the brand tone broke the typeface. Inter is crisp and neutral — right for SaaS, wrong for a calm Irish utility that wants to feel like a knowledgeable friend. Nunito's rounded terminals land warmer without surrendering legibility.

// Why the Architecture Paid Off

With a flat system this migration would have been a 2,356-row search-and-replace. With the three-layer architecture, the change was a single primitive swap: --font-family-base pointed from Inter to Nunito, and every semantic and component token propagated automatically.

Ten minutes of work, zero visual regressions. The architecture wasn't theoretical — it paid back the cost of setting it up on the first structural change.

Principle 03
03

The Verdict Ladder

Four States · One Component · One Point of View

Six sensor parameters (TDS, TOC, COD, UV275, EC, TEMP) are complicated. A verdict is not. The Verdict Ladder is the single component that turns the reading into a headline anyone can act on in under two seconds. Four states. Plain English. No numeric wall.

State 01
Excellent
#1AC863 · Green
State 02
Good
#2B8FD9 · Blue
State 03
Medium
#FFB200 · Yellow
State 04
Bad
#F43535 · Red
// Key Decision · Verdict Before Parameter

The dashboard leads with the verdict, not the readings. COD, TDS, UV275 are evidence — they live one tap deeper for the user who wants them. Most users don't. Calm tone over scary tone: the four states never say “unsafe” or “warning” — they say what you should do next (boil, filter, drink).

// Visual Language

Tokens, Type & Spacing

The eight colour ramps, the Nunito type scale, and the base-4 spacing grid — the surfaces the three-layer architecture ultimately resolves to.

// Eight Colour Ramps · 500 Shown
500
Blue · #2B8FD9
Monitor pillar · primary actions · links
500
Accent · #00E87A
History pillar · brand gradient · trends
500
Green · #1AC863
Alerts pillar · Excellent verdict · pass state
500
Yellow · #FFB200
Suggestions pillar · Medium verdict · nudges
500
Red · #F43535
Map pillar · Bad verdict · critical alert
500
Sky · #3D95FF
Supporting accent · info states · secondary CTAs
500
Neutral · #0D1E2E
Body text · app chrome · icon strokes
500
Dark · #071525
Focus surfaces · onboarding · dark mode base
// Type Scale · Nunito · 5 Weights
Display Your water, measured. 40 / 700
Heading 01 Good morning, Ciarán 32 / 700
Heading 02 Last tested today · 08:42 24 / 600
Heading 03 Six sensor parameters 20 / 600
Body Calm, factual, never alarmist. A knowledgeable friend who happens to be a water engineer. 16 / 400
Label Last test · 08:42 13 / 500
// Spacing Scale · Base-4
4
8
12
16
20
24
32
40
48
64

Walk the Fior Flow

A React prototype that implements the full core flow — onboarding, daily test, verdict ladder, RYAKKA pairing, history. Built from the same tokens documented above, so the design system isn’t a spec on a page — it’s what the prototype actually runs on.

// Deliverable 01 — Live

Launch the Hi-Fi Prototype

Good
// Prototype Preview
Hi-Fi — mobile flow

Fifteen screens, end-to-end user journey. Mobile-first React + TypeScript build — the phone view is the canonical frame, with a presentation shell unlocking on desktop. Interactive verdict ladder, RYAKKA pairing sequence, and the calm-voice UX copy already in place.

React · TS 15 Screens Mobile-first Tokens-First Verdict Ladder
Launch Prototype
// Deliverable 02 — Process

Read the Process

// 4 Modes Process → Wireframe → Prototype → System
Process Doc — mobile-first

A single mobile-first document with four modes — Process, Wireframe, Prototype, and System. Walks the full design trail from problem framing to the 9-step wireframe to the shipped prototype and the design tokens that power it. Built for a smartphone-first audience; the wireframe flow that used to live on desktop-only is ported in and readable on any screen.

4 Modes Mobile-first Wireframe Process Log
Open Process Doc
// Deliverable 03 — Working File

Fior Design System

Restricted Area Authorized People only Figma · Design System
Design System — in progress

A living, work-in-progress Figma file — primitives, semantic tokens, component specs, and the Verdict Ladder states in every branch. The trade-offs behind each token decision are worth walking through in person, so the file stays private. Walkthrough available on request during interview.

281 Tokens 8 Ramps 3 Layers WCAG AA
Request Access
// Deliverable 04 — Discovery Board

Research & Evidence Board

Restricted Area Authorized People only FigJam · Research Board
Research — evidence map

The FigJam that held the whole discovery phase — impact map, persona pivot, four directions, HMWs, EPA evidence, and the affinity clusters the five Deep Dive principles emerged from. Kept private to protect participant PII — walkthrough available on request during interview.

Personas HMWs Directions Evidence
Request Access
// Reflection

What Fior Taught Me Until Now

Notice the Workaround, Not the Metric

The EPA says Irish public water is 99.8% compliant — and yet Dublin bins are full of bottled water. That gap is the real brief. People weren’t fleeing unsafe water; they were fleeing the absence of personal confirmation. Good research looks less at what people say is wrong and more at the small, recurring workaround they’ve quietly built around the problem. Fior started there — not in a dashboard, not in a lab, but in a bin.

Tokens Are the Product

I built Fior’s design system directly in code — 281 tokens, three layers, 2,356+ bindings, zero hardcoded hex. Figma became documentation instead of source of truth. When the typography had to change mid-project, swapping Inter for Nunito was one primitive edit and the cascade handled the other 847 references. In tokens-first systems, refactors stop being events and become keystrokes.

Give the Verdict Before the Number

Health apps usually lead with readings — TDS 128 ppm, pH 7.2, EC 245 µS/cm — and leave interpretation to the user. That’s a failure of voice disguised as transparency. Fior’s Verdict Ladder leads with the state (Good, Medium, Bad) and hides the parameters one tap away. Calm is an information architecture decision, not a tone-of-voice exercise. Alarm earns nothing; plain-language clarity earns trust.

End-to-end solo only because of disciplined AI co-pilot use across the stack: research synthesis (the 5-step thinking sequence), token architecture (281 tokens, 0 hardcoded hex), and the React + TypeScript prototype (15 screens, mobile-first, 28 passing tests). I direct the system thinking — personas, IA, calm-voice tone, the verdict ladder as the central design decision — and the AI executes the heavy lifting. The result is a single-designer product that holds up to engineering scrutiny, in a timeline a single person could realistically own.