Case study · Maritime SaaS · 0-to-1 · Product Design

GeoStem

Replaced 4 fragmented trading tools with one live intelligence platform - commodity pricing, port bunkering rates, deal pipeline, and an interactive port map. Built the design system from day one; shipped to production in 5 months, with UI design-to-dev handoff in just 5 days.

View Final UI

Role

Product Design Consultant (Freelance)

Company

Geoserve - Maritime Intelligence

Timeline

Jan 2025 - Present · 0-to-1 + ongoing

Scope

Dashboard · Port Map · Fuel Price · Design System · Voyage Reporting

Screen 01 - Dashboard Overview

Reference screenshot recreated with AI tools - actual product details are under NDA. Happy to walk through the live product on a call.

A
Dashboard overview
Deals Booked
04
Last 30 days
Quantity Booked
10
Last 30 days
Average Income per MT
$15,000
Last 30 days
Create an Inquiry
View Port Map
Brent
Crude
Natural Gas
64.65
USD+0.12%
As of 12:23:36 AM EST.
Follow Ups
15
Unassigned Jobs
15
Invoice Approval
15
Pending Credit Approval
99+
Partly Booked
15
Delivery Pending
15
Uninvoiced
Port Fuel Pricing
Most traded ports & updates on price.
+ Add price indication
VR
Vladivostok Russia
4 Prices
+
SO
Salalah Oman
4 Prices
+
DC
Dubrovnik Croatia
4 Prices
+
TG
Thessaloniki Greece
4 Prices
+
AT
Akdeniz Turkey
4 Prices
+
SG
Singapore
4 Prices
+
NZ
Auckland New Zealand
4 Prices
+
Updates & News
Daily updates on fuel, port, and trader information.
Trader Updates
News
All
By Me
AF
Aaron Freights
11 Jan 2025
Bunker prices at Salalah have dropped 3% this week. Recommend adjusting the inquiry threshold accordingly for this port.
G
George
11 Jan 2025
Noted. I will update the pricing sheet for Salalah and loop in the compliance team before EOD.
Y
You
11 Jan 2025
Singapore VLSFO has held steady at this price for the past week.

A trading team running on Bloomberg, WhatsApp, and manual spreadsheets

Maritime fuel trading is time-critical and margin-thin - a stale price isn't a UX flaw, it's a trading loss. When I joined Geoserve, the trading team ran their entire operation across Bloomberg, WhatsApp, and manual spreadsheets, with no single source of truth. Prices were stale by the time anyone referenced them, deal pipeline visibility didn't exist, and follow-ups got buried in email threads.

The opportunity: build one platform around how traders actually work - live commodity pricing, global port bunkering rates, active deal status, and a real-time port map, in one fast interface.

Building for a domain with zero tolerance for slow or wrong

  • Time-critical domain: a slow or stale interface directly costs a trader money - not a usability complaint, a revenue one.
  • Three conflicting KPI sets: Senior Trader, Trader, and Sales needed fundamentally different performance signals from the same dashboard - no single view could serve all three without compromise.
  • No system to extend: there was no existing product to inherit. Every token, component, and pattern had to be defined from scratch, in parallel with shipping the first module.
0-to-1
Full platform designed and shipped from scratch
5 days
From final designs to fully interactive build shared with dev
4 tools
External tools consolidated into one platform

Three user interviews, four design-defining insights

Before touching Figma, I ran structured interviews with the core users - a Senior Trader, a Trader, and a Sales lead. Each had a different workflow and different gaps in the existing system.

KT
Karthik
Senior Trader
Needed configurable KPIs - performance signals differ by seniority
Deal pattern analytics to understand which ports close fastest
Port-level map view to see pricing in geographic context
GeoServe-specific pricing separate from external market data
FL
Felicia
Trader
Relied on Sea Searcher for ship tracking - not in GeoStem at all
No visibility of customer credit line when selecting in inquiry - a risk gap
Traders closest to real market rates but couldn't enter price indications
Claims pending not surfaced in follow-ups, buried in emails
SF
Saif
Sales
Ran 4 separate external tools daily alongside GeoStem
Trade Winds for 5-min live pricing, Splash for news, Sea Searcher for ship locations
Wanted broader crude pricing options beyond just Brent and WTI
Performance dashboard valued but fuel-split data too granular for sales role

Four themes shaped the design direction:

01
Tool consolidation
Every user ran 3-5 external tools alongside GeoStem. Significant opportunity to consolidate if depth matched Sea Searcher and Trade Winds.
02
Role-based KPIs
Senior Traders, Traders, and Sales have fundamentally different performance signals. One dashboard view can't serve all three.
03
Trader write access
Price indications could only be entered by analysts, but traders were closest to real market data. A critical workflow gap.
04
Context-rich follow-ups
Follow-ups needed more than a task label - claims status, credit line, and inquiry history needed to be visible in-context.

Two modules, one design system

Working with the CEO, I scoped the platform into two modules: the GeoStem trading dashboard (live pricing, port intelligence, deal pipeline) and a Voyage Optimisation Report system (weather routing, waypoint planning, delivered as a structured multi-page report). I built the design system in parallel with the first module - every component built for the dashboard became a reusable asset for voyage reporting.

From information hierarchy to shipped interface

01

Three-panel layout system

Ranked every data point by trader frequency and urgency. Live commodity price and active follow-ups topped the list. This became the layout architecture: left panel for market data and deal actions, centre for port pricing, right for trader updates and news. Each section independently scrollable - traders monitor all three contexts without switching views.

02

Live fuel price chart

A dedicated full-screen view with TradingView integration for commodity price history across Brent, Crude, and Natural Gas. Six stat cards (Open, High, Low, Prev Close, 52W High, 52W Low) with colour-coded deltas that read instantly without scanning labels.

03

Interactive global port map

Leaflet-based port map with a custom dark navy tile treatment. Clicking a port surfaces fuel grades (VLSFO, HSFO, LSMGO), weather conditions, top sellers, and nearby ports. Overlays panel for maritime context - ECA zones, piracy areas, storm routing, and base layer modes.

04

Built in Claude Code - shared with dev in 5 days

The entire UI was built in Claude Code as a fully interactive prototype - all screens, interaction states, data edge cases (empty states, loading, error, partial data), and responsive behaviour. Shared with the dev team in 5 days. Developers connected a backend to a production-ready interface instead of building UI from scratch - no UI rebuild, no guesswork on edge cases at launch.

Built with Claude Code

Every screen was interactive before a single engineer touched the codebase - real data formats, real error states, real empty states. That's what made the 5-day handoff possible: there was nothing left to design once dev picked it up.

Screen 02 - Live Fuel Price

Reference screenshot recreated with AI tools - actual product details are under NDA. Happy to walk through the live product on a call.

A
Live Fuel Price
As of 03:31:04 AM EST.
Live
Brent
Crude
Natural Gas
64.65
USD
+0.123%
+0.08 today
Open
64.12
Day High
65.20
Day Low
63.45
Prev Close
64.57
52W High
89.10
52W Low
58.30
1D
5D
1M
3M
6M
YTD
1Y
Interval: 2 Hrs
73.06

Screen 03 - Port Map

Reference screenshot recreated with AI tools - actual product details are under NDA. Happy to walk through the live product on a call.

A
🇬🇮 GIBRALTAR
Gibraltar
51.2194° N, 4.4025° E · UTC+1
VLSFO
$585
/mt
HSFO
$424
/mt
LSMGO
$790
/mt
Prices updated 25 Jun 2026, 13:00 UTC
Weather Conditions
💨
WIND
20 kn E
🌊
WAVE
1.8 m
🌡️
TEMP
19 °C
Top 3 Sellers
VV
Vessel Visionary LLP
vessel@geoserves.com
$616
SS
Seafarer Scout LLP
seafarer@geoserves.com
$620
SE
Sailor's Sentry LLP
sentry@geoserves.com
$624
Nearby Ports
Rotterdam
24 Mar 2026
Algeciras
18 Mar 2026
Calculate Distance
A
B
Gibraltar
Gibraltar
Overlays
ECA
Piracy
Pressure
Storm
Nautical
No-Go Zones
Ice lines
Base layer
Default
Swell
Wave

What shipped and what it changed

GeoStem replaced 4 fragmented tools with one fast interface. Deal pipeline visibility - previously non-existent - is now a single view traders check without switching tabs. And the design system built for the first module is already paying for itself: reused across voyage reporting, validation screens, and onboarding flows without a single redesign.

What this project taught me

  • Interviewing three roles with genuinely different KPIs before opening Figma is what kept the three-panel layout from becoming a generic dashboard template.
  • In a time-critical domain like trading, a workflow gap - like traders being locked out of entering price indications - is a business risk, not a UX nitpick. Treat it with the same urgency as a bug.
  • Shipping a fully interactive prototype, not static mockups, is what actually collapses design-to-dev handoff time. The 5-day build was possible because every edge case was already resolved before engineering saw it.

What made this project different

0-to-1
Full platform designed from scratch
No existing product to inherit. Every screen, interaction, and component was designed from first principles based on user research.
5 days
Design to interactive build
The full UI was built in Claude Code with all interactions and edge cases. Dev team connected the backend - no UI rebuild needed.
Design system
Built in parallel, used across modules
Tokens, components, and patterns built alongside the first module - reused across voyage reporting without a single redesign.
3 users
Domain expert research drove layout
Every panel position, data grouping, and label was grounded in how traders actually read market information - not designer assumptions.
4 tools
External tools consolidated
Trade Winds, Sea Searcher, Splash, and email chains - all replaced by one unified platform purpose-built for maritime trading.
Zero rebuilds
Faster go-live, no UI guesswork
Shipping an interactive prototype with all edge cases pre-handled meant developers spent zero time on UI guesswork - just backend wiring.