A comprehensive analytics and economic modeling suite for a mixed-use development project — measuring visitor flows, projecting community impact, and building the case for grant funding with data-driven storytelling.
Import core libraries and load the visitor and revenue datasets for the Denver Community Hub project. The data covers a 12-month period of foot traffic, event attendance, and per-venue revenue tracking across four distinct spaces.
import pandas as pd import numpy as np import matplotlib.pyplot as plt from datetime import datetime, timedelta # Load datasets visitors = pd.read_csv('data/hub_visitors_2025.csv', parse_dates=['date']) revenue = pd.read_csv('data/hub_revenue_2025.csv', parse_dates=['date']) events = pd.read_csv('data/hub_events_2025.csv', parse_dates=['date']) print(f"Visitor records: {len(visitors):,}") print(f"Revenue records: {len(revenue):,}") print(f"Events tracked: {len(events):,}")
Mapping the complete visitor journey from initial awareness through repeat engagement. This funnel analysis helps stakeholders understand conversion rates between key touchpoints — critical for grant applications that need to demonstrate community reach and retention.
# Build visitor journey funnel funnel_stages = { 'Awareness (Web/Social)': 24500, 'First Visit': 8200, 'Multi-Space Engagement': 4100, 'Event Attendance': 2650, 'Repeat Visitor (3+ visits)': 1840, 'Community Member': 720, } funnel_df = pd.DataFrame({ 'stage': funnel_stages.keys(), 'visitors': funnel_stages.values() }) funnel_df['conversion'] = funnel_df['visitors'].pct_change().fillna(0) funnel_df
Key Insight: The strongest drop-off occurs at awareness → first visit (33.5% conversion). Recommending investment in local partnerships and a "first visit" incentive program to improve this funnel stage. Once visitors engage with multiple spaces, retention is strong at ~65%+.
Estimating the broader economic ripple effects of the Community Hub using local spending multipliers. These numbers are built on established frameworks for mixed-use development impact — modeling direct spending, indirect business effects, and induced household spending in the surrounding neighborhood.
# Economic impact by venue venues = ['Coffee Shop', 'Makerspace', 'Library', 'Art Gallery'] direct_revenue = [680000, 520000, 0, 340000] visitor_counts = [22100, 9800, 14200, 8400] LOCAL_MULTIPLIER = 1.71 # Denver metro area multiplier impact_df = pd.DataFrame({ 'venue': venues, 'direct_revenue': direct_revenue, 'visitors': visitor_counts, 'total_impact': [r * LOCAL_MULTIPLIER for r in direct_revenue], 'avg_spend': [r/v if v > 0 and r > 0 else 0 for r, v in zip(direct_revenue, visitor_counts)] }) impact_df
| Venue | Direct Revenue | Visitors | Total Impact | Avg Spend |
|---|---|---|---|---|
| Coffee Shop | $680,000 | 22,100 | $1,162,800 | $30.77 |
| Makerspace | $520,000 | 9,800 | $889,200 | $53.06 |
| Library | $0 | 14,200 | — | — |
| Art Gallery | $340,000 | 8,400 | $581,400 | $40.48 |
Projected employment impact across direct hires, indirect support roles, and induced positions from increased local spending. These are key metrics for HUD and EDA grant applications that require demonstrable community employment outcomes.
# Job creation projections jobs = { 'category': ['Direct FTE', 'Direct PT', 'Indirect', 'Induced', 'Construction (temp)'], 'year_1': [12, 8, 6, 4, 45], 'year_3': [18, 12, 10, 7, 0], 'year_5': [24, 15, 14, 11, 0], } jobs_df = pd.DataFrame(jobs) jobs_df.set_index('category')
Grant Metric: Total projected employment impact reaches 64 permanent positions by Year 5 (24 FTE + 15 PT + 14 indirect + 11 induced), with an additional 45 temporary construction jobs during the buildout phase. Cost per permanent job created: approximately $14,800 against the total grant ask.
Consolidated financial projections across all four venues, incorporating seasonal adjustments, planned capacity expansions, and conservative growth assumptions aligned with Denver metro development benchmarks.
# 5-Year proforma projections years = [2025, 2026, 2027, 2028, 2029] revenue_proj = [1540000, 2100000, 2680000, 3150000, 3520000] opex_proj = [1380000, 1720000, 2010000, 2240000, 2410000] net_proj = [r - o for r, o in zip(revenue_proj, opex_proj)] margin_proj = [n / r * 100 for n, r in zip(net_proj, revenue_proj)] proforma = pd.DataFrame({ 'year': years, 'revenue': revenue_proj, 'operating_expenses': opex_proj, 'net_income': net_proj, 'margin_pct': margin_proj }) proforma
| Year | Revenue | OpEx | Net Income | Margin |
|---|---|---|---|---|
| 2025 | $1,540,000 | $1,380,000 | $160,000 | 10.4% |
| 2026 | $2,100,000 | $1,720,000 | $380,000 | 18.1% |
| 2027 | $2,680,000 | $2,010,000 | $670,000 | 25.0% |
| 2028 | $3,150,000 | $2,240,000 | $910,000 | 28.9% |
| 2029 | $3,520,000 | $2,410,000 | $1,110,000 | 31.5% |
Bottom Line: The Hub reaches operational profitability in Year 1 and scales to a 31.5% margin by Year 5. The revenue ramp is driven by makerspace membership growth and gallery event programming. Conservative assumptions use 4% annual inflation and Denver metro foot traffic benchmarks — no hockey-stick projections.