Polo Legacy — Pages, Outputs & User Journeys
Page Map
/ Home — overview, doc links, env indicator
├── /data Resource browser (lazy-loaded subsections)
│ ├── /data/users Cognito users + signup analytics
│ ├── /data/accounts Customer accounts (team, org, audience)
│ ├── /data/clusters K8s clusters (dev cell, cloud version)
│ ├── /data/indexes Marqo indexes (config, price, state)
│ ├── /data/instances EC2 instances (running only)
│ ├── /data/volumes EBS volumes (zone, size, state)
│ ├── /data/vpcs VPCs
│ ├── /data/subnets Subnets
│ ├── /data/elbs Load balancers
│ ├── /data/nats NAT gateways
│ ├── /data/ips Public IPv4 (alive only)
│ ├── /data/buckets S3 buckets (size in GB)
│ ├── /data/notebooks SageMaker notebooks
│ ├── /data/other Miscellaneous resources
│ ├── /data/savingsplans AWS Savings Plans
│ ├── /data/prices Instance pricing reference
│ ├── /data/resources/{code}_{id} Resource detail page
│ ├── /data/resources/{code}_{id}/tags Tags table
│ └── /data/resources/{code}_{id}/children Child resource tree
├── /stats Analytics (mostly stubs)
│ ├── /stats/clusters
│ ├── /stats/indexes
│ ├── /stats/role
│ ├── /stats/category
│ ├── /stats/customer-compute
│ └── /stats/data-quality
├── /actions Cleanup recommendations
│ ├── /actions/prune_clusters Empty/orphaned clusters
│ ├── /actions/prune_volumes Unattached EBS volumes
│ ├── /actions/prune_ips Unused public IPs
│ ├── /actions/prune_nats Unused NAT gateways
│ ├── /actions/stop_notebooks Idle SageMaker notebooks
│ ├── /actions/dev_indexes Persistent dev indexes
│ ├── /actions/unroled_instances EC2 without IAM roles
│ └── /actions/orphaned_instances Instances without parent index
├── /dashboards Cost reporting
│ ├── /dashboards/cost Multi-dimensional cost breakdown
│ └── /dashboards/cost_series Cost trends over time
├── /budget Budget tracking
│ └── ?where_aws_id=... Per-account filter
├── /diagram Interactive infrastructure visualization
└── /query Freeform SQL-like data queries
Core User Journeys
1. Cost Reduction Workflow
Goal: Identify and eliminate infrastructure waste.
/budget → review spend by account → select account from dropdown
→ compare current 7d avg vs prev 21d avg vs golden day
→ spot increases in usage type breakdown
→ navigate to /actions
→ /actions/prune_clusters → find empty clusters, see savings estimate
→ /actions/prune_volumes → find unattached volumes
→ click resource link → /data/resources/{code}_{id}
→ review owner, cost, timestamps, tags
→ click Jira link to create cleanup ticket
2. Infrastructure Exploration
Goal: Understand what's running and how resources relate.
/data → select resource type (e.g., Instances)
→ sortable table: cost, state, account, role, created_at
→ click instance ID → resource detail page
→ metadata: type, region, path, state, cost, role
→ expand tags section
→ expand child resources (volumes, IPs)
→ view CloudWatch metrics
→ navigate to parent cluster or index via path links
3. Cost Analysis & Reporting
Goal: Understand cost distribution across teams and systems.
/dashboards/cost → income statement card (revenue, gross cost, savings, net)
→ team breakdown cards (DP, CP, S&M, MT, OS, AS)
→ filter by dimension: AWS Account, Type, Audience, Role, System, Team
→ pie charts + detailed tables per dimension
→ sort by cost descending to find top spenders
→ /dashboards/cost_series → line charts of cost trends over time
4. Infrastructure Visualization
Goal: See the full topology and spot anomalies.
/diagram → interactive GoJS canvas
→ toggle resource types: EBS, ELB, NAT, Admin, Index (checkboxes)
→ change detail level: Environments → Accounts → Clusters → Indexes
→ toggle cost overlay (highlights expensive nodes)
→ explore relationships between resources visually
5. Cloud Operations / Alerting
Goal: Automated detection of infrastructure issues (runs on schedule, not user-initiated).
lambda_cop (EventBridge) →
→ find persistent dev indexes (high cost in dev)
→ find instances without IAM roles
→ find orphaned index instances
→ build Slack message blocks
→ post to Slack webhook
Page Detail: Budget
The most complex UI page. Sections:
- Account selector — dropdown with priority ordering: Total, prod, staging, open_source, controller, preprod, then alphabetical others
- Spend summary — total 7d spend, daily average
- Current vs Previous — 7d avg vs prev 7d / prev 21d / golden day, with % change
- Raw EC2 costs — pre-savings-plan EC2 spend with same comparisons
- Run-rate vs target — projected monthly, target ($79,167), % to target
- Daily gaps — current vs golden per day, current vs target per day
- Usage type breakdown — table sortable by: current avg, prev avg, $ delta, % delta
- Account breakdown — same structure per account
- Raw EC2 by account — current vs prev 21d vs golden
Color coding: green = cost decrease (good), red = cost increase (bad).
Page Detail: Cost Dashboard
Structured as an "income statement" with drill-down:
- Income Statement: Total Revenue, Gross Cost, Total Savings, Net Cost, Net Profit
- Team cards: DP, CP, Sales & Marketing, Marqtune, OpenSource, AppliedScience
- Each shows: Total, Customer portion, Dev portion, week-over-week delta
- Dimension breakdowns (each with pie chart + sortable table):
- By AWS Account
- By Resource Type
- By Audience
- By Role
- By System
- By Team
- Filter via query param
where_aws_id,where_type, etc.
Page Detail: Actions
Each action page shows:
- Title and description
- Jira ticket link for context
- Summary: "Delete N resources, save $X.XX/day"
- Sortable table of candidates with: ID (linked), environment, account, owner, cost, updated_at, related resource IDs
Cost Display
All costs stored as $/hr. A header dropdown lets users toggle display between:
- Hourly (raw)
- Daily (x24)
- Monthly (x730)
- Yearly (x8760)
Implemented via CSS variables (--cost-H-display, etc.) toggling visibility of pre-rendered spans.