A LinkedIn profile has about 300 words of real estate to make a first impression. You get a headline, a summary, a list of job titles and bullet points, and a skills section that everyone has. It's a form, not a representation.
For most PMs, that's fine. The form communicates the signal. But if the thing you're trying to communicate is that you work differently from most PMs — that you prototype with AI tools, that you can direct a codebase without a developer, that you think in systems — the LinkedIn form actively works against you. It flattens everything into the same template. There's no way to show the reasoning behind the decisions, the technical fluency that shapes the product thinking, or the voice behind the role.
So I built something that could. You're using it right now.
What LinkedIn Can't Show#
LinkedIn is optimised for credentials, not for demonstration. It's useful for signaling employment history and professional network. It's almost useless for showing how you actually work.
Technical fluency.
I can read and reason about code, write specs at API level, prototype features with Claude Code and Cursor, and debug integration issues alongside engineers. LinkedIn lets me list "REST APIs" and "Figma" as skills. Anyone can list those. Showing it is different.
AI-native workflow.
My day-to-day product work involves Claude Code for prototyping, Cursor for exploring codebases, Figma MCP for design context, and custom skills for repetitive tasks. This is how I ship faster than a PM who doesn't have these tools. LinkedIn can't show a workflow.
The decisions behind the work.
Every case study in this portfolio describes a specific product decision — staged KYB onboarding, approval rule engines for informal SME governance, right-sizing a product tour tool, negotiating custom pricing with a developer. LinkedIn shows outcomes. This shows the reasoning.
Voice and brand.
I'm an Egyptian PM based in Dubai, building fintech infrastructure for MENA markets, who prototypes with AI tools and thinks in systems. That sentence doesn't fit in a LinkedIn headline. But a 10-minute interaction with this portfolio communicates it completely.
The alternative to updating my LinkedIn was building something that did what LinkedIn couldn't.
How It Was Built: 3 Days, One Fork, Claude Code#
The Fork Decision
I didn't build this from scratch. That was the first PM decision. Santiago Fernández's open-source portfolio (cv-santiago) had already solved every difficult engineering problem I would have encountered: streaming SSE for the AI chatbot, WebRTC for voice mode, pgvector for semantic search, Langfuse for observability, a complete eval pipeline with LLM-as-judge scoring. Building from scratch would have taken weeks and produced an inferior result for months.
The right call was to fork a well-engineered foundation and direct effort at the part that required me: the content migration, the architectural adaptation for my stack, and the case studies. I'm a PM who works with AI tools. Demonstrating that by spending three weeks reinventing infrastructure that already exists would have been the wrong kind of proof.
What the Migration Actually Looked Like
The fork gave me the architecture. The migration work was everything else — and it was done almost entirely with Claude Code. Four phases over three days:
Phase 1 — Identity migration.
Every reference to Santiago's name, email, location, social links, and domain replaced with mine across 30+ files. Claude Code ran the replacements, I reviewed and corrected edge cases.
Phase 2 — Content migration.
Professional experience, skills, and project data in the i18n translation files replaced with my NymCard, Tamara, Compound, and Dell timeline. The AI chatbot prompt rewritten in my voice.
Phase 3 — AI persona migration.
The chatbot system prompt, voice persona, and eval datasets updated to represent me accurately. 71 evals rewritten to test facts about Tamara, NymCard, Loughborough — not Santiago's iRepair business.
Phase 4 — Infrastructure migration.
Vercel configuration replaced with Netlify (netlify.toml, serverless function migration, CSP header updates). Domain references updated throughout the build pipeline.
The migration itself was a demonstration of the skill being claimed. Every file that Claude Code touched was reviewed, corrected, and directed by product judgment — not just accepted output. The AI does the pattern-matching and mechanical work. The PM decides what's correct.
What Was Built: A Complete Product, Not a Document#
The portfolio is a production system. Not a collection of pages with text about my work — an interactive product with real infrastructure.
AI Chatbot
Claude API with streaming SSE. Speaks in first person as me. Agentic RAG: it searches my indexed case studies before responding, so answers are grounded in actual content rather than hallucinated. 6-layer jailbreak defense. Every conversation is traced in Langfuse.
Voice Mode
OpenAI Realtime API (WebRTC). A spoken conversation with the AI version of me. Voice persona tuned for natural rhythm — not a robotic assistant reading text aloud.
Agentic RAG
Supabase pgvector for semantic search across case study content. The chatbot searches before responding, not after. This is the difference between a grounded answer and a hallucination.
71 Automated Evals
LLM-as-judge evaluation suite running on every deploy. Tests: factual accuracy, persona adherence, safety, RAG quality, boundary handling, multi-turn consistency. Deploy is blocked if any test fails.
Ops Dashboard
Internal observability dashboard showing conversation traces, eval results, cost breakdown, and RAG statistics. The same tooling I'd use to monitor a production AI feature at NymCard or Tamara.
Daily Eval Cron
A scheduled Netlify function that runs the full eval suite nightly, scores recent conversations with Claude, and sends an alert if jailbreaks or quality degradation are detected.
A PM who can build and operate this system has a different relationship with AI-assisted development than one who can describe it in a presentation. The portfolio is the argument.
What This Demonstrates#
The portfolio makes a specific claim: I'm a technical PM who works natively with AI tools, can prototype and ship real systems, and thinks in production — not just in slides.
AI-assisted prototyping is real.
Not "I use ChatGPT." I directed the migration of a complex TypeScript codebase, extended its architecture for a different deployment platform, and added new features — in three days. That's what AI-assisted product development looks like at the PM layer.
Technical fluency without an engineering title.
I understand the architecture of this system well enough to explain it, debug it, and extend it. Not because I wrote every line — because I directed the AI that did, and reviewed what it produced. That's the skill.
LLMOps is not just an engineering concern.
A PM who owns an AI product needs to understand evals, observability, prompt versioning, and cost management. The 71-eval pipeline and Langfuse dashboard aren't engineering additions. They're the product operating correctly.
Eating my own cooking.
I built an AI portfolio to demonstrate AI-assisted product work. The portfolio uses the same AI tools to serve recruiters, hiring managers, and collaborators that I use to ship fintech features. The medium is the message.