Pipeline forecast (nightly-consolidation Section L1)
Every 11pm run queries HubSpot for all contacts owned by Joseph where lifecyclestage != customer. Groups by tier (parsed from lead_source_notes Tier: token). Applies historical close rates:
| Tier | Close rate (seed) |
|---|---|
| HOT | 20% |
| WARM | 10% |
| NURTURE | 5% |
| LOW | 2% |
| SWITCH | 15% |
- Next 30 days: sum(count × avg annualrevenue × close_rate) × 0.3 time-weight
- Next 90 days: × 0.6
- Full pipeline (all open): × 1.0
State file
~/Library/Application Support/SkyRun/pipeline_forecast_state.json — stores daily snapshot. Brief shows week-over-week delta.
Tuning close rates
The rates above are seeds. After 20+ deals have closed (cumulative, across all tiers), update the rates based on actuals:python
historical_close_rate_by_tier = (closed_won_by_tier / total_touched_by_tier)
Re-seed pipeline_forecast_state.json and the table above gets overridden.
Revenue pulse (Section L2)
Track — yesterday's bookings
If the Track tab is open + authenticated in Chrome, navigates to the Reports → Daily Bookings view and scrapes:- Total revenue
- Total bookings
- Total nights
- Implied ADR
If Track tab isn't reachable, skips this line with "_Data not available — Track session expired_".
KeyData — market trend
If KeyData tab is open + authenticated, pulls 7-day ADR + occupancy trend for the Winter Park submarket. Compares Joseph's portfolio against comps.If KeyData tab isn't reachable, skips with "_Data not available — KeyData not open_".
Output format (in morning brief)
Inserted AFTER "Active deals":
markdown
💰 Pipeline forecast
Window Expected commission Δ vs last week Next 30 days $3,200 +$400 Next 90 days $6,400 +$800 Full pipeline $10,700 +$1,300
Tier breakdown: HOT 134@20%, WARM 178@10%, NURTURE 174@5%, LOW 62@2%, SWITCH 261@15%
📈 Revenue pulse (yesterday)
- Track: 12 bookings, $4,580 total, 28 nights — ADR $163
- KeyData 7d trend: Winter Park ADR +4.2%, occupancy -1.1% vs prior 7d
- Your portfolio vs comps: above market by $12/night on 18 units
Safety
- READ-ONLY against Track and KeyData. Never write back.
- Failures degrade gracefully: if HS query fails, omit pipeline block. If Track/KeyData not open, show "_Data not available_" per source, don't delete the whole section.
- Close rates are seeds — don't trust the dollar values as gospel until 20+ deals have actually cycled through.
Related
reference_scheduled_tasks.md— nightly-consolidation contextreference_hubspot_infrastructure.md— HS portal detailsreference_key_data_dexai.md— KeyData analytics vendor- CLAUDE.md —
annualrevenuefield = commission amount ($1K Bowens-sourced, $700 other sources)