DEV Community

Cover image for Three GPU affiliate programs I wired into an AI tool directory
MORINAGA
MORINAGA

Posted on Edited on

Three GPU affiliate programs I wired into an AI tool directory

When I decided to drop AdSense and bet on affiliate monetization for my AI tools directory, Amazon was the obvious first integration — books and GPU hardware are contextually reasonable on a site full of open-source AI models. But Amazon's conversion story for developer-adjacent products is weak. The users landing on a LLaMA or Whisper model page are not there to buy a deep learning textbook; they're evaluating whether to self-host something.

That realization pointed toward GPU cloud affiliates. People who read model pages are more likely to spin up a pod than click a book link. Here's what I integrated, where each one actually landed, and what I'm watching.

The Three Programs

Program Commission structure Referral mechanism Where it renders
RunPod % of referred user's spending Referral code in URL AI model pages (aiappdex)
Vast.ai % of referred user's spending Referral code in URL AI model pages (aiappdex)
Hetzner Cloud One-time credit on signup Custom referral link OSS alternatives pages (ossfind)

That last column is the part I glossed over when I started writing this: only two of the three ended up on the AI model pages. Hetzner isn't a GPU host at all — it's a VPS provider — and it lives in the hosting sidebar on the OSS alternatives site instead. More on that below.

All three use simple referral codes embedded in URLs — no SDK, no iframe, just a URL parameter. That's intentional; I didn't want JavaScript dependencies on a statically generated site.

How the Integration Works

The monetization package exports three URL builder functions:

// packages/shared/src/monetization/index.ts

export function runpodReferralUrl(ref: string | null): string | null {
  if (!ref) return null;
  return `https://www.runpod.io/?ref=${encodeURIComponent(ref)}`;
}

export function vastReferralUrl(ref: string | null): string | null {
  if (!ref) return null;
  return `https://cloud.vast.ai/?ref_id=${encodeURIComponent(ref)}`;
}

export function hetznerReferralUrl(ref: string | null): string | null {
  if (!ref) return null;
  return `https://hetzner.cloud/?ref=${encodeURIComponent(ref)}`;
}
Enter fullscreen mode Exit fullscreen mode

Each function returns null when the environment variable isn't set — so links simply don't render in development or in preview deployments where I haven't configured the ref codes. No dead links, no placeholder text.

On the model detail page, I build the affiliate sidebar from those builders:

const aff = getAffiliateConfig();

const gpuProviders = [
  { label: "RunPod", note: "On-demand GPU pods", url: runpodReferralUrl(aff.runpodRef) },
  { label: "Vast.ai", note: "Marketplace GPUs", url: vastReferralUrl(aff.vastRef) },
].filter((p): p is { label: string; note: string; url: string } => p.url !== null);
Enter fullscreen mode Exit fullscreen mode

The only gate right now is whether the referral codes are configured — the sidebar renders whenever gpuProviders.length > 0. There's no pipeline_tag condition, so an embedding or classification model page gets the same GPU sidebar as a text-generation one. That's the rough edge I want to fix next: someone using a 384-dim sentence transformer doesn't need a GPU pod — they're calling an API or running inference on CPU. Showing GPU rental links there is noise.

What I'm Watching

I won't fabricate numbers at week four. What I can say:

RunPod is easier to link to than Vast.ai. RunPod's referral URL resolves cleanly with no login wall before the landing page. Vast.ai drops you directly on the instance marketplace, which is great if you already know what you're doing and confusing if you don't. For a cold click from a model page, RunPod's onboarding is softer.

Hetzner is the odd one out. Hetzner Cloud is a German VPS provider — good for CPU-heavy workloads, affordable storage, strong EU datacenter story. It isn't on the AI model pages at all — I wired it into the OSS alternatives site, where the sidebar lists DigitalOcean, Hetzner Cloud, and Vultr as places to self-host the open-source project you just read about. The problem: the conversion path is long. A user has to sign up, set up a server, install dependencies, and deploy the self-hosted app before Hetzner earns anything. I added it anyway because the referral credit structure means even a few conversions matter, but I'm skeptical it'll generate meaningful revenue without editorial content guiding the setup.

Amazon is the one I'd expect to pull the most raw clicks — its brand is more trusted for an impulse click than a GPU marketplace most readers have never heard of. Whether clicks convert is a different question I can't answer yet.

What I'd Add Next

DigitalOcean and Vultr on the AI side. Both are already in the affiliate config and already render in the OSS alternatives hosting sidebar, but neither is wired to the AI model pages. DigitalOcean's GPU droplets are new-ish and not as well-known as RunPod; Vultr has a straightforward referral program. I'll extend both to the model pages once I have any signal about whether the current GPU links are being used.

Contextual text around the affiliate links. Right now the sidebar is just label + note + arrow. A one-sentence "why you'd use this" blurb next to each link would reduce the blank-stare click gap — especially for Vast.ai, where first-time users don't immediately understand the marketplace model.

Separate referral codes per site. I'm running the same referral codes across all three directories right now, which means I can't attribute a conversion to the AI tools directory vs a future expansion. When the programs reach any meaningful click volume, I'll register site-specific codes.

The actual implementation is simple — three URL builder functions, a filter that drops the unconfigured ones, and a handful of env variables. The hard part isn't the code; it's choosing contextually relevant programs and placing them on pages where a user actually has purchase intent.

Part of an ongoing 6-month experiment running three AI-curated directory sites. The technical claims here are real; this article was AI-assisted.

Top comments (0)