Course 7 · Career

Your Portfolio & Online Presence

Before anyone interviews you, they Google you. A recruiter glances at your GitHub, skims your LinkedIn, maybe clicks one project link — and decides in under a minute whether you're worth a conversation. This chapter turns your capstone and your scattered online accounts into a single, coherent piece of evidence that says: this person can already do the work. That proof is what gets you in the door.

Why a portfolio matters more than a degree in data

In a lot of fields, a credential is the ticket. In data engineering, the credential is increasingly the work itself. Hiring managers have been burned by candidates who can recite the difference between a star schema and a snowflake schema but have never actually built a pipeline that runs. So they've learned to discount "trust me" and reward "show me."

That's an enormous advantage for a career-changer. You may not have a CS degree or years on the job, but you can have something a fresh graduate often doesn't: a real, working, documented system that someone can click into and inspect. A portfolio collapses the distance between claiming a skill and demonstrating it.

"Trust me" (claims)"Show me" (proof)
"I know Python and SQL."A repo of ingestion + transformation code anyone can read.
"I understand data pipelines."An orchestrated pipeline with a diagram and a live demo.
"I'm a quick learner."A writeup explaining a tradeoff you reasoned through.
"I'm passionate about data."A green commit history and a blog post about what you built.
The asymmetry in your favor

A degree is the same as a thousand other degrees. A thoughtful, well-documented project is unique to you — and it doubles as your best interview material. Every project you ship is a story you can tell when someone says "walk me through something you built." You're not just decorating a resume; you're stockpiling answers.

The capstone (mini-GridDP) as your centerpiece

Your capstone — the mini-GridDP platform — is the single strongest asset in your entire search. Most applicants have toy notebooks; you have an end-to-end system. The job now is presentation: making it trivially easy for a stranger to understand what it does, see it working, and respect the judgment behind it. A strong centerpiece has four layers:

CLEAN REPO ───▶ GREAT README ───▶ A SHORT DEMO ───▶ DECISIONS & TRADEOFFS │ │ │ │ tidy structure, what it is, screenshots, a gif "I chose X over Y no secrets, architecture of the dashboard, because… and here's sensible diagram, how or a 2-min Loom what I'd change at commits to run it walkthrough scale" — shows JUDGMENT ───────────────────────────────────────────────────────────────────────────────▶ proof it exists proof it runs proof you can THINK

1. A clean public repo. Open-source it on GitHub. Before you do, sweep for embarrassments: no committed API keys or .env files (add them to .gitignore and rotate any that leaked), no 2 GB of raw data, no folder called final_FINAL_v3. A tidy structure signals you've worked on a real team's codebase before, even if you haven't.

2. A great README. This is the most-read file in your portfolio and the one most beginners neglect. The README is the project as far as a skimming recruiter is concerned. It should answer, in order: what is this, what does it do, what does the architecture look like, and how do I run it. Lead with the architecture diagram — a single image that shows data flowing from source → ingestion → warehouse → transformation → dashboard communicates more in three seconds than three paragraphs.

3. A short demo. Code in a repo is abstract; seeing it run is visceral. You don't need a polished video — pick whichever is fastest:

  • Screenshots of the dashboard and a successful pipeline run, embedded directly in the README.
  • A GIF of the dashboard updating or a DAG turning green — it autoplays in the README and instantly proves "this is real."
  • A 2–3 minute Loom walkthrough where you click through the running system and narrate it. This is the single highest-leverage artifact you can make; it's the next best thing to a live demo and recruiters can forward it.

4. A "decisions & tradeoffs" writeup. This is what separates a portfolio that proves a project runs from one that proves you can think. Add a short section (in the README or a linked DECISIONS.md) explaining a few choices: why you used Dagster instead of Airflow, why you partitioned a table the way you did, what breaks at 100× the data volume and how you'd fix it. Naming a limitation honestly is a strength signal, not a weakness — it shows engineering maturity.

What to highlight

Spotlight the parts that look like real production work: idempotent loads, tests on your transformations, a scheduled/orchestrated run, data-quality checks, and a sensible way you handled failures or late data. These are exactly the things interviewers probe — surfacing them in the README pre-loads your strongest talking points.

Two or three smaller projects that show range

The capstone proves depth. A couple of small, sharp side projects prove range — that you can pick up an unfamiliar tool and ship something focused. Resist the urge to build another giant platform; each of these should be a weekend, not a month, and each should do one thing cleanly. Quality and a good README beat scope.

ProjectWhat it showsKeep it focused to…
API-to-warehouse pipelineYou can ingest from a real external source, handle pagination/rate limits, and land clean data.One public API → one warehouse table, scheduled daily.
Streaming mini-projectYou understand event-driven data, not just batch — a different mental model.A Kafka/Redpanda producer + a consumer that aggregates into a table.
dbt-only analytics projectModeling, testing, and documentation skill — the analytics-engineering side.Staging → marts on a public dataset, with tests and dbt docs.
Data-quality / observability add-onYou care about trust, not just movement.Great Expectations or simple checks wired into one existing pipeline.
Aim for a portfolio shape, not a pile

Three projects is plenty: one big capstone for depth, plus one or two small ones that cover a gap (e.g. streaming if your capstone is batch-only). Match them to the jobs you're targeting from Chapter 01 — if the postings keep saying "dbt," make sure one project loudly says "dbt."

Writing about your work

A repo shows what you built. A writeup shows how you think — and thinking is what gets hired. A short blog post or project writeup is one of the highest-return things you can produce, because it works while you sleep: it shows up in searches, it gives recruiters something to share, and it gives you a ready-made interview narrative.

A good writeup follows a simple four-beat arc:

  • What I built — one or two plain sentences and the architecture diagram.
  • Why — the problem it solves, or the skill you wanted to prove.
  • What I learned — the surprise, the bug that took a day, the thing the docs didn't tell you. This is the most credible part; specificity reads as real experience.
  • What I'd do next — the honest limitations and where you'd take it. This shows you see beyond the demo.
Learning in public compounds

You don't need a fancy blog. A few hundred words on LinkedIn, dev.to, or a simple GitHub Pages site is plenty. Post small and often: "today I figured out why my incremental dbt model was double-counting rows." Over a months-long search, those posts accumulate into a visible track record of someone who builds and learns — which is exactly the person managers want to bet on.

Write like an engineer, not a marketer

Skip the hype ("revolutionary," "cutting-edge"). Concrete beats grand: "this pipeline loads 2M rows in 90 seconds and runs nightly at 2am" tells a reader far more than "a powerful, scalable data solution." Show numbers, show the diagram, show one real problem you solved.

A recruiter-friendly GitHub

Your GitHub profile is, for many roles, the most-clicked link on your resume. A recruiter — often non-technical — spends seconds on it, so optimize for the at-a-glance impression. Here's what they actually look at, and what to do about each:

What they seeWhat to do
Pinned reposPin your 3–6 best projects, capstone first. These are your storefront — nobody scrolls past them.
READMEsEvery pinned repo needs one. A repo with no README reads as abandoned, no matter how good the code is.
Commit historyA green-ish contribution graph signals consistency. Real, regular commits while you learn — not faked streaks.
ProfileAdd a profile README (a repo named after your username), a real name, a short bio, and a link to your LinkedIn or site.
Language barIf it's 100% Jupyter Notebook, balance it with Python, SQL, and YAML repos so it reads as "engineer."

Here's the kind of README structure that reads well — clean headings, a diagram up top, run instructions, and a decisions section:

README.md
# mini-GridDP — an end-to-end energy-grid data platform

A batch data platform that ingests grid sensor readings, loads them into a
warehouse, transforms them with dbt, and serves a metrics dashboard.

![Architecture](docs/architecture.png)

## What it does
- Ingests readings from a public API on a daily schedule (Dagster)
- Lands raw data in DuckDB, then models it staging -> marts with dbt
- Validates row counts and freshness; surfaces metrics in a Streamlit dashboard

## Demo
![Dashboard](docs/dashboard.gif)
▶️ 2-minute walkthrough: https://loom.com/share/...

## Run it locally
```bash
git clone https://github.com/you/mini-griddp.git
cd mini-griddp
cp .env.example .env        # no real secrets committed
make setup && make run      # spins up the pipeline end to end
```

## Decisions & tradeoffs
- **Dagster over Airflow** — asset-based model fit the dependency graph better.
- **DuckDB for the warehouse** — zero-ops and fast for this data size; I'd swap
  in BigQuery/Snowflake past ~50 GB.
- **Known limits** — single-node ingestion; at 100x volume I'd partition by day
  and parallelize the API pulls.

## Tech
Python · SQL · dbt · Dagster · DuckDB · Streamlit · Docker
Diagram first, always

The architecture image is the highest-value pixel in your portfolio. A reviewer who grasps your system's shape in three seconds is far more likely to keep reading. Make one even if it's just labeled boxes and arrows — clarity beats polish.

A LinkedIn recruiters can find

GitHub proves you can do the work; LinkedIn is how recruiters discover you in the first place. Most of them search a keyword database and message whoever matches. Your job is to be the profile that surfaces and reads as credible. Four things move the needle:

  • Headline — the single most important line, shown everywhere. Make it a keyword-rich role statement, not a vague aspiration: Data Engineer | Python · SQL · dbt · Airflow/Dagster · BigQuery. Recruiters search those exact terms.
  • About — three short paragraphs that tell your story: where you're coming from, the skills you've built (name the tools), and what you're looking for. A career-change arc ("operations analyst who taught myself to build the pipelines I kept wishing existed") is memorable, not a liability.
  • Skills & keywords — fill the Skills section with the tools from the postings you're targeting. This section is literally what recruiter searches match against; an empty one makes you invisible.
  • Contactable & open — turn on "Open to work" (recruiter-only visibility if you prefer it discreet), add an email or link, and use a real, friendly headshot. An unreachable profile wastes every other bit of effort.
Link everything together

Your LinkedIn, GitHub, resume, and writeups should all point at each other. The goal is a small web of consistent, mutually-reinforcing proof: a recruiter who lands on any one of them can reach all the others in a click. Featured links on LinkedIn are a great place to pin your capstone repo and your best writeup.

✓ Check yourself

  • Could a non-technical recruiter understand what your capstone does from the README alone, in under a minute?
  • Does your capstone repo have an architecture diagram, a demo (screenshot/gif/Loom), and a decisions section?
  • Are your 3–6 best repos pinned, each with a real README?
  • Does your LinkedIn headline contain the exact tool keywords recruiters search for?
Exercise — Write the README intro + a 5-sentence project writeup for mini-GridDP

Two short artifacts. First, a README opener: a one-line title plus two sentences of "what it is / what it does." Second, a five-sentence writeup following the arc — what / why / how it works / what you learned / what's next. Keep both concrete and tool-specific.

sample — README intro
# mini-GridDP — an end-to-end energy-grid data platform

mini-GridDP ingests hourly grid-sensor readings from a public API, loads them
into a DuckDB warehouse, and transforms them with dbt into clean marts. A
Dagster schedule runs the whole pipeline nightly and a Streamlit dashboard
serves freshness and load metrics on top.
sample — 5-sentence writeup
I built mini-GridDP to prove I could ship a real end-to-end data platform, not
just a notebook. It pulls grid-sensor data from a public API, lands it in
DuckDB, and models it staging-to-marts with dbt, all orchestrated nightly by
Dagster with row-count and freshness checks. The hardest part was making the
load idempotent — my first version double-counted rows on re-runs until I keyed
the merge on (sensor_id, reading_time). I learned that orchestration is mostly
about handling failure and late data gracefully, which the happy-path tutorials
skip entirely. Next I'd partition the warehouse table by day and swap DuckDB for
BigQuery to see how the design holds up past 50 GB.

Yours won't read identically — the point is the shape. If a stranger could understand your project and respect a decision you made from these two artifacts alone, they're doing their job. Drop the writeup into a LinkedIn post and a blog, and link the README from your pinned repo.

Next

Your work is now visible and credible. The next step is the document that actually gets submitted — and survives the six-second look and the keyword robot. → The Resume & Applying