---
created: 2026-03-12
source: Rivet
tags: [agent-archive, rivet]
---

# RateRight Key Metrics Definition

## Executive Summary

This document defines the five core metrics that matter most for RateRight's business success. These metrics track our performance across the entire user journey - from initial visitor to repeat customer.

## Core Metrics

### 1. Signup Conversion Rate

**Definition**: The percentage of website visitors who complete the signup process and create a RateRight account.

**Formula**: 
```
Signup Conversion Rate = (Number of Completed Signups / Total Website Visitors) × 100
```

**Data Sources**:
- PostHog: `signup_started` and `signup_completed` events
- GA4: User count and conversion events
- Supabase: `users` table (created_at timestamp)
- Mixpanel: Signup funnel analysis

**Target Benchmarks**:
- Excellent: >15%
- Good: 10-15%
- Needs attention: 5-10%
- Critical: <5%

**Why It Matters**: This is our top-of-funnel metric. If we can't convert visitors to users, nothing else matters. It indicates the effectiveness of our landing pages, value proposition communication, and signup flow UX.

**Tracking Implementation**:
```sql
-- Daily signup conversion rate
SELECT 
    DATE(u.created_at) as date,
    COUNT(DISTINCT u.id) as signups,
    (SELECT COUNT(*) FROM analytics_pageviews WHERE date = DATE(u.created_at)) as visitors,
    ROUND(COUNT(DISTINCT u.id)::numeric / 
          (SELECT COUNT(*) FROM analytics_pageviews WHERE date = DATE(u.created_at)) * 100, 2) as conversion_rate
FROM users u
WHERE u.created_at >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY DATE(u.created_at)
ORDER BY date DESC;
```

### 2. Time-to-First-Hire

**Definition**: The average number of days from when a worker signs up to when they complete their first job.

**Formula**:
```
Time-to-First-Hire = AVG(First Job Completion Date - Signup Date)
```

**Data Sources**:
- Supabase: `users` table (created_at) → `jobs` table (completed_at)
- PostHog: `user_signed_up` → `job_completed` events
- Application logs: Job matching and completion timestamps

**Target Benchmarks**:
- Excellent: <7 days
- Good: 7-14 days
- Needs attention: 14-30 days
- Critical: >30 days

**Why It Matters**: This metric indicates how quickly we can deliver value to workers. Faster time-to-hire means better user activation and higher likelihood of retention. It's a key indicator of marketplace liquidity.

**Tracking Implementation**:
```sql
-- Average time to first hire by signup cohort
SELECT 
    DATE_TRUNC('week', u.created_at) as signup_week,
    COUNT(*) as total_workers,
    AVG(DATE_DIFF('day', u.created_at::date, j.completed_at::date)) as avg_days_to_first_hire,
    PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY DATE_DIFF('day', u.created_at::date, j.completed_at::date)) as median_days
FROM users u
JOIN (
    SELECT worker_id, MIN(completed_at) as completed_at
    FROM jobs 
    WHERE status = 'completed'
    GROUP BY worker_id
) j ON u.id = j.worker_id
WHERE u.created_at >= CURRENT_DATE - INTERVAL '90 days'
GROUP BY DATE_TRUNC('week', u.created_at)
ORDER BY signup_week DESC;
```

### 3. Match Rate

**Definition**: The percentage of job posts that result in a successful hire (contractor selected and job completed).

**Formula**:
```
Match Rate = (Number of Jobs with Completed Hires / Total Job Posts) × 100
```

**Data Sources**:
- Supabase: `job_posts` table → `jobs` table (status = 'completed')
- PostHog: `job_posted` → `job_completed` events
- Application: Job matching algorithm logs

**Target Benchmarks**:
- Excellent: >80%
- Good: 60-80%
- Needs attention: 40-60%
- Critical: <40%

**Why It Matters**: This is our core marketplace health indicator. A high match rate means we're effectively connecting contractors with qualified workers. Low match rates indicate issues with job quality, pricing, or worker availability.

**Tracking Implementation**:
```sql
-- Weekly match rate trend
SELECT 
    DATE_TRUNC('week', jp.created_at) as week,
    COUNT(DISTINCT jp.id) as total_jobs_posted,
    COUNT(DISTINCT CASE WHEN j.status = 'completed' THEN jp.id END) as successfully_matched,
    ROUND(COUNT(DISTINCT CASE WHEN j.status = 'completed' THEN jp.id END)::numeric / 
          COUNT(DISTINCT jp.id) * 100, 2) as match_rate
FROM job_posts jp
LEFT JOIN jobs j ON jp.id = j.job_post_id
WHERE jp.created_at >= CURRENT_DATE - INTERVAL '12 weeks'
GROUP BY DATE_TRUNC('week', jp.created_at)
ORDER BY week DESC;
```

### 4. Payment Completion Rate

**Definition**: The percentage of initiated payments that successfully complete without failure.

**Formula**:
```
Payment Completion Rate = (Successful Payments / Total Payment Attempts) × 100
```

**Data Sources**:
- Stripe: Payment intent events and statuses
- Supabase: `payments` table (status field)
- Application logs: Payment gateway responses
- PostHog: `payment_initiated` and `payment_completed` events

**Target Benchmarks**:
- Excellent: >98%
- Good: 95-98%
- Needs attention: 90-95%
- Critical: <90%

**Why It Matters**: Payment failures directly impact revenue and user trust. High failure rates indicate technical issues, fraud problems, or user experience friction in the payment flow.

**Tracking Implementation**:
```sql
-- Daily payment completion rate
SELECT 
    DATE(created_at) as date,
    COUNT(CASE WHEN status IN ('succeeded', 'completed') THEN 1 END) as successful_payments,
    COUNT(*) as total_attempts,
    ROUND(COUNT(CASE WHEN status IN ('succeeded', 'completed') THEN 1 END)::numeric / 
          COUNT(*) * 100, 2) as completion_rate,
    SUM(CASE WHEN status IN ('failed', 'canceled') THEN amount else 0 END) as failed_revenue
FROM payments
WHERE created_at >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY DATE(created_at)
ORDER BY date DESC;
```

### 5. Repeat Hire Rate

**Definition**: The percentage of contractors who hire the same worker again within a specific timeframe (30/60/90 days).

**Formula**:
```
Repeat Hire Rate = (Contractors with Multiple Hires of Same Worker / Total Active Contractors) × 100
```

**Data Sources**:
- Supabase: `jobs` table (contractor_id, worker_id, completed_at)
- PostHog: `job_completed` events with user properties
- Application: User relationship tracking

**Target Benchmarks** (90-day window):
- Excellent: >40%
- Good: 25-40%
- Needs attention: 15-25%
- Critical: <15%

**Why It Matters**: Repeat hires indicate strong worker-contractor relationships and high satisfaction. This metric drives lifetime value and reduces acquisition costs. It's also a leading indicator of marketplace health.

**Tracking Implementation**:
```sql
-- 90-day repeat hire rate by month
WITH repeat_hires AS (
    SELECT 
        contractor_id,
        worker_id,
        COUNT(*) as hire_count,
        MIN(completed_at) as first_hire,
        MAX(completed_at) as last_hire
    FROM jobs
    WHERE status = 'completed'
        AND completed_at >= CURRENT_DATE - INTERVAL '6 months'
    GROUP BY contractor_id, worker_id
    HAVING COUNT(*) > 1 
        AND DATE_DIFF('day', MIN(completed_at), MAX(completed_at)) <= 90
)
SELECT 
    DATE_TRUNC('month', first_hire) as month,
    COUNT(DISTINCT contractor_id) as contractors_with_repeat_hires,
    (SELECT COUNT(DISTINCT contractor_id) 
     FROM jobs 
     WHERE status = 'completed' 
       AND DATE_TRUNC('month', completed_at) = DATE_TRUNC('month', first_hire)) as total_contractors,
    ROUND(COUNT(DISTINCT contractor_id)::numeric / 
          (SELECT COUNT(DISTINCT contractor_id) 
           FROM jobs 
           WHERE status = 'completed' 
             AND DATE_TRUNC('month', completed_at) = DATE_TRUNC('month', first_hire)) * 100, 2) as repeat_hire_rate
FROM repeat_hires
GROUP BY DATE_TRUNC('month', first_hire)
ORDER BY month DESC;
```

## North Star Metric Recommendation

**Recommended North Star Metric**: Weekly Active Contractors with Completed Jobs

**Why**: This metric encapsulates both sides of our marketplace. It measures active usage (not just signups) and successful transactions (completed jobs). It correlates directly with revenue and indicates sustainable growth.

**Definition**: Number of unique contractors who successfully completed at least one job in the past 7 days.

**Target**: Grow 10% week-over-week

## Dashboard Layout for Michael (Weekly View)

### Top Row - KPI Summary (Always Visible)
1. **North Star**: Weekly Active Contractors with Completed Jobs
2. **Total Revenue**: This week vs last week
3. **Total Jobs Completed**: This week vs last week

### Second Row - Core Metrics (Weekly Trends)
1. **Signup Conversion Rate** - Line chart (last 8 weeks)
2. **Time-to-First-Hire** - Bar chart (median days by signup week)
3. **Match Rate** - Gauge (current week) + trend line (8 weeks)
4. **Payment Completion Rate** - Gauge (current week) + trend line (8 weeks)
5. **Repeat Hire Rate** - Gauge (90-day rate) + trend line (8 weeks)

### Third Row - Supporting Metrics
1. **Worker Activation Rate**: % of new workers who get hired within 30 days
2. **Average Job Value**: Revenue per completed job
3. **Contractor NPS**: Net Promoter Score from monthly survey
4. **Support Ticket Volume**: This week vs last week

## Alert Thresholds

### Immediate Alerts (Slack + SMS)
- Payment completion rate drops below 95%
- Signup conversion rate drops by >20% week-over-week
- Match rate drops below 50%

### Daily Alerts (Slack)
- Time-to-first-hire increases by >50% week-over-week
- Repeat hire rate drops by >10% month-over-month
- Any metric hits "Critical" threshold

### Weekly Alerts (Email)
- Two or more metrics in "Needs attention" range
- North Star metric flat or declining for 2+ weeks

## Secondary Metrics to Track

### User Engagement
- Daily/Monthly Active Users (workers vs contractors)
- Session duration and frequency
- Feature adoption rates (messaging, reviews, etc.)

### Marketplace Quality
- Average rating scores (workers and contractors)
- Dispute rate
- Cancellation rate
- Response time to job posts

### Financial Health
- Average transaction value
- Take rate optimization
- Customer acquisition cost (CAC)
- Lifetime value (LTV)
- CAC:LTV ratio

### Operational Efficiency
- Support response time
- Verification completion time
- Time to fill job posts
- Geographic coverage expansion

## Implementation Notes

### PostHog Tracking
```javascript
// Example event tracking
posthog.capture('signup_started', {
    user_type: 'worker', // or 'contractor'
    source: 'landing_page'
});

posthog.capture('job_completed', {
    job_id: job.id,
    contractor_id: job.contractor_id,
    worker_id: job.worker_id,
    job_value: job.total_amount,
    category: job.category
});
```

### GA4 Setup
- Create custom events for each core metric milestone
- Set up conversion goals for signup and job completion
- Enable enhanced ecommerce for payment tracking
- Create audiences for cohort analysis

### Data Warehouse Considerations
- Implement incremental data loading for real-time metrics
- Create materialized views for frequently accessed aggregations
- Set up data quality monitoring and alerting
- Document all metric definitions in dbt schema.yml files

## Review Schedule

- **Daily**: Check alerts and anomalies
- **Weekly**: Review dashboard with team on Monday
- **Monthly**: Deep dive into one metric with improvement plan
- **Quarterly**: Reassess targets and add/remove metrics as needed

---

*Last updated: [Current Date]*
*Owner: Product & Analytics Team*