We receive over 100 applications per week. As much as we'd love to, with a small team of 10, it's not feasible for us to reply to each mail with specific reasons for rejection. After reviewing thousands of applications, we've come to realize that there are only a handful of mistakes that ~95% of the rejected applicants make. Here they are.
We're all builders at heart, and we want to work with folks that care about their craft. We love people who spend their college time churning out great side projects; small tools, apps, projects, etc. Open source contribution is also a big plus. We spend a lot of time checking out your portfolio, GitHub, Devfolio, Dribbble, etc., and if there's not much there, we're unlikely to invite you for a call.
Internships are training, but that's not all it's about. We give our interns real responsibilities (for e.g., shipping to production in the very first week), complete ownership over important projects, mentoring them along the way. We want people who demonstrate their experience and willingness to work with small and fast-moving teams. We understand that there can be other reasons for not having traditional work experience before — you could've been busy doing freelance work for your clients, building your own projects, running a company, being the main organizer of your college coding club, but you gotta tell us that.
We hire engineers across four main verticals — Frontend, Backend, iOS, and Android. We expect our incoming interns to have basic knowledge of a few of these but a deeper understanding of one of them. We like generalists, but we value engineering expertise. We see many profiles riddled with all the latest buzzwords — AI, ML, Blockchain, Data Science, IoT, etc., but with no evidence of you having solid fundamentals. If your profile showcases a willingness to dive deep into something — we're more likely to take your application forward.
We support using AI tools and we use them ourselves at Devfolio. They are great accelerators when used well. The problem is when we see projects that are completely vibecoded. In those cases, AI starts dictating the direction, instead of the builder being in control.
Complete dependence on AI generally slows you down long term, because your fundamentals get weaker, and it becomes harder to debug or refactor. It also compromises quality, because you stop making discerning decisions and start accepting whatever the tool suggests.
As evaluators, it becomes quite obvious when something is blindly vibecoded instead of using AI as a helpful assistant. AI should amplify your thinking. You are supposed to be the captain of the ship. AI is the crew, not the one steering the wheel.
Always avoid generic boilerplate applications. If you’re just replacing the salutation and sending the same template to everyone, it becomes obvious very quickly. Putting in the work shows genuine interest, and boilerplate only shows that you’re not specifically interested in Devfolio, you’re just spraying applications.
Also, using AI tools to polish your writing is totally fine, but letting AI fully drive your answers ends up making every application sound the same. We want to hear you. Tell us what you actually think about our product, how you’d improve them, why you’re specifically a good fit based on work you’ve actually done. If we’ve met you before, reference it. Context matters.
Use AI as a tool to help you express your own voice, not as a replacement for it.