# Industry Intel & Trends

> Market trends and insights by trade for smarter conversations

**Created:** Jan 20, 2026
**Status:** Plan Ready
**Effort:** 6-8 hours
**Ongoing Cost:** ~$10-20/mo (weekly Perplexity research)

---

## Problem

Reps lack industry context:
- "Is construction booming or slowing?"
- "What's happening with formwork demand?"
- "Are electricians busy right now?"

Without industry knowledge, conversations feel generic.

---

## Solution

Automated industry research + trends dashboard by trade.

### Industry Profile

```json
{
  "trade": "formwork",
  "display_name": "Formwork & Concrete",
  "current_demand": "high",
  "demand_trend": "increasing",
  "avg_day_rate": "$450-650",
  "hot_regions": ["Sydney CBD", "Western Sydney", "Melbourne"],
  "market_insights": [
    "Major infrastructure projects driving demand",
    "Housing approvals up 12% YoY",
    "Skilled worker shortage acute"
  ],
  "talking_points": [
    "Big projects coming up in Western Sydney",
    "Lots of tradies getting poached - loyalty matters",
    "Day rates climbing due to demand"
  ],
  "news": [
    {
      "title": "Sydney Metro West creating 1000+ formwork jobs",
      "source": "AFR",
      "date": "2026-01-15",
      "relevance": "high"
    }
  ],
  "seasonality": {
    "peak": ["Feb-May", "Sep-Nov"],
    "slow": ["Dec-Jan", "Jun-Jul"]
  },
  "updated_at": "2026-01-20"
}
```

---

## Trades Covered

| Trade | Category |
|-------|----------|
| Formwork | Concrete |
| Concrete Finishing | Concrete |
| Steel Fixing | Concrete |
| Carpentry | Construction |
| Electrical | Services |
| Plumbing | Services |
| HVAC | Services |
| Painting | Finishing |
| Tiling | Finishing |
| Landscaping | External |
| Roofing | External |
| Demolition | Specialist |

---

## Database Schema

```sql
CREATE TABLE IF NOT EXISTS industry_intel (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  trade VARCHAR(100) NOT NULL UNIQUE,
  display_name VARCHAR(100),
  category VARCHAR(50),
  current_demand VARCHAR(20), -- 'high', 'medium', 'low'
  demand_trend VARCHAR(20), -- 'increasing', 'stable', 'decreasing'
  avg_day_rate_min INTEGER,
  avg_day_rate_max INTEGER,
  hot_regions TEXT[],
  market_insights TEXT[],
  talking_points TEXT[],
  seasonality JSONB,
  last_research JSONB, -- Full Perplexity response
  research_updated_at TIMESTAMPTZ,
  created_at TIMESTAMPTZ DEFAULT NOW(),
  updated_at TIMESTAMPTZ DEFAULT NOW()
);

CREATE TABLE IF NOT EXISTS industry_news (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  trade VARCHAR(100) REFERENCES industry_intel(trade),
  title TEXT NOT NULL,
  summary TEXT,
  source VARCHAR(100),
  url VARCHAR(500),
  relevance VARCHAR(20), -- 'high', 'medium', 'low'
  published_at TIMESTAMPTZ,
  fetched_at TIMESTAMPTZ DEFAULT NOW()
);

-- Index for quick lookups
CREATE INDEX idx_industry_news_trade ON industry_news(trade);
CREATE INDEX idx_industry_news_relevance ON industry_news(relevance);
```

---

## Weekly Research Job

```javascript
// src/jobs/industryResearch.js
async function updateIndustryIntel() {
  const trades = await getTrades();

  for (const trade of trades) {
    const research = await perplexity.search(
      `Australian ${trade.display_name} industry trends 2026: ` +
      `demand, day rates, major projects, hiring outlook`
    );

    const insights = await extractInsights(research);

    await supabase
      .from('industry_intel')
      .upsert({
        trade: trade.trade,
        ...insights,
        last_research: research,
        research_updated_at: new Date()
      });
  }
}

// Run weekly on Sunday night
cron.schedule('0 22 * * 0', updateIndustryIntel);
```

---

## API Endpoints

```
GET  /api/industry                    # List all trades with intel
GET  /api/industry/:trade             # Get specific trade intel
GET  /api/industry/:trade/news        # Get trade news
POST /api/industry/:trade/research    # Trigger manual research
GET  /api/industry/trends             # Dashboard summary
```

---

## UI Components

### IndustryTrendsCard.jsx
- Shows on CallPrepPage when lead's trade known
- Current demand indicator (high/medium/low)
- 2-3 talking points
- Link to full intel

### IndustryDashboard.jsx
- Overview of all trades
- Heat map of demand by region
- Recent news feed
- Accessible from More menu

### TradeTalkingPoints.jsx
- Inline in LiveCopilot during calls
- Contextual industry facts
- "Did you know..." style tips

---

## Implementation Steps

### Phase 1: Database + Seed (2 hours)
1. [ ] Create migration
2. [ ] Seed 12 core trades with basic intel
3. [ ] Add initial talking points

### Phase 2: Research Job (2-3 hours)
1. [ ] Create industryResearch.js job
2. [ ] Implement Perplexity research parsing
3. [ ] Extract insights with GPT-4
4. [ ] Schedule weekly cron

### Phase 3: Frontend (2-3 hours)
1. [ ] Create IndustryTrendsCard
2. [ ] Add to CallPrepPage
3. [ ] Create IndustryDashboard page
4. [ ] Add to LiveCopilot

---

## Integration Points

- **CallPrepPage:** Show trade trends for lead's industry
- **LiveCopilot:** Surface talking points during call
- **Intel Brief:** Include industry context
- **Lead Scoring:** Boost leads in high-demand trades

---

## Success Metrics

- Industry intel viewed on 50% of calls
- Talking points used in conversations
- Reps report feeling more knowledgeable
