Agent rule
Student builds submit at school.differentthandefault.com/showcase/submit; public gallery at /showcase shows approved only. Anyone may submit; owner moderates. API actions live on /api/school-apply?action=builder-* (no new Vercel function). Snapshots go to Supabase Storage builder-shots. On approve, mint referral_code + slug. Course referrals are attribution-only in v1 (builder_referral_events click/apply; share ?ref=CODE on workshop pages) — no automated payouts. Hire path: open_to_hire on submit + owner hire_status / notes; partner list is a stub (config/hire-partners.json mirrored to assets/hire-partners.json). Owner moderates from /owner inbox (also pending testimonials), not a separate company portal.
Status: Accepted
Context: Need social proof for School, a talent spine for a future builder marketplace, and one desk for DTD queues — without blowing the Hobby 12-function cap or shipping payouts prematurely.
Decision: Moderated Supabase submissions + multiplexed school-apply API + upgraded /owner inbox; dual referral loops share the same profile row but different contracts (course affiliate vs hire intro).
Consequences: Run migration 020_student_builder_showcase.sql on platform Supabase before first submit. Do not add api/builders.js. Payouts and company hire portal stay planning/todo.