{"course":{"slug":"ai-careers","title":"Working in AI","url":"https://addaly.com/learn/ai-careers","level":"beginner","track":"work"},"lesson":{"slug":"the-take-home","title":"The take-home, and how not to lose on it","url":"https://addaly.com/learn/ai-careers/the-take-home","position":52,"of":85,"minutes":9,"answer":"A take-home is graded on judgement and communication, not on completeness, so scope it, time-box it, and write down what you left out.","keyIdea":"A take-home is graded on judgement and communication, not on completeness, so scope it, time-box it, and write down what you left out."},"body":{"format":"markdown","text":"## What the grader is actually scoring\n\nAlmost never \"did they finish everything\". Usually, in this order:\n\n1. **Does it run?** From a clean checkout, following the README, on their machine. A surprising share of submissions fail here, and it is an immediate no.\n2. **Can I read the README in two minutes and know what you did?**\n3. **Did you notice the mess?** Every well-made take-home dataset has a deliberate trap.\n4. **Would I want to review this person's code every week?** Names, structure, comments where the reason is not obvious.\n5. **Did you say what you would do next?**\n\nNote that four of the five are communication.\n\n## Time-boxing, and saying so\n\nIf the brief says four hours, spend four to five, and write at the top of the README what you spent and what you cut.\n\n```\nTime spent: about 4.5 hours. With another day I would have\nadded tests for the currency parsing and looked at why 6%\nof rows have no customer_id.\n```\n\nSpending twenty hours and not saying so is dishonest, and it also loses: the grader is comparing you against a four-hour bar, and a submission that is polished far beyond it reads either as a misjudged sense of scope or as a candidate who could not stop. Judgement about scope is part of what is being tested.\n\n## The trap is the test\n\nEvery good take-home dataset contains something planted: duplicate rows, mixed timezones, a currency column in three formats, an ID column with leading zeros, negative quantities that mean returns, or a target that leaks.\n\nYou do not have to fix all of them. You do have to **name them**. A README section headed *What I found in the data* with four bullets scores better than a silent perfect model, because it shows you looked.\n\n**Leakage** is the classic and worth understanding properly. You are asked to predict which customers will request a refund. The dataset contains `refund_processed_at`. Any model using it scores near-perfect and is worth nothing, because at prediction time that column is empty: it only exists after the event you are predicting. The mechanism is that the feature is downstream of the target rather than upstream of it. Interviewers plant this deliberately, and catching it is worth more than any modelling choice you make.\n\n## The README that scores\n\nSame skeleton as your project pages:\n\n- How to run it. One command if possible.\n- What I did, and why: the two decisions that mattered.\n- What I found in the data.\n- How I checked it: the number, however small.\n- What I did not do, and what I would do next.\n- Time spent.\n\n## The red lines\n\nSome take-homes are not assessments.\n\n- A brief that is a real business deliverable: \"here is our actual dataset, produce the report we need this month\".\n- More than about eight hours of unpaid work.\n- \"Build a prototype of our product\" before any technical conversation.\n- A take-home given before anyone at the company has spoken to you at all.\n\nDecline these politely and offer an alternative: *\"I would rather not spend twenty hours before we have talked. I am happy to do a live 90-minute session, or to walk you through a project I have already built.\"* Some companies will accept. The ones that will not have told you how they will treat your time later, which is worth knowing for free.\n\nAsking for a longer turnaround is different and almost always granted. If you have a full-time job, ask for a week rather than 48 hours. Refusal to accommodate that is itself information.\n\n## Deploying it for free\n\nIf the brief wants something running, you do not need to pay for hosting:\n\n- **Hugging Face Spaces**: free CPU tier, good for a demo with an interface.\n- **Fly.io** and **Render**: free or near-free small instances.\n- **GitHub Pages**: for anything static.\n- **Streamlit or Gradio**: a working interface in forty lines, both free and open source.\n\nA deployed link takes the reviewer five seconds to check and a repository takes five minutes. That difference decides some processes.\n\n## The limitation\n\nTake-homes systematically disadvantage people with a full-time job, caring responsibilities, or unreliable electricity and internet, because they convert the assessment into a test of available spare time. Nothing you do fixes that for the industry. What you can do is negotiate the deadline, state your time budget clearly, and treat a company that will not move on either as having answered a question about themselves."},"check":{"question":"A take-home asks you to predict which orders will be returned. Your model scores 0.98 AUC on the first attempt, far above anything you expected. What should you do first?","options":[{"text":"Submit it, noting that the result is strong and the approach was straightforward.","correct":false,"tempting":"Treats an implausibly good score as good news, which is the single most common way candidates fail this exercise."},{"text":"Reduce the model's complexity to avoid overfitting, then re-run and report the lower score.","correct":false,"tempting":"Reaches for overfitting, a real phenomenon that does not explain a score this high on held-out data and leaves the actual cause untouched."},{"text":"Add cross-validation to confirm the result is stable before submitting.","correct":false,"tempting":"A good habit that will faithfully confirm the same inflated score, because the problem is in the columns rather than in the validation scheme."},{"text":"Examine the features for one that could only be known after a return happened (a processed-at timestamp, a refund flag, a status field) remove it, re-run, and write up both the discovery and the honest score.","correct":true}]},"prev":{"slug":"the-recruiter-screen","title":"The first call, and the salary question","url":"https://addaly.com/learn/ai-careers/the-recruiter-screen"},"next":{"slug":"the-live-technical","title":"The live exercise, where silence is scored","url":"https://addaly.com/learn/ai-careers/the-live-technical"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'The take-home, and how not to lose on it', in Working in AI. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/ai-careers/the-take-home (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"The take-home, and how not to lose on it","courseTitle":"Working in AI","module":{"index":6,"slug":"the-interview","title":"The interview, from first screen to signed offer"},"answer":null,"keyIdea":"A take-home is graded on judgement and communication, not on completeness, so scope it, time-box it, and write down what you left out.","hero":{"kind":"plate","image":null,"alt":null,"caption":null},"blocks":[{"t":"h2","id":"what-the-grader-is-actually-scoring","runs":[{"text":"What the grader is actually scoring"}]},{"t":"p","runs":[{"text":"Almost never “did they finish everything”. Usually, in this order:"}]},{"t":"ol","start":1,"items":[[{"text":"Does it run?","b":true},{"text":" From a clean checkout, following the README, on their machine. A surprising share of submissions fail here, and it is an immediate no."}],[{"text":"Can I read the README in two minutes and know what you did?","b":true}],[{"text":"Did you notice the mess?","b":true},{"text":" Every well-made take-home dataset has a deliberate trap."}],[{"text":"Would I want to review this person’s code every week?","b":true},{"text":" Names, structure, comments where the reason is not obvious."}],[{"text":"Did you say what you would do next?","b":true}]]},{"t":"p","runs":[{"text":"Note that four of the five are communication."}]},{"t":"h2","id":"time-boxing-and-saying-so","runs":[{"text":"Time-boxing, and saying so"}]},{"t":"p","runs":[{"text":"If the brief says four hours, spend four to five, and write at the top of the README what you spent and what you cut."}]},{"t":"code","lang":"","label":"Text","text":"Time spent: about 4.5 hours. With another day I would have\nadded tests for the currency parsing and looked at why 6%\nof rows have no customer_id."},{"t":"p","runs":[{"text":"Spending twenty hours and not saying so is dishonest, and it also loses: the grader is comparing you against a four-hour bar, and a submission that is polished far beyond it reads either as a misjudged sense of scope or as a candidate who could not stop. Judgement about scope is part of what is being tested."}]},{"t":"h2","id":"the-trap-is-the-test","runs":[{"text":"The trap is the test"}]},{"t":"p","runs":[{"text":"Every good take-home dataset contains something planted: duplicate rows, mixed timezones, a currency column in three formats, an ID column with leading zeros, negative quantities that mean returns, or a target that leaks."}]},{"t":"p","runs":[{"text":"You do not have to fix all of them. You do have to "},{"text":"name them","b":true},{"text":". A README section headed "},{"text":"What I found in the data","i":true},{"text":" with four bullets scores better than a silent perfect model, because it shows you looked."}]},{"t":"p","runs":[{"text":"Leakage","b":true},{"text":" is the classic and worth understanding properly. You are asked to predict which customers will request a refund. The dataset contains "},{"text":"refund_processed_at","code":true},{"text":". Any model using it scores near-perfect and is worth nothing, because at prediction time that column is empty: it only exists after the event you are predicting. The mechanism is that the feature is downstream of the target rather than upstream of it. Interviewers plant this deliberately, and catching it is worth more than any modelling choice you make."}]},{"t":"h2","id":"the-readme-that-scores","runs":[{"text":"The README that scores"}]},{"t":"p","runs":[{"text":"Same skeleton as your project pages:"}]},{"t":"ul","items":[[{"text":"How to run it. One command if possible."}],[{"text":"What I did, and why: the two decisions that mattered."}],[{"text":"What I found in the data."}],[{"text":"How I checked it: the number, however small."}],[{"text":"What I did not do, and what I would do next."}],[{"text":"Time spent."}]]},{"t":"h2","id":"the-red-lines","runs":[{"text":"The red lines"}]},{"t":"p","runs":[{"text":"Some take-homes are not assessments."}]},{"t":"ul","items":[[{"text":"A brief that is a real business deliverable: “here is our actual dataset, produce the report we need this month”."}],[{"text":"More than about eight hours of unpaid work."}],[{"text":"“Build a prototype of our product” before any technical conversation."}],[{"text":"A take-home given before anyone at the company has spoken to you at all."}]]},{"t":"p","runs":[{"text":"Decline these politely and offer an alternative: "},{"text":"”I would rather not spend twenty hours before we have talked. I am happy to do a live 90-minute session, or to walk you through a project I have already built.”","i":true},{"text":" Some companies will accept. The ones that will not have told you how they will treat your time later, which is worth knowing for free."}]},{"t":"p","runs":[{"text":"Asking for a longer turnaround is different and almost always granted. If you have a full-time job, ask for a week rather than 48 hours. Refusal to accommodate that is itself information."}]},{"t":"h2","id":"deploying-it-for-free","runs":[{"text":"Deploying it for free"}]},{"t":"p","runs":[{"text":"If the brief wants something running, you do not need to pay for hosting:"}]},{"t":"ul","items":[[{"text":"Hugging Face Spaces","b":true},{"text":": free CPU tier, good for a demo with an interface."}],[{"text":"Fly.io","b":true},{"text":" and "},{"text":"Render","b":true},{"text":": free or near-free small instances."}],[{"text":"GitHub Pages","b":true},{"text":": for anything static."}],[{"text":"Streamlit or Gradio","b":true},{"text":": a working interface in forty lines, both free and open source."}]]},{"t":"p","runs":[{"text":"A deployed link takes the reviewer five seconds to check and a repository takes five minutes. That difference decides some processes."}]},{"t":"h2","id":"the-limitation","runs":[{"text":"The limitation"}],"role":"limit"},{"t":"p","runs":[{"text":"Take-homes systematically disadvantage people with a full-time job, caring responsibilities, or unreliable electricity and internet, because they convert the assessment into a test of available spare time. Nothing you do fixes that for the industry. What you can do is negotiate the deadline, state your time budget clearly, and treat a company that will not move on either as having answered a question about themselves."}]}],"check":{"question":[{"text":"A take-home asks you to predict which orders will be returned. Your model scores 0.98 AUC on the first attempt, far above anything you expected. What should you do first?"}],"options":[{"text":[{"text":"Submit it, noting that the result is strong and the approach was straightforward."}],"correct":false,"tempting":[{"text":"Treats an implausibly good score as good news, which is the single most common way candidates fail this exercise."}]},{"text":[{"text":"Reduce the model’s complexity to avoid overfitting, then re-run and report the lower score."}],"correct":false,"tempting":[{"text":"Reaches for overfitting, a real phenomenon that does not explain a score this high on held-out data and leaves the actual cause untouched."}]},{"text":[{"text":"Add cross-validation to confirm the result is stable before submitting."}],"correct":false,"tempting":[{"text":"A good habit that will faithfully confirm the same inflated score, because the problem is in the columns rather than in the validation scheme."}]},{"text":[{"text":"Examine the features for one that could only be known after a return happened (a processed-at timestamp, a refund flag, a status field) remove it, re-run, and write up both the discovery and the honest score."}],"correct":true,"tempting":null}],"order":[2,0,3,1],"why":null},"prev":{"slug":"the-recruiter-screen","title":"The first call, and the salary question","minutes":9},"next":{"slug":"the-live-technical","title":"The live exercise, where silence is scored","minutes":8}}}