Portfolio Projects for Data Engineer
Your resume says Python, SQL, and Airflow. So does everyone else's. Certificates get skimmed and forgotten in seconds. Projects are what hiring managers actually read.
The hard part is choosing projects that signal real ability. A tutorial clone says you can follow steps. A well-built project says you can make decisions. That difference decides whether you get the interview.
Here are three portfolio projects for data engineer candidates that work, plus how to present them and how to talk about them without sounding rehearsed.
What reviewers actually look at#
Most reviewers spend under two minutes on a portfolio. They scan for three things: did you make design choices, did you handle failure, and can you explain trade-offs.
They want to see why you picked Postgres over BigQuery. Why you batched instead of streaming. Why your schema is the shape it is. Tutorial projects have none of that, because the tutorial made the choices.
They also look for production habits. Error handling. Logging. Tests. Retries. A README that a stranger can follow. These are small things that separate a working pipeline from a homework folder.
Get the next guide by email
New guides and fresh jobs in one short email. Free.
Project 1: A batch ETL pipeline with real orchestration#
Build a pipeline that pulls data from a public API, cleans it, and loads it into a warehouse on a schedule. Use Airflow or Prefect to orchestrate. Add retries, alerts, and a data quality check before the load.
The interesting part is not the happy path. It is what happens when the API rate-limits you at 2am, or returns a null in a field you assumed was always filled. Handle those cases and write about them.
A good README for this project covers the schedule, the failure modes you saw, and why you structured the DAG the way you did. Skip the setup section unless it is genuinely tricky to run.
Project 2: A dimensional model with a slow-changing dimension#
Pick a messy dataset, like retail orders or public transit records, and model it properly. Build fact and dimension tables. Implement a Type 2 slow-changing dimension so you can track history.
This project shows you understand warehouse thinking, not just scripting. Explain your grain. Explain why a column is in the fact table instead of the dimension. Explain how you would query it.
Include a few sample queries and the business question each one answers. That turns a data model into something a reviewer can picture using.
Project 3: A streaming pipeline with late data handling#
Stream events from a live source, like a public firehose or a simulated event generator, into a queue and then into storage. Use Kafka, or something lighter like Redis Streams or Pulsar. Then handle the hard part: late-arriving events.
Set up a window, allow for lateness, and show what happens when an event arrives after the window closed. Watermarks and windowing are where most candidates go quiet. Being able to explain them is worth a lot.
If you have never touched streaming, this is the project that will teach you the most. Start small. A single consumer that writes to a file is a fine first milestone.
How to present them on your resume#
Treat each project like a job. Two or three bullets, each with a verb, a tool, and an outcome. Numbers help if they are real.
Before and after:
Before: "Built an ETL pipeline using Python and Airflow."
After: "Built an Airflow pipeline that ingests 40k daily API records into Postgres, with retry logic and Great Expectations checks that catch schema drift before load."
The second version gives the reviewer something to ask about. That is the goal.
If your resume is getting ignored before the projects even get read, run it through the free ATS checker first. Fix the formatting, then let the projects do the work.
How to set up GitHub so it gets read#
A reviewer opens your repo and wants to know what this is and how to run it in under 30 seconds. Put a short description at the top of the README. Then a "How to run" section. Then architecture. Then trade-offs.
- Pin a clear description at the top of each README, one sentence, no jargon
- Include a small architecture diagram, even a hand-drawn one scanned in
- Show the schema or data model as SQL, not as a screenshot
- List the failure cases you handled and what you would do differently
- Keep the repo focused, delete dead branches and half-finished experiments
- Add a LICENSE so nobody wonders about reusing your code
Do not commit raw credentials or a giant CSV. Use a sample dataset and document how to fetch the real one.
Mistakes that make projects look like tutorials#
The tell is the README. If it is a copy of the tutorial's README with your name on it, reviewers can tell.
Another tell is zero error handling. Real pipelines fail. If yours has no retries, no validation, and no logging, it reads as a script that worked once on your laptop.
Naming things after the tutorial is a giveaway too. "ETL Project" or "Data Pipeline Final" says nothing. Name it after the domain. "Transit Delay Warehouse" tells a story.
Stack inflation is a problem as well. Do not put Kafka, Spark, Snowflake, dbt, and Kubernetes in one project just to fill keywords. Pick a few tools and use them properly. Depth beats breadth every time.
How to talk about these projects in interviews#
Expect the question "tell me about a project you are proud of." Have a 90 second version ready. Lead with the problem, then your choice, then one thing that went wrong.
Worked example of a spoken answer:
"This project started because I wanted to understand warehouse modeling, so I took a messy retail dataset and built a Type 2 slow-changing dimension in Postgres. The main design call was keeping the grain at one row per order line per day, which made the queries simpler but made the load slower. The hardest bug was duplicate keys when a supplier sent the same batch twice, so I added a dedupe step with a hash of the natural key before insert. If I rebuilt it today I would move the dedupe into the transform layer and add tests around it."
Notice the structure. Problem, choice, failure, reflection. Interviewers can follow that.
If a job description lists specific tools you used, mirror that language back. The free JD decoder helps you see which terms matter before you walk in.
Where to find roles that care about projects#
Some job posts ask for a portfolio link explicitly. Those are your best shot. Browse current openings and filter for ones that mention GitHub or project work in the requirements.
You can also check our wider writing on data roles and interviewing for more specific angles as you narrow down.
Free tools#
- jobrise.io/en/free-ats-checker/
- jobrise.io/en/free-jd-decoder/
- jobrise.io/en/jobs/
- jobrise.io/en/blog/
FAQ#
How many projects should a data engineer portfolio have?
Three is enough if they are distinct. One batch, one modeling, one streaming covers most of the signal a reviewer wants. Ten shallow projects read as noise.
Should I include class projects or only personal ones?
Include them if you extended them beyond the assignment. A class project with added tests, better documentation, and your own design choices is fine. A submitted homework folder is not.
Do I need to deploy these to the cloud?
Not for the portfolio itself. Local Docker Compose is fine and often easier for a reviewer to run. Mention how you would deploy it and why, and that shows the same thinking.
What if I cannot explain the trade-offs I made?
Then you did not make them, and that is the real gap to fix. Go back to one project, write down every decision you can remember, and dig into the alternatives. That exercise is more valuable than adding a fourth project.
How do I talk about projects when I have no work experience?
Frame the project like a job. State the problem, the constraints you set for yourself, the tools, and the outcome. Interviewers care about how you think, not whether a company paid you for it.
Send this to whoever has the interview this week.