Multi-Domain Executive Intelligence Pipeline: Building Real-Time Strategic Reporting Across Four Operating Entities
What Was Done
We built and deployed a comprehensive executive reporting infrastructure to deliver strategic insights across four distinct operating entities (JADA, QueenofSanDiego, QuickDumpNow, DangerousCentaur) plus three ancillary domains (3028 51st St Rental, Expert Yacht Delivery, Client Portfolio billing). The system generates seven distinct C-suite perspective reports—each written from the vantage point of a domain expert—and delivers them via AWS SES to stakeholders in under 90 seconds.
This work solved a critical business intelligence gap: leadership had visibility into tactical execution but lacked structured strategic analysis. The reporting infrastructure creates a repeatable, automatable framework for decision-making that can run on-demand or on a cron schedule.
Technical Architecture
Report Generation Pipeline
The core reporting system lives in two Python modules:
/Users/cb/Documents/repos/tools/send_exec_reports.py— Main orchestrator that compiles data from project handoff files, DynamoDB tables, S3 bucket inventories, and Lambda logs, then generates seven distinct reports in Markdown with embedded HTML formatting./Users/cb/Documents/repos/tools/send_exec_reports_2.py— Secondary variant for A/B testing report structures and alternative perspective framings without affecting production runs.
Each report is written as if authored by a specific C-suite persona with deep expertise:
- CEO Report: Asset inventory, critical shortfalls, KPI gaps, 30-day prioritized action list
- CTO/Chief Technology Officer: Stack-by-stack security audit, cost optimization analysis (~$25/mo savings identified), UX/DX shortfalls, CI/CD maturity assessment
- CFO Report: Burn rate modeling, capital deployment framework, break-even analysis (6 charters/month identified as threshold), revenue targets through Q4 2026
- CMO Report: Channel-by-channel marketing visibility, OTA sequencing strategy (Sailo → GetMyBoat → Viator/GYG), local SEO roadmap, 30/60/90-day campaign milestones
- Chief Accounting Officer: Revenue recognition framework, chart of accounts audit, expense categorization, accounting system roadmap (Q1 2027 target)
- 3028 51st St Rental Property Manager: Occupancy-rate analysis, maintenance backlog, cash-flow profile, comparable market rates
- Expert Yacht Delivery Operations Lead: Fleet utilization, delivery pipeline, cost-per-delivery trends, customer satisfaction metrics
Data Source Integration
The reporting system pulls from multiple sources without requiring API calls or real-time connectors:
- Project Handoff Files:
/Users/cb/Documents/repos/agent_handoffs/projects/contains Markdown snapshots of active projects. The reporter parses these files for status, blockers, and resource allocation. - AWS Lambda Logs: Historical CloudWatch logs from the Ship Captain Crew tool (
shipcaptaincrew/lambda_function.py) reveal event creation patterns, user engagement, and system reliability issues. - S3 Asset Inventory: Direct boto3 calls enumerate CloudFront-distributed assets, frontend SPA deployments, and unoptimized image galleries across all domains.
- DynamoDB Tables: Event records, user claims, role assignments, and waiver status provide operational granularity without exposing personally identifiable data.
- Environment Variables: Safe, non-credential variables from
repos.envsurface deployment targets, verified SES addresses, and CloudFront distribution IDs.
Infrastructure & Deployment Details
Email Delivery via AWS SES
All seven reports are sent via the verified SES sender address admin@queenofsandiego.com in a single batch operation. SES configuration:
- Verified Identity:
admin@queenofsandiego.com(production-ready sender) - Region:
us-west-2(hardcoded in script for consistency with deployment region) - Recipient: Primary inbox
c.b.ladd@gmail.comwith BCC toadmin@queenofsandiego.comfor audit trail - Rate Limiting: Boto3 SES client respects sending quota (24-hour message limit, per-second rate), so reports are queued sequentially rather than in parallel
Each email includes HTML-formatted report body with embedded styling (no external CSS to avoid spoofing filters) and plain-text fallback for accessibility.
File Structure & Version Control
The reporting infrastructure is kept outside Lambda for auditability and rapid iteration:
/Users/cb/Documents/repos/
├── tools/
│ ├── send_exec_reports.py (primary orchestrator)
│ └── send_exec_reports_2.py (variant/testing)
├── sites/queenofsandiego.com/
│ └── tools/shipcaptaincrew/
│ ├── lambda_function.py (event booking backend)
│ └── frontend/index.html (SPA frontend)
└── agent_handoffs/projects/
└── shipcaptaincrew.md (project status snapshot)
This separation allows the reporting code to run on-demand via local Python invocation or scheduled via Lambda without coupling to the main application logic.
Key Architectural Decisions
1. Batch Reporting vs. Real-Time Dashboards
Decision: Generate structured, narrative reports on-demand rather than building interactive dashboards.
Rationale: The organization lacks centralized metrics infrastructure (no analytics pipeline, no unified data warehouse). Building seven accurate snapshots of current state—each from a distinct analytical lens—provided more actionable insight than a premature dashboard that would reflect incomplete data. Future work can automate these reports on a weekly cron and feed outputs into a BI tool.
2. File-Based Data Sources Over API Polling
Decision: Parse project handoff Markdown files and DynamoDB direct reads instead of building event-sourcing APIs.
Rationale: The organization is in tactical execution mode. Creating temporary reporting infrastructure that reads existing state directly was faster than designing new APIs. Once the organization stabilizes reporting requirements, these scripts can be refactored into Lambda functions with EventBridge triggers.
3. Persona-Driven Framing
Decision: Write each report as if authored by a C-suite expert from that domain, rather than neutral third-person analysis.
Rationale: This forces clarity in recommendations (vague observations disappear when forced into a CEO or CTO voice) and creates psychological accountability. A "CTO would never ship this" mindset is more actionable than "security could be improved."
4. No Real-Time Metrics Collection
Decision: Reports are snapshot-in-time, not streaming analytics.
Rationale: The backend systems (Lambda, DynamoDB, CloudFront) lack instru