Sell Your Skills With One Small Project
A resume lists claims. A deployed demo is evidence. When I want to show that I can do something, I build a tiny project around that one skill, ship it to a public URL, and write a README that explains the decisions.
This post is the pattern I use to do that.
The idea: one skill, one demo
The biggest mistake I see in portfolio projects is scope creep. A "simple search demo" turns into a full app with auth, dashboards, and a database before anything ships. The skill gets buried under features.
I avoid that by picking one skill and one constraint. For this example, the skill is client-side filtering and the constraint is no external libraries.
That means no React, no Lodash, no build tools. Just an HTML file, some data, and a search box.
The demo
Here is the entire project. It fits in one file:
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Skill Proof: Search</title><style>body { font-family: system-ui, sans-serif; padding: 20px; max-width: 600px; margin: 0 auto; }input { padding: 10px; width: 100%; box-sizing: border-box; margin-bottom: 20px; font-size: 16px; }.item { padding: 10px; border-bottom: 1px solid #eee; }</style></head><body><h1>Employee Directory</h1><input type="text" id="search" placeholder="Type to filter names..."><div id="results"></div><script>const data = Array.from({ length: 500 }, (_, i) => ({id: i,name: `Employee ${i + 1}`,role: i % 3 === 0 ? 'Engineer' : 'Designer'}));const list = document.getElementById('results');const input = document.getElementById('search');function render(items) {list.innerHTML = items.map(i =>`<div class="item"><strong>${i.name}</strong> - ${i.role}</div>`).join('');}render(data);input.addEventListener('input', (e) => {const term = e.target.value.toLowerCase();const filtered = data.filter(item =>item.name.toLowerCase().includes(term));render(filtered);});</script></body></html>
That is the whole thing. It demonstrates data generation, DOM updates, and event handling without any framework.
How I deploy it
I push the file to GitHub, then deploy it to a static host like Vercel or Netlify. The exact host does not matter much. What matters is that the code is running somewhere I do not control.
Code on my hard drive is invisible. A live URL proves it works outside my machine.
How I document it
My READMEs follow this shape:
# Skill Proof: Client-Side Search**Live demo:** [URL]**Source code:** [URL]## GoalDemonstrate performant array filtering on 500 records using vanilla JavaScript.## ConstraintNo external libraries.## What I learned- Native `filter` is fast enough for this size of dataset.- Re-rendering the full list on every keystroke is acceptable at 500 items but would need virtualization at larger sizes.
Closing
If you want to prove a skill, build the smallest possible demo that exercises it, ship it, and write down what you learned. One skill. One URL. One note. That is more useful than a feature list no one reads.