Context
Revenue management in hospitality is a daily practice: hotels constantly adjust room rates based on what competitors are charging. Town & Country gave revenue managers a single dashboard to track that data over time, visualise trends, and encode pricing rules — all without touching a spreadsheet.
What I built
I built the application — a greenfield SaaS product from database to deployed UI.
D3 chart — A custom multi-line time-series chart with four distinct series types: competitor group average, individual room rates, blended market average, and price rule target. Animated transitions on data change, interactive tooltips on hover, and a click-to-toggle legend.
Data processing layer — Processes raw price series into chart-ready data, computing room averages, market averages, summary lines, and rule lines.
Dashboard — Main app container with time-range presets, a date range picker, tabbed navigation, and API integration.
Dynamic Competitor Grouping & Pricing Rules — Full CRUD workflows for competitor room groups and pricing rules.
Additional views — Calendar and table views for different data exploration modes.
Back end — Express API with PostgreSQL using window function SQL for the latest crawled prices, hotel-room map joins, an audit endpoint, and Winston logging.
Outcome
A data-rich revenue management SaaS tool — from PostgreSQL schema through a custom D3 visualisation layer to a , multi-view React dashboard.