Kevin Lam Portfolio
A 30-schema content graph modeling an enterprise cybersecurity sales career as a queryable knowledge base
Overview
Role
Solo Engineer
Team
Solo
Timeline
Aug 2022 – Jan 2025
Stack
4 technologies
8 live case studies documenting $12.3M+ in deal value, filterable by role (AE/AM/CSM), deal size, and industry
The Problem
Situation
Kevin Lam is a B2B enterprise Account Executive with $140M+ in career ARR, a FIDO Alliance member, Forbes-featured, who sells FIDO2/WebAuthn/Zero Trust solutions to CISOs and VPs of IT across healthcare, government, financial services, education, and manufacturing. He had no digital presence — no portfolio, no case studies, no way to express the relational complexity of his career: accounts with multiple stakeholders, deals with compliance mappings across five regulatory frameworks (HIPAA, FedRAMP, CMMC, NIST, SOC 2), and quantified outcomes that should cross-reference each other. I built kevintlam.com from scratch as a 30-schema content graph where every concept in Kevin's sales career — accounts, deals, stakeholders, compliance frameworks, buyer personas, sales plays, impact metrics — is a first-class document type with typed references to related concepts.
My Goal
Build Kevin a headless CMS architecture from scratch that models his entire sales career relationally — enabling queries like 'show all healthcare deals above $1M with HIPAA compliance where the CISO was a champion' — while giving Kevin a Salesforce-like editing interface he can maintain independently, daily, without developer support.
My Approach
Designed a 30-schema content graph in Sanity v5 (7,469 lines of TypeScript) where every concept in Kevin's sales career — accounts, stakeholders, deals, compliance frameworks, buyer personas, impact metrics — is a first-class document type with typed relational references, enabling GROQ queries that traverse the full graph
Built 8 live case study pages with full STAR narratives, Recharts data visualizations driven by chartDataset schema, stakeholder maps with role enums (champion/blocker/influencer/economic buyer/technical buyer), deal timelines, and compliance framework mappings across HIPAA, FedRAMP, CMMC, NIST, and SOC 2
Implemented ISR revalidation pipeline: Sanity webhook fires to /api/revalidate on publish, HMAC-validates the signature, extracts document type and slug, calls revalidateTag() to rebuild only affected pages — a case study update rebuilds that page only, not the entire site
Built a dual-purpose interviewAnswer schema with an isPublic boolean — true renders on the About page as a public FAQ, false stays private STAR prep in Studio only. One document, two rendering paths, zero content duplication
Proxied PostHog analytics through kevintlam.com/ingest/* via 3 Next.js rewrite rules to bypass ad-blockers that block 30–50% of technical visitors when analytics load from third-party domains
Built a React Three Fiber 3D world (17 components, 2,076 lines) with CMS-driven zone overlays — the zoneNarrative Sanity schema drives both the 2D site and 3D world; content editors update zone text without touching Three.js code
Pair programmed with Kevin throughout, teaching Sanity Studio and GROQ by connecting to his MIS/SQL background — enabling him to maintain all 30 schema types independently and speak credibly about the architecture in interviews
The Outcome
8 live case studies documenting $12.3M+ in deal value, filterable by role (AE/AM/CSM), deal size, and industry
30 Sanity schema types across 8 business domains — Kevin edits content like a Salesforce record, independently, without developer dependencies
3x recruiter outreach within the first month of launch; site ranks on first page of Google for 'Kevin Lam sales' and related searches
PageSpeed 98 | 292 TypeScript files | ~54K lines | $0/month hosting (Vercel + Sanity free tiers)
Project Roadmap
MVP, stretch goals, and future vision
Project Roadmap
Development phases and milestones
Portfolio Website
Personal portfolio website for Kevin Lam
Website Launch
Complete portfolio website with project showcases
Interview Questions
Common questions, answered in STAR format
Technical Decisions
Why I chose X over Y
Key Trade-offs
Every decision has costs
Challenges & Solutions
The hardest problems I solved
What I Learned
- →A content schema is a domain model first; the CMS is an implementation detail. Modeling Kevin's career as distinct concepts (account, stakeholder, compliance framework) unlocked query power that flat text fields never could
- →Dual-purpose content (isPublic boolean) eliminates drift between private interview prep and public-facing copy — the same STAR answer serves both audiences without duplication
- →Pair programming with a non-developer while building their product accelerates both quality and ownership: Kevin maintains all content independently and can discuss the architecture in interviews because he built it alongside me
- →ISR selective revalidation is worth the webhook complexity — per-page cache invalidation on Sanity publish means Kevin sees changes in seconds without full rebuilds
- →Heavy client bundles are a deliberate product decision, not a failure: Three.js + D3 + Recharts + GSAP make the site unmemorable at a glance impossible, which matters more than Lighthouse scores in enterprise sales hiring
Future Plans
- +Mobile-optimized 3D experience — the Three.js world is currently notably slower on mobile due to the heavy client bundle
- +Private /interview-prep dashboard with full-text search and filtering across all STAR answers by category and case study reference
- +Automated weekly SEO digest: GA4 data → email report showing which case studies and compliance keywords are driving inbound traffic
- +Expand compliance mapping to include EU AI Act and emerging frameworks as Kevin's territory evolves
Next project
T Creative Studio
Want to discuss this project?