Personal brand website for a B2B sales executive transitioning into tech sales
Kevin Lam, a B2B sales executive with 8+ years of experience, wanted to transition into tech sales and needed a professional online presence to stand out to recruiters. He had an existing WordPress site that was slow and difficult to update, plus an MIS background from San Jose State University. This became a dual opportunity: migrate his portfolio from WordPress to a modern stack while pair programming with him through every feature—giving him both a polished product and renewed technical confidence to discuss in interviews.
Migrate Kevin's portfolio from WordPress to Next.js, expanding it with detailed case studies, analytics integration, and a deployment strategy he could maintain. Use pair programming to rebuild his technical fundamentals while integrating Sanity CMS with GROQ—chosen over Tina CMS because of its superior cross-references, reverse lookups, and growth potential. GROQ's SQL-like syntax made it approachable for Kevin given his MIS database coursework, and Sanity's intuitive Studio interface meant he could manage content independently without deep technical knowledge.
Conducted discovery sessions to understand Kevin's career goals, target audience (tech recruiters), and current site pain points with WordPress
Migrated existing content from WordPress, restructuring it for better storytelling and SEO
Pair programmed project initialization with Next.js and TypeScript, walking through ecosystem changes since his college days
Designed personal brand visual identity collaboratively, teaching component-based thinking in React
Built responsive layouts with Tailwind CSS, connecting utility-first CSS to his HTML/CSS background
Evaluated Tina CMS vs Sanity CMS—chose Sanity for cross-references, reverse lookups, better account management, and growth potential despite Tina's visual editing appeal
Integrated Sanity CMS with GROQ queries, teaching Kevin how GROQ's syntax resembles SQL from his database coursework
Implemented PostHog for user behavior analytics and Google Analytics for traffic insights
Created compelling case studies showcasing his sales achievements with metrics-driven storytelling
Set up deployment pipeline on Vercel with preview environments, explaining CI/CD workflows
Configured custom domain, SSL, and performance monitoring
Built documentation so Kevin could continue maintaining and updating the site independently
Supported Kevin through consulting discovery calls and stakeholder negotiations for his sales work
Kevin received 3x more recruiter outreach within first month of launch
Site ranks on first page of Google for 'Kevin Lam sales' and related searches
Kevin regained confidence in technical discussions, able to speak credibly about web technologies in interviews
PageSpeed score of 98 demonstrates technical quality to recruiters viewing source
Kevin can now update content and make minor code changes independently
Project became a talking point in interviews, showcasing Kevin's initiative and technical aptitude
MVP, stretch goals, and future vision
Development phases and milestones
Personal portfolio website for Kevin Lam
Complete portfolio website with project showcases
Common questions about this project, answered in STAR format
Tell me about a time you helped someone learn a new skill.
Key Takeaway: Teaching technical concepts works best when you identify existing mental models and build bridges from there—this developer understood class lifecycles, so connecting hooks to that foundation accelerated learning dramatically.
Describe a project where the process was as important as the outcome.
Key Takeaway: A codebase that the team can't maintain is technical debt from day one. The 'right' architecture is the one your team can actually work with—not the theoretically optimal one.
How do you adapt your communication style for different audiences?
Key Takeaway: Communication isn't about dumbing things down—it's about finding the translation layer between different mental models. Engineers think in systems, designers in flows, PMs in metrics. Good facilitation makes those perspectives compatible.
Quick answers to 'Why did you choose X?' questions
Kevin wanted to speak credibly about technology in tech sales interviews. Learning the current industry standard—not a simplified alternative—gave him relevant talking points. Plus, TypeScript's static typing connected well to his C/C++ background from San Jose State, making it easier to learn than dynamic JavaScript.
We evaluated both for Kevin's specific needs. Tina CMS has excellent visual editing and Git-backed content, but Sanity won on: (1) Cross-references—Kevin's case studies needed to link to skills, companies, and testimonials; (2) Reverse lookups—showing which case studies use which skills; (3) Better account management for a single-user portfolio; (4) Growth potential if Kevin's site expands; (5) Metrics dashboards in Sanity Studio. Tina's visual editing was appealing, but Sanity's structured content model better served Kevin's interconnected portfolio content.
GROQ's syntax resembles SQL, which Kevin learned in his MIS database courses at San Jose State. Queries like *[_type == 'caseStudy'] felt familiar compared to his old SELECT * FROM case_studies memories. For a personal portfolio with a non-developer maintaining it, teaching something that connected to his existing mental model made more sense than GraphQL—which I'd use for a developer like Sean who would benefit from the industry-standard transferable skill.
Used driver-navigator with Kevin driving most of the time. Started each session reviewing what we'd built previously, explained the goal for the session, then coded together with lots of 'what do you think should happen here?' questions. Ended with Kevin summarizing key concepts. This kept him active rather than passive.
Created explicit bridges to his San Jose State background: 'Remember classes in C++? Components are similar—encapsulated, reusable units.' Avoided jargon when possible, and when I used it, immediately explained it. Focused on concepts over syntax—once Kevin understood the 'why', the 'how' followed more easily.
Built progressively simpler documentation as we went—not technical docs, but 'how to do X' guides written for Kevin specifically. Had him make real updates during our sessions so the process became familiar. Sanity Studio's intuitive interface made this easier than expected—Kevin could navigate the content structure visually and GROQ queries he'd written made sense to him because of the SQL parallels. Kept the codebase simple enough that Kevin could read and understand it.
Every decision has costs — here's how I thought through them
Kevin's goal wasn't just a website—it was to re-engage with technology. Learning current best practices made his technical background a talking point rather than a footnote.
The website was a vehicle for learning, not just a deliverable. Kevin's renewed technical confidence is more valuable than a faster launch.
Building from scratch taught Kevin how pieces fit together. Templates hide complexity; we wanted to understand it.
For a portfolio with interconnected content (case studies linking to skills, companies, testimonials), Sanity's relational model was worth the tradeoff. Kevin's SQL background made GROQ feel familiar, and teaching him something niche was acceptable since he's not pursuing a dev career—he just needs to maintain his own site.
The hardest problems I solved on this project
Started with concepts he knew from his MIS coursework (HTML/CSS, basic programming logic) and built bridges to modern equivalents
Drew parallels: 'TypeScript interfaces are like the structs you learned in C', 'npm is like package managers you might remember'. Pair programmed everything so he saw concepts in context rather than abstract tutorials
Lesson: Rusty developers aren't beginners—they have mental models to build on. Honor their existing knowledge while updating it.
Conducted a mini brand workshop, teaching Kevin about personal branding for tech while gathering design direction
Created a simple but professional design system together. Used high-quality stock imagery strategically while planning for future professional photos
Lesson: Constraints drive creativity. Limited assets forced us to focus on typography, whitespace, and content quality.
Identified which parts were best for learning vs. where I should lead to maintain quality and momentum
Kevin drove on components and content areas where mistakes were recoverable; I led on architecture and critical path items while explaining decisions
Lesson: Mentorship on real projects requires intentional task allocation—not everything is equally suited for learning.
Drew on Kevin's sales training—he understood the difference between bragging and demonstrating value
Framed achievements in terms of business impact with specific numbers, letting metrics speak for themselves. Used testimonials to add third-party validation
Lesson: Sales professionals often have better instincts about self-presentation than developers—leverage their expertise.
Want to discuss this project?