<!DOCTYPE html>
<html lang="en" class="dark-mode">
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1">
		<title>Paul Bakaus</title>
		<link rel="preconnect" href="https://fonts.googleapis.com">
		<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
		<link href="https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Plus+Jakarta+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap" rel="stylesheet">
		<link rel="stylesheet" type="text/css" href="/assets/css/screen.css?v=75cfb778a8">
		<link rel="stylesheet" type="text/css" href="/assets/css/pb.css?v=75cfb778a8">
		<meta name="description" content="Building AI tools. Writing about code, creativity, and the creator economy. A tech exec who still ships.">
    <link rel="canonical" href="https://www.paulbakaus.com/">
    <meta name="referrer" content="origin-when-cross-origin">
    
    <meta property="og:site_name" content="Paul Bakaus">
    <meta property="og:type" content="website">
    <meta property="og:title" content="Paul Bakaus">
    <meta property="og:description" content="Building AI tools. Writing about code, creativity, and the creator economy. A tech exec who still ships.">
    <meta property="og:url" content="https://www.paulbakaus.com/">
    <meta property="og:image" content="https://www.paulbakaus.com/content/images/size/w1200/2025/05/ChatGPT-Image-May-15--2025--04_53_53-PM-1.png">
    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:title" content="Paul Bakaus">
    <meta name="twitter:description" content="Building AI tools. Writing about code, creativity, and the creator economy. A tech exec who still ships.">
    <meta name="twitter:url" content="https://www.paulbakaus.com/">
    <meta name="twitter:image" content="https://www.paulbakaus.com/content/images/size/w1200/2025/05/ChatGPT-Image-May-15--2025--04_53_53-PM.png">
    <meta name="twitter:site" content="@pbakaus">
    <meta property="og:image:width" content="1200">
    <meta property="og:image:height" content="800">
    
    <script type="application/ld+json">
{
    "@context": "https://schema.org",
    "@type": "WebSite",
    "publisher": {
        "@type": "Organization",
        "name": "Paul Bakaus",
        "url": "https://www.paulbakaus.com/",
        "logo": {
            "@type": "ImageObject",
            "url": "https://www.paulbakaus.com/favicon.ico",
            "width": 48,
            "height": 48
        }
    },
    "url": "https://www.paulbakaus.com/",
    "name": "Paul Bakaus",
    "image": {
        "@type": "ImageObject",
        "url": "https://static.ghost.org/v4.0.0/images/publication-cover.jpg",
        "width": 1200,
        "height": 482
    },
    "mainEntityOfPage": "https://www.paulbakaus.com/",
    "description": "Building AI tools. Writing about code, creativity, and the creator economy. A tech exec who still ships."
}
    </script>

    <meta name="generator" content="Ghost 6.26">
    <link rel="alternate" type="application/rss+xml" title="Paul Bakaus" href="https://www.paulbakaus.com/writing/rss/">
    <script defer src="https://cdn.jsdelivr.net/ghost/portal@~2.67/umd/portal.min.js" data-i18n="true" data-ghost="https://www.paulbakaus.com/" data-key="65f476ccef5b456baa5054e1fd" data-api="https://www.paulbakaus.com/ghost/api/content/" data-locale="en" crossorigin="anonymous"></script><style id="gh-members-styles">.gh-post-upgrade-cta-content,
.gh-post-upgrade-cta {
    display: flex;
    flex-direction: column;
    align-items: center;
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
    text-align: center;
    width: 100%;
    color: #ffffff;
    font-size: 16px;
}

.gh-post-upgrade-cta-content {
    border-radius: 8px;
    padding: 40px 4vw;
}

.gh-post-upgrade-cta h2 {
    color: #ffffff;
    font-size: 28px;
    letter-spacing: -0.2px;
    margin: 0;
    padding: 0;
}

.gh-post-upgrade-cta p {
    margin: 20px 0 0;
    padding: 0;
}

.gh-post-upgrade-cta small {
    font-size: 16px;
    letter-spacing: -0.2px;
}

.gh-post-upgrade-cta a {
    color: #ffffff;
    cursor: pointer;
    font-weight: 500;
    box-shadow: none;
    text-decoration: underline;
}

.gh-post-upgrade-cta a:hover {
    color: #ffffff;
    opacity: 0.8;
    box-shadow: none;
    text-decoration: underline;
}

.gh-post-upgrade-cta a.gh-btn {
    display: block;
    background: #ffffff;
    text-decoration: none;
    margin: 28px 0 0;
    padding: 8px 18px;
    border-radius: 4px;
    font-size: 16px;
    font-weight: 600;
}

.gh-post-upgrade-cta a.gh-btn:hover {
    opacity: 0.92;
}</style><script async src="https://js.stripe.com/v3/"></script>
    <script defer src="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/sodo-search.min.js" data-key="65f476ccef5b456baa5054e1fd" data-styles="https://cdn.jsdelivr.net/ghost/sodo-search@~1.8/umd/main.css" data-sodo-search="https://www.paulbakaus.com/" data-locale="en" crossorigin="anonymous"></script>
    
    <link href="https://www.paulbakaus.com/webmentions/receive/" rel="webmention">
    <script defer src="/public/cards.min.js?v=75cfb778a8"></script>
    <link rel="stylesheet" type="text/css" href="/public/cards.min.css?v=75cfb778a8">
    <script defer src="/public/comment-counts.min.js?v=75cfb778a8" data-ghost-comments-counts-api="https://www.paulbakaus.com/members/api/comments/counts/"></script>
    <script defer src="/public/member-attribution.min.js?v=75cfb778a8"></script>
    <script defer src="/public/ghost-stats.min.js?v=75cfb778a8" data-stringify-payload="false" data-datasource="analytics_events" data-storage="localStorage" data-host="https://www.paulbakaus.com/.ghost/analytics/api/v1/page_hit"  tb_site_uuid="155b035f-b71d-407b-a9d2-6c323202359d" tb_post_uuid="undefined" tb_post_type="null" tb_member_uuid="undefined" tb_member_status="undefined"></script><style>:root {--ghost-accent-color: #691bf8;}</style>
    <!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XKEL5SB106"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-XKEL5SB106');
</script>
	</head>
	<body class="home-template">
		<div class="global-wrap">
			<div class="global-content">
				<header class="pb-header" id="pb-header">
	<div class="pb-header-inner">
		<a href="https://www.paulbakaus.com" class="pb-site-name">Paul Bakaus</a>
		<nav class="pb-nav" id="pb-nav">
			<ul class="pb-nav-list">
				<li><a href="/">Home</a></li>
				<li><a href="/projects/">Projects</a></li>
				<li><a href="/writing/">Writing</a></li>
				<li><a href="/mission/">Mission</a></li>
				<li><a href="/about/">About</a></li>
			</ul>
		</nav>
		<button class="pb-nav-toggle" id="pb-nav-toggle" aria-label="Toggle navigation" aria-expanded="false">
			<span></span>
			<span></span>
		</button>
	</div>
</header>
				<main class="global-main">
					
<section class="pb-hero">
	<canvas id="pb-hero-flow" class="pb-hero-canvas" aria-hidden="true"></canvas>
	<div class="pb-section-inner pb-hero-grid">
		<div class="pb-hero-content">
			<h1 class="pb-hero-name pb-reveal"><em>Paul Bakaus</em></h1>
			<div class="pb-hero-rule"></div>
			<p class="pb-hero-tagline pb-reveal">Product Engineer before it was cool.</p>
			<p class="pb-hero-bio pb-reveal">I move between <strong>code</strong>, <strong>design</strong>, and <strong>product</strong>. I've been doing this since <strong>jQuery UI</strong>, through <strong>Chrome DevTools</strong> at Google, and now with <strong>AI tools</strong>. I like building things right before they become obvious.</p>
			<p class="pb-hero-bio pb-reveal">I'm driven by making <strong>AI work for everyone</strong>, not just developers, and by bringing <strong>curation</strong> and human judgment back to a web drowning in slop.</p>
		</div>
		<div class="pb-hero-portrait pb-reveal">
			<canvas id="pb-hero-portrait-canvas" class="pb-hero-portrait-canvas" data-src="/assets/images/paul-bakaus-cutout.png?v=75cfb778a8" aria-hidden="true"></canvas>
		</div>
	</div>
</section>

<section class="pb-building">
	<div class="pb-section-inner">
		<span class="pb-section-label pb-reveal">Currently Building</span>
		<div class="pb-building-bento">
			<div class="pb-building-item pb-building-flagship pb-reveal">
				<h2 class="pb-building-name"><svg class="pb-project-icon" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><rect width="32" height="32" rx="6" fill="#1a1a1a"/><path d="M19 7L13 25" stroke="#f5f3ef" stroke-width="2.5" stroke-linecap="round"/></svg><a href="https://impeccable.style" target="_blank" rel="noopener">Impeccable</a></h2>
				<p>AI coding tools have no design sense. Impeccable gives them one — a skills system for tools like Claude Code and Cursor that teaches them real design expertise. Define your design language once, and every generated component follows it.</p>
				<div class="pb-building-meta">
					<a href="https://impeccable.style" target="_blank" rel="noopener">Website</a>
					<span class="pb-separator">/</span>
					<a href="https://github.com/pbakaus/impeccable" target="_blank" rel="noopener">GitHub</a>
					<span class="pb-separator">/</span>
					<span>10k+ stars</span>
				</div>
			</div>
			<div class="pb-building-item pb-building-flagship pb-reveal">
				<h2 class="pb-building-name"><svg class="pb-project-icon" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="32" height="32" rx="6" fill="#1a1816"/><path d="M16 5C16.8 12 20 15.2 27 16C20 16.8 16.8 20 16 27C15.2 20 12 16.8 5 16C12 15.2 15.2 12 16 5Z" fill="#c8956c"/></svg><a href="https://radiant-shaders.com" target="_blank" rel="noopener">Radiant</a></h2>
				<p>Building visual effects from scratch is a time sink. Radiant is a collection of 80+ production-ready WebGL shaders you can preview, customize, and drop into any web project. Zero dependencies, MIT licensed, works with any framework.</p>
				<div class="pb-building-meta">
					<a href="https://radiant-shaders.com" target="_blank" rel="noopener">Website</a>
					<span class="pb-separator">/</span>
					<a href="https://github.com/pbakaus/radiant" target="_blank" rel="noopener">GitHub</a>
					<span class="pb-separator">/</span>
					<span>Open Source</span>
				</div>
			</div>
			<div class="pb-building-item pb-building-papercut pb-reveal">
				<h2 class="pb-building-name"><svg class="pb-project-icon" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="32" height="32" rx="6" fill="#d14a2d"/><path d="M13.8 22H11.3V20.8C10.7 21.7 9.7 22.3 8.4 22.3C6.8 22.3 5.8 21.2 5.8 19.7C5.8 17.9 7.2 17.1 9.4 17.1H11.3V16.3C11.3 15.2 10.7 14.6 9.6 14.6C8.6 14.6 8.1 15.1 7.8 16H5.8C6.2 14 7.5 12.8 9.7 12.8C12.1 12.8 13.8 14 13.8 16.5V22ZM11.3 18.7H9.6C8.4 18.7 7.8 19.1 7.8 19.9C7.8 20.6 8.3 21 9.1 21C10.4 21 11.3 20.2 11.3 18.9V18.7ZM16.2 22V12.8H18.7V14.5C19.2 13.4 20.1 12.7 21.5 12.7C22 12.7 22.3 12.8 22.6 12.9V15.2C22.2 15 21.7 14.9 21.2 14.9C19.8 14.9 18.7 15.8 18.7 17.8V22H16.2Z" fill="white"/></svg><a href="https://agent-reviews.com" target="_blank" rel="noopener">agent-reviews</a><a href="https://github.com/pbakaus/agent-reviews" target="_blank" rel="noopener" class="pb-building-gh">GitHub</a></h2>
				<p>Token-efficient, automated GitHub review workflows and bug fixing that actually understand your codebase.</p>
			</div>
			<div class="pb-building-item pb-building-papercut pb-reveal">
				<h2 class="pb-building-name"><svg class="pb-project-icon" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg"><rect width="32" height="32" rx="6" fill="#b91c1c"/><rect x="9" y="15" width="14" height="11" rx="2" fill="#fff" opacity="0.95"/><path d="M12 15v-3.5a4 4 0 0 1 8 0V15" stroke="#fff" stroke-width="2" stroke-linecap="round" fill="none" opacity="0.95"/><path d="M16 17.5c-.7 1.6-2 2.8-2 4.3a2 2 0 0 0 4 0c0-1.5-1.3-2.7-2-4.3z" fill="#b91c1c"/></svg><a href="https://burn-after-login.paulbakaus.com" target="_blank" rel="noopener">burn-after-login</a><a href="https://github.com/pbakaus/burn-after-login" target="_blank" rel="noopener" class="pb-building-gh">GitHub</a></h2>
				<p>Solves authentication for AI browser agents. Analyzes your auth, creates dev-only login shortcuts, then self-destructs.</p>
			</div>
		</div>
	</div>
</section>

<section class="pb-latest-writing">
	<div class="pb-section-inner">
		<span class="pb-section-label pb-reveal">Writing</span>
		<div class="pb-writing-list pb-reveal">
			<a href="/carving-shaders-out-of-claude-code/" class="pb-writing-entry">
				<time datetime="2026-03-26">Mar 2026</time>
				<span class="pb-writing-entry-title">Carving Shaders Out of Claude Code</span>
				<span class="pb-writing-entry-time">5 min read min</span>
			</a>
			<a href="/the-curse-of-cursor-for-x/" class="pb-writing-entry">
				<time datetime="2025-11-27">Nov 2025</time>
				<span class="pb-writing-entry-title">The Curse of &#x27;Cursor for X&#x27;</span>
				<span class="pb-writing-entry-time">4 min read min</span>
			</a>
			<a href="/fans-vs-nofans/" class="pb-writing-entry">
				<time datetime="2025-07-03">Jul 2025</time>
				<span class="pb-writing-entry-title">Why certain creators have fans and others don&#x27;t</span>
				<span class="pb-writing-entry-time">2 min read min</span>
			</a>
			<a href="/vibe-editing/" class="pb-writing-entry">
				<time datetime="2025-05-15">May 2025</time>
				<span class="pb-writing-entry-title">Vibe Editing</span>
				<span class="pb-writing-entry-time">2 min read min</span>
			</a>
		</div>
		<a href="/writing/" class="pb-view-all pb-reveal">View all writing &rarr;</a>
	</div>
</section>

<section class="pb-career">
	<canvas id="pb-career-tree" class="pb-career-tree-canvas" aria-hidden="true"></canvas>
	<div class="pb-section-inner">
		<span class="pb-section-label pb-reveal">Career</span>
		<div class="pb-career-timeline-wrap">
			<div class="pb-timeline pb-reveal">
				<div class="pb-timeline-item">
					<span class="pb-timeline-year">2007</span>
					<span class="pb-timeline-role">jQuery UI</span>
					<span class="pb-timeline-desc">Created the interaction library used by millions of developers</span>
				</div>
				<div class="pb-timeline-item">
					<span class="pb-timeline-year">2010</span>
					<span class="pb-timeline-role">Zynga</span>
					<span class="pb-timeline-desc">Built Aves, the first browser game engine &mdash; acquired by Zynga</span>
				</div>
				<div class="pb-timeline-item">
					<span class="pb-timeline-year">2013</span>
					<span class="pb-timeline-role">Google</span>
					<span class="pb-timeline-desc">Chrome DevTools, AMP, Web Stories, Head of Creator Relations</span>
				</div>
				<div class="pb-timeline-item">
					<span class="pb-timeline-year">2021</span>
					<span class="pb-timeline-role">Koji</span>
					<span class="pb-timeline-desc">Head of Creators</span>
				</div>
				<div class="pb-timeline-item">
					<span class="pb-timeline-year">2022</span>
					<span class="pb-timeline-role">Spotter</span>
					<span class="pb-timeline-desc">EVP Product &mdash; built AI tools for YouTube creators at scale</span>
				</div>
				<div class="pb-timeline-item is-current">
					<span class="pb-timeline-year">Now</span>
					<span class="pb-timeline-role">Independent</span>
					<span class="pb-timeline-desc">Fractional CTPO, advisor, open source</span>
				</div>
			</div>
		</div>
	</div>
</section>

<section class="pb-cta">
	<div class="pb-section-inner pb-reveal">
		<p class="pb-cta-text">Stay in the loop on what I'm building and thinking about.</p>
		<form class="pb-cta-form" data-members-form="subscribe" data-members-autoredirect="false">
			<input data-members-email type="email" name="email" placeholder="your@email.com" required>
			<button type="submit">Subscribe</button>
		</form>
		<div class="pb-subscribe-alert">
			<small class="alert-loading">Sending...</small>
			<small class="alert-success">Please check your inbox and click the link to confirm your subscription.</small>
			<small class="alert-error">There was an error sending the email, please try again.</small>
		</div>
	</div>
</section>

				</main>
				<footer class="pb-footer">
	<div class="pb-footer-inner">
		<div class="pb-footer-newsletter">
			<p class="pb-footer-newsletter-text">Occasional thoughts on AI, creativity, and building things.</p>
			<form class="pb-newsletter-form" data-members-form="subscribe" data-members-autoredirect="false">
				<input data-members-email type="email" name="email" placeholder="your@email.com" required>
				<button type="submit">Subscribe</button>
			</form>
			<div class="pb-subscribe-alert">
				<small class="alert-loading">Sending...</small>
				<small class="alert-success">Please check your inbox and click the link to confirm your subscription.</small>
				<small class="alert-error">There was an error sending the email, please try again.</small>
			</div>
		</div>
		<div class="pb-footer-bottom">
			<div class="pb-footer-social">
				<a href="https://github.com/pbakaus" target="_blank" rel="noopener">GitHub</a>
				<a href="https://x.com/pbakaus" target="_blank" rel="noopener">X</a>
				<a href="https://linkedin.com/in/paulbakaus" target="_blank" rel="noopener">LinkedIn</a>
				<a href="https://instagram.com/paulbakaus" target="_blank" rel="noopener">Instagram</a>
			</div>
			<p class="pb-footer-copyright">&copy; 2026 Paul Bakaus</p>
		</div>
	</div>
</footer>
			</div>
		</div>
		<div id="notifications" class="global-notification">
	<div class="subscribe">You’ve successfully subscribed to Paul Bakaus</div>
	<div class="signin">Welcome back! You’ve successfully signed in.</div>
	<div class="signup">Great! You’ve successfully signed up.</div>
	<div class="update-email">Success! Your email is updated.</div>
	<div class="expired">Your link has expired</div>
	<div class="checkout-success">Success! Check your email for magic link to sign-in.</div>
</div>
				<script src="/assets/js/global.js?v=75cfb778a8"></script>
		<script src="/assets/js/pb.js?v=75cfb778a8"></script>
		<script src="/assets/js/pb-anim-1.js?v=75cfb778a8"></script>
		<script src="/assets/js/pb-anim-2.js?v=75cfb778a8"></script>
		<script src="/assets/js/pb-anim-3.js?v=75cfb778a8"></script>
		
	</body>
</html>
