Three GPU affiliate programs I wired into an AI tool directory A developer integrated three GPU cloud affiliate programs—RunPod, Vast.ai, and Hetzner Cloud—into an AI tools directory after finding Amazon's conversion weak for developer-adjacent products. The monetization uses simple referral codes in URLs without JavaScript dependencies, and GPU links appear only for model types where self-hosting is plausible, such as LLMs and vision models. Early observations indicate RunPod offers a smoother onboarding experience than Vast.ai, while Hetzner's longer conversion path may limit revenue. When I decided to drop AdSense and bet on affiliate monetization https://dev.to/articles/why-affiliate-beats-adsense-new-ai-directories 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, how, and what I'm watching. | Program | Commission structure | Referral mechanism | |---|---|---| | RunPod | % of referred user's spending | Referral code in URL | | Vast.ai | % of referred user's spending | Referral code in URL | | Hetzner Cloud | One-time credit on signup | Custom referral link | 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. 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 } ; } 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 conditionally based on pipeline tag : js const aff = getAffiliateConfig ; // Only show GPU affiliates for model types where self-hosting is plausible const showGpuLinks = isLLM || isVision; const gpuLinks = showGpuLinks ? { 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 : ; Embedding models, classification models, and anything with a null pipeline tag don't get the GPU sidebar. The reasoning: 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 would be noise. I won't fabricate numbers at week four. What I can say: RunPod is easier to link to than Vast.ai. RunPod's https://www.runpod.io/ referral URL resolves cleanly with no login wall before the landing page. Vast.ai https://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's on the model pages for users who want to run lighter inference embedding models on CPU, small classifiers at a lower cost than GPU cloud. The problem: the conversion path is long. A user has to sign up, set up a server, install dependencies, and deploy a model 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 still outranks all of them in raw click volume — because the Amazon links are on more pages all model pages, not just LLM/vision and Amazon's brand is more trusted for an impulse click. Whether clicks convert is a different question I can't answer yet. DigitalOcean and Vultr are already in the affiliate config object but not yet wired to any page. DigitalOcean's GPU droplets are new-ish and not as well-known as RunPod; Vultr has a straightforward referral program. I'll add both 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, one conditional block in the page component, 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.