

Piotr Zawiślak is an 18-year-old professional dunker from Poland and one of only 13 people on earth to earn The Dunk Camp Black Band, the highest rank in the sport. Most Americans have never heard of him. Search his name and you found scattered clips in a few languages and no clear identity Google or an AI assistant could connect to one real person. Over a single working session, a Claude agent turned piotrzawislak.com from a stack of disconnected dark pages into a full personal brand site, built him a private knowledge base in our system, and stood up the entity graph Google needs to commit to him. This build did something the other dunker builds did not: it went first, and it became the reference template every other dunker site was standardized to match. 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 prototype for the structural-site-build work we then ran across the whole dunker roster, and the pattern that every later dunker site was matched to.
Where It Started: The Dunk Camp 2026
This build started on a gym floor in Utah. Dennis Yu and I spoke at The Dunk Camp 2026 in the Salt Lake City area, the camp that brings the best dunkers and vertical-jump athletes in the world together for a week. It is also the room the Dunk Talk podcast pulls most of its guests from, which is where a lot of the primary-source material for these builds comes from. We ran a session on personal branding and AI for dunkers, audited 76 athletes live on stage, and showed the room the ranked leaderboard. The full write-up of that talk is the repurposing system we taught 76 athletes.
Piotr flew over from Poland for that week, and I had wanted to meet him for a long time. I first found him on Instagram at 17, throwing 360 Underboth and combos most people never land, and I had been telling anyone who would listen about him since. We are the same age, our birthdays are two days apart, and we dunk in completely different styles. When the camp ended, he had a week of elite footage, a following spread across three platforms, and no structured home for any of it. That is what I handed to the agent, and because no finished dunker template existed yet, this is the build where we invented one.
The Build Task
The assignment was a structural build of piotrzawislak.com, not a rewrite. His site already carried real content, so the rule was to keep every word, stat, and photo and only standardize the structure around it. The one finished reference to copy the structure from was my own site, dylan-haugen.com, because there was no other dunker site built to the target pattern yet. Same Twenty Twenty-Five block theme, same BlitzAdmin hosting.
The scope covered a global header and footer on every page, a full-width dark home page in his brand colors, a dark About page, a white Blog set up with post cards, a Connect page with a combined-followers band and per-platform follower badges, and a knowledge base built inside our own system so every future session already knows who he is. Out of scope, and flagged for a human, were the things the agent cannot invent: the real follower counts, the login session, and the round of art-direction corrections that turned a first draft into the template. The agent was handed my reference site, Piotr’s existing content, and a login session already open in the browser. It did the rest.
Source Material Ingestion
The first pass read everything Piotr had already put into the world. That meant his existing site pages, his three social profiles, and the three-minute interview I filmed with him at camp. From that material the agent pulled the verifiable facts that anchor the whole site: one of 13 Black Band dunkers in the world and the only one from Poland, 18 years old, a listed 6-foot-1 frame, a signature 360 Underboth and 360s off both legs, and his real handles at @piotrzawislak47 with 6,000 followers on Instagram, 11,000 on TikTok, and 2,000 on YouTube, which combine to the 19K+ figure the site shows.

The interview was the emotional core of his story, and the agent kept the lines verbatim. Direct quotes are evidence the subject actually said the thing, and both search engines and AI assistants weight them more heavily than paraphrase. Piotr on the week:
“It was crazy, man. That was one of the best weeks of my life. I’m very grateful to having opportunity to dunk with all of you guys.”
Piotr Zawiślak
And the line that explains why his style is worth building a brand around, in his own words on the site: we all arrive at the same rim from different directions. He earned the Black Band on a public list The Dunk Camp keeps of every dunker in the world to reach the rank, and at camp he dunked alongside Nathan “Hoopin Nate” Kenney and the rest of the crew. His feature history and his own account became real, cited references rather than vague claims. The interview clip that seeded the whole thing:
The Starting State and the Structural Pass
The starting point is the thing to understand, because it is what made this build the reference. The home page, the About page, and the extra pages were each standalone dark custom-HTML pages, and every one of them carried its own embedded navigation and its own footer baked into the page markup. That is why the header was never consistent. The posts, meanwhile, rendered light through the default theme. There was one WordPress user, admin, and nothing tied the identity together across the site.
The agent standardized all of it around the content. It built a global header template part with his round photo and name on the left, truly centered navigation, and his social icons on the right, and a global footer template part restructured with his name and socials on top and navigation with a copyright line below. Because those live in template parts rather than in each page, every current and future page inherits them. The home page came back as a full-width dark hero with the Black Band eyebrow, his name, the “Black Band Dunker” accent line, the stat chips, and his dunk photo on the right, followed by a Black Band chapter section, a Poland-to-the-world story split, the interview video, and a Latest Stories row. The Blog became a white page of clean post cards, and single posts were restyled light and left-aligned instead of the theme’s centered gray boxes.
The technical recipe was the one that then got reused across the entire batch. Every edit went through the WordPress REST API from the logged-in browser, with the nonce read from /wp-admin/post-new.php. The header and footer went in through POST /wp/v2/template-parts/twentytwentyfive//header and //footer with a single wp:html block of inline CSS. Pages went in through POST /wp/v2/pages/{id} with template:'', which is what makes the front page use the global header and footer instead of a custom template. All the shared helper CSS lives in the footer template part so it loads on every page. SEO runs on The SEO Framework, which works instantly on these BlitzAdmin installs and uses the page excerpt as the meta description.
The Reference-Build Structure
The reason to spend a whole section on structure is that this build is where the dunker-site pattern was defined. Every site in the batch after this one, including Ethan’s, was handed piotrzawislak.com as the finished reference to match. The pattern is four page types wrapped in one global chrome: a full-width dark home page carrying the signature credential and the story, a dark About page, a white Blog of post cards with a “By name, date” byline, and a Connect page that leads with a combined-followers band and then gives each platform its own card with a real follower badge. The home page alternates section backgrounds after the dark hero so the page has rhythm instead of one flat wall of color.

The Knowledge Base Behind the Site
Building the site was only half the work. As the pages came together, the agent also built Piotr a private knowledge base inside our system, the same pattern we run for every person and client, and the one documented in our knowledge base lifecycle work. A knowledge base is the difference between an agent that starts every task from scratch and one that already knows who Piotr is, how he talks, what he has done, and where the build stands. Build it once, and every future session inherits it.
Piotr’s base holds his entity facts, his voice and story beats, his three verified social handles and their counts, the Black Band credential, and a full site quick-reference down to the page IDs, the brand palette, and the plugins installed. It also logs the open items a human still owns, so the next session does not have to rediscover them. This is the private layer. We publish authority from it, like this article, but the base itself stays internal. That build-use-publish loop is exactly what powers Paul Ryazanov’s ecommerce knowledge base, and it runs on the same installable system, BlitzBase, that we hand to teams and clients.
Schema and the Entity Bridge
A personal brand site is only findable when the structured data underneath it tells Google and the AI assistants that one real person owns the name. The agent added a full Person block in JSON-LD to Piotr’s home page, where the site had carried none before. The block declares his name and his role as a dunker, and a sameAs list that points to his Instagram, TikTok, YouTube, and his Wikidata entity.
That Wikidata item, created as part of the same rollout, is the other half of a bidirectional bridge: the entity’s official-website property points at piotrzawislak.com, and the site’s schema points back at the entity, with every claim referenced. The full batch build of those entities across five dunker sites, Piotr included, is documented in how we built Wikidata and schema for five dunkers at once, so this article does not restate it. The point for Piotr is that his site, his socials, and his entity now corroborate the same set of facts from every direction an indexer might look.
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. As the first build in the batch, this one generated the correction list every later site was spared. Every bug below is real.
The white, minimal first draft that stripped the content
Symptom: The first build came back clean, white, and minimal, with information trimmed out and no full-width sections.
Cause: The agent defaulted to a generic idea of a tidy personal brand site instead of the rich, dark, information-dense style of the live reference.
Fix: The agent stopped approximating and started copying. It read how dylan-haugen.com is actually built, section by section, rebuilt the site full-width, dark, and colored, and put every piece of the original content back. The rule that came out of this, copy the live site rather than approximate it, is now the first instruction on every build in the batch.
The header that would not center
Symptom: The navigation menu sat off to one side instead of centered, and it shifted whenever the logo or social row changed width.
Cause: Normal flow layout pushes the menu around based on the width of the elements beside it.
Fix: The agent laid the header out as a CSS grid with 1fr auto 1fr columns, which pins the menu to the true center of the header regardless of what sits on either side. That grid header is now standard on every site.
The white gap above the footer
Symptom: A white band appeared between the last content section and the footer on every page.
Cause: The footer template-part wrapper carries its own padding and a theme background that paints a strip above the custom footer.
Fix: A rule in the footer part CSS, footer.wp-block-template-part{margin-block-start:0;padding:0;background:<footer color>}, collapses the wrapper so the custom footer sits flush against the content above it. This one ships on every site now.
The horizontal scroll bug
Symptom: The page scrolled sideways by a sliver on every screen.
Cause: The full-bleed sections use a 100vw width, and 100vw includes the scrollbar width, so the page overflowed by exactly that amount.
Fix: One rule in the footer helper CSS, html,body{overflow-x:clip}, killed the overflow without breaking the full-bleed layout. That rule now ships on every site in the batch.
The blog that rendered like the theme
Symptom: The Blog page showed a large theme heading and the posts rendered as centered gray boxes instead of clean cards.
Cause: The default Twenty Twenty-Five archive and single-post styling took over wherever the custom structure did not override it.
Fix: The agent rebuilt the Blog as a white page of post cards, each with a title, a “By name, date” byline, an excerpt, and a Read More link, and restyled single posts white and left-aligned with the featured image hidden, matching the readable column on dylan-haugen.com.
The pages that ignored the global header
Symptom: Updating a page did not pick up the new global header and footer.
Cause: The original standalone pages carried their own baked-in chrome and did not defer to the template parts.
Fix: The agent wrote each page with template:'' so the front page and the interior pages all render through the global header and footer, and folded the real content into that standard structure.
Critical Decisions With Rationale
Copy the live site, do not approximate it. The agent’s first instinct was a clean, minimal template, and that was wrong. The live spec already existed on dylan-haugen.com, built and art-directed by a human. The better move was to read how that site is actually put together and copy the structure rather than invent a fresh interpretation of what a personal brand site should look like. Every build after this one starts from that instruction.
Preserve every word, standardize only the structure. The first instinct on a messy site is to rewrite it clean. That was the wrong call here too. Piotr had real content and a real voice, and that voice is the asset. The agent treated the build as a structural pass: keep all of the copy, stats, and photos, and only standardize the header, footer, Blog, About, and Connect around them. When in doubt, it kept the information.
Put the header and footer in template parts, defined once. The starting state baked navigation into every standalone page, which is exactly why nothing matched. Moving the header and footer into global template parts means every current and future page inherits the same chrome, and it is the single decision that made the whole pattern replicable across the rest of the roster.
Show real follower numbers, per platform. The Connect page leads with a 19K+ combined-followers band and then gives Instagram, TikTok, and YouTube each their own card with a real badge, 6K, 11K, and 2K. Never an estimate. A sponsor reading the page gets the true reach and a direct line in one screen.
Author the content as Piotr, not admin. The agent set up a real WordPress user for Piotr with his photo and a first-person bio, so his posts publish under his own name rather than a generic admin account. His first post, his account of the Dunk Camp week, is the anchor of his entity.
Ship it as the reference build, not a one-off. Instead of hand-styling this one site and moving on, the agent documented the exact REST recipe and the CSS cures as it went, so the same structure could be re-run on the next dunker by swapping in a name, a photo, the socials, the follower counts, and a brand accent. That decision is what turned one build into a repeatable system.

Effort and Cost Comparison
| Task | Agent Time | Human Time | Agent Cost | Human Cost ($50/hr blended) |
|---|---|---|---|---|
| Source ingestion and research | ~20 min | 3–5 hours | $0.40 | $150–$250 |
| Global header and footer template parts | ~40 min | 4–6 hours | $0.60 | $200–$300 |
| Home page rebuild (hero through latest stories) | ~1.5 hours | 8–12 hours | $1.30 | $400–$600 |
| About, Blog, and Connect pages | ~1 hour | 6–9 hours | $0.90 | $300–$450 |
| Palette, alternating sections, responsive CSS | ~45 min | 4–6 hours | $0.70 | $200–$300 |
| Author, avatar, favicon, The SEO Framework | ~20 min | 2–3 hours | $0.30 | $100–$150 |
| Knowledge base and fact sheet build | ~30 min | 3–5 hours | $0.60 | $150–$250 |
| Wikidata entity and Person schema bridge | ~20 min | 2–4 hours | $0.40 | $100–$200 |
| Correction rounds and QA recovery (reference build) | ~2 hours | 8–12 hours | $2.30 | $400–$600 |
| TOTAL | ~7.5 hours | 40–62 hours | ~$7.50 | $2,000–$3,100 |
The agent cost is the API token cost on Claude Opus 4.8 pricing across the build, roughly 900,000 input tokens and 120,000 output tokens at Opus 4.8’s published $5 per million input and $25 per million output, which comes to about $7.50. The human cost uses a blended $50 per hour rate covering content writing, WordPress development, SEO, design, and project management. The ratio is roughly 265x to 415x cheaper, and because this was the first build it carried the extra correction rounds every later site was spared, so the batch that followed ran even leaner.
What the Agent Handled vs What Needed a Human
Agent handled autonomously: reading his site, socials, and interview; auditing the live state of every page and template; building the global header and footer template parts; rebuilding the home, About, Blog, and Connect pages; standardizing the structure while keeping every word of the content; applying the palette and the alternating sections; installing and configuring The SEO Framework; setting the author, avatar, and favicon; building Piotr’s knowledge base and fact sheet; standing up the Person schema and the Wikidata bridge; documenting the REST recipe and CSS cures for reuse; 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 real follower counts and the confirmation of his handles; the art-direction corrections that turned the minimal first draft into the dark, full-width reference, since taste and brand feel are a human call; verification of the listed height; and the final approval to publish this article.
Information Ingestion Inventory
- Source pages read: ~6 (his existing home, About, Black Band, Blog, and links pages, plus the dylan-haugen.com reference build)
- Source video referenced: 1 (the three-minute Dunk Camp interview, embedded above)
- Handoff and spec docs read: ~3 (the shared rollout playbook and the reference notes)
- Live pages audited on piotrzawislak.com: ~10 (Home, About, Blog, Connect, the Black Band page, plus admin screens)
- WordPress admin and REST endpoints navigated: ~40 (pages, template parts, templates, users, plugins, settings)
- REST calls executed: ~100+ (page updates, template-part writes, the user and avatar updates, plugin installs)
- Screenshots captured for verification: ~30
- Named decisions made: 6
- Named bugs caught and fixed: 6
- Knowledge base assets built: 1 partner folder with a knowledge base and a compiled fact sheet
- Estimated total tokens: ~900,000 input, ~120,000 output
Give This to Your Agent
Everything above is a method a capable agent can run for the next dunker or the next local business. The site build and the knowledge base build are two halves of one pattern: standardize the structure around the real content, then capture who the person is in a base that every future session reads from. Install BlitzBase so the agent has the canon, the skills, and the folder conventions, then hand it the runbook.
The single most useful instruction from this build is to give the agent a finished reference and tell it to copy the real thing rather than approximate it. This site is now that reference. Here is a prompt you can paste to an agent that already has the base installed:
Read the knowledge base first. We are giving [DUNKER], whose site is [URL], a structural pass to match a finished reference, piotrzawislak.com. This is a structural pass, not a rewrite: keep every word, stat, and photo already on the site, and only standardize the structure. Do not approximate the reference, read how it is actually built and copy that structure. Build a global header and footer in template parts so every page inherits them, a full-width dark home page with their photo and stats, a dark About, a white Blog with post cards, and a Connect page with a combined-followers band and per-platform follower badges. Center the header with a 1fr auto 1fr grid, ship the overflow-x clip and footer-gap CSS cures, rewrite nothing but standardize everything, set the post author and the favicon to the dunker, and use The SEO Framework because it works instantly on these installs. Then build their knowledge base by scraping the site, socials, and video transcript into a voice profile, entity facts, and a site quick-reference, add a Person schema block with a sameAs to their Wikidata entity, and wrap up by logging what shipped back into the base.
That prompt, plus the reference site and a logged-in browser, is the whole job. The agent that ran it for Piotr 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 Piotr, the 1 of 13 Black Band, and the reference-build result |
| 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 | Ethan, Cam, the one-interview Piotr build, and the five-dunkers Wikidata build |
| Entity links follow the decision tree | PASS | Piotr and Nate to their sites, the camp to thedunkcamp.com |
| Source video embedded | PASS | The three-minute Dunk Camp interview is embedded in the source section |
| Featured image | PASS | The home page hero screenshot |
| 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 real screenshot of the live build or a data visual |
| 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 one-time claims in the body |
| Specific CTA | PASS | Closes on the methodology, the live site, and the sibling builds |
Why This Creates Value for Piotr Zawiślak
Before this build, Piotr had a real credential and almost no structured proof of it in a language most of his potential audience reads. His footage lived on three platforms, his story lived in his own captions, and nothing tied them to a single verified identity Google could commit to. Now his name resolves to a site he owns, a Person entity, a Wikidata item, and a Connect page that hands a sponsor his real reach and a direct line in one screen. When a brand, an event organizer, or an AI assistant looks him up, they find one coherent story instead of a scattered feed in three languages. Every new dunk, every contest, and every interview compounds on that foundation rather than disappearing into a platform.
Why This Creates Value for BlitzMetrics
Piotr’s build is the reference implementation for the entire dunker rollout. It is the site the rest of the roster was measured against, and the correction rounds it went through are the reason the later builds ran clean. That is the same shape most local service businesses are in: a partial site, a scattered footprint, real proof that does not connect. The playbook that gave a Polish dunker a structured entity in one session, then repeated across a batch of sites, is the same one that gives a plumber or a roofer theirs, as we lay out in the Local Service Spotlight version of this work. The cost table is the business case. A build that runs 265x to 415x cheaper than a human team, held to quality by the QA discipline in the bugs section, opens personal brand work to client segments that could never afford it the old way.
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 knowledge base that keeps it all current are the layers that produce that signal. The agent’s job on this build was to turn a stack of disconnected pages into all of those layers in one session, keep Piotr’s own voice intact, and do it cleanly enough that the result became the template for everyone who came after.
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 live site at piotrzawislak.com is the deliverable. If you want the content side of the same subject, how we built Piotr’s presence from one interview shows the five-article package that runs on top of this site. And if you want the sibling site builds to compare against, the Cam Hazzard build is the from-scratch version and the Ethan Pimstone build is the one matched to this reference, and the Nathaniel Kenney build is the biggest in the series, a billion-view creator getting the same entity treatment, and 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. Piotr came from a different direction than every American in that gym. Now his name is structured so the whole internet can find him on the way to the rim.

