OpenAI gooit $150M in een Partner Network - en jij hebt waarschijnlijk hetzelfde probleem
Wat is er gebeurd?
OpenAI heeft het OpenAI Partner Network gelanceerd: een programma van $150 miljoen waarmee ze wereldwijd partners helpen enterprise AI te adopteren en uit te rollen. Het idee is simpel: OpenAI kan niet overal tegelijk zijn, dus ze bouwen een netwerk van partijen die dat voor hen doen.
Dit is geen nieuws voor grote corporates alleen. Elke SaaS die groeit naar een punt van 'te veel klanten om zelf te bedienen' heeft precies dezelfde uitdaging: hoe houd je bij wie je partners zijn, wat ze doen en welke leads ze inbrengen?
Wat betekent dit voor jouw project?
Als jij een SaaS bouwt en ooit wil werken met resellers, affiliates, implementatiepartners of gewoon verwijzers, dan heb je een partnerportaal nodig. Niet meteen een $150M-programma, maar wel een basispagina waar partners zich kunnen aanmelden, hun status kunnen zien en leads kunnen doorgeven.
Dat is precies wat je vanavond kunt bouwen met Claude Code en Supabase. Geen maanden werk, maar een solide MVP in een paar uur.
Hoe pak je het aan met Claude Code?
We bouwen een eenvoudig partnerportaal met:
- Een Supabase-tabel voor partners en hun leads
- Een invite- en registratiepagina
- Een simpel dashboard dat partners hun eigen leads laat zien
Ik ga ervan uit dat je al een Next.js-project hebt draaien met Supabase gekoppeld. Heb je dat nog niet? Begin dan eerst met:
Ik heb een leeg Next.js 14 project. Verbind Supabase met mijn project. Gebruik de Supabase client via @supabase/ssr, maak een .env.local aan met de juiste variabelen en zorg dat ik server-side en client-side beide kan gebruiken.
Stap 1: Maak de Supabase-tabellen aan
Geef Claude Code deze prompt:
Maak twee Supabase-tabellen aan via SQL: een
partnerstabel en eenpartner_leadstabel. Departnerstabel heeft: id (uuid), naam (text), email (text, uniek), status (text, default 'pending'), invite_token (uuid), aangemaakt_op (timestamp). Departner_leadstabel heeft: id (uuid), partner_id (foreign key naar partners.id), naam_lead (text), email_lead (text), notitie (text), aangemaakt_op (timestamp). Voeg ook Row Level Security toe zodat partners alleen hun eigen leads kunnen zien.
Claude Code genereert dan zoiets:
create table partners (
id uuid primary key default gen_random_uuid(),
naam text not null,
email text unique not null,
status text default 'pending',
invite_token uuid default gen_random_uuid(),
aangemaakt_op timestamptz default now()
);
create table partner_leads (
id uuid primary key default gen_random_uuid(),
partner_id uuid references partners(id) on delete cascade,
naam_lead text not null,
email_lead text not null,
notitie text,
aangemaakt_op timestamptz default now()
);
alter table partner_leads enable row level security;
create policy "Partners zien eigen leads"
on partner_leads for select
using (partner_id = (select id from partners where email = auth.email()));
Kopieer dit naar de SQL Editor in je Supabase dashboard en voer het uit.
Stap 2: Bouw de invite-pagina
Een partner moet zich kunnen aanmelden via een unieke link. Geef Claude Code:
Maak een Next.js pagina op
/invite/[token]. Deze pagina leest deinvite_tokenuit de URL, zoekt de bijbehorende partner op in Supabase, en toont een simpel formulier met naam en wachtwoord zodat de partner een account kan aanmaken. Gebruik Supabase Auth voor het aanmaken van het account. Na registratie update je de partner-status naar 'active'. Stijl het netjes met Tailwind.
Stap 3: Bouw het partner-dashboard
Maak een beveiligde Next.js pagina op
/partner/dashboard. Alleen ingelogde partners mogen deze pagina zien. Het dashboard toont: de naam van de partner, hun huidige status, en een lijst van hun ingediende leads. Voeg ook een formulier toe waarmee de partner een nieuwe lead kan indienen (naam, email, optionele notitie). Na het indienen verschijnt de lead direct in de lijst. Gebruik de Supabase server client voor de data en een server action voor het opslaan van de lead.
Claude Code bouwt dit doorgaans in twee bestanden: de page zelf en een actions.ts voor de server actions. Vraag hem daarna:
Zorg dat de redirect na inloggen automatisch naar
/partner/dashboardgaat als de gebruiker al een partner-record heeft in de partners-tabel.
Stap 4: Admin-overzicht voor jou als eigenaar
Jij wilt ook een overzicht hebben van alle partners en hun leads:
Maak een admin-pagina op
/admin/partnersdie alleen toegankelijk is als het e-mailadres van de ingelogde gebruiker overeenkomt met de omgevingsvariabeleADMIN_EMAIL. Toon een tabel met alle partners, hun status en het aantal leads dat ze hebben ingebracht. Voeg een knop toe om een nieuwe partner uit te nodigen: dit genereert een uniek invite-token en toont de uitnodigingslink die ik kan kopiëren en doorsturen.
// Voorbeeld van hoe de admin invite-link eruit ziet na generatie:
const inviteLink = `${process.env.NEXT_PUBLIC_BASE_URL}/invite/${partner.invite_token}`;
Wat te checken na afloop
- Ga naar
/admin/partners, log in met je eigen e-mailadres en maak een testpartner aan. - Kopieer de gegenereerde invite-link en open die in een incognitovenster.
- Registreer een testaccount via de invite-pagina.
- Controleer in Supabase of de partner-status veranderd is naar 'active'.
- Log in als die testpartner en dien een lead in.
- Ververs het admin-overzicht en controleer of de lead telt bij de juiste partner.
Als al dit werkt, heb je een volledig functioneel partnerportaal dat productie-klaar is. Geen $150 miljoen nodig.
Bij Eighty leer ik je Claude Code in het Nederlands gebruiken, van installatie tot een werkend SaaS-product. Wekelijks een nieuwe module, persoonlijke begeleiding.
