AI-Native Development
with a Human in the Loop

Two real projects built with AI tools — both production-deployed, both actively in use. The throughline: AI accelerates execution; product judgment, architecture decisions, and quality standards stay human.

Use Cases
2 Projects
Stack
Full-Stack + HTML/CSS
Time to Ship
<8 Days Each
Status
Live in Production
01 — Portfolio Site Rebuild

From WordPress Chaos to Hand-Built HTML

What started as a platform cost decision became a masterclass in constraints, priorities, and knowing when to scrap and restart.

Where It Started

The portfolio had lived on Format — a polished visual platform built for creatives, at $200 per year. The decision was made to migrate to WordPress, which promised flexibility at lower cost. What WordPress delivered instead was a familiar trap: infinite configuration options and approximately zero of the ones actually needed.

After several rounds of tweaks and screen-share reviews, it was looking decent — not great, but serviceable. Then an offhand comment from a friend changed everything: "I bet Claude could just make you a better one anyway." Famous last words.

The Five-Step Unraveling

What followed was a systematic escalation through every available tool, each one solving part of the problem while introducing a new one.

Step 01
Custom Code Blocks in WordPress

Added custom CSS directly to WordPress pages. Result: styles overrode each other unpredictably. Layout broke in ways that were difficult to trace.

Step 02
Built a Child Theme

Proper approach, wrong outcome. Some pages updated correctly. Others didn't. The site ended up with two navigation bars and two fonts running simultaneously.

Step 03
Claude in Chrome (Opus Model)

Used the browser AI extension to edit the live site directly. With 9 case studies in scope and Opus running by mistake, credits ran out in a single session.

Step 04
Switched to Sonnet — Hit the Wall

Continued with Sonnet. Hit usage limits, then hit them again. Pages started losing sections. One footer became two. A case study vanished. A new one appeared — one that had never existed. Content was being hallucinated.

Step 5: The Decision Point

At the end of week two. Staring at the screen. The site was a patchwork of conflicting styles, phantom content, and AI-generated placeholders. Two weeks of iteration on a broken foundation, is still a broken foundation. The choice was simple: revert to where it started, or scrap it entirely and start over.

It was time to scrap it.

The Pivot: Build It by Hand

WordPress was abandoned entirely. The site was rebuilt from scratch — in VS Code, with version control in GitHub, deployed for free on Netlify. Pure HTML, CSS, and vanilla JavaScript. Every pixel, fully controlled.

The rebuild took under a week. But the more interesting outcome was what the constraint forced: a harder question about scope. With every page carrying a real cost in time and effort, content had to earn its place. Nine case studies became six — not because the others weren't worth telling, but because getting six done well mattered more than having nine done poorly. The remaining three are in progress and will be added as they're completed.

Supporting content was cut or deliberately deferred with placeholder pages written to communicate enough that a reader could form a real impression — not encounter a gap.

Portfolio Site Stack

Frontend
HTML CSS & Shared Stylesheet Vanilla Javascript
Backend / Data
Static Site - no backend required Google Analytics
Deploy
Netlify - auto-deploy on push GitHub Desktop
Dev Tools
VS Code + Live Preview extension Claude Cowork (Sonnet) - paired programming

What Actually Mattered

After launch, the measure of success wasn't analytics. It was screen shares — watching real people navigate the site, hearing what landed immediately and what required explanation. That signal is harder to collect and worth far more than any bounce rate dashboard.

Lessons Learned

01
Early Adoption Has Real Failure Modes

Browser-based AI editing, long sessions, multi-page scope — these combinations produced hallucinated content, phantom pages, and compounding errors. Real risks, not theoretical ones.

02
Constraints Clarify Scope

Building by hand forced prioritization that drag-and-drop never would. Every page had to earn its place. The result was a leaner, cleaner site that communicated more clearly.

03
Technical Refresher with Purpose

A hands-on revisit of HTML, CSS, JavaScript, VS Code, and GitHub — from the developer's side, not the "someone else set this up" side. That perspective changes how you think about product work.

04
Know When to Scrap and Restart

Sometimes the most productive decision is the one that looks like going backward. Recognizing a broken foundation early is a skill, not a failure.

The Progression
In under three weeks, I went from hand-coding a portfolio site as a technical refresher, to using agentic coding workflows to build and deploy a full-stack personal CRM — with a real database, authentication flows, and AI-powered features — in under a week.

Same principle, bigger scope: AI handles the velocity. Product judgment stays human.
02 — Atlas Command Center

From Personal CRM to AI-Native Command Center

A full-stack application built production-ready in eight days — deployed to Vercel, actively in use, and expanding with each session.

A Problem Worth Solving

After Boulder Startup Week 2026, the problem was concrete: 40+ meaningful new contacts, context about each person scattered across notes, follow-up commitments made in conversation, and no tool shaped for the actual arc of professional networking.

Off-the-shelf CRMs optimize for sales pipelines — not for the nuanced history of a real professional relationship. For instance "I met Chuck at VentureX Denver in 2024, then again at BSW 2026, and I want to introduce him to someone" — that's the kind of layered context that needed a different model. And the CRM was only part of what was needed. Managing active projects, tracking job applications, setting weekly priorities, running automated calendar generation — one tool to hold all of it.

The decision: Build the tool I actually wanted, and use the process as a forcing function for developing real fluency with AI-native product development.

Technical Stack

Frontend
Next.js 16 (App Router) TypeScript Tailwind CSS 4 Semantic CSS variables
Backend / Data
Supabase (PostgreSQL) Row-Level Security Google OAuth Multi-user architecture
AI / Deploy
Anthropic SDK (Haiku 4.5) Vercel (CD on push) GitHub Desktop
Dev Tools
Claude Code + Cowork CLAUDE.md context files Session log discipline

My AI Development Process

The most important thing learned from this build: AI coding tools are only as good as the context you give them. The process is built around making that context excellent — and maintaining it rigorously across sessions.

Practice 01
Context Architecture First

Before writing any code, build the project's brain. Every project has a structured CLAUDE.md brief — full stack, domain model, route structure, design system rules, naming conventions, architecture decisions. This documentation isn't overhead; it's what makes every new conversation immediately productive.

Practice 02
One Feature Per Session

AI coding tools degrade with broad scope. Keeping each session to one coherent piece of work — "build the contact detail page," "add effort levels to follow-ups" — consistently produces production-quality output. The discipline also forces product clarity.

Practice 03
Quality Bar Is My Responsibility

Nothing ships without review. Every migration gets checked for proper RLS policies. Every component is verified for TypeScript correctness. Every API route is checked for auth guards. When bugs surface, gather evidence first, form a hypothesis, then have a focused debugging conversation.

Practice 04
Treat AI as a Collaborator

The shift from "ask the AI to write code" to "design the feature together, then build it" changes everything. Think through the architecture, the data model, and the edge cases first. AI handles velocity. You bring the product judgment. The combination is genuinely different from either alone.

What Was Shipped — Session by Session

Four focused sessions, May 13–21, 2026. Each feature production-deployed to Vercel at the end of its session.

1
May 13 — Session 1
Foundation: Auth, Design System, Core CRM

Next.js 16 scaffold with Supabase Google OAuth, protected routes, and middleware auth guard. Semantic CSS variable design system for light/dark theming. Contacts page (server-fetched grid, search, full CRUD), Interactions timeline with 9 type-filter pills, CRM Dashboard with stat cards and follow-ups panel, AI Insights panel via Anthropic Haiku. Deployed to Vercel.

2
May 20 — Session 2
Follow-Ups Page + BSW 2026 Seed Data

Full follow-ups CRUD with overdue/upcoming/completed sections and contact search picker. Extended contact profiles with typed resource links (JSONB) and networking groups. Seeded 40 real Boulder Startup Week contacts with interactions and 21 follow-ups — making the CRM immediately useful, not just functional.

3
May 21 — Session 3
Effort Levels, View Toggles + Production Debugging

DB enum for follow-up effort levels (Quick Win / Medium / Big) with By Status / By Effort view toggle and color-coded effort picker. Diagnosed and fixed a production 403 caused by missing GRANT permissions on SQL-migrated tables — not covered by RLS alone. Resolved a Vercel build conflict between middleware.ts and proxy.ts (Next.js 16 uses proxy.ts with a named export).

4
May 21 — Session 4
Contact Detail Page

Full contact detail page at /crm/contacts/[id] — two-column layout with profile sidebar (email, phone, LinkedIn, tags, groups, notes, open follow-ups) and a visual interaction timeline (chronological, grouped by month, 10 interaction types). Quick-add interaction and follow-up modals pre-filled from contact context. Card-to-detail navigation with stopPropagation on action links.

See It in Action

A walkthrough of the Atlas Command Center — covering the CRM dashboard, contact detail pages, follow-ups with effort levels, and the interaction timeline.

Key Insights

01
Context Quality Is the Multiplier

Investing in the project brief and session log before writing code — not during — is the single highest-leverage action. A well-maintained CLAUDE.md turns a 4-hour session into what would have taken a full engineering sprint.

02
Production Standards Matter from Day One

Starting with proper auth, RLS, and TypeScript — even on a personal tool — meant no retrofitting security as the codebase grew. The cost is low early; the payoff is high later.

03
Product Instinct Is Irreplaceable

AI executes at speed, but it can't make product decisions. Knowing which features to build, how they should feel, and what the interaction model should be — that's the human contribution. AI handles the velocity.

04
Rapid Feedback Loops Change How You Think

When you can test a real deployed feature within hours of conceiving it, intuitions get calibrated fast. Eight days of building taught more about what actually works in a productivity tool than months of thinking about it would have.

What's Next
This project is ongoing. Each session adds a new capability.
Job Applications Page — full pipeline view (Saved → Applied → Screening → Interviewing → Offer → Hired/Rejected)
Special Events section — event notes, travel goals, and speaker tracking
Chief of Staff schedule — prioritizing upcoming work in timed blocks
Business card OCR — 12 images processed directly into contacts
LinkedIn connections import — bulk import and tag from CSV export
Google Calendar integration — sync follow-ups and project milestones
Projects page — full CRUD with project types (fractional, pro-bono, part-time, full-time, sunset) and status tracking