Loading dashboard data...
⚠️ Access Denied
Admin privileges required. Please sign in with an authorized account.
Dashboard Overview
Welcome to the Admin Dashboard. Select a tab above to view detailed information.
Testing Results
analytics Test Suite Overview
terminal Quick Reference Commands
Pre-Deployment Tests (REQUIRED)
npm run test:short
3-day trip (~3 min)
npm run test:medium
7-day trip (~5 min)
npm run test:long
17-day trip (~6 min)
npm test
All pre-deploy tests (~14 min)
Unit & E2E Tests
npm run test:jest
All Jest unit tests
npx playwright test
All Playwright E2E tests
npx playwright test --grep @smoke
Smoke tests only
Validation & Analysis
npm run test:validate -- --job-id=<id>
Validate specific itinerary
npm run test:validate-all
Batch validate all itineraries
Monitoring & Maintenance
science API Integration Testing
Loading...Cost: ~$0.60 | Duration: ~30-180s
System Health
Settings
API & Cost Management
science TEST_MODE
Loading...TEST_MODE ON = Mock data, $0/trip | OFF = Real APIs, ~$0.60/trip
Loading...
photo_library Photos Per Venue
Loading...Cost Impact: Each photo request costs ~$0.007 (Google Places Photos API). Setting to 1 photo per venue reduces costs by 90% compared to the default of 10.
image Photo Widths (Responsive)
ConfigurableConfigure photo sizes for different screen sizes. Affects image quality and loading speed.
Google Places Search Configuration
search Search Radius Settings
ConfigurablePhase 4 (Coordinates): Controls Google Places search parameters used during venue coordinate lookup and validation.
Search Radius Settings: Configure search radius and result limits for venue validation in Phase 4. Changes apply immediately without Lambda redeployment.
Pipeline Failure Handling
offline_bolt Circuit Breaker
Loading...Circuit Breaker: When enabled, allows partial itineraries when venue validation fails. If failure rate exceeds Max Partial Failure Rate, the entire job fails. Escalation Threshold triggers model upgrade (Haiku → Sonnet). Scope Reduction skips optional slots (evening/nighttime) when failures persist.
layers Venue Pool
Loading...Venue Pool: Generates multiple candidate venues per slot for backup selection. Lazy Validation only validates primary candidates, pulling backups on-demand. Disabling returns to legacy per-slot generation.
verified Phase 2: Venue Candidate Thresholds
Loading...Phase 2 (Venues): Minimum rating and review count for Claude-generated venue candidates to pass quality checks.
Venue Quality: Controls minimum rating/review thresholds for venue validation. Nearby thresholds are relaxed values used for Nearby Search fallback. Absolute Min is the hard floor that cannot be bypassed.
content_copy Duplicate Detection
Loading...Duplicate Detection: Controls how aggressively the pipeline detects and rejects duplicate venues. Lower thresholds = more aggressive deduplication.
scatter_plot Geographic Clustering
Loading...Geographic Clustering: Controls how tightly venues within a day should be geographically grouped. Affects venue validation in Phase 4.
straighten Distance Validation
Loading...Distance Validation: Controls how far venues can be from city center. Stricter lodging limits prevent hotels in wrong locations.
autorenew Replacement Strategy
Loading...Replacement Strategy: Controls how aggressively the pipeline retries when a venue fails validation. More attempts = better quality but higher latency.
psychology Claude API Parameters
Loading...Claude API: Controls token limits and temperature for AI venue generation. Higher tokens = more detailed responses but increased costs.
sync Finalize Replacement
Loading...Finalize Replacement: Controls parallel replacement operations and retry behavior when the Finalize Lambda encounters incomplete venues.
memory Lambda Execution
Loading...Lambda Execution: Controls time budgets and batch processing for Phase 2 and Phase 4. Changes affect performance and costs.
spellcheck Name Matching
Loading...Name Matching: Controls venue name similarity thresholds for hallucination detection. Lower thresholds = more strict matching (fewer false positives but may reject valid venues).
description Description Requirements
Loading...Description Requirements: Controls word count limits for AI-generated venue descriptions. Changes affect Phase 2 prompt instructions and Finalize validation thresholds.
psychology Prompt & Persona Thresholds
Loading...Voice Composition
Voice Composition: Controls the writing style blend. Carl Franz = practical insider tips. Bourdain = adventurous, food-focused storytelling.
Configuration Audit Log
history Recent Configuration Changes
| Timestamp | User | Config | Action | Changes |
|---|---|---|---|---|
| Loading... | ||||
Audit Log: Tracks all configuration changes for accountability. Entries are automatically deleted after 90 days.
Rate Limiting
tune Rate Limit Configuration
Activebar_chart Usage Statistics
Loading...24 Hours
7 Days
All Time
Access Control
admin_panel_settings Admin Users
1 admin
Admin access is controlled by the email whitelist in auth_ui.js and admin-api/handler.js.
User Limits
bookmark Max Saved Itineraries
Loading...This controls the maximum number of itineraries each user can save to their profile. Some users (admins) may have unlimited storage regardless of this setting.
date_range Max Itinerary Days
Loading...This controls the maximum trip length users can create. Enforced at every entry point: frontend, API, and pipeline. Test scripts must also respect this limit.
verified_user Tier Limits
Loading...Configure limits for each subscription tier. New users start in the Free tier. Demo mode can be enabled per-user to override tier limits.
Note: Changes to tier limits take effect immediately for all users in that tier.
Use -1 for unlimited itineraries per month.
Feature Toggles
payments Monetization Features
Loading...Control monetization features across the application. All toggles are OFF by default.
Safe to toggle: All monetization features are behind these toggles and can be enabled/disabled at any time without affecting existing users.
Interesting Stops
explore Interesting Stops Configuration
ActiveConfigure how interesting stops are discovered along routes. These settings affect the stops shown in the "Interesting Stops" layer on itineraries.
route Route Sampling
block Exclusion Zones
star Quality Filters
category Categories
description Description Sources
AI Configuration
smart_toy AI Models & Descriptions
ActiveConfigure AI model selection and description length limits for each phase of itinerary generation.
model_training Model Selection
Routing Thresholds
alt_route Transport Viability Settings
ActiveConfigure thresholds that determine when train/bus routes are considered non-viable and when to suggest alternative transport methods.
Venue Validation
fact_check Finalize: Delivery Validation
Active
Finalize Lambda: Final pass validation before delivering the itinerary. Venues failing these checks get replaced by findReplacementVenue().
Configure venue quality validation thresholds used during itinerary finalization. Venues that don't meet these criteria will be replaced with alternatives.
Voice Personas
campaign Writing Style Personas
ActiveProduction Writing Style
Voice personas control the writing tone of generated itinerary content (curiosity, warmth, humor, formality). The active persona is applied to all new itineraries for every user.
Test Personas
person_search Quick Test Personas
ActiveTesting Only
Test personas are simulated user profiles (age, budget, travel preferences) that pre-fill the create form for quick testing. They do not affect production itineraries.
Thematic Layers
map Map Layers Configuration
ActiveManage thematic map layers that users can toggle on their itinerary maps. Enable or disable predefined layers, or upload custom GeoJSON layers.
public Predefined Layers
Custom layers are managed per-user from the profile page. Promoted layers appear below as predefined layers.
table_chart CSV Column Mapping
Map CSV columns to geographic coordinates. Latitude and Longitude are required.
tune Configure Layer
Select which attributes to show when a user clicks a feature on the map.
Upload a new GeoJSON, CSV, or Shapefile to replace the layer's data. Styling will be preserved.
API Request Logs
Pipeline Performance
summarize Summary
table_chart Itinerary Runs
timer Phase Timing (seconds)
cloud API Provider Metrics
slow_motion_video Top 10 Slowest Pipelines
warning Error Patterns
Venue Analytics
filter_alt Filtered Venues (Bogus/Failed)
Most Frequently Filtered
No data yet
Recent Filtered Venues
analytics Recommendation Statistics
location_city Top Cities by Recommendations
people Recommendations by Persona
star Top 20 Recommended Venues
Showing top 20 of 0 total venues
All Venues
| Venue | City | Country | Count | Top Persona | Last Seen | Actions |
|---|---|---|---|---|---|---|
| Loading venues... | ||||||
Venue Cache Management
bar_chart Cache Statistics
Most Used Venues
bar_chart Cache Overview
Cache by API Type
location_city Prewarmed Cities
cached Full Pipeline Precaching
Runs the complete itinerary pipeline (Phases 0–5) for each city. Generates a full itinerary and caches all venues, coordinates, photos, and travel data. Higher cost but maximum cache coverage.
cloud_download Venue Database Seeding
Populate the venue database with Google Places data for specific cities. Runs 12 category searches per city to seed venue coordinates, ratings, and photos. Much faster and cheaper than full pipeline precaching.
Suggested Cities (not yet cached)
Google API Cache & Costs
attach_money Itinerary Cost Lookup
Look up the Google API costs for a specific itinerary.
Cost Breakdown
info Google API Pricing Reference
Current Google Maps Platform pricing (as of March 2025):
| API | Price per Request | Price per 1,000 | Typical Usage |
|---|---|---|---|
| Geocoding | $0.005 | $5.00 | City coordinates, lodging addresses |
| Places Text Search (Pro) | $0.032 | $32.00 | Venue search by name/type |
| Places Details (Pro) | $0.017 | $17.00 | Venue details, ratings |
| Places Photos | $0.007 | $7.00 | Venue photos |
| Routes API (Essentials) | $0.005 | $5.00 | Route polylines between cities |
Persona Scoring System
rate_review Itinerary Review
All Persona Scores
Factor Breakdown
flight Trip Details
person Traveler Profile
tune Preferences
check_circle Activities & Interests
block Things to Avoid
place All Venues
hotel Lodging
Loading itinerary...
Select an itinerary from the dropdown above to review its persona scoring.
analytics Scoring Analytics
Loading...Persona Distribution
| Persona | Count | Avg Score | Avg Confidence |
|---|---|---|---|
| No persona data yet | |||
Recent Misclassifications
No misclassifications detected.
tune Scoring Weights Configuration
Adjust the weights for each scoring factor. Weights must sum to 100%.
autorenew Batch Rescore
Rescore Single Itinerary
Rescore All Itineraries
Rescore all existing itineraries with the current scoring configuration.
This may take several minutes for large datasets.
Starting...
local_offer Venue Persona Scoring
Score individual venues against all personas based on their descriptions, type, and price level.
Venue Persona Distribution
No venue scoring data yet. Click "Rescore All Venues" to analyze.
Top Venues by Persona
No venue scoring data yet.
Rescore Venues in Single Itinerary
Rescore All Venue Data
Score all venues across all itineraries against persona profiles.
This may take several minutes for large datasets.
Starting...
Venue Dwell Times
schedule Dwell Time Configuration
Configure typical visit duration and intensity by venue type. These values affect fatigue calculations and day scheduling.
| Venue Type | Typical (min) | Min (min) | Max (min) | Intensity | Actions |
|---|---|---|---|---|---|
| Loading... | |||||
Fatigue Configuration
fitness_center Fatigue Weights
Configure how different activities contribute to daily fatigue accumulation.
Intensity Multipliers
Category Fatigue Factors
<1.0 = less tiring, 1.0 = normal, >1.0 = more tiring
| Venue Category | Factor |
|---|
battery_charging_full Persona Fatigue Thresholds
Configure how each persona type affects daily fatigue limits. Negative multipliers reduce stamina (tire faster), positive multipliers increase stamina.
| Persona | Direction | Multiplier | Effect |
|---|
Weather Constraint Rules
thunderstorm Weather → Venue Type Mappings
Configure how each venue category is treated under different weather conditions.
Time restrictions use 24h format, e.g. 11:00-15:00. Leave blank for no restriction.
| Venue Category | Rain | Extreme Heat | Cold | Time Restriction |
|---|
City-Specific Persona Overrides
location_city City Persona Boosts
Configure persona dimension boosts for specific cities. For example, Paris might boost culinary_enthusiast by 0.10 because it's known for food.
| City | Cultural | Culinary | Urban | Nature | Relaxation | Adventure | Family | Luxury | Actions |
|---|---|---|---|---|---|---|---|---|---|
| Loading... | |||||||||
Cross-Day Limits
repeat Venue Repetition Limits
Control how venues and categories can repeat across days in a trip.
Removal Penalty Configuration
remove_circle Global Removal Penalties
Configure penalties applied when users remove venues. Venues removed frequently receive scoring penalties across all users.
Slider Endpoint Labels
tune Persona Slider Endpoint Labels
Configure the negative (left) and positive (right) labels shown beneath each persona slider in the travel mode create/edit modal.
| Persona Dimension | Negative Label (Left) | Positive Label (Right) |
|---|---|---|
| Loading... | ||
Persona System v1.5 Monitor
timeline v2.0 Readiness Assessment
psychology Persona Metrics
verified Quality Metrics
analytics Usage Metrics
analytics v1.5 Field Usage
bar_chart v1.5 Field Usage
pie_chart Persona Dimension Distribution
show_chart Historical Trends
TTL Settings
cloud Google API Cache TTLs
Loading...Google API Cache: Controls how long Google API responses are cached in DynamoDB. Longer TTLs reduce API costs but may serve stale data. Default: 365 days for all endpoints.
schedule Other Cache TTLs
Loading...Edit TTL Settings
User Management
group Registered Users
star_rate Satisfaction Surveys
| User | Job ID | Overall | Venues | Personalization | Avg | Submitted | Actions |
|---|---|---|---|---|---|---|---|
| star_outline Loading surveys... | |||||||
Venue Cache Audit
City venue cache — all cached venues with data completeness, ratings, photos, and cache hit counts.
Pipeline Testing
Pass Rate Over Time
Duration Over Time
Recent Test Runs
| Run ID | Timestamp | Pass Rate | Tests | Duration | Status |
|---|---|---|---|---|---|
| science Loading test runs... | |||||
Test Seed Data Management
Warning: This will mark all persona-scenario combinations as "not run live", forcing the next test run to use real API calls instead of cached data.
No Pipeline Test Data
Run npm run test:short to generate test metrics.