Cindy Zhu.
Free guides
Career growth Claude

Build a portfolio project recruiters can click

Hey, it's Cindy ๐ŸŒฑ You commented "PORTFOLIO", so here is the full build: how to get Claude to pick a project that matches the role you actually want.
btw the waitlist for AI System Club is now open! If you're keen on using AI to automate your content, video editing, job search, business or build AI agents, feel free to sign up (only if you want to hehe). Ps. the waitlist gets first dibs:)
๐Ÿ’ก What you need before you start. A Claude account (free is fine), a free Hugging Face account, and Python 3.10 or higher on your machine (Gradio requires 3.10+). No paid tools, no cloud bill, no front-end knowledge. If you have never installed Python, that is the one setup step, and Claude will walk you through it if you ask.
why this works

The gap you are closing

A resume is a list of claims. Every applicant has one, and most of them say roughly the same things. A working link is a claim someone can check in fifteen seconds, which is why it survives a skim that your bullet points do not. It also answers the only question a hiring manager quietly has about a career switcher: can this person finish something and put it in front of a stranger. One small, finished, clickable thing answers that. Three unfinished repos do not.


step one

Let Claude pick the project

Do not pick it yourself. Most people default to whatever project they saw in a tutorial, which is how five hundred applicants end up with the same movie recommender. Give Claude the actual job description and make it reverse-engineer something that maps to it.

๐ŸŽฏ pick my portfolio project
I am trying to move into this role: [paste the full job description, or the role title plus the 5 responsibilities you see repeated across postings]. My background so far is [your current job and the two or three skills you genuinely have].

Suggest 5 small portfolio projects I could build in a weekend that would prove I can do the specific things this role asks for. For each one, tell me: the one-sentence pitch, exactly which requirement from the job description it demonstrates, what data or inputs it needs, roughly how many hours it is, and the single most impressive thing about it that a hiring manager would notice in the first ten seconds.

Rule out anything that needs paid APIs, a dataset I would have to buy, or more than a weekend. Then recommend one of the five and explain in three lines why it is the strongest signal for this particular role.
๐Ÿ’ก Push back on the first answer. If a suggestion feels like a tutorial you have seen before, say "that one is generic, give me three alternatives that would be unusual to see in an application for this role". The unusual-but-relevant project is the one people remember.

what to build

Six projects that actually land

Use these as calibration for what "small and finished" looks like. Each one is a weekend, not a semester.

Document Q and A tool Upload a PDF, ask questions, get answers with the source passage shown. Demonstrates retrieval, prompt design and honest citation.
Job description analyser Paste a posting, get the real skill requirements extracted, ranked and grouped. Recruiters immediately understand what they are looking at.
Support ticket triager Paste a customer message, get category, urgency and a suggested reply. Maps directly to operations and customer-facing AI roles.
Ad copy variant generator One product description in, ten on-brand variants out with a rationale each. The marketing version of the same skill set.
CSV insight explainer Upload a spreadsheet, get a plain-English summary plus a chart. Shows you can turn data into a decision, not just a table.
Meeting notes to actions Paste a transcript, get owners, tasks and deadlines in a clean table. Boring on paper, genuinely useful, and everyone recognises the pain.

step two

Build it as a real web app with Gradio

Gradio is a Python library that turns a normal function into a working web interface, so you get a real app without writing any front-end code. That is the whole reason it is the right choice here: your project ends up as something a person can use in a browser rather than a notebook nobody will open. It is open source and free (gradio-app/gradio).

This is the entire shape of a Gradio app, so you know what you are aiming at before Claude writes yours:

import gradio as gr

def greet(name, intensity):
    return "Hello, " + name + "!" * int(intensity)

demo = gr.Interface(
    fn=greet,
    inputs=["text", "slider"],
    outputs=["text"]
)

demo.launch()

That example is adapted from the Gradio quickstart.

A function, a description of its inputs and outputs, and one line to launch it. Now hand Claude the job:

๐Ÿ› ๏ธ build my Gradio app
Build me the project we chose as a single Gradio app in one file called app.py. I am a beginner, so write the complete file, not fragments, and add a short comment above each section explaining what it does in plain English.

Requirements: it must run with only free and open-source dependencies, it must handle bad or empty input without crashing, and the interface needs a clear title, a one-line description of what the app does, and two example inputs pre-loaded so a visitor can try it in one click without thinking. Keep the whole thing under about 120 lines.

After the code, give me three things: the exact requirements.txt contents, the terminal commands to install and run it locally, and a list of the three most likely errors I will hit on my first run with the fix for each.

step three

Run it on your own machine first

  1. ๐Ÿ“ Make a folder. Create an empty folder for the project and save Claude's app.py and requirements.txt inside it. Two files is genuinely all this needs.
  2. โฌ‡๏ธ Install Gradio. Open a terminal in that folder and run pip install --upgrade gradio. If your project needs anything else, it is already listed in your requirements.txt, so pip install -r requirements.txt covers the lot.
  3. โ–ถ๏ธ Run it. Run python app.py. Gradio starts a local server and your app opens at http://localhost:7860 in your browser. Seeing your own thing running locally is the moment this stops feeling theoretical.
  4. ๐Ÿงช Try to break it. Submit nothing. Submit nonsense. Submit something enormous. Then paste any error straight back to Claude with "here is the error, fix it and give me the full corrected file". Repeat until it holds up.
  5. ๐Ÿ”— Optional, share it for a week. Changing the last line to demo.launch(share=True) gives you a temporary public link (something like https://07ff8706ab.gradio.live) that runs off your own machine. Useful for showing a friend today. Not your portfolio link: share links expire after one week and die when you close your laptop.

step four

Host it free on Hugging Face Spaces

Spaces is free hosting for exactly this kind of app, and it gives you a permanent public URL that works whether or not your laptop is on. The free hardware tier is CPU Basic, 2 vCPU and 16 GB of memory, at no cost (Hugging Face pricing), which is comfortably enough for a portfolio demo.

  1. โž• Create the Space. Go to huggingface.co/new-space. Give it a clear name (the name becomes part of your public URL, so job-description-analyser beats test2), choose Gradio as the SDK, leave the hardware on the free CPU Basic option, and set it to Public.
  2. ๐Ÿ“„ Add your two files. A Space is a Git repository, and you can either push to it or use the Files tab in the browser to add files directly. Upload app.py and requirements.txt. Spaces installs your dependencies for you (Gradio Spaces docs).
  3. ๐Ÿš€ Watch it build, then open the App tab. The Space builds automatically and switches to Running. Open the App tab and your project is live at a public URL. If the build fails, the logs tell you which package is missing, and pasting that log to Claude fixes it in one round.
  4. โšก Or deploy from the terminal. If you would rather not click through the browser, running gradio deploy from your project folder pushes the app to Spaces for you (Gradio hosting guide).
  5. ๐Ÿ“ฑ Test it on your phone. Open the public link on mobile, on data rather than wifi. That is how a recruiter will open it, and a demo that only works on your desktop is not a demo.
๐Ÿ’ก Never put an API key in your code. If your project calls a paid or personal API, the key belongs in the Space's Settings under repository secrets, never inside app.py, because a public Space means public code. Better still, pick a project that needs no keys at all, which is why the six ideas above were chosen the way they were.

step five

Make the link do the talking

A live link nobody clicks is the same as no link. These three pieces of writing are what turn it into an interview.

๐Ÿ“ write my project write-up
Here is my finished project: [paste your app description and the public link]. I am targeting this role: [role title and the key requirements].

Write me three things. First, a README for the Space: what the tool does in one sentence, who it is for, how to use it in three steps, what I built it with, and one honest paragraph on its limitations. Second, a LinkedIn featured-section blurb under 60 words that leads with what the thing does for the reader, not with the tech stack. Third, a single resume line under 20 words with the link, written so a hiring manager understands the outcome without opening it.

No buzzwords, no "leveraged" or "utilised", no em dashes. Plain sentences only, and never claim the project does more than it actually does.
  1. ๐Ÿ“Œ Put it in LinkedIn's Featured section. Featured sits directly under your About section with a preview image, so it is the first clickable thing on your profile. Add the Space link there, not buried in an old post.
  2. ๐Ÿ“„ Put it in your resume header. One line, directly under your name and email, alongside your LinkedIn and GitHub. Not at the bottom under "Projects" where a six-second skim never reaches.
  3. โœ‰๏ธ Open with it when you apply. First line of the cover note or the application message: what the tool does and the link. Let them try it before they read anything else about you.
  4. ๐Ÿ—ฃ๏ธ Prepare the two-minute version. Ask Claude: "interview me about this project like a hiring manager, five questions, one at a time, and tell me where my answer was vague." Being unable to explain your own build is the one way this backfires.

the difference

What separates a memorable project from a forgettable one

It works on the first click Pre-loaded examples so a visitor never faces an empty box. Most demos die because the stranger did not know what to type.
It solves a named person's problem "For recruiters screening 200 CVs" beats "an NLP demo". Specificity reads as understanding the job, not just the tech.
It admits its limits A short honest note about what the tool gets wrong signals judgement. Overclaiming is the fastest way to lose a technical interviewer.
It is finished A small complete thing beats an ambitious half-thing every time. Shipping is most of the job, and finishing is the part you are proving.

the honest bit

Scope check before you start

This is a weekend, not a career. It will not by itself get you hired into a senior role, and anyone promising that is selling something. What it does is change the shape of your application from a list of claims to a thing someone can try, which is what gets you the conversation. Build one, ship it, put the link everywhere, then build the second one only if the first one gets used. Two finished projects with real links beat ten repos nobody opens.


Sources

Want to build systems like this properly, not one prompt at a time? Inside AI System Club I teach people to learn AI from scratch and build the systems underneath a content business. Doors open soon and founding pricing dies at close. ๐ŸŒฑ Join the waitlist (link in my bio too).
the waitlist is now open

AI System Club is launching soon

Build AI systems with me through recorded lessons you can follow at your own pace. Join the waitlist for first access and the founding price.

btw this list gets first dibs
the moment doors open :)