Framing a Project
Starting from a decision instead of a dataset, and writing the brief
Fifteen weeks of technique. This one is about turning it into something with your name on it, which means starting where every real project starts, and where almost every portfolio project does not: with a decision somebody has to make.
Frame the decision, not the dataset
The most common way a capstone fails
It begins "I found an interesting dataset". Everything after that is a search for a question the data happens to answer, and the result reads like it, a competent notebook with no argument in it. Start instead with a decision that is currently made badly, then ask what data would inform it. You may well end up at the same dataset. You will end up with a different project.
| Weak framing | Strong framing | Why |
|---|---|---|
| "Predict house prices" | "Which listings are priced more than 10% below what comparable homes achieved, so an agent should call the vendor this week" | Names who acts, when, and on what |
| "Analyse customer churn" | "Which 200 customers should the retention team ring in October, given they can make 200 calls" | The budget constraint decides the threshold |
| "Classify images of plants" | "Let a grower photograph a leaf and get a disease shortlist without waiting for the agronomist" | Establishes what the alternative is |
| "Sentiment analysis of reviews" | "Route the 5% of reviews that describe a safety problem to the product team within an hour" | Makes recall on a rare class the metric |
Write the brief before the code
- The decision. Who does what differently because of this model?
- The alternative. How is it decided today? That is your baseline, and it is rarely a machine learning model, usually it is a rule, a spreadsheet, or somebody's judgement.
- The unit. One row is one what? Get this wrong and every split in the project is wrong.
- The label. What exactly are you predicting, measured when? Write the SQL or the sentence that defines it.
- The moment of prediction. What is known at that instant? Anything not known then cannot be a feature. This one sentence prevents most leakage.
- The metric, and the threshold. Which errors cost what? Who bears them?
- What good enough looks like. A number, agreed before you start, that means this was worth doing.
Point five is the whole of week 4 in one sentence
"What is known at the moment the prediction is made" resolves almost every leakage question without any statistics. total_charges is known at prediction time; reason_for_leaving is not. A customer's tenure is known; whether they answered the retention call is not. Write the list, then check every column you add against it.
Scoping it to fit
| Scale | Rows | Looks like | Fits in |
|---|---|---|---|
| Small | < 10k | One table, a few features, a clear label | A weekend |
| Medium | 10k to 1M | Two or three joined tables, some feature engineering | Two to three weeks |
| Large | > 1M | Sampling, chunked reads, a real time split | A month, and it will still surprise you |
For a capstone, medium is the target. Small does not exercise enough of the course; large means you spend three weeks on data plumbing and produce a rushed model. If the dataset you want is large, take a principled sample and say so in the write-up. That is a legitimate engineering decision, not a compromise.