guys.sh
A landing page and early-access funnel for hire-a-guy AI agents — nothing to compile, nothing pulled from a third-party service that could go down and take the page with it.

A landing page that anyone can deploy, and nothing else can break
guys.sh sells a simple pitch — “little guys. Massively Productive.” — twelve single-purpose AI agents, each doing exactly one job, presented as pixel-art trading cards with stats. It’s a landing page and early-access sign-up flow, not a shipped product with users yet, so the brief was the opposite of a typical marketing site: something a non-technical operator could put on any host with no build process first, and nothing quietly depending on an outside service that might go down and take the page with it.
Nothing to compile, by design
The repo root deploys as-is to any static host. There’s no bundler in the critical path: React 18.3.1, ReactDOM 18.3.1 and Babel 7.29 are pinned and served locally from vendor/, so the page has zero third-party runtime dependency at request time. Page sections live as *.jsx.ref files, transpiled by Babel directly in the browser. Deploy target is Vercel today, but Netlify or Cloudflare Pages would work identically — there’s nothing for any of them to build.
The one file anyone needs to touch before launch is config.js, which holds CAPTURE_ENDPOINT. Any endpoint that accepts a JSON POST works — Formspree’s free tier is the documented default. Until that value is set, submissions fail with an in-idiom error message and a console warning fires at load, so a half-configured deploy is loud instead of silently dropping leads.
A sign-up flow that’s tested on its own, independent of the page
The “Get a Guy” wizard — the multi-step flow where a visitor picks agents, tools and a contact method — has its state and payload contract pulled out into wizard-model.js, which has no DOM and no React dependency. That means the core logic is unit-testable in plain Node, backed by a Playwright script for real browser verification. The documented capture payload is:
{
email, guys[], custom_guy, custom_guy_description,
tools[], removed_tools[],
source, ts, referrer, page,
utm_source, utm_medium, utm_campaign
}
guys are the picked agent ids, tools are the integrations explicitly linked to the request, and removed_tools records tools the wizard auto-suggested that the visitor then removed — useful signal that gets thrown away by most funnel forms.

Cards that respect how you’re pointing
Each trading card responds to hover with a tilt and a holo glint — but only on fine pointers, so it never fights a touchscreen. Click, Enter or Space flips the card to its back; under prefers-reduced-motion the flip becomes a crossfade instead of a 3D rotation; tilt is disabled outright on touch, where a tap simply flips. “Hire him” on a flipped card adds that agent to the Get-a-Guy group and scrolls the page there. That’s a small set of decisions, but they’re the ones a lot of card-interaction demos skip, and they’re the difference between a gimmick and something that’s actually pleasant to use on a phone.


What’s actually true today, stated plainly
guys.sh is a launch site, not yet a business with revenue or customers to report — so what follows is about what was built, not what it’s earned. The live page has no build step and no outside runtime dependency to fail. The sign-up flow’s logic is tested on its own, separate from the page it runs on. The card interaction works whether someone’s using a mouse, a touchscreen, or has motion sensitivity settings turned on. And swapping where sign-up submissions go is a one-line change, documented well enough that it doesn’t require reading the code first.
Let's Build Something Cool._
Have a project, a fractional need, or just want to say hi? I read every message myself.