Portfolio Presentation Guide¶
How to turn 13 months of work into a 45-minute conversation that results in an offer.
Your portfolio exists in two states: the static artifacts (GitHub repos, HuggingFace models, blog posts) and the live presentation you give in an interview. Both must be excellent, and they are different skills. The static artifacts prove competence to someone browsing your profile at 11 PM. The live presentation proves competence to a technical interviewer who is actively trying to stress-test your understanding. This guide covers both, with specific attention to the failure modes that derail otherwise strong candidates.
The Portfolio Walkthrough Script¶
The standard interviewer request is: “Walk me through your portfolio / side projects / what you’ve been working on.” You have approximately 8 minutes before they start interrupting with questions. Use this structure:
The Opening (90 seconds)¶
State your arc, not your inventory. Not “I built 8 projects” — that’s a list. Instead:
“Over the last 13 months, I rebuilt my ML practice from first principles — starting from linear algebra and implementing things like PCA and gradient descent by hand, through to fine-tuning a 7B LLM and deploying a full production ML pipeline with drift monitoring. I want to show you two or three pieces that are most relevant to this role, but I’m happy to go deep on any of them.”
This accomplishes three things: establishes the progression arc, signals depth (hands-on implementations, not tutorials), and gives you control over which rungs you demo first.
The Anchor (3 minutes)¶
Pick your strongest rung for the specific role. Lead with that one. Show it, don’t describe it. Have the GitHub repo open. Have the live demo running in a browser tab. Have the MLflow dashboard ready. The anchor rung should be:
For applied ML / MLE roles: Rung 6 (Production ML System) — shows you can ship
For LLM / NLP roles: Rung 5 (LLM Engineering) — shows you can work at the frontier
For research-adjacent roles: Rung 7 (Paper Reproduction) — shows you can engage with literature
The Bridge (2 minutes)¶
Connect the anchor to a second rung that demonstrates a different dimension. Example: “The production system builds on top of the fine-tuned model I built in Month 10 — let me show you that briefly, because the deployment of the fine-tuned model has some interesting latency tradeoffs I solved…”
The Invitation (30 seconds)¶
End by opening the conversation: “Those are the two I’m most proud of in the context of this role — I have five other public artifacts covering everything from backprop from scratch to paper reproductions, so happy to go wherever is most useful for you.”
How to Present Each Rung¶
Rung 1 (Math From Scratch)¶
What to show: The eigendecomposition visualization and optimizer trajectory plots — these are the most visually convincing. What to say: “I built PCA and four optimizer variants using only NumPy — no sklearn, no autograd. The reason I started here is that I wanted to make sure I understood what the library calls were doing before I used them. The bias correction in Adam is a good example — most tutorials skip it, but here’s why it matters in the first steps of training…” What they’ll ask: “Why does Adam use bias correction?” Answer this cold.
Rung 2 (Classical ML Battle)¶
What to show: The post-mortem document. Specifically: the model comparison table (CV scores), the feature importance analysis, the Optuna optimization curve. What to say: Focus on one non-obvious finding from your EDA and how it changed your modeling approach. The rank is a datapoint, not the story. What they’ll ask: “How did you prevent data leakage in your cross-validation?” Walk through the KFold target encoding setup.
Rung 3 (Deep Learning From Scratch)¶
What to show: The loss convergence curve and the gradient verification test passing.
What to say: “I implemented the full backward pass by hand — here’s the backward() method for the attention/linear layer, and here’s the test that verifies it against PyTorch autograd’s numerical gradient check.”
What they’ll ask: “Derive the gradient of cross-entropy with softmax.” Write it out. No notes.
Rung 4 (Transformer Lab)¶
What to show: Model card on HuggingFace. Sample outputs. Training curves. The blog post.
What to say: Lead with the “something that surprised me” finding from your blog post — it shows you ran your own experiments rather than following a tutorial.
What they’ll ask: “Explain the attention mechanism and why the sqrt(d_k) scaling term is there.” Answer without looking it up.
Rung 5 (LLM Engineering — Hard Gate)¶
What to show: Live demo first. Have it running. Show an input/output. Then: HuggingFace model card with base vs. fine-tuned comparison. Then: RAGAS evaluation table. What to say: “I fine-tuned a 7B Mistral model using QLoRA on [domain task] — here’s why I chose that domain. The RAG system runs over [corpus description]. Here are the RAGAS scores. The interesting finding was…” What they’ll ask: “What is LoRA and why does the rank parameter matter?” Explain: low-rank decomposition of weight updates, rank controls capacity vs. parameter efficiency tradeoff, why r=16 was chosen.
Rung 6 (Production ML System — Hard Gate)¶
What to show: GitHub Actions run history. MLflow experiment comparison UI. Live API endpoint (demo a curl request). Evidently monitoring report.
What to say: Walk through the diagram in your README. “When new data arrives, DVC versions it, the CI/CD pipeline triggers, the model is evaluated against the production threshold, and if it passes, it’s promoted. Here’s what happens when it fails…”
What they’ll ask: “How would you handle model degradation in production?” Walk through: monitoring detects drift → alert triggered → retraining pipeline runs → evaluation gate → promotion if passes → rollback if fails.
Rung 7 (Paper Reproduction)¶
What to show: ANALYSIS.md — specifically the quantitative comparison table and the “what the paper didn’t say” section. What to say: “I reproduced [paper] from the methods section before reading the code. My results matched to within 2-3% on [metric]. The most interesting finding was an implementation detail the paper didn’t specify — [specific detail]. I ran one extension experiment testing…” What they’ll ask: “How did you validate your implementation against the paper?” Explain the incremental validation approach: verify individual components first, then assembled system.
Rung 8 (Technical Writing)¶
What to show: Your most-read or most-commented post. The engagement evidence (screenshot of comments, newsletter mention if applicable). What to say: “I’ve been writing publicly about what I’m building throughout the 13 months — here are the three posts that got the most practitioner engagement. The reason I write is…” What they’ll ask: Usually nothing — writing ability is already demonstrated and interviewers rarely probe it directly. But if they do: discuss one technical concept from your writing.
Handling “I Don’t Have X”¶
If an interviewer asks for something you can’t show, redirect to equivalent evidence:
Question |
Redirect |
|---|---|
“Do you have production experience?” |
→ Rung 6: “I built a complete production pipeline with DVC, MLflow, FastAPI, CI/CD, and Evidently monitoring. Let me show you.” |
“Have you worked with large language models?” |
→ Rung 5: “I fine-tuned a 7B model with QLoRA and built a RAG system with RAGAS evaluation. Here’s the demo.” |
“Can you read research papers?” |
→ Rung 7: “I reproduced [paper] independently and found these discrepancies with the paper’s stated results.” |
“Do you know MLOps?” |
→ Rung 6: walk through the architecture diagram. |
“Can you work with transformers?” |
→ Rungs 4 and 5: show both. |
Do not say “I don’t have that” and stop. Every rung maps to a category of question. Know the mapping.
LinkedIn Profile Structure¶
Your LinkedIn profile after Month 13 should be structured as follows:
Headline: ML Engineer · [Current Role at Zoho] · Builder: transformers | LLM fine-tuning | production ML systems
(Never use “aspiring” — you are not aspiring, you are doing.)
About section (500 words max):
1 paragraph: what you do now and what you’ve built
1 paragraph: the 13-month arc and what it means (do not use “passion” or “journey”)
1 paragraph: what you’re looking for and what you can offer
Links: GitHub, HuggingFace, blog/Substack
Featured section: Pin exactly 3 items:
Your most impressive live demo (Rung 5 or 6)
Your highest-engagement blog post
Your GitHub profile
Experience section: For your Zoho role, include: specific ML systems you built or contributed to, metrics where available, technologies used. Do not just list responsibilities.
GitHub Profile README¶
Your GitHub profile (github.com/yourusername/yourusername repository) should contain:
# [Your Name]
Applied ML Engineer @ Zoho · Python · PyTorch · HuggingFace · MLOps
## 📌 Portfolio (8 Rungs, 13 Months)
| Rung | Project | Signal |
|------|---------|--------|
| 1 | [ML From Scratch](link) | PCA + Optimizers in NumPy |
| 2 | [Classical ML Battle](link) | Kaggle top X% + post-mortem |
| 3 | [DL From Scratch](link) | Backprop implemented by hand |
| 4 | [Transformer Lab](link) | nanoGPT / ViT fine-tune |
| 5 ⚠️ | [LLM Engineering](link) | QLoRA fine-tune + RAG + live demo |
| 6 ⚠️ | [Production ML System](link) | DVC + MLflow + CI/CD + monitoring |
| 7 | [Paper Reproduction](link) | Independent implementation + analysis |
| 8 | [Technical Writing](link) | 5 posts, [N] subscribers |
⚠️ = Hard Gate rungs
## 📝 Latest Writing
- [Post Title](link) — *Platform, Date*
- [Post Title](link) — *Platform, Date*
## 🛠 Currently
Building: [current project] · Reading: [current paper]
Keep this README updated. A stale “currently building” section signals you stopped growing.
HuggingFace Profile Setup¶
Your HuggingFace profile at huggingface.co/yourusername should have:
Profile picture and bio (same as GitHub bio, consistent identity)
All models from Rungs 4 and 5 uploaded and public
All Spaces demos from Rung 5 listed and functional
Organization affiliation if applicable
Model names should be descriptive: yourusername/mistral-7b-qlora-domain-taskname not yourusername/my_model_v2.
Personal Website: Worth It or Not?¶
Worth it if: You are willing to maintain it (update it at least quarterly), you have a domain name that is professional, and you will link to it from LinkedIn and GitHub.
Not worth it if: You’ll build it once and let it decay with broken links and outdated project descriptions. An outdated personal site is worse than no personal site.
Minimum viable setup: Buy yourname.dev or yourname.tech (~$10/year). Use Astro or Hugo for a static site. Deploy free on Vercel or Cloudflare Pages. 3 pages: Home (who you are, links), Projects (your 8 rungs with descriptions), Writing (your blog posts). Do not spend more than 2 weekends on this.
Return to README.md · Previous: 08_rung_8_technical_writing.md · Next: 10_portfolio_timeline.md