EXPERIMENT·PERSONAL BUILD·JUL 2026
Building my portfolio like a product
Designed, built, and shipped a personal portfolio using AI-assisted development—not as a static collection of work, but as a living product system.
Overview
Most portfolios document finished work.
I wanted mine to demonstrate how I work.
That meant the portfolio could not simply be a polished archive of case studies. It needed to show product judgment, structured thinking, attention to detail, experimentation, and the ability to turn an idea into a functioning experience.
I approached the website as a product: defining its audience, clarifying the value proposition, creating a scalable content system, testing interactions across devices, and progressively shipping improvements into production.
AI accelerated the implementation. It did not make the product decisions for me.
Build direction
Preserve journal card hover. Add scroll fade-in. Respect reduced motion.
John Lee | Product Manager
I build customer systems that drive impact and scale.
Growth, commerce, and platform complexity across fintech, loyalty, and travel.
John Lee
Customer systems with impact and scale.
Outcome
+18%
Engagement lift
Experiment
SOXL monitoring agent

The problem
A product portfolio has to serve several audiences at once.
A recruiter may spend less than a minute determining whether the experience is relevant. A hiring manager may want to understand the decisions behind a particular outcome. A product leader may look for evidence of strategic range, technical fluency, and craft.
Trying to satisfy everyone can produce a predictable result: long case studies, repetitive layouts, generic project cards, and too much information competing for attention.
I needed the experience to support both rapid scanning and deeper exploration without turning the homepage into a résumé or reducing complex work to a collection of screenshots.
There was also a second challenge: I had strong product and analytical experience, but I was not approaching the project as a traditional front-end engineer.
The build process needed to let me maintain control over the product while using AI to translate clear direction into working software.
My guiding principles
Show decisions, not just deliverables
Screens can show what was built. They rarely explain why it was built that way.
Each case study therefore emphasizes the challenge, product choices, trade-offs, operating constraints, and measurable outcomes—not only the final interface.
Design for scanning and depth
The first layer of every page should communicate relevance quickly. Supporting detail should be available without being forced on every visitor.
This principle shaped the information hierarchy, project summaries, metric-led sections, navigation, and progressive disclosure throughout the site.
Build a system, not a collection of pages
Every new project should not require inventing a new layout.
Work case studies, Playground experiments, project metadata, navigation patterns, cards, metrics, and responsive behaviours were designed as reusable components with enough flexibility to give each story its own identity.
Use AI for execution, not judgment
Cursor could generate components, refactor layouts, troubleshoot implementation problems, and accelerate repetitive work.
But it still needed explicit direction.
I remained responsible for the audience, hierarchy, interaction model, visual standards, content, acceptance criteria, and the decision about whether an output was actually good enough to ship.
My approach
1.Define what the portfolio needed to communicate
Before focusing on visual design, I defined the underlying product narrative.
The site needed to position me as a product leader with experience across digital platforms, fintech, loyalty, commerce, travel, and emerging AI-enabled workflows.
It also needed to balance two sides of my work:
- Work for structured case studies and business outcomes
- Playground for prototypes, experiments, and ideas I chose to build independently
Separating those experiences allowed the professional work to remain credible and outcome-oriented while giving the more exploratory projects room to feel playful.
2.Create a reusable experience architecture
I developed shared patterns for project heroes, metadata, navigation, metric modules, project snapshots, content sections, related projects, and calls to action.
Work and Playground pages use the same visual family, but they do not behave identically.
Work prioritizes organizational context, decisions, and outcomes. Playground prioritizes the experiment, build process, interaction, and learning.
The distinction made the system more coherent without making every page feel templated.
3.Establish the design language through iteration
The visual system emerged through repeated cycles of direction, implementation, review, and refinement.
I tested typography, spacing, colour, card density, scroll behaviour, motion, light and dark modes, and responsive layouts. Elements that appeared successful in isolation sometimes broke down when placed into the complete experience.
The process was closer to product iteration than a linear design handoff:
Frame the problem → generate an implementation → test it in context → identify the failure → refine the system
4.Translate product direction into build instructions
A major part of the work involved learning how to give an AI coding agent enough context to produce reliable results.
Broad prompts generated broad interpretations. Precise prompts produced better software.
My strongest implementation instructions typically included:
- The user experience objective
- The existing component or pattern to preserve
- Desktop, tablet, and mobile behaviour
- Content and data requirements
- Animation start and end states
- Reusability expectations
- Edge cases and scalability rules
- Explicit acceptance criteria
- Elements that must not change
The prompt became a lightweight combination of a product requirement, design specification, and engineering handoff.
5.Ship continuously
The site was deployed through GitHub and Vercel early rather than being held until it felt complete.
That changed the nature of the project.
Testing in production exposed issues that were difficult to anticipate in a static design: viewport-dependent animations, browser behaviour, responsive card layouts, deployment configuration, custom-domain setup, favicon treatment, and interactions that felt different with real scrolling.
Each release created a more accurate feedback loop for the next decision.
Frame the problem
Define the audience, objective, and experience requirement.
Direct the build
Translate product intent into clear implementation instructions.
Test in context
Review the experience across real content, devices, and screen sizes.
Identify the failure
Determine whether the issue comes from layout, logic, interaction, or unclear direction.
Refine the system
Improve the reusable component or rule instead of patching one screen.
Ship
Deploy the improvement and use the live product as the next feedback loop.
The quality of the output depended on the quality of the direction.
Make the project cards look better and animate them on scroll.
- Inconsistent spacing between cards
- Overlapping cards at wider breakpoints
- Unclear animation end states
- Scroll behaviour breaks on large screens
Uneven spacing and unclear motion states
Refine Work journal cards: preserve hover border accent, add scroll-linked fade-in (opacity 0→1, y 12→0), stagger 80ms, respect reduced motion, keep 2-column grid ≥768px and single column below.
- Spacing matches existing journal rhythm
- Motion tied to viewport entry
- Reduced-motion path verified
- Grid holds at desktop widths
Consistent grid, bounded motion, preserved hover language
What I built
A modular case-study system
The Work section supports stories from Arc'teryx, RBC, Hudson's Bay, and Air Canada while preserving a consistent narrative structure.
Reusable modules allow each case study to feature its most relevant evidence, including product metrics, customer outcomes, platform complexity, strategic decisions, and cross-functional scope.
A distinct Playground experience
The Playground is designed for projects that are smaller, more experimental, or personally initiated.
Rather than presenting them as miniature corporate case studies, each post focuses on what I was curious about, the problem or hypothesis, how I approached the build, what I created, what I learned, and what I would explore next.
This creates room for projects such as an AI market-monitoring agent, a restaurant reservation MVP, interactive portfolio experiments, and future prototypes.
Responsive experiences rather than reduced desktop pages
Mobile was treated as its own interaction context.
Navigation, content ordering, project snapshots, carousels, cards, and calls to action were reconsidered for smaller screens rather than simply compressed.
The goal was to preserve the hierarchy and personality of the portfolio while reducing unnecessary friction.
Motion with a purpose
Animations were used to create continuity, reinforce hierarchy, and make exploration feel more tactile.
The most difficult interactions were not necessarily the most visually complex. Scroll-linked behaviours, stacking cards, and viewport-dependent end states required careful testing because an animation that worked at one screen size could fail at another.
Those failures reinforced an important product lesson: a polished happy path is not the same as a resilient interaction.
A production-ready deployment
The portfolio moved from a local build to a live Vercel deployment connected to a private GitHub repository and custom domain.
The final experience also required the less visible parts of shipping a web product: DNS configuration, environment management, browser assets, metadata, performance considerations, and production debugging.
Shared foundation
Shared project components
Work
- Business context
- Product decisions
- Cross-functional complexity
- Outcomes and metrics
Playground
- Curiosity or hypothesis
- Build process
- Experiment
- Learning
- Next iteration
Responsive design was treated as a change in behaviour, not only a change in width.
- Richer card layout
- Expanded navigation
- Wider editorial rhythm
- Layered visual compositions
- Reduced density
- Simplified grid
- Preserved hierarchy
- Adapted spacing and interaction
- Reordered content
- Stacked modules
- Touch-friendly controls
- Reduced animation complexity
- Prioritized scanning
The role of AI
AI reduced the distance between deciding what I wanted and seeing a functioning version of it.
I used it to:
- Generate and refactor front-end components
- Translate visual references into implementation requirements
- Diagnose responsive and animation defects
- Explore alternative layouts
- Create reusable component structures
- Develop supporting visual assets
- Improve content hierarchy and copy
- Pressure-test edge cases before implementation
But faster generation also created a new failure mode: it became easy to produce more versions without necessarily producing a better product.
The highest-leverage work was often not writing another prompt. It was recognizing why an output felt wrong, identifying the underlying system problem, and describing the correction precisely.
AI made iteration cheaper. Product judgment determined which iterations were valuable.
Key decisions
Treat the homepage as positioning, not documentation
The homepage introduces the breadth of my experience and directs visitors toward the most relevant evidence. It does not attempt to tell every story at once.
Separate professional proof from personal experimentation
Work and Playground share a design system but answer different questions.
Work asks: What outcomes have I delivered in complex organizations?
Playground asks: What do I choose to explore and build when I control the problem?
Prioritize reusable content structures
Adding a fifth or tenth project should not require redesigning the site.
Layouts, card systems, filtering thresholds, content schemas, and project-detail components were considered with future scale in mind.
Preserve personality without sacrificing usability
Hand-drawn elements, transitions, hidden interactions, and playful details make the experience feel personal.
They are used as moments of surprise rather than obstacles between a visitor and the information they need.
What I learned
Direction is now part of the technical skill set
AI-assisted development rewards the ability to define a problem clearly, communicate constraints, recognize quality, and evaluate implementation trade-offs.
Those are product skills, but they increasingly influence the quality of the software itself.
Responsive behaviour must be designed, not assumed
A layout is not responsive simply because its components resize.
Content priority, interaction models, motion, density, and navigation all need to be reconsidered across viewports.
Reusability requires intentional constraints
A component that can support every possible variation often becomes harder to use and easier to break.
The better system was opinionated about common behaviour while exposing only the variations that projects genuinely needed.
Production reveals the real product
Several of the most important improvements emerged only after the site was live.
Real devices, screen sizes, browser tabs, URLs, loading behaviour, and scroll depth exposed issues that were invisible in isolated mockups.
The portfolio will never be completely finished
That is not a flaw.
Like any maintained product, it can evolve as the audience changes, new projects are added, and better ways of communicating the work emerge.
The outcome
The result is more than a place to store case studies.
It is a working demonstration of how I approach product development:
- Start with the audience and the problem
- Create a clear product narrative
- Design reusable systems
- Translate ambiguity into executable requirements
- Test the experience in real conditions
- Learn from failure states
- Ship, observe, and improve
It also gave me a practical environment for exploring where product management, design, engineering, and AI-assisted creation are beginning to overlap.
Key takeaway
Key takeaway
AI helped me build the portfolio faster. Treating the portfolio like a product is what made it worth building.
What's next
The next phase is focused on making the portfolio more observable and more interactive.
Planned explorations include:
- Measuring how visitors navigate between projects
- Understanding résumé views and downloads
- Expanding the Playground with more working prototypes
- Continuing accessibility and performance improvements
- Introducing small moments of surprise and delight
- Product Sprint — satirical endless runner on the play page (live in Playground)
- Developing a faster publishing workflow for future projects
The objective is not to add novelty for its own sake. Each addition should either improve understanding, reduce friction, or reward curiosity.
Tech stack
- FFigma
- CChatGPT
- NNext.js
- RReact
- TTypeScript
- CCSS
- CCursor
- GGitHub
- VVercel
More from the Playground
Experiment
Building Product Sprint
How an over-scoped “Ship It” prototype became a focused pixel-art runner about surviving product chaos—and used 82% of my Cursor model allowance along the way.
Experiment
SOXL market-monitoring agent
A scheduled AI agent that monitors a leveraged semiconductor ETF and delivers structured market updates through Telegram and WhatsApp.
Prototype
Calmo Cafe — a reservation flow that skips the early SaaS bill
I built a branded site and request-to-confirm booking flow for a friend opening a café in Toronto, both to keep him off OpenTable fees before the room was proven and to learn a real stack end to end.
Prototype
Joist Trust Sandbox
Voice-to-invoice for contractors — verified when matching is solid, amber review when it isn’t.