Back to homepage
Process · AI-Assisted Development · 2024–2025

Building
Mestizen
Studio.

Role Designer · Developer · Director
Scope Design system · Multi-page website
Approach Claude + my own HTML/CSS/JS
Deployed on GitHub · mestizen.com
Claude (Anthropic) GSAP 3 ScrollTrigger Vanilla HTML/CSS/JS GitHub Figma Cursor
Overview

From blank canvas to a full design studio website.

Design System Multi-page Architecture ES / EN Case Studies Service Pages

Mestizen Studio needed a website that actually reflected what the studio stood for — multicultural, opinionated, and polished. Not a template. Not a Webflow starter. Something that felt genuinely built, with real craft behind it.

The challenge: I had the design instincts and front-end fundamentals, but building a complete multi-page system from scratch — with animations, a bilingual architecture, and a full design system — at the speed I needed meant working differently. I used Claude as my coding partner throughout.

This is the story of how that process actually worked: where I set the creative direction and made every design decision, where I used AI to accelerate the build, and where I jumped back into the code myself to get things exactly right.

"Claude didn't design the site. I did. Claude helped me build it faster than I could alone — and I knew enough to fix it when it got things wrong."

— Carlos, Founder & Lead Designer, Mestizen Studio
The Process

How I actually worked.

Four distinct phases — each with a clear human/AI split. The creative decisions were always mine. Claude handled the heavy lifting of code generation.

01

Design Vision & Tokens

Set every creative decision first. Color palette, typography pairing, spacing system, animation philosophy, brand personality. This happened in Figma and in my head — not in Claude.

Figma · Design Decisions · Brand
02

Landing Page as Foundation

Built the homepage first as the design system in motion. Every token, animation pattern, and component pattern was established here before expanding to service and case study pages.

HTML · CSS · GSAP · Claude
03

Code, Review, Fix

Claude would generate. I'd review in the browser, spot visual problems or structural issues, then either correct Claude's output with precise instructions — or fix it directly in the code myself.

Cursor · Code review · Iteration
04

Scale the Architecture

Once the homepage was solid, expanded to service pages (Webflow, Shopify, UX/UI, Brand), case study pages per project, and a full Spanish translation under /es/.

Multi-page · ES/EN · GitHub
01 — Design System

Tokens before pixels.
System before pages.

Before writing a single line of code, every visual decision was locked down. The design system became the brief I gave Claude for every subsequent page.

Color Tokens

Mint
Dark
Purple
Coral
Yellow
Cream
Services
Work
--mint #00F5A0
--dark #060626
--purple #7B2FBE
--coral #FF6B6B

Typography System

Display — Bricolage Grotesque
Creativity
Without Borders.
Body — Manrope
We blend multicultural thinking with sharp strategy to build brands that actually stand out.
--text-hero clamp(3.5rem, 8vw, 7rem)
--weight-black 800
--tracking-tight -0.03em
--leading-none 0.95

Spacing & Radius

--radius-pill 100px · buttons
--radius-lg 20px · cards
--radius-xl 24px · why-visual
--section-pad 7rem 4rem

Animation Philosophy

All motion is purposeful and subtle. GSAP handles entrance animations and ScrollTrigger sequences. CSS handles loops and micro-interactions.

Hero entrance power3.out · stagger
Scroll reveals y 60→0 · opacity · 0.9s
Float shapes sine.inOut · yoyo · ∞
Nav morph cubic-bezier · pill at 60px
Cursor glow mousemove · power2.out

Key principle: The design system was documented as DESIGN_SYSTEM.md and tokens.css in the project repo. This became the single source of truth I fed into Claude as context for every page I built — keeping every file consistent without having to repeat myself on every prompt.

02 — Landing Page

The homepage was the
whole system in one page.

The landing page wasn't just the homepage — it was the proving ground for every token, every animation, every component pattern. If something worked here, it worked everywhere.

I specified the section order, content strategy, and visual hierarchy. Claude generated the structural HTML and CSS. I reviewed, iterated, and refined — section by section.

🌿

Hero

Dark bg · floating SVG leaves · blob canvas · GSAP entrance · cursor glow

--dark

Marquee

CSS infinite scroll · mint background · service keywords

--mint
M

About

Cream bg · 2-col grid · about cards · animated entrance

--cream

Services

Dark alt bg · 3-col card grid · hover shimmer · GSAP stagger

#0f0f1e
01

Why Mestizen

Dark bg · 2-col · numbered list · purple gradient visual card

--dark

Work Grid

12-col editorial layout · 4 gradient work cards · hover scale

#0a0a1a

Manifesto

Mint bg · staggered scroll reveal · Bricolage Grotesque large

--mint

CTA + Footer

Dark bg · radial glow pulse · Calendly integration

--dark
mestizen.com
Branding
UX/UI Design
Webflow
Shopify

mestizen.com — final homepage

03 — Technology

The stack I chose — and why.

Every technology decision was intentional. I chose tools I understood well enough to direct and debug — not just use as black boxes.

GSAP 3 + ScrollTrigger

Animation engine

GSAP was the clear choice for animation — battle-tested, performant, and expressive. I knew its API well enough to specify exactly what I wanted, so Claude could write the animation code precisely.

ScrollTrigger handled all scroll-based reveals. I used data-reveal attributes on elements as the trigger pattern, keeping the JS loop minimal and clean.

// Scroll reveals — pattern set once, applied everywhere
const reveals = document.querySelectorAll('[data-reveal]');
reveals.forEach(el => {
  gsap.fromTo(el,
    { opacity: 0, y: 60 },
    { opacity: 1, y: 0, duration: 0.9,
      ease: 'power3.out',
      scrollTrigger: { trigger: el, start: 'top 82%' }
    }
  );
});

Claude (Anthropic)

AI coding partner

I used Claude as my coding partner — not my designer. I'd brief it with the design system context, the section I was building, and specific visual requirements. It would generate the HTML/CSS structure.

The feedback loop was the most important part: I'd load the output in the browser, identify issues (layout breaks, wrong spacing, SVG not rendering), then either correct Claude with precise instructions or fix it in the code directly. My HTML/CSS knowledge meant I could always tell why something was wrong.

/* Example prompt structure I used */
"Based on DESIGN_SYSTEM.md, build the #services
section with a 3-col card grid. Each card needs
the service-icon, h3, p, and service-tag classes.
Use data-reveal on each card. Do not modify
any CSS outside the #services section."
{ }

Vanilla HTML / CSS / JS

No frameworks, no build tools

No React, no bundler, no dependencies beyond GSAP. Deliberately. A vanilla codebase stays transparent — I can open any file and understand it completely. It deploys instantly to GitHub with zero config.

CSS custom properties carried the design system. Every spacing value, color, radius, and transition lived in :root from day one. When I needed to tweak the dark background color across 12 files, I changed one token.

/* Design tokens in :root — the system's source of truth */
:root {
  --mint: #00F5A0;
  --dark: #060626;
  --purple: #7B2FBE;
  --radius-lg: 20px;
  --radius-pill: 100px;
  --section-pad: 7rem 4rem;
}

Cursor + GitHub

Editor + deployment

Cursor as the IDE kept DESIGN_SYSTEM.md always in context when writing code — an AI-assisted editor that knew the project's rules without me having to re-explain them every session.

GitHub gave instant deploys from Git with zero infrastructure overhead. The multi-language architecture (EN at /, ES at /es/) was handled purely through folder structure — no server-side routing required.

/* File structure — clean multi-page architecture */
mestizen.com/
├── index.html
├── services/webflow.html
├── services/shopify.html
├── work/loveo/index.html
├── work/realport/index.html
├── es/index.html
├── css/styles.css
└── js/main.js
04 — Workflow

The feedback loop that made it work.

The real skill wasn't prompting Claude — it was knowing how to review the output and close the gap between what was generated and what I actually wanted.

1

Brief Claude precisely

Section ID, component names from the design system, exact CSS classes to use, what not to touch. The more specific, the less cleanup.

2

Generate & load in browser

Copy the output into the file and open it with VS Code Live Server. Look at it — don't just read the code.

3

Identify what's wrong

Spacing off? SVG misaligned? Animation fires at the wrong point? I could diagnose this because I understand CSS layout and GSAP.

4

Fix or re-prompt

Small issues: fix directly in the code. Structural problems: tell Claude exactly what's wrong and how to fix it. Never just "this is wrong."

5

Commit & move on

When a section looks and behaves exactly as designed, commit to Git. The next section gets the same treatment from a clean base.

Where I intervened directly
  • SVG asset paths (relative vs absolute)
  • GSAP timeline sequencing & delays
  • Nav pill morph transition properties
  • Mobile responsive layout fixes
  • ES asset path adjustments (../assets/)
  • Calendly widget integration
Where Claude accelerated the build
  • Full section HTML/CSS from brief
  • Spanish translations of all pages
  • Inline SVG illustrations (leaves, blobs)
  • Responsive breakpoint CSS
  • Component variations (service cards, work grid)
  • DESIGN_SYSTEM.md documentation
05 — Outcomes

What got built.

The final site deployed to GitHub — multi-page, bilingual, fully animated, zero frameworks.

8+
Full pages built & deployed (EN + ES)
2
Languages — English & Spanish under /es/
1
Unified design system across every page
0
Frameworks or build tools — pure vanilla
Service Pages
→ Webflow Design & Dev → Shopify Ecommerce → Brand Identity → UX/UI Design
Case Studies
→ RealPort (Fintech) → Loveo (D2C Brand) → DMG (Ecommerce) → Kärrecho (Brand)
Infrastructure
→ DESIGN_SYSTEM.md → tokens.css → COMPONENT_INVENTORY.md → Shared css/styles.css + js/main.js
Learnings

What this project taught me about working with AI.

Not about replacing skill. About multiplying it.

🎯

Design decisions must come first

The moments Claude produced the most useful output were when I'd already made every design decision before prompting. Tokens, layout intent, component names, animation behavior — the more decided I was, the better the generation.

🔍

You need to know what wrong looks like

AI code rarely looks broken — it looks reasonable. Catching the subtle difference between "works in the browser" and "looks exactly as designed" required real CSS and layout knowledge. This skill gap is what separates good AI-assisted work from mediocre output.

📐

A design system is the best prompt

Feeding DESIGN_SYSTEM.md as context to every conversation meant Claude always knew the color tokens, the type scale, the spacing system. I never had to re-explain the palette. The document became the brief.

Surgical edits beat full rewrites

The most reliable pattern: ask Claude to change only one thing at a time. The more open-ended the task, the more likely something else breaks. "Only modify the hero section. Do not touch any CSS outside it." Every time.

🌐

Multi-language is surprisingly achievable

Translating 8+ pages to Spanish while updating all asset paths from absolute to relative (../assets/) was tedious work that Claude handled efficiently once I understood the path convention. I reviewed every output, but the heavy lifting was automated.

🛠

Own the code from day one

Every file was mine. I understood what every class did, every GSAP call, every CSS variable. That meant I could debug confidently, add features cleanly, and never feel blocked waiting for AI to fix something I could handle myself.

Let's work together

Want a studio site that
actually looks like the work?

If you're a studio, agency, or creative building their web presence — I can help you build it right. Same approach, applied to your brand.

📅 Book a discovery call Visit mestizen.com →