One Resume Is Not Enough
15 years across IC and leadership roles. No single resume captures it. So I built a multi-profile YAML system that generates 16 portfolio variants from one codebase.
It Always Bothered Me
It always bothered me that you can only upload a single resume. Fifteen years across IC and leadership, full-stack and platform, AI and infrastructure. No single page captures it. Every application is a compromise.
You apply for an AI role and hide your management experience. Apply for a leadership role and downplay your IC depth. The facts don't change. The framing does. Different jobs need different stories from the same career.
I'd spent years doing this manually. Copy the master resume. Delete half of it. Reword the other half. Reorder the skills. Adjust the summary. Save as tyler-wall-resume-v47-ai-role-final-FINAL.docx. Repeat for the next application.
The frustration isn't that resumes are too short. It's that careers aren't linear. Mine branches. An AI engineer who managed teams. A platform lead who writes TypeScript. An engineering manager who still ships code. One document can't hold all of that without turning into a mess.
What If a Resume Was a Web App?
Web content should be fully dynamic. Customized per viewer. Previously that required massive engineering teams and months of work. AI changed the cost equation completely.
So I built it. One source of truth for every fact about my career. Sixteen different lenses to view it through. Each one tells a true story. Just a different one.
How Does the Multi-Profile System Work?
The portfolio uses a single TypeScript file (resume-base.ts) containing all career data, combined with 16 YAML profile configurations. Each profile controls hero variant, accent color, skill ordering, widget layout, chatbot personality, and resume download content. A resolver merges the base data with profile config at build time, producing 16 distinct portfolio pages from zero duplicated content.
Everything starts in resume-base.ts. Every job, every metric, every skill. One file. The profiles don't contain content. They contain instructions for how to present it.
Here's what a profile looks like:
slug: ai-engineer
name: AI Systems Architect
content:
title: "AI Systems Architect | Cognitive Infrastructure"
tagline: "Building Constrained Autonomous Systems"
experience:
order:
- trw-framework
- unicity-staff
- butcherbox-principal
exclude:
- ocsix
- riiviva
skills:
featured:
- name: COGNITIVE_ARCHITECTURE
level: 95
- name: MODEL_CONTEXT_PROTOCOL
level: 93
design:
accentColor: "#22d3ee"
heroVariant: terminal
engine: transformer-llmThe order array controls which jobs appear and in what sequence. The exclude array hides roles that aren't relevant. The overrides section (trimmed here) rewrites achievement bullets to emphasize different aspects of the same work.
Same facts. Different lens. The AI engineer profile leads with agent systems and migration automation. The engineering manager profile leads with team growth and delivery metrics. The platform lead profile leads with infrastructure and API design. All true. All from the same base file.
Same facts. Different framing. Zero fabrication.
What Changes Per Profile?
Each profile controls the entire experience. Not just which jobs show up.
Hero variant. Some profiles open with a terminal-style hero. Others use a minimal layout or a bold statement. The component is selected per profile.
Accent color. Cyan for the default. Emerald for engineering manager. Amber for platform lead. The color flows through every element on the page, including the canvas engine running behind it.
Chatbot personality. The AI assistant knows which profile you're viewing. Ask it about my experience on the AI engineer profile and it emphasizes agent systems. Ask on the engineering manager profile and it talks about team scaling. Same knowledge base, different emphasis.
Resume download. Each profile generates its own PDF. The AI engineer resume highlights different achievements than the platform lead resume. Both pull from the same source.
The concept is similar to how content personalization works at scale — different audiences get different views of the same underlying data. I just applied it to a career.
Per-Job Profile Generation
The profile system opened a door I didn't expect. Per-job-description profile generation.
Paste a job description. The system analyzes the requirements, maps them to my experience, and generates a complete profile in minutes. Hero variant, skill ordering, achievement emphasis, accent color. A portfolio page built specifically for that role.
I built a RAG database from my interview transcripts. The chatbot can reference specific answers I've given about specific projects. ATS-optimized resume downloads pull the right keywords for each application.
This isn't a portfolio anymore. It's a career platform.
See It Live
You're viewing one right now. Every profile on this site is a different perspective on the same career.
Try switching between them. The default profile is the broadest view. The AI engineer profile goes deep on agent systems. The platform lead profile emphasizes infrastructure and API design. Look for the profile selector in the navigation.
The engines behind each profile shift too. Different backgrounds, different colors, same physics.
Fifteen years of work used to fit on one page. Now it fills sixteen. Each one true. Each one different. Each one built from the same source file that I update once.
I stopped choosing which parts of my career to erase. I built a system that doesn't make me choose.
In This Series
- One Afternoon, 23 Backgrounds — The 23 canvas engines behind every page
- One Resume Is Not Enough — How YAML drives 16 portfolio variants
- Text Is Not Enough — The profile-aware AI chatbot
- Why Everything Is Glass — The glassmorphism design system
- Ask ChatGPT Who Tyler Wall Is — Infrastructure and AI discoverability
Frequently Asked Questions
How many profiles exist?
Sixteen published profiles. Four archetypes (default, AI engineer, platform lead, engineering manager), six company-targeted variants, and six role-specific variants. Each one filters and reframes the same base data for a different audience.
Can you generate a profile from a job description?
Yes. Paste a JD, and the pipeline generates a YAML config with hero variant, skill ordering, accent color, chatbot personality, and ATS-optimized resume PDF. The entire profile builds in minutes from one command.
Does every profile use the same resume data?
Yes. One resume-base.ts file holds every job, metric, and skill. Profiles filter, reorder, and reframe that data — they never duplicate or fabricate. If I update a metric in the base file, all 16 profiles reflect it automatically.