What's on each page
Quick reference for all features. Scroll to scan everything at once.
Executive Overview
Open page
KPI Cards
top of page
Price Moves: 64 changes detected
Forward Coverage: 267 days through late December
Forward Coverage: 267 days through late December
High move count = competitors repriced
Product Tier Matrix
expandable
10 product tiers across 4 attractions
"Dyn" badge = prices change dynamically
"Dyn" badge = prices change dynamically
Click row to expand. Compare product gaps.
Market Pulse
collapsible
Latest price changes: attraction, date, delta
64 changes across 5 dates
64 changes across 5 dates
See who moved and by how much
Limited-Time Offers
collapsible
11 active promotions: bundles, passes
Grouped by attraction
Grouped by attraction
See what competitors run beyond base prices
Fee Comparability
collapsible
ESB $5/txn, Edge $2/ticket, Summit $3/order, TOR embedded
Solo vs. family price rank changes
AI Market Brief
ai generated
Plain-English summary of notable changes
Quick narrative of what changed
Price Tracker
Open page
Filter Bar
top controls
FROM date, TO date, INTERVAL dropdown
(15-min, 30-min, hourly, all)
(15-min, 30-min, hourly, all)
Set range, click Apply. Reset to clear.
Coverage Pills
below filters
Data range per attraction
ESB Sep 30, Edge Jan 3, Summit Oct 31, TOR Dec 31
ESB Sep 30, Edge Jan 3, Summit Oct 31, TOR Dec 31
Check coverage before you filter to future dates
Date Rows
expandable
268 dates with attraction price chips
EMPIRE $44, EDGE $47, etc.
EMPIRE $44, EDGE $47, etc.
Click any row to expand tour-time detail
Tour Time Grid
expanded view
61 tour times × 4 attractions
Green = lowest, Pink = highest, Orange = sunset
Green = lowest, Pink = highest, Orange = sunset
Compare prices at same tour time across attractions
Sunset Analysis
Open page
Filter Bar
top controls
Month, Week, Date dropdowns
ESB Upsell Min/Max fields (268 dates)
ESB Upsell Min/Max fields (268 dates)
Narrow to specific periods or upsell thresholds
Per-Attraction Structure
4 cards
One card per attraction: sunset detection method, price range, median upsell, distribution histogram
Shows how each attraction prices sunset differently
Sunset Pricing Comparison
collapsible
3 views: By Date, By Tour Time, By Week
All 4 attractions' peak sunset prices side by side
All 4 attractions' peak sunset prices side by side
Find dates and tour times where ESB has the most pricing headroom
Comparison Filters
toolbar
Day-of-week filter, rank filter (show all / ESB lowest / ESB not lowest / ESB highest), tour time picker (By Tour Time view)
Isolate specific patterns. Sortable columns.
Calculation Box
yellow border
Sunset premium = peak sunset price minus 12:00 PM price
Same method for all 4 attractions
Same method for all 4 attractions
Explains the methodology used for all numbers
Summary Cards
4 cards
ESB +$10, Edge +$16, Summit +$13, TOR +$12
~267 dates each
~267 dates each
Edge leads. ESB below market average.
By Travel Date
bottom
Per-date sunset data, all 4 attractions
Scrollable expandable cards
Scrollable expandable cards
Drill into specific dates to compare
Trends & Patterns
Open page
Status Cards
4 cards
ESB: 8 moves, net +$0
Edge: 64 moves, net -$205
Summit/TOR: HELD
Edge: 64 moves, net -$205
Summit/TOR: HELD
Who is repricing vs. holding
KPI Cards
4 metrics
72 moves (8↑, 56↓), Net -$205
Biggest: Edge -$6 on Apr 12
Biggest: Edge -$6 on Apr 12
Market trending up or down overall
Two Playbooks
split panel
Full-day: 50+ moves at once
Surgical: few targeted changes
Surgical: few targeted changes
Click row to see competitor strategy
Price Curve
interactive
GA price by tour time, all 4 attractions
Uses ESB 15-min grid, others snap to nearest
Uses ESB 15-min grid, others snap to nearest
Toggle attractions on/off to compare
Status Changes
filterable
Reopened + sold out tour times
Filter by attraction
Filter by attraction
Track inventory changes separate from price moves
Layout
collapsible
Click section headers to expand/collapse
Reduce scrolling, focus on what matters
Methodology
Open page
Data Collection
4 attractions, 1 scrape/day via Playwright
ESB ~173d, Edge ~265d, Summit ~200d, TOR ~265d
Schema
attraction, travel_date, tour_time, price, status
Status = available or sold_out
Fee Normalization
ESB $5/txn, Edge $2/ticket, Summit $3/order, TOR embedded
ESB highest solo; Edge/TOR lowest for groups
Anomaly Rules
Sold-out = carry forward last price
Outlier = >3σ from 30-day mean
Outlier = >3σ from 30-day mean
Data quality safeguards
Sunset Detection
ESB: tour group labels
Others: price-plateau vs. noon baseline
Others: price-plateau vs. noon baseline
Consistent method across attractions
AI Utilization
Claude Code for scrapers, schema, site
48-hour build
Limitations
No pre-launch baseline
Scrape-time snapshots only
Scrape-time snapshots only
What the data cannot tell you
Infrastructure
Current: SQLite + static site
Production: Azure stack
Production: Azure stack
$58-99/month estimated
Case Study
Open page
Section 1: Data Collection
Volume, storage, frequency, method, limitations
How we built the scraper infrastructure
Section 2: Data Manipulation
Schema, fee normalization, sunset premium calc, bad data handling
How we made prices comparable across attractions
Section 3: AI Utilization
Claude Code, 48-hour build, limitations
What AI built and what it couldn't do
Section 4: Analysis
Pricing trends, competitive positioning, timing/seasonality
ESB lowest on 79% of sunset tour times
Section 5: Revenue Recommendations
5 recs: $64 tier, twilight extension, advance discount, membership, fee restructure
Each rec shows what public data proves + inputs needed
Section 6: Additional Considerations
Data gaps, external feeds, inventory tie-in, production architecture
$58-99/mo Azure stack estimate