All projectsAnalytical web apps · Data quality

Demo project

Port & Trade Intelligence Lab

A demo you can try in under a minute.

Technical surfacePython · Pandas · Plotly · Data modeling · Column mapping
Try the live demo ↓Synthetic data. No login.
Explorefictional data, working interactions
The problem
Comparisons go wrong when columns, names and locations don't match across files.
What I built
An interactive demo of how I map, check and compare messy records before charting them.
My role
Designed and built it independently.
Result
Every total, trend and ranking uses the same checked records. Unclear matches are held back with a reason.
Why it was hard
  • Keeping uncertain matches visible instead of silently accepting them
  • Keeping every view consistent under any filter
  • Usable by keyboard and on small screens
Tools
Demo: React, TypeScript. Real workflow: Python, Pandas, Plotly
Original fictional blue-hour container port scene with subtle analytical route traces
Original generated context image. Fictional port and route traces; not project evidence.

THE PROBLEM

Why the system needed to exist.

Comparisons become unreliable when input columns, entity names and location labels disagree. A useful analytical app needs to explain what was matched, what was withheld and which records support each view.

MY ROLE

Where I created leverage.

I designed analytical interfaces around reusable Python data-processing models: ingestion, column mapping, validation and location matching. This independently built browser lab demonstrates those interaction patterns with entirely invented content.

Synthetic demonstration data

INTERACTIVE LAB / A FICTIONAL WORLD

Five ports.
One clearer picture.

Explore the imagined journeys of Wheat, Corn and Soybean meal. Compare plans with observations, then see which records are ready to use.

Start with a filter
Refine comparison

180 fictional records in this selection · 157 comparable records

Planned / demo units11,431Comparable records only
Observed / demo units11,679Fictional illustrative output
Observed minus planned+248Difference, not performance
Ready for comparison87%157 of 180 selected records
Location explorer

An imagined archipelago.

Select a port to focus every view. Positions are abstract, with no real geography or routes.

Comparison trend

Plans meet observations.

Same eligible records on both sides. All four filters apply. Units and comparisons are fictional.

━ Planned━ Observed
Read exact trend values
Fictional demo units; “No data” means no eligible observations
MonthPlannedObserved
Jan 20252,2502,059
Feb 20251,8461,721
Mar 20251,8021,898
Apr 20251,6432,312
May 20251,9021,873
Jun 20251,9881,816
Jul 2025No dataNo data
Location ranking

A ranking you can inspect.

Ordered by observed fictional units. Excludes records awaiting review or failing validation.

Illustrative ranking / demo units
LocationPlannedObservedGap
1Vellune Quay2,3022,626+324
2Nacreloop Haven2,2142,390+176
3Tessera Reach2,1602,375+215
4Morrowglass Dock2,4502,255-195
5Orrisail Pier2,3052,033-272
Data quality and mapping

Make uncertainty visible.

Illustrative rules, applied before aggregation. These four groups partition the current selection.

Exact location code
125
Recognized fictional alias
32
Ambiguous match · withheld
13
Validation flag · withheld
10

Exact and alias records enter both totals. Ambiguous records need review; validation flags take precedence. Flags are deliberately seeded to illustrate a quality gate, not a measured error rate.

Inspect the fictional record trail Names, dates & mapping decisions

First six records in this selection. Quantities are imaginary demo units; withheld records never enter charts or rankings.

All names, codes, dates and quantities below are invented
Code / dateCompany / vesselProductPlanned / observedDecision
FICTION-0012025-01-11Velora LoomworksLantern EquationWheat65 / 71Exact · included
FICTION-0022025-01-16Velora LoomworksVelvet CircuitWheat120 / 110Exact · included
FICTION-0032025-01-21Velora LoomworksPaper CometCorn49 / 114Exact · included
FICTION-0042025-01-20Asterquilt AtelierQuiet KaleidoscopeCorn105 / 56Exact · included
FICTION-0052025-01-20Velora LoomworksLantern EquationSoybean meal100 / 37Alias · included
FICTION-0062025-01-01Quillfen CollectiveVelvet CircuitSoybean meal122 / 122Exact · included
Demo data & privacy

Every demo record, quantity, company, vessel, location and chart is fictional. No real geography, uploads, accounts, external data calls or saved visitor input.

WHAT I BUILT

A clear path from inputs to insight.

An analytical product with reusable processing models, connected views and visible quality decisions.

01 / PREPAREINGEST → MAP → VALIDATE

Column mapping and validation give inconsistent inputs a shared analytical structure.

02 / COMPAREFILTER → TREND → RANK

Interactive comparisons and location-oriented views make the selected scope easy to inspect.

03 / REVIEWMATCH → FLAG → EXPLAIN

Entity matching and ambiguity review keep uncertain decisions visible.

Capabilities are supported by the reference work. All public demonstration content and code were independently created.

Technical details

SYSTEM FLOW

From friction
to a repeatable flow.

  1. Prepare inputs
  2. Map columns
  3. Validate records
  4. Resolve locations
  5. Review ambiguity
  6. Filter & compare
  7. Inspect quality

CONSTRAINTS

The difficult parts.

  • Keep mapping ambiguity visible instead of silently accepting uncertain matches.
  • Compare the same eligible records across every chart and ranking.
  • Explain analytical scope without exposing confidential data or implementation details.
  • Keep the public experience usable on a small screen and with a keyboard.

DESIGN DECISIONS

How I approached them.

  • Separate reusable data models and processing rules from the analytical interface.
  • Place validation and matching decisions before aggregation so excluded records remain explainable.
  • Give every filter one shared selection model across totals, trends and ranked locations.
  • Keep client exploration separate from governed review workflows; this public lab has no operational integration.
  • Use a fixed synthetic seed, local calculations and an abstract location panel. Test the filter combinations, totals and exclusion rules.

OUTCOMES

Project outcomes

Explorable

Connected views

One selection updates comparisons, monthly trends and location rankings.

Explainable

Visible quality gates

Accepted mappings and withheld records have distinct, inspectable states.

Isolated

Public demonstration

Fictional content and local computation make the experience safe to explore.

TECHNICAL SURFACE

PythonPandasPlotlyData modelingColumn mappingEntity matchingData validation
NEXT SYSTEM / 01

40+ countries of shipping reports, turned into one daily dataset.