# Agency Accounts Feature Specification

**Version:** 1.0  
**Date:** 2026-02-06  
**Status:** Draft  
**Author:** Rivet (AI Product Lead)

---

## Executive Summary

Agency Accounts is a B2B feature enabling labour hire agencies to use RateRight as a distribution channel for their workers. Rather than competing with agencies, RateRight becomes infrastructure they build on—expanding our worker supply while creating a significant new revenue stream.

**Revenue Opportunity:** $100K-500K+ ARR within 12 months through agency subscriptions, per-placement fees, and premium features.

---

## Table of Contents

1. [Market Context](#1-market-context)
2. [Value Proposition](#2-value-proposition)
3. [Feature Requirements](#3-feature-requirements)
4. [Pricing Model](#4-pricing-model)
5. [Verification Requirements](#5-verification-requirements)
6. [Database Schema](#6-database-schema)
7. [UI/UX Design](#7-uiux-design)
8. [Risks & Mitigations](#8-risks--mitigations)
9. [Implementation Phases](#9-implementation-phases)
10. [Success Metrics](#10-success-metrics)

---

## 1. Market Context

### How Labour Hire Agencies Work in Australian Construction

Labour hire agencies are intermediaries that:
1. **Recruit and vet workers** (inductions, tickets, right-to-work checks)
2. **Employ workers directly** (handle payroll, super, workers comp, insurances)
3. **Supply workers to host employers** (builders, contractors) on demand
4. **Charge a bill rate** that includes base pay + on-costs + margin (typically 20-40%)

**Typical Sydney Market Rates (2026):**
| Role | Worker Base Pay | Agency Bill Rate | Agency Margin |
|------|----------------|------------------|---------------|
| General Labourer | $35-45/hr | $45-65/hr | ~30% |
| Skilled Labourer | $40-50/hr | $50-70/hr | ~30% |
| Carpenter | $45-65/hr | $60-90/hr | ~35% |
| Electrician | $52-75/hr | $70-105/hr | ~35% |

### Key Industry Players
- **Traditional agencies:** Hunter Labour Hire, MC Labour, Labor Solutions, Construct Personnel
- **Tech platforms:** Yakka Labour (app-based, construction-first), Workfast, AWX
- **Hybrid models:** JV Recruitment, Techforce

### Why Agencies Would Use RateRight

**Pain Points We Solve:**
1. **Lead generation is expensive** — agencies spend $50-200+ per qualified contractor lead
2. **Worker idle time kills margins** — workers between placements still cost money
3. **Geographic limitations** — hard to serve contractors outside their network
4. **Tech investment is costly** — building apps/platforms requires significant capital

**Opportunity for Agencies:**
- RateRight already has contractors looking to hire
- Agencies can list their workers and get bookings without sales effort
- Lower cost per placement than traditional business development
- Access to small contractors they'd never reach otherwise

---

## 2. Value Proposition

### For Agencies (Why They'd Use RateRight)

| Benefit | Description |
|---------|-------------|
| **New Distribution Channel** | Access RateRight's contractor base without sales effort |
| **Fill Worker Downtime** | List idle workers, get bookings, reduce bench costs |
| **Verified Badge = Trust** | Agency-verified badge differentiates from randoms |
| **Bulk Management** | Upload/manage entire workforce from one dashboard |
| **Reduce Admin** | Automated matching, messaging, and booking flow |
| **Analytics** | See which workers get hired, optimise roster |

### For RateRight (Why We'd Build This)

| Benefit | Description |
|---------|-------------|
| **Revenue Stream** | Subscription fees + per-placement fees + premium features |
| **Supply Expansion** | Instantly add 100s-1000s of vetted workers |
| **Quality Improvement** | Agency workers are pre-vetted, insured, compliant |
| **Reduced Risk** | Agency handles employment, payroll, workers comp |
| **Market Positioning** | Platform, not competitor — agencies become partners |

### For Contractors (Why They'd Hire Agency Workers)

| Benefit | Description |
|---------|-------------|
| **Pre-vetted Workers** | Agency badge = proper inductions, tickets, insurance |
| **Reliability** | Agencies replace no-shows, guarantee quality |
| **Compliance** | All employment law handled by agency |
| **Same $50 Fee** | No change to contractor pricing |

---

## 3. Feature Requirements

### 3.1 Agency Registration & Verification

**Required Information:**
- ABN (Australian Business Number)
- Labour Hire Licence number (if operating in VIC, QLD, SA, ACT)
- Business name and trading name(s)
- Primary contact details
- Proof of insurance (public liability, workers compensation)
- Business address

**Verification Process:**
1. ABN lookup via ABR API (validates active, correct entity type)
2. Labour Hire Licence lookup via state authority APIs/registers
3. Manual review for insurance documents
4. Approval/rejection with reason codes

### 3.2 Agency Dashboard

**Overview Tab:**
- Total workers listed
- Active/available workers
- Placements this month
- Revenue generated (their earnings)
- Pending bookings requiring confirmation

**Worker Management:**
- Bulk upload workers via CSV
- Individual worker add/edit
- Toggle worker availability
- Set worker rates (their charge rate to contractors)
- View worker performance (ratings, completion rate)
- Archive/remove workers

**Booking Management:**
- Incoming booking requests
- Confirm/decline bookings
- View booking history
- Message contractors
- Handle disputes

**Analytics:**
- Worker utilisation rates
- Popular trades/skills
- Geographic demand heatmap
- Conversion rate (views → bookings)
- Revenue trends

### 3.3 Bulk Worker Upload

**CSV Template Fields:**
```csv
first_name,last_name,email,phone,trade,hourly_rate,white_card,licenses,experience_years,bio
```

**Supported Fields:**
| Field | Required | Description |
|-------|----------|-------------|
| first_name | Yes | Worker's first name |
| last_name | Yes | Worker's last name |
| email | No | Worker email (for notifications) |
| phone | Yes | Contact number |
| trade | Yes | Primary trade/skill |
| hourly_rate | Yes | Agency's charge rate |
| white_card | Yes | White card number |
| licenses | No | Comma-separated tickets/licenses |
| experience_years | No | Years of experience |
| bio | No | Short description |
| available_from | No | Date available |
| photo_url | No | Profile photo URL |

**Upload Flow:**
1. Download template
2. Fill in worker data
3. Upload CSV
4. System validates (duplicates, required fields, format)
5. Preview valid/invalid rows
6. Confirm import
7. Workers appear as "Pending" until agency verifies

### 3.4 Agency-Verified Badge

**Display:**
- Badge shown on worker profile cards
- Agency name visible on worker detail page
- Link to agency's RateRight profile
- Trust indicators (years operating, total placements, rating)

**Badge Tiers (Future):**
| Tier | Requirements | Benefits |
|------|--------------|----------|
| Verified | ABN + Insurance | Basic badge |
| Licensed | + Labour Hire Licence | "Licensed" badge |
| Premium | + 50+ placements, 4.5+ rating | Featured placement, premium badge |

### 3.5 Worker Profiles (Agency-Managed)

Agency-uploaded workers have:
- Profile created by agency (not self-registered)
- Agency badge on all listings
- Rate set by agency (not worker)
- Availability managed by agency
- Bookings flow through agency dashboard
- Ratings/reviews visible to agency

**Worker Access (Optional):**
- Agency can invite workers to claim their profile
- Workers can update availability via app
- Workers cannot change rate or trade (agency-controlled)

### 3.6 Booking Flow (Agency Workers)

**Contractor Side:**
1. Browse workers, sees "Agency Worker" badge
2. Selects worker, sees agency name and rate
3. Requests booking (same as individual workers)
4. Pays $50 fee to RateRight

**Agency Side:**
1. Receives booking notification
2. Reviews job details (location, dates, requirements)
3. Confirms or declines booking
4. If confirmed, worker details shared with contractor
5. Worker completes job
6. Contractor rates worker
7. Agency invoices contractor directly OR through RateRight (Phase 2)

---

## 4. Pricing Model

### Recommended: Tiered Subscription + Per-Placement Fee

**Why Hybrid Model:**
- Subscription = predictable revenue, committed agencies
- Per-placement fee = scales with usage, fair for smaller agencies
- Lower barrier to entry than pure subscription
- Incentivises agencies to actively use platform

### Pricing Tiers

| Tier | Monthly Fee | Workers | Placement Fee | Features |
|------|-------------|---------|---------------|----------|
| **Starter** | $99/mo | Up to 10 | $25/placement | Dashboard, bulk upload, badge |
| **Growth** | $299/mo | Up to 50 | $15/placement | + Analytics, priority support |
| **Enterprise** | $599/mo | Unlimited | $10/placement | + API access, custom branding, dedicated AM |

**Annual Discount:** 20% off (2 months free)

### Revenue Projections

**Conservative Scenario (Year 1):**
- 10 Starter agencies × $99/mo = $11,880/yr
- 5 Growth agencies × $299/mo = $17,940/yr
- 2 Enterprise agencies × $599/mo = $14,376/yr
- 500 placements × $15 avg fee = $7,500/yr
- **Total: ~$52,000 ARR**

**Optimistic Scenario (Year 1):**
- 30 Starter agencies × $99/mo = $35,640/yr
- 20 Growth agencies × $299/mo = $71,760/yr
- 10 Enterprise agencies × $599/mo = $71,880/yr
- 3,000 placements × $15 avg fee = $45,000/yr
- **Total: ~$224,000 ARR**

### Comparison to Alternatives

| Model | Pros | Cons |
|-------|------|------|
| **Pure Subscription** | Predictable revenue | High barrier, agencies hesitant |
| **Per-Placement Only** | Low barrier | Unpredictable, agencies may not commit |
| **Percentage of Bill** | Scales with value | Complex, agencies resistant |
| **Hybrid (Recommended)** | Balance of predictable + scalable | Slightly more complex |

---

## 5. Verification Requirements

### Labour Hire Licensing by State

| State | Licence Required? | Authority | Register |
|-------|-------------------|-----------|----------|
| Victoria | Yes | Labour Hire Authority | labourhireauthority.vic.gov.au |
| Queensland | Yes | Office of Industrial Relations | ols.ogov.qld.gov.au |
| South Australia | Yes | Consumer and Business Services | cbs.sa.gov.au |
| ACT | Yes | Access Canberra | accesscanberra.act.gov.au |
| NSW | No* | — | — |
| WA | No | — | — |
| NT | No | — | — |
| TAS | No | — | — |

*NSW has no state licence but Building and Construction Industry Security of Payment Act applies

### Verification Checklist

**Mandatory (All Agencies):**
- [ ] Valid ABN (check via ABR API)
- [ ] ABN entity type = Company/Partnership/Trust (not individual)
- [ ] GST registered (indicates legitimate business)
- [ ] Public Liability Insurance (min $10M)
- [ ] Workers Compensation Insurance

**Conditional (State-Specific):**
- [ ] Labour Hire Licence (VIC, QLD, SA, ACT)
- [ ] Licence not suspended/cancelled
- [ ] Licence covers relevant industries

**Enhanced (Optional for Premium):**
- [ ] CFMEU/union agreements
- [ ] ISO certifications
- [ ] References from tier-1 contractors

### ABN Verification API

```javascript
// ABR Lookup API
const verifyABN = async (abn) => {
  const response = await fetch(
    `https://abr.business.gov.au/abrxmlsearch/AbrXmlSearch.asmx/ABRSearchByABN?searchString=${abn}&includeHistoricalDetails=N&authenticationGuid=${API_KEY}`
  );
  // Parse XML response
  // Check: status=Active, entityType=Company, GST=registered
};
```

### Labour Hire Licence Verification

**Victoria:** API available via Labour Hire Authority
**Queensland:** Public register searchable
**Others:** Manual verification or scraping public registers

---

## 6. Database Schema

### New Tables

```sql
-- Agency account (extends users table)
CREATE TABLE agencies (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id UUID REFERENCES users(id) ON DELETE CASCADE,
  
  -- Business details
  business_name TEXT NOT NULL,
  trading_name TEXT,
  abn TEXT NOT NULL UNIQUE,
  acn TEXT,
  
  -- Contact
  contact_name TEXT NOT NULL,
  contact_email TEXT NOT NULL,
  contact_phone TEXT NOT NULL,
  business_address JSONB,
  
  -- Verification
  verification_status TEXT DEFAULT 'pending', -- pending, verified, rejected, suspended
  verified_at TIMESTAMPTZ,
  verified_by UUID REFERENCES users(id),
  rejection_reason TEXT,
  
  -- Licensing
  labour_hire_licence TEXT,
  licence_state TEXT, -- VIC, QLD, SA, ACT
  licence_verified BOOLEAN DEFAULT FALSE,
  licence_expiry DATE,
  
  -- Insurance
  public_liability_verified BOOLEAN DEFAULT FALSE,
  public_liability_expiry DATE,
  workers_comp_verified BOOLEAN DEFAULT FALSE,
  workers_comp_expiry DATE,
  
  -- Subscription
  subscription_tier TEXT DEFAULT 'starter', -- starter, growth, enterprise
  subscription_status TEXT DEFAULT 'trialing', -- trialing, active, past_due, cancelled
  subscription_started_at TIMESTAMPTZ,
  stripe_customer_id TEXT,
  stripe_subscription_id TEXT,
  
  -- Limits
  max_workers INTEGER DEFAULT 10,
  current_worker_count INTEGER DEFAULT 0,
  
  -- Metadata
  created_at TIMESTAMPTZ DEFAULT NOW(),
  updated_at TIMESTAMPTZ DEFAULT NOW()
);

-- Agency workers (links workers to agencies)
CREATE TABLE agency_workers (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  agency_id UUID REFERENCES agencies(id) ON DELETE CASCADE,
  worker_id UUID REFERENCES workers(id) ON DELETE CASCADE,
  
  -- Agency-controlled fields
  hourly_rate DECIMAL(10,2) NOT NULL,
  is_available BOOLEAN DEFAULT TRUE,
  available_from DATE,
  available_until DATE,
  
  -- Status
  status TEXT DEFAULT 'active', -- active, archived, removed
  added_at TIMESTAMPTZ DEFAULT NOW(),
  archived_at TIMESTAMPTZ,
  
  -- Analytics
  views_count INTEGER DEFAULT 0,
  booking_requests_count INTEGER DEFAULT 0,
  completed_jobs_count INTEGER DEFAULT 0,
  
  UNIQUE(agency_id, worker_id)
);

-- Agency documents (for verification)
CREATE TABLE agency_documents (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  agency_id UUID REFERENCES agencies(id) ON DELETE CASCADE,
  
  document_type TEXT NOT NULL, -- public_liability, workers_comp, labour_hire_licence, other
  file_url TEXT NOT NULL,
  file_name TEXT,
  uploaded_at TIMESTAMPTZ DEFAULT NOW(),
  
  -- Verification
  verified BOOLEAN DEFAULT FALSE,
  verified_at TIMESTAMPTZ,
  verified_by UUID REFERENCES users(id),
  expiry_date DATE,
  notes TEXT
);

-- Agency placements (bookings through agency)
CREATE TABLE agency_placements (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  agency_id UUID REFERENCES agencies(id),
  agency_worker_id UUID REFERENCES agency_workers(id),
  job_id UUID REFERENCES jobs(id),
  contractor_id UUID REFERENCES users(id),
  
  -- Booking details
  status TEXT DEFAULT 'pending', -- pending, confirmed, declined, completed, cancelled
  requested_at TIMESTAMPTZ DEFAULT NOW(),
  confirmed_at TIMESTAMPTZ,
  completed_at TIMESTAMPTZ,
  
  -- Financials
  hourly_rate DECIMAL(10,2),
  estimated_hours DECIMAL(5,2),
  actual_hours DECIMAL(5,2),
  platform_fee DECIMAL(10,2), -- $50 from contractor
  placement_fee DECIMAL(10,2), -- $10-25 from agency
  
  -- Notes
  decline_reason TEXT,
  contractor_notes TEXT,
  agency_notes TEXT
);

-- Indexes
CREATE INDEX idx_agencies_verification ON agencies(verification_status);
CREATE INDEX idx_agencies_subscription ON agencies(subscription_status);
CREATE INDEX idx_agency_workers_available ON agency_workers(agency_id, is_available) WHERE status = 'active';
CREATE INDEX idx_agency_placements_status ON agency_placements(agency_id, status);
```

### Modifications to Existing Tables

```sql
-- Add agency reference to workers table
ALTER TABLE workers ADD COLUMN agency_id UUID REFERENCES agencies(id);
ALTER TABLE workers ADD COLUMN is_agency_worker BOOLEAN DEFAULT FALSE;

-- Add agency badge to worker_profiles view
CREATE OR REPLACE VIEW worker_profiles_v2 AS
SELECT 
  w.*,
  a.business_name as agency_name,
  a.verification_status as agency_verification_status,
  aw.hourly_rate as agency_rate,
  CASE WHEN a.id IS NOT NULL THEN TRUE ELSE FALSE END as has_agency_badge
FROM workers w
LEFT JOIN agency_workers aw ON w.id = aw.worker_id AND aw.status = 'active'
LEFT JOIN agencies a ON aw.agency_id = a.id AND a.verification_status = 'verified';
```

---

## 7. UI/UX Design

### 7.1 Agency Registration Flow

```
[Landing Page: "Partner With RateRight"]
    ↓
[Step 1: Business Details]
- Business name, ABN
- Trading name (if different)
- Business address
    ↓
[Step 2: Contact Details]  
- Primary contact name
- Email, phone
- Role/position
    ↓
[Step 3: Licensing & Insurance]
- Labour Hire Licence (if applicable)
- Upload insurance documents
    ↓
[Step 4: Choose Plan]
- Starter / Growth / Enterprise
- Payment details
    ↓
[Verification Pending]
- "We'll review your application within 2 business days"
- Email confirmation
    ↓
[Approved → Dashboard Access]
```

### 7.2 Agency Dashboard Layout

```
┌─────────────────────────────────────────────────────────────┐
│  🏢 ABC Labour Hire                    [Settings] [Logout]  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  📊 Overview                                                │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐        │
│  │   24    │  │   18    │  │   12    │  │ $4,250  │        │
│  │ Workers │  │Available│  │Bookings │  │ Revenue │        │
│  └─────────┘  └─────────┘  └─────────┘  └─────────┘        │
│                                                             │
│  ⚡ Pending Bookings (3)                                    │
│  ┌──────────────────────────────────────────────────────┐  │
│  │ 🔨 John Smith - Carpenter                            │  │
│  │ Requested by: Smith Building Co.                     │  │
│  │ Job: Framing work at Parramatta | Feb 10-14          │  │
│  │ Rate: $65/hr | Est. 40hrs = $2,600                   │  │
│  │ [Confirm] [Decline] [Message]                        │  │
│  └──────────────────────────────────────────────────────┘  │
│                                                             │
│  👷 Worker Management                          [+ Add]     │
│  [Upload CSV] [Filter: All ▼] [Search...]                  │
│  ┌──────────────────────────────────────────────────────┐  │
│  │ ☑ │ Photo │ Name        │ Trade     │ Rate  │ Status │  │
│  ├───┼───────┼─────────────┼───────────┼───────┼────────┤  │
│  │ ☑ │ 👤    │ John Smith  │ Carpenter │ $65/h │ 🟢 Avl │  │
│  │ ☑ │ 👤    │ Mike Jones  │ Labourer  │ $45/h │ 🔴 Busy│  │
│  │ ☑ │ 👤    │ Sarah Chen  │ Electricn │ $85/h │ 🟢 Avl │  │
│  └──────────────────────────────────────────────────────┘  │
│                                                             │
└─────────────────────────────────────────────────────────────┘
```

### 7.3 Worker Card (Contractor View)

```
┌────────────────────────────────────┐
│  [Photo]                           │
│                                    │
│  John Smith                        │
│  Carpenter · 8 years exp           │
│                                    │
│  ⭐ 4.8 (24 reviews)               │
│                                    │
│  🏢 ABC Labour Hire ✓              │  ← Agency badge
│  Licensed Agency                   │
│                                    │
│  $65/hr                            │
│                                    │
│  [View Profile] [Request Booking]  │
└────────────────────────────────────┘
```

### 7.4 Agency Badge Design

**Badge Variations:**
```
[🏢 Agency Worker]          - Basic verified agency
[🏢 Licensed Agency]        - Has labour hire licence  
[🏢 Premium Partner ⭐]     - Premium tier agency
```

**Badge Tooltip (on hover):**
```
┌─────────────────────────────────┐
│ ABC Labour Hire                 │
│ ✓ Verified Agency               │
│ ✓ Licensed (VIC)                │
│ ✓ Fully Insured                 │
│                                 │
│ Operating since 2018            │
│ 150+ placements on RateRight    │
│ 4.7 average worker rating       │
└─────────────────────────────────┘
```

---

## 8. Risks & Mitigations

### Risk Matrix

| Risk | Likelihood | Impact | Mitigation |
|------|------------|--------|------------|
| Agencies flood platform with low-quality workers | Medium | High | Worker limits per tier, quality thresholds |
| Agencies undercut individual workers | Medium | Medium | Same $50 fee structure, agency rate transparency |
| Gaming reviews/ratings | Medium | High | Verified-only reviews, anomaly detection |
| Agencies use platform to poach contractors | Low | Medium | Terms of service, monitoring patterns |
| Agencies list same workers as individuals | Medium | Low | Duplicate detection on phone/email |
| Fake agencies | Low | High | Strict verification, ABN/licence checks |
| Premium agencies expect white-glove service | Medium | Low | Clear SLAs, dedicated support for Enterprise |
| Individual workers feel disadvantaged | Medium | Medium | Badge differentiation, search filters |

### Detailed Mitigations

**1. Quality Control**
- Agency workers require white card minimum
- Platform can suspend workers with <3.5 rating
- Agencies lose badge if avg rating drops below 4.0
- Random spot-checks on agency compliance

**2. Fair Competition**
- Individual workers can filter out agency workers in search
- Contractors can filter FOR agency workers (for compliance needs)
- Transparent badging — no hidden agencies
- Same $50 fee regardless of agency or individual

**3. Fraud Prevention**
- ABN verification before any workers listed
- Labour hire licence verification for relevant states
- Duplicate worker detection (phone, email, name+DOB)
- Rate limiting on worker uploads (max 20/day)

**4. Gaming Prevention**
- Reviews only from verified completed bookings
- Sudden rating spikes flagged for review
- Agency self-reviews detected and removed
- Platform reserves right to remove suspicious accounts

**5. Terms of Service**
- Agencies cannot contact contractors off-platform for first engagement
- Agencies must honour RateRight bookings
- Agencies cannot disparage platform to users
- Violations result in account suspension

---

## 9. Implementation Phases

### Phase 1: MVP (Weeks 1-4)

**Goal:** Launch basic agency functionality, validate demand

**Features:**
- [ ] Agency registration form
- [ ] Manual verification process (admin reviews)
- [ ] Agency dashboard (basic)
- [ ] Add workers individually
- [ ] Worker profiles with agency badge
- [ ] Booking request flow (agency confirms)
- [ ] Starter tier only ($99/mo, Stripe subscription)

**Technical:**
- [ ] Create agencies table
- [ ] Create agency_workers table
- [ ] Agency dashboard routes/pages
- [ ] Stripe subscription integration
- [ ] ABN lookup API integration
- [ ] Admin verification interface

**Success Criteria:**
- 5 agencies signed up
- 50+ workers listed
- 10+ booking requests

### Phase 2: Scale (Weeks 5-8)

**Goal:** Add bulk features, analytics, automation

**Features:**
- [ ] CSV bulk upload
- [ ] Analytics dashboard
- [ ] Automated ABN verification
- [ ] Labour hire licence verification (VIC, QLD)
- [ ] All subscription tiers
- [ ] Per-placement fee tracking
- [ ] Agency invoicing

**Technical:**
- [ ] CSV parser and validator
- [ ] Background job for bulk imports
- [ ] Analytics queries and visualizations
- [ ] State authority API integrations
- [ ] Metered billing for placements

**Success Criteria:**
- 20 agencies signed up
- 300+ workers listed
- 100+ completed placements
- $10K+ MRR from agencies

### Phase 3: Premium (Weeks 9-12)

**Goal:** Enterprise features, API, partnerships

**Features:**
- [ ] API access for Enterprise tier
- [ ] Custom branding options
- [ ] Dedicated account management
- [ ] Agency public profiles
- [ ] Worker claiming (workers manage own availability)
- [ ] Advanced analytics (benchmarking, forecasting)
- [ ] Agency referral program

**Technical:**
- [ ] REST API with API keys
- [ ] Webhook notifications
- [ ] White-label options
- [ ] Worker mobile app integration
- [ ] Advanced reporting engine

**Success Criteria:**
- 50 agencies signed up
- 2 Enterprise customers
- 500+ completed placements
- $30K+ MRR from agencies

### Phase 4: Ecosystem (Months 4-6)

**Goal:** Payment processing, compliance tools

**Features:**
- [ ] RateRight handles payments (agency → worker optional)
- [ ] Automated timesheet approvals
- [ ] Compliance document management
- [ ] Integration with payroll systems
- [ ] Agency ratings and reviews
- [ ] Agency comparison tools for contractors

---

## 10. Success Metrics

### North Star Metric
**Agency-sourced placements per month**

### Leading Indicators
| Metric | Week 4 Target | Week 8 Target | Week 12 Target |
|--------|---------------|---------------|----------------|
| Registered agencies | 10 | 25 | 50 |
| Verified agencies | 5 | 20 | 40 |
| Listed workers | 50 | 300 | 750 |
| Booking requests | 25 | 100 | 300 |
| Completed placements | 10 | 50 | 150 |

### Revenue Metrics
| Metric | Month 1 | Month 3 | Month 6 |
|--------|---------|---------|---------|
| Agency MRR | $500 | $5,000 | $20,000 |
| Placement fee revenue | $250 | $2,500 | $7,500 |
| Total agency revenue | $750 | $7,500 | $27,500 |

### Quality Metrics
| Metric | Target |
|--------|--------|
| Agency worker avg rating | >4.2 |
| Booking confirmation rate | >80% |
| Agency churn rate | <5%/month |
| Worker no-show rate | <3% |

---

## Appendix A: Competitive Analysis

### Yakka Labour
- **Model:** App-based labour hire platform
- **Pricing:** Claims lower margins than traditional agencies
- **Strengths:** Construction-focused, mobile-first, compliance tools
- **Weakness:** Competes with agencies rather than partnering

### Traditional Agencies
- **Model:** Full-service labour hire
- **Pricing:** 25-40% margin on worker rates
- **Strengths:** Relationships, compliance, worker pools
- **Weakness:** High overhead, slow to adopt tech

### RateRight Differentiation
- **We're infrastructure, not competition**
- Agencies keep their workers, we provide distribution
- Lower customer acquisition cost for agencies
- Flexible — agencies can use as much or little as they want

---

## Appendix B: Sales Messaging

### Outreach Template (Email)

```
Subject: Partnership opportunity — more bookings for your workers

Hi [Name],

I'm reaching out from RateRight, a construction workforce marketplace 
in Sydney. We have hundreds of contractors looking to hire workers, 
and I think there's an opportunity for [Agency Name].

Rather than competing with labour hire agencies, we want to be a 
distribution channel for you:

- List your workers on our platform
- Get booking requests from our contractor base  
- Fill downtime between your direct placements
- Agency-verified badge builds trust with contractors

We're launching our agency partner program and offering founding 
partners 3 months free on our Growth plan ($299/mo value).

Would you be open to a 15-minute call this week?

Best,
[Name]
```

### Key Objections & Responses

**"Why would we give you our workers?"**
→ You're not giving us anything. You keep full control. We're just another channel to get them booked — like listing on Seek but for labour hire.

**"Will you undercut our rates?"**
→ No. You set your own rates. We charge contractors $50 to connect, that's it. Your margins are your margins.

**"We already have enough work."**
→ Great! Then this is free marketing. List workers who have downtime. No commitment, no minimums.

**"How do we know contractors are legit?"**
→ Contractors pay to use our platform — no tyre-kickers. They're verified businesses looking to hire quickly.

---

## Appendix C: Legal Considerations

### Terms of Service Additions
- Agency represents it holds all required licences
- Agency represents workers are properly employed
- Agency indemnifies RateRight for worker-related claims
- RateRight is not the employer of agency workers
- RateRight does not provide workers compensation for agency workers

### Privacy
- Agency worker data shared with RateRight under DPA
- Worker consent required for profile listing
- Contractor contact details shared with agency upon booking

### Labour Hire Licensing
- RateRight is NOT a labour hire agency
- RateRight is a technology platform connecting parties
- Agencies are responsible for their own licensing compliance
- RateRight may verify but does not guarantee licence status

---

*Document last updated: 2026-02-06*
*Next review: After Phase 1 launch*
