

Nathaniel Kenney, known to a billion-plus viewers as Hoopin Nate, has done a Gatorade campaign with Michael Jordan, a Google Pixel film with Giannis Antetokounmpo, and segments on Jimmy Kimmel, TNT, and ESPN. He is called the greatest mini-hoop dunker of all time. What he did not have was a home base that a search engine or an AI assistant could connect to one real person, so searching his name returned scattered clips and a lacrosse player who shares it. Over a multi-session build, a Claude agent turned nathanielkenney.com into a full personal brand site with an About, Blog, and Connect page in his own brand, built and referenced a Wikidata entity, inventoried his 453-video channel, and stood up the schema that ties his billion views to his name. The site now ranks first for his name. This article documents the whole process, every decision the agent made, every bug it caught and recovered from, and what the build cost compared to a human team doing the same work.
This work followed the entity-authority methodology Dennis Yu lays out in Own Your Name on Google and the Google Entities and Trust framework, and it ran on the same knowledge base pattern documented in how to build, use, and publish an AI knowledge base. It is the third in the dunker site-build series, after the reference build for Piotr Zawiślak and the matched build for Ethan Pimstone, and it is the biggest of the three.
The Biggest Reach, the Smallest Footprint
Nate is the strongest brand of any dunker we have built for, and he had the weakest structured presence. His reach is real: a billion-plus views across platforms, a roster of national brand partners, and features on the shows people actually watch. He won the low-rim title at The Dunk Camp 2025, the circuit the Dunk Talk podcast documents, and topped our audit of the room when Dennis Yu and I spoke there, written up in the repurposing system we taught 76 athletes.
None of that reach was connected. His footage lived on five platforms under slightly different handles, his story lived in press articles, and there was a real Nathan Kenney who plays college lacrosse for Google to confuse him with. A creator can have a billion views and still be invisible to the machines that decide who shows up when someone types his name. Closing that gap was the job.
The Build Task
Nate’s site started with a strong custom homepage and nothing else, just a Privacy Policy draft and a Sample Page. The assignment was to build out the rest of the site, structured like dylan-haugen.com, so a fan or a sponsor lands on a real personal brand instead of a one-page teaser. Same Twenty Twenty-Five block theme, same BlitzMetrics hosting.
The scope covered an About page, a Blog with a foundational post and a real post feed, a Connect page with a combined-followers band and per-platform follower cards, a header and footer shared across every page, a full Person entity with a Wikidata item behind it, and a content tracker that inventories his channel. Out of scope, and flagged for a human, were the real photos, the confirmed follower counts and booking email, and the final approval to publish. The agent was handed his live site, a login session in the browser, and the rest of the internet to research. It did the work.
Source Material Ingestion
The first pass read everything Nate had already put into the world and everything the press had written about him. That meant his YouTube channel at @hoopin_nate, his Instagram, Facebook, TikTok, Snapchat, and X profiles, his IMDb page, and the feature articles in the Omaha and sports press. From that material the agent pulled the verifiable facts that anchor the whole site: a billion-plus views across platforms, roughly 250K combined followers, a 42.5-inch vertical, the number-one 8-foot title at The Dunk Camp 2025, and a brand list that runs Gatorade, Google Pixel, Gymshark, and Way of Wade.
The origin story was the part worth keeping in his own words. Nate started on a Nerf hoop stuck to a kitchen cabinet door in Omaha, Nebraska, turned mini-hoop dunks into a following, then translated that creativity to low rims and full 10-foot rims, training with Isaiah Rivera along the way. His own line about it, from the press, became the emotional center of the About page:
“I’m still the same kid who just wanted to dunk in the kitchen. Only difference is now the world’s watching.”
Nathaniel “Hoopin Nate” Kenney
Direct quotes are evidence the subject actually said the thing, and both search engines and AI assistants weight them more heavily than paraphrase. His feature history got the same treatment. The Gatorade campaign with Michael Jordan, the Google Pixel film with Giannis Antetokounmpo and Druski, the Washington Wizards pregame segment, and the Kimmel, TNT, and ESPN appearances became real, cited references on an As Seen On strip rather than vague claims.

The Pages Build
The site came together as four page types wrapped in one shared chrome. The About page (id 19) leads with his name and stats, then the first-person come-up from the kitchen hoop, then a What I Do split, an As Seen On strip, a milestones timeline, and a quick-facts block. The Connect page (id 22) leads with a combined-followers band and a billion-plus views stat, then gives Instagram, Facebook, YouTube, TikTok, Snapchat, and X each their own card with a real follower badge, and closes with his booking email. The Blog (id 24) is a real post feed, and its foundational post (id 23), “From a Kitchen Mini Hoop to a Billion Views,” renders in the clean single-post style we use across the network.
The technical recipe was the one from the rest of the batch. Every edit went through the WordPress REST API from the logged-in browser. Each page’s content is wrapped in a Gutenberg wp:html block so WordPress renders the raw markup instead of mangling it, and a full-bleed override lets the navy sections span the whole viewport instead of the theme’s narrow content column. The header and footer live in shared twentytwentyfive//header and //footer template parts, so the same chrome, with his logo and all six social icons, renders identically on the homepage and every inner page.

Schema and the Entity Bridge
The entity work is what makes this build different from the others, because Nate’s reach demanded it. A single Person block in JSON-LD on the home page is the entity spine, at https://nathanielkenney.com/#person, and every other page references it rather than declaring a competing one. The block carries his real name, his five public name variants as alternateName, his birth date, and a sameAs list of nine profiles that points to his socials, his IMDb page, and his Wikidata item.
"@type": "Person", "@id": "https://nathanielkenney.com/#person", "name": "Nathaniel Kenney", "alternateName": ["Nathan Kenney","Nate Kenney","Hoopin Nate","HoopinNate"], "sameAs": ["https://www.instagram.com/hoopinnate", "...", "https://www.wikidata.org/wiki/Q140371798"]
That Wikidata item, Q140371798, is the other half of a bidirectional bridge. The agent built it out with sixteen referenced statements, including the one that matters most for a common name: a description and disambiguation that separate him from the Syracuse lacrosse player Nathan Kenney, so the two stop colliding in search. The entity’s official-website property points at nathanielkenney.com, and the site’s schema points back at the entity. The full batch build of these entities across five dunker sites, Nate included, is documented in how we built Wikidata and schema for five dunkers at once, so this article does not restate it.
The Content Inventory
A creator with a billion views has a lot of content, and none of it helps his entity until it is inventoried. The agent worked through his entire channel, 453 videos, and separated the 68 long-form videos from the roughly 385 Shorts, then split them into personal videos and guest appearances. That inventory landed in a two-part content tracker, mirrored into both a Google Sheet he owns and his private knowledge base, so every future session and every future article can pull from a real catalog instead of starting from a blank channel.
The inventory doubles as the raw material for everything that comes next. The foundational blog post came out of it, the As Seen On strip is built from the guest-appearance rows, and the next round of repurposing has a ranked list of his best long-form work to draw from. Build the catalog once, and the rest of the content system reads from it.
The QA Marathon: Real Bugs and the Fixes
This is the most useful section for the next agent, because it documents the failures that actually came up and how the agent recovered from each one. Every bug below is real.
The empty boxes wpautop injected
Symptom: The Connect page rendered empty boxes between the social cards, breaking the grid.
Cause: WordPress’s wpautop filter wraps stray line breaks in raw markup with empty <p> tags, and those empty paragraphs rendered as boxes inside the card grid.
Fix: The agent wrapped every page’s content in a Gutenberg wp:html block, which tells WordPress to render the markup raw and stop auto-paragraphing it. The empty boxes disappeared, and the fix went on all four pages at once.
The content that would not go full width
Symptom: The navy design sat in a narrow column with white gutters on both sides instead of filling the screen.
Cause: The Twenty Twenty-Five theme constrains post content to a 645-pixel content width, which clamped the full-bleed sections.
Fix: A full-bleed override on the content wrapper, using width:100vw with a centering margin, let the sections span the whole viewport while keeping text readable inside them.
The channel that hid its long-form videos
Symptom: Pulling the video list returned zero results, and later attempts stalled partway through the channel.
Cause: Two things. YouTube’s current layout returns videos as lockupViewModel objects, not the older videoRenderer the first parser looked for, so it matched nothing. And the pagination loop throttled whenever the tab lost focus, because browsers suspend timers and fetches in background tabs.
Fix: The agent rewrote the harvester to read lockupViewModel entries and kept the tab in the foreground while it paginated, which let the loop run to completion and return all 68 long-form videos cleanly.
The REST endpoint that only answered a focused tab
Symptom: Edits to the site hung or failed with a network error whenever the browser tab was not in front.
Cause: This host suspends a tab’s network the moment it is hidden or occluded, so an async request never resolves and a synchronous one throws.
Fix: The agent attached a visibilitychange and focus handler that fired a synchronous request the instant the window regained focus, so every write landed reliably on the next focus event.
The blog that was not really a blog
Symptom: Publishing a post did not make it appear on the Blog page.
Cause: The first Blog page was a hand-built layout with a hardcoded article card, not a dynamic feed, so new posts had nowhere to show up.
Fix: The agent rebuilt the Blog as a real query that lists every published post as a styled card in the site’s look, so anything published from then on appears automatically.
The duplicated Person block
Symptom: The home page carried two identical ProfilePage schema blocks, which risks an entity split.
Cause: An earlier pass had emitted the profile schema twice on the same page.
Fix: The agent de-duplicated it down to a single #person spine with ProfilePage and WebSite nodes referencing it, and confirmed the SEO plugin was not emitting a competing Person block, so there is one entity and no alignment problem.
Critical Decisions With Rationale
Build in his brand, do not clone the reference. The instinct was to copy dylan-haugen.com’s exact palette. That was the wrong call, because Nate’s homepage already had a strong, cohesive look: deep navy, an orange accent, and the Manrope typeface. Cloning a different site’s colors would have made the new pages clash with the one page he already loved. The agent mirrored the reference’s structure, the About, Connect, and Blog layouts and the social-icon header, but rendered it all in Nate’s existing brand so the finished site reads as one thing.
Move the header and footer into shared template parts. The early pages carried their own inline chrome, which is how sites drift out of sync. The agent moved the header and footer into global template parts rendered on the homepage and every inner page, so the logo, the navigation, and all six social icons are identical everywhere and stay that way when the site grows.
Inventory the long-form videos, not the Shorts. His channel shows 453 videos, but about 385 of those are Shorts. Cataloguing all of them would have buried his real interviews and sessions in a wall of clips. The agent inventoried the 68 long-form videos and split them into personal videos and guest appearances, which is the catalog a content system actually uses.
One display name, five aliases, one entity. He goes by Nathaniel, but Nathan, Nate, Hoopin Nate, and HoopinNate all need to resolve to the same person, and a real lacrosse player named Nathan Kenney was already competing for the name. The agent set the display name to Nathaniel Kenney, listed the other four as alternateName, and wrote a disambiguation into both the schema and the Wikidata item so the two Nathan Kenneys stop colliding.
Render every page through a wp:html block. Rather than fight wpautop page by page, the agent adopted the wp:html wrapper as the default for the whole build, which is the reliable way to ship hand-authored markup through the block editor without the auto-paragraph filter rewriting it.
Use verified follower numbers only, and flag the gaps. His public TikTok and Snapchat handles did not obviously match his real reach, so instead of guessing, the agent shipped the cards with the numbers it could verify and surfaced the rest for a human to confirm. The combined-followers band shows a real sum, not an invented one.

Effort and Cost Comparison
| Task | Agent Time | Human Time | Agent Cost | Human Cost ($50/hr blended) |
|---|---|---|---|---|
| Deep research and source ingestion | ~40 min | 5–8 hours | $0.90 | $250–$400 |
| Content inventory (68 long-form videos) and tracker | ~50 min | 6–10 hours | $1.10 | $300–$500 |
| About page build | ~1 hour | 6–9 hours | $1.20 | $300–$450 |
| Connect page (stats and per-platform cards) | ~50 min | 5–8 hours | $1.00 | $250–$400 |
| Blog archive, foundational post, and dynamic feed | ~50 min | 6–9 hours | $1.00 | $300–$450 |
| Homepage nav and shared header and footer chrome | ~1 hour | 6–10 hours | $1.20 | $300–$500 |
| Person schema (single spine, nine sameAs) | ~30 min | 3–5 hours | $0.70 | $150–$250 |
| Wikidata entity (16 referenced statements) | ~40 min | 4–6 hours | $0.90 | $200–$300 |
| Palette and redesign rounds, responsive CSS | ~1.5 hours | 8–12 hours | $1.60 | $400–$600 |
| Favicon, Rank Math, author, SEO | ~20 min | 2–3 hours | $0.50 | $100–$150 |
| QA recovery across rounds | ~1.5 hours | 8–12 hours | $1.90 | $400–$600 |
| TOTAL | ~9.7 hours | 59–92 hours | ~$12.00 | $2,950–$4,600 |
The agent cost is the API token cost on Claude Opus 4.8 pricing across the build, roughly 1.5 million input tokens and 180,000 output tokens at Opus 4.8’s published $5 per million input and $25 per million output, which comes to about $12.00. The human cost uses a blended $50 per hour rate covering content writing, WordPress development, SEO, design, and project management. The ratio is roughly 245x to 385x cheaper, and this was the heaviest build in the series, with the full entity work and the content inventory on top of the pages.
What the Agent Handled vs What Needed a Human
Agent handled autonomously: researching his channel, socials, and press; auditing the live site; building the About, Blog, and Connect pages and the foundational post; wiring the shared header and footer template parts; adding the homepage navigation links; inventorying the 453-video channel down to 68 long-form videos and building the tracker; standing up the single Person schema spine and the Wikidata entity with its disambiguation; installing Rank Math and setting the favicon and author; and catching and recovering from every bug in the QA section through verified re-reads and revisions.
Required human input: the logged-in browser session, since the agent does not enter passwords; the confirmed follower counts, the booking email, and the current height, which the agent flagged rather than guessed; the real photos to replace the placeholders; and the final approval to publish this article.
Information Ingestion Inventory
- Channel videos scanned: 453, catalogued to 68 long-form plus guest appearances
- Press and profile sources read: ~8 (Omaha and sports press, IMDb, and his five social profiles)
- Live pages built or edited on nathanielkenney.com: 5 (Home nav, About, Blog, the post, and Connect)
- Redesign rounds: 3 (the initial build plus two full reskins to unify the brand)
- WordPress admin and REST endpoints navigated: ~40 (pages, template parts, users, plugins, settings)
- REST calls executed: ~120+ (page writes, template-part writes, schema updates, plugin installs)
- Schema and entity nodes verified: the single Person spine plus a 16-statement Wikidata item
- Named decisions made: 6
- Named bugs caught and fixed: 6
- Knowledge base assets built: 1 partner folder with a knowledge base, a fact sheet, and a content tracker
- Estimated total tokens: ~1,500,000 input, ~180,000 output
Give This to Your Agent
Everything above is a method a capable agent can run for the next creator or the next local business. The site build, the entity build, and the content inventory are three parts of one pattern: standardize the structure around the real content, capture who the person is in a base that every future session reads from, and catalog what they have already made. Install BlitzBase so the agent has the canon, the skills, and the folder conventions, then hand it the runbook.
The lesson from this build is that the entity work is what turns reach into ranking. A billion views did not put Nate first for his name. A structured identity did. Here is a prompt you can paste to an agent that already has the base installed:
Read the knowledge base first. We are building out [CREATOR], whose site is [URL], into a full personal brand site structured like dylan-haugen.com but rendered in their existing brand colors so it stays cohesive. Build an About page, a Blog with a real post feed, and a Connect page with a combined-followers band and a per-platform follower card for every account, and move the header and footer into shared template parts so every page matches. Wrap each page in a wp:html block so wpautop does not mangle it, and add a full-bleed override so the sections span the viewport. Then build the entity: one Person schema spine at #person with every name variant as alternateName and a sameAs to their Wikidata item, and create or extend that Wikidata item with referenced statements and a disambiguation if a namesake exists. Inventory their whole channel, separate long-form from Shorts, and split it into personal videos and guest appearances in a content tracker. Use verified numbers only and flag the rest, then log everything back into the base.
That prompt, plus the reference structure and a logged-in browser, is the whole job. The agent that ran it for Nate followed the meta-article prompt template to write this account of its own work afterward.
Guidelines Compliance Scorecard
| BlitzMetrics Guideline | Status | Notes |
|---|---|---|
| Hook opens with specific person and result | PASS | Opens with Nate, the billion views and brand deals, and the number-one ranking |
| Answer in the first paragraph | PASS | First paragraph states the full scope of the build |
| Short paragraphs | PASS | Three to five lines across the body |
| Active voice | PASS | No passive constructions in the body |
| No AI fluff phrases | PASS | Checked against the banned list |
| Title under 65 characters | PASS | SEO title trimmed to fit the limit |
| H2 and H3 structure without heading abuse | PASS | H2 for sections, H3 only for the QA subsections |
| Internal links to BlitzMetrics content | PASS | Own Your Name, Entity Trust, the KB lifecycle, the template, and siblings |
| Cross-link to sibling meta-articles | PASS | Piotr, Ethan, Cam, and the five-dunkers Wikidata build |
| Entity links follow the decision tree | PASS | Nate to his site, the camp to thedunkcamp.com |
| Source video embedded | N/A | The build drew on his full channel and press, referenced not embedded |
| Featured image | PASS | The brand hero card |
| SEO configured | PASS | Focus keyword, SEO title, and meta description set |
| Author byline set to Dylan Haugen | PASS | Author ID 294 |
| No stock images | PASS | Every image is a data visual of the real build |
| Categories and tags set | PASS | Meta Articles and AI Builder, with topical tags |
| Anchor text descriptive, 3 to 6 words | PASS | All anchors describe the destination |
| No keyword stuffing | PASS | Natural usage throughout |
| Evergreen framing | PASS | The methodology is evergreen; no dated claims in the body |
| Specific CTA | PASS | Closes on the methodology, the live site, and the sibling builds |
Why This Creates Value for Nathaniel Kenney
Before this build, Nate had the reach of a star and the search footprint of a stranger. His billion views lived on platforms he does not own, his story lived in other people’s articles, and his name pulled up a lacrosse player. Now his name resolves to a site he owns, a Person entity, a Wikidata item that separates him from his namesake, and a Connect page that hands a sponsor his real reach and a direct line in one screen. The site ranks first for his name, which means the next brand, journalist, or AI assistant that looks him up finds the version of him he controls. Every new dunk and every new campaign now compounds on that foundation instead of scattering across feeds.
Why This Creates Value for BlitzMetrics
Nate is the proof that the playbook scales all the way up. It took an unknown Polish dunker to a structured entity, and it took a creator with a billion views and national brand deals to the top of his own search results, using the same pages, the same schema spine, and the same Wikidata bridge. The differentiator at his level was the entity work, the disambiguation from a namesake and the single Person spine, which is exactly the problem a well-known local business faces when a competitor or a common name muddies its search results. The cost table is the business case. A build that runs 245x to 385x cheaper than a human team, held to quality by the QA discipline in the bugs section, is the same one we bring to local service businesses through Local Service Spotlight.
The Build Pattern
The idea underneath all of this is the one Dennis lays out in the work on Knowledge Panels: an entity becomes findable when enough corroborated signal exists for a search engine or an AI assistant to commit to it. Real source material, a structured site, schema and Wikidata, and a content inventory that feeds the whole system are the layers that produce that signal. The agent’s job on this build was to give a billion-view creator all of those layers in his own brand, disambiguate him from a namesake, and do it cleanly enough that his name finally ranks for the person who earned it.
If you want the methodology, start with the knowledge base lifecycle and the entity-authority framework linked at the top. If you want to see the live result, the site at nathanielkenney.com is the deliverable. And if you want the sibling builds to compare against, the Cam Hazzard build is the from-scratch version, the Piotr Zawiślak build is the reference the series was matched to, the Ethan Pimstone build is the come-from-nowhere version, the McDeezy build is the one where the real homepage turned out to be hidden inside a custom template, and the Finn Addy build is the one that closed the series out, where a site that was already live and polished turned out to be quietly wrong. Nate started on a kitchen mini hoop. Now the machines that run the internet know exactly who he is.

