The same five projects, on every resume in the room
An interviewer at a mid-size Indian company sits down with forty fresher resumes before a hiring drive. By resume number twelve, they have already read:
- An e-commerce website with a cart and a fake payment page
- A weather app that calls one public API
- A to-do list with login
- A "hospital management system" or "library management system" in PHP or Java
- A machine learning notebook that predicts house prices on a dataset from a tutorial
You built one or more of these. That is not a character flaw — it is what your college assigned and what the YouTube playlist covered. But understand what happens when an interviewer sees them. They do not think "this person cannot code." They think "there is nothing here to ask about" — and move on to the resume that has something to ask about.
That is the entire game. A project is not a trophy. It is a conversation starter for a technical interview, and most projects start no conversation at all.
What the interviewer is actually doing
Reading your project section, they are answering one question in about eight seconds: can I get twenty minutes of real technical conversation out of this person?
They are looking for a decision you had to make. A constraint you ran into. A thing that broke. Tutorial projects contain none of these, because the tutorial removed them all before you arrived. The author already chose the database, already handled the edge case, already fixed the bug off-screen.
So the test is not "is it impressive". It is:
Does this give an interviewer an obvious follow-up question to ask me?
If yes, you have a project. If no, you have a certificate.
Scope: one thing, done properly
The instinct is to build something big — a "complete social media platform", a "full ERP". Do not. Big scope on a fresher timeline produces a half-finished mess with a broken deploy and four features that each work slightly.
Build one workflow, end to end, properly. One thing a real person would actually do, from opening the page to the correct outcome in the database, with the error cases handled.
One well-built workflow with proper validation, proper error handling, tests around the tricky part and a live URL beats five half-built features every single time. It also gives you more to talk about, because you went deep enough to hit real problems.
Two or three projects of this kind are plenty. You do not need nine.
Deployed, with a URL, or it barely counts
A project that exists only as a GitHub repository is a project the interviewer will not run. Nobody clones your repo, installs your dependencies and hopes your .env example is accurate.
Deploy it. Free tiers cover everything in this article — Vercel or Netlify for the frontend, Render or Railway for a small backend, Supabase or Neon for the database. A ₹500-a-year domain is optional but makes your resume look like an adult wrote it.
Deploying also teaches you what a local npm run dev never will: environment variables, build failures that only happen in CI, CORS, cold starts, a connection limit you hit at three concurrent users. Every one of those is interview material.
Put the live URL on the resume next to the repo link. Test it the morning of every interview.
Real data beats seeded data
The difference between a student project and something that looks professional is usually the data.
A cart with three hardcoded products called "Product 1", "Product 2", "Product 3" looks like homework. The same cart populated with real items, real prices, real messy names, looks like software.
Sources you can legitimately use, free:
- data.gov.in — Indian government open datasets across transport, health, education, agriculture
- CPCB air quality data — real, messy, has gaps and bad readings, which is the point
- RBI and NSE or BSE published data — rates, historical prices
- Your own college — the exam timetable, the results portal format, the hostel mess menu, the placement notice PDFs
- City transit GTFS feeds — several Indian cities publish them
- Any public API with a bad response shape, which is most of them
Real data is not clean. It has missing fields, duplicated entries, dates in three formats and a NULL where a number should be. Handling that badly is why your project crashes. Handling it well is your first interesting answer.
One hard problem, solved, and explained
This is the part that converts a project into an interview. Pick one genuinely difficult thing and solve it deliberately.
Examples that are hard enough to be worth talking about and small enough to actually finish:
- Deduplication. Two records for "Rajesh Kumar Sharma" and "R K Sharma" at the same address. How do you decide they are the same person? Now defend your threshold.
- Idempotency. The user double-taps Submit on a slow connection. Make sure two orders are not created. Explain your key.
- Background jobs with retries. Something slow happens after the request returns. What happens when it fails halfway? What happens when it runs twice?
- A 40 MB CSV that will not fit in memory. Stream it. Explain why your first version crashed.
- Search that is actually useful. Not
LIKE '%query%'. Handle typos, handle Hinglish spellings, rank results. - Auth done properly. Hashing, session expiry, why you did not store the JWT where the tutorial told you to.
You need one of these. Not all of them. What matters is that you can say: here was the problem, here is what I tried first, here is why it did not work, here is what I do now, and here is what I would do differently at ten times the traffic.
That paragraph is worth more than a fifth project.
The README is part of the project
Most fresher repos have a README that says the project name and npm install. That is a wasted page — and it is the page a curious interviewer actually opens.
A README that works contains:
- One sentence on what the thing does and who it is for.
- A screenshot or a short GIF. Immediately. Before any setup instructions.
- The live URL, at the top.
- The stack, in one line, with the reason for one choice. "Postgres, because the reporting queries needed joins that Firebase made painful."
- How it works, in five or six lines. A rough architecture description. A diagram if you can manage one.
- The hard problem, in its own short section, written exactly as described above.
- What is not done yet, honestly. This reads as maturity, not weakness. Everybody's side project is unfinished; only some people are honest about it.
- Setup that actually works on a clean machine. Test it on a friend's laptop.
Write it in plain English, not in the inflated tone of a college report. No "revolutionary", no "state of the art", no "cutting edge".
Your commit history is visible, so use it
Interviewers sometimes check the commits. Three commits, all on the same night, all named "update", says you copied something. Thirty commits over six weeks, with messages that describe changes, says you built something. You do not need to fake this — just commit as you work and write messages a human could read. It is one of the few signals on your profile you cannot buy.
Concrete things worth building
Ideas that satisfy everything above — small scope, real data, one hard problem, deployable. Adapt to your stack.
- A placement notice aggregator for your college. Scrape or ingest the notices, parse the PDFs, dedupe, send an email or Telegram alert. Hard problem: PDF parsing and deduplication. Everybody in your college wants this, which also gives you users.
- A bus or train arrival board for one city from public feeds, with a cache layer because the upstream API is slow and rate-limited. Hard problem: caching and stale data.
- An expense splitter for a hostel floor. Settlement maths is genuinely non-trivial — minimising the number of transactions between eight people is a real algorithm. Hard problem: the settlement algorithm and concurrent edits.
- An air quality history dashboard for your district from CPCB data, with gaps and bad readings handled visibly. Hard problem: messy time-series data and honest charts.
- A small internal tool your family business or your college department actually needs. The hard problem will find you. Real users are a genuine advantage — you can say "four people use this every week", which is four more than most resumes can claim.
How to write it on your resume
Not this:
E-commerce Website — Developed a fully functional e-commerce website using React, Node.js, Express and MongoDB with user authentication, cart functionality and payment integration.
This:
Hostel Expense Splitter — live at
split.example.in· repo Settles shared expenses for groups of up to 20. Reduces N-way debts to the minimum number of transfers. Handles concurrent edits with optimistic locking after two users overwrote each other in testing. React, Node, Postgres. Used weekly by 30 students in my hostel.
Three lines. Two follow-up questions built in — the settlement algorithm, and the concurrency bug. That is a technical round that starts on your home ground instead of a DSA question you may or may not know.
The projects that waste your time
Be blunt with yourself about these:
- Anything you followed along with, step by step, from a video. You did not make the decisions, so you cannot defend them. If you built one, either extend it substantially with your own hard problem, or take it off the resume.
- Clones with no twist. A Netflix clone or a Swiggy clone is a CSS exercise. A Swiggy clone with a real delivery-partner assignment algorithm is a project.
- The "management system" genre — library, hospital, school — unless someone genuinely uses it.
- Half-finished repos left public. Five abandoned repos hurt more than one finished one helps. Archive or delete them.
- A fifth project instead of depth on your best one. Depth wins. Always.
Preparing to talk about it
Before any interview, be ready for these five, out loud:
- Why did you build this?
- Walk me through what happens when a user clicks that button — all the way to the database and back.
- What was the hardest bug and how did you find it?
- What would break if 10,000 people used it tomorrow?
- What would you do differently if you started again?
If you cannot answer question 3 with a specific story, you did not build the project deeply enough yet. That is fixable in two weeks. Go break it and fix it.
What to do this week
- Pick one existing project and ask honestly whether it survives the follow-up-question test. If not, either kill it or deepen it.
- Choose one hard problem from the list above and add it to that project. Give yourself two weeks.
- Deploy it. Today, on a free tier, even if it is ugly. Get a URL.
- Rewrite the README with a screenshot at the top, the live link and a section on the hard problem.
- Rewrite the resume line in the three-line format, with a number in it if you can honestly claim one.
- Find two real users. Your hostel, your class, your department. Real usage is the credential that no tutorial gives you.
One project you can defend for twenty minutes will do more for you than five you can only describe for twenty seconds.