CREATE TABLE campaign_leads (
id INTEGER PRIMARY KEY AUTOINCREMENT,
campaign_id INTEGER NOT NULL REFERENCES campaigns(id) ON DELETE CASCADE,
offer_id INTEGER REFERENCES offers(id) ON DELETE SET NULL,
student_id INTEGER NOT NULL REFERENCES students(id),
status TEXT NOT NULL DEFAULT 'open',
-- 'open' | 'contacted' | 'won' | 'lost'
created_at TEXT NOT NULL DEFAULT (datetime('now')),
shipped_at TEXT,
invoice_id INTEGER REFERENCES invoices(id) ON DELETE SET NULL,
UNIQUE (campaign_id, offer_id, student_id)
)