I failed a take-home assignment from Kagi Search
158 comments
·May 14, 2025silisili
wkcheng
The attitude of the blog writer in their interactions also feels off. Just reading this blog post makes me think that this person is difficult to work with, requires extremely clear guidelines and instructions, and has a hard time making their own decisions. Maybe this is a good fit for a large, established company, but startups have their own needs.
"Create a terminal inspired email client so we can do an alpha test with some customers" is a reasonable ask for an engineer at an early stage startup. Of course, there would be a bit more specification, but a lot of the details would still be up to the engineer. This applicant wants more certainty than they can get.
This is illustrated by the line: "I would like to know what kind of response I could expect from Kagi if I drive it to completion." This is not a great request to make. There's no way they can answer that question, because there is no certainty available. They're probably getting a few hundred or a few thousand more submissions to evaluate.
dclowd9901
Yes on this: It reminds me of when candidates ask me how they did at the end of the interview. It shows an extreme lack of decorum and empathy. What if you did terribly and I wouldn't hire you in a million years? Do you really want me to tell you that?
There's no good answer and asking a question like that shows real narcissism imo.
thaumaturgy
Conversely, if you can't handle some straightforward feedback to a candidate that took the time to interview you without violating decorum or hurting their feelings, then how can I expect you to be a good manager or supervisor? How are you possibly going to be able to handle minor personnel conflicts or provide guidance during the training period? It comes across as a complete lack of basic managerial skills.
roncesvalles
Not to mention there are legal liabilities with sharing interview performance with candidates. "Oh but the interviewers told me I did extremely well on their interviews. Therefore it must be the case that I was rejected because of ${protected attribute X}."
strken
Don't take this the wrong way, but I deliberately ask how I did because it helps me weed out interviewers who think like this. Not so much "how did I do?" as "now we're close to the end of the interview, do you think we're a good fit for each other?" I give my own feedback and talk honestly about points of friction.
I interview pretty well, but if I go into an interview with a company that wants hungry hustlers and I've spent the whole interview talking about kindness and team spirit, or if you think I don't know enough pl/pgsql to deal with your gnarly legacy backend, or I'm getting the vibe that none of the engineers seem to like working here, then we need to speak honestly about that.
LPisGood
> What if you did terribly and I wouldn't hire you in a million years? Do you really want me to tell you that?
Yes, that sounds like extremely valuable feedback.
Why do you suppose asking a question like that shows narcissism? To me it shows a willingness to infest feedback to improve.
I will add the caveat that if someone asked me that in an interview I would likely give a non-answer because I’m not totally sure what all I’m even allowed to say.
etchalon
I always tell people how they did. What went right, what went wrong, whether I think they're a good fit and if not, why not.
Because I see what happens to my wife when she interviews, and goddamn its brutal.
matheusmoreira
A simple request for feedback is not evidence of narcissism or lack of empathy. Could be anxiety. Could be curiosity. Could be zeal. Could be any number of things. It's certainly not an "extreme lack of decorum" though.
It's okay to avoid giving feedback if you don't want to. I can think of a few ways to answer that question in a neutral or positive fashion to defuse the situation and legally protect the company.
mock-possum
Really?? I always appreciated candidates that would ask that at the end - being willing to step aside from the pretense of professionalism to ask a real question and listen to my answer is a signal to me that this is someone who is willing to be real with me, not pretentious or perfunctory.
I do get what you’re saying, but I disagree, there is a good answer; and as is often the case, it’s an honest one.
MeetingsBrowser
In other words, the author did a good job but failed because there was an implicit requirement to not try very hard.
> Part of the assignment is using judgment and working in ambiguity.
If trying to clarify requirements is not what they wanted here, they may as well ask candidates to pick a number between 1 and 10 and reject anyone who guesses wrong.
> overkill on the infra and polish
I know its an opinion, but hard disagree on both. Take home tests are intended to show off your ability. Without specific guidance, how can anyone guess how much showing off is expected?
Polish is only bad if it stops you from delivering. Rejecting something that was delivered for being "too polished" feels like you are saying someone did too good of a job.
---
In my opinion tests with vague requirements like this are more likely to be a different way of rejecting people who are not a "culture fit".
_dark_matter_
I think it's pretty obvious to figure out how much polish is "too much". This is a business. Engineers time is limited. Was the time you spent on that more valuable than the alternative? I'm leaving the question of what the alternative was ambiguous on purpose.
MeetingsBrowser
> Was the time you spent on that more valuable than the alternative?
In this case the alternative was applying to better companies, so I guess in a way the author really did fail the test.
nine_k
What they were looking at was not the code, but the attitude. They likely don't want an engineer with a propensity to do too much, unless it's a 100x coder who can do "too much" with a lightning speed. Usually they want he candidate to show the ability to quickly do as much as needed, and not more, and, crucially, to understand how much is needed.
So yes, this is a culture fit test as much (if not more) as a design and coding test. Some people who are great at design and coding would fail it, and it's how this filter is intended to work.
throwaway2037
Sorry for the humorous reply (I know this isn't Reddit), but this part gave me a good laugh:
> unless it's a 100x coder who can do "too much" with a lightning speed
I see you there. Raising the bar from 10x to 100x!?null
itake
IMHO, the author's approach of validating his ideas mirrors modern engineering workflows. Coders don't spend hours independently coding an MR and then getting feedback from prod, tech leads, QA, and UX after the feature is "finished."
Work environments that "code first, review later" have been some of the most toxic in my career. It really sucks when you spend days building a feature only to find its not wanted. Which is why explaining the feature in English and getting approvals is the industry standard for shipping projects.
This candidate followed modern software practices that healthy workplaces follow.
(I'm also a hiring manager at a 1k+ engineer company).
silisili
I found myself thinking the same thing - perhaps came from a bigger/more established company. Reminded me of the PRD/ERD process. And that's not necessarily bad.
But from my experience, the two types look at each other like the other is insane. If you write up an ERD at a scrappy 6 person startup, everyone is going to think you waste time.
Conversely, if you join a larger team with established processes and begin flinging code at the wall unabated, people are going to think you're reckless and possibly inexperienced.
theamk
Depends on a place.
I've worked in places with very strong product management, where every single detail must be approved by a PM. I've also worked in places where engineer has a lot of autonomy - "John from FOO dept is spending too much time wrangling the daily data updates. Can you help him, here is his email? Our higher-ups allocated two weeks for that, but we can extend this if needed." - and from then on, you are in full control of the design and implementation, subject to your team's rules (because no one wants a system with bus factor of 1).
For me, I've found that the latter places are much nicer to work in. The interview question seem to focus on latter situation too.
nine_k
> Coders don't spend hours independently coding
Exactly. The position they are hiring for is not that of a coder; coding is just one of the skills the position requires, maybe not even the most important.
linotype
> Part of the assignment is using judgment and working in ambiguity.
I love that the industry has become so poor at gathering requirements that devs are now effectively filtered for their ability to mind read.
silisili
Just to be clear, this wasn't my advice, it was written into the task description -
This project tests your ability not only to code, but to deal with ambiguity and open-endedness
I'm not sure how I feel about that to be honest. On one hand I get what they're shooting for in general by saying that. On the other, they're going to have some preconceived notion of what they want, and it's a bit of luck if you come close to that.crystal_revenge
What about:
> And don't hesitate to tell us if you have any questions!
I personally have no problem dealing with "ambiguity and open-endedness" (and, in fact, enjoy it!), but my solution to this problem at every job that has had this issue is: talk to people and understand the problem.
Attempting to "mind-read" is the worst solution to ambiguity, and, in practice, nearly always leads to disaster.
brudgers
The way to deal with ambiguity and open endedness is by limiting scope and sticking to the unambiguous.
When the client can play with that, the scope can be expanded and additional features can be described.
What they want is someone they can work with. Take home tests are about cultural fit too.
linotype
That’s also where it helps to be a mind reader. :)
dclowd9901
I agree, it's very fluffy. I think "testing with ambiguity" is the new version of "culture fit."
llmthrow103
As a hirer, the kind of takehome assignment I like to give is one that:
* Can be completed in 30 minutes by a skilled programmer
* Has clear evaluation criteria, both objective and subjective
* Has multiple approaches that require making different tradeoffs
And of course, only give it to some candidates where the result will be make-or-break.
As someone who took one of these broad take-home assignments my last time looking for a job, I failed a the assignment for a job I was overqualified for because I was told I wasn't able to divine what parts of the extremely broad assignment I would be graded on.
I doubt I will be in a position where I get a job that isn't a referral for the rest of my career, but it really turned me off of these kinds of assignments, both taking and giving them.
theamk
Very curious: how do you deal with AI answers for those?
While writing my questions (and testing in my teammates), I found that "can be completed in 30 minutes by a skilled programmer" very often means "can be completed almost automatically by AI", and that AI will give explanations too, that interviewer could repeat during code review phase.
throwaway2037
Holy crap. That was exactly my same reaction. Only thirty mins to complete? Sheesh: Vibe code that!
ryandrake
I think the huge proposal (after several rounds of questions) was what sunk him. The instructions did not request a proposal, and submitting one, especially one that detailed, conveyed “OP cannot take the initiative and proceed with work without seeking approval beforehand.” The project was about asking a few questions, listing a few assumptions, and giving yourself approval to confidently dive in and build something ambiguous. Maybe I’m wrong, but I don’t think the code mattered after that email was sent. The company should have just ended it there without him wasting his time building the assignment.
4b11b4
I also read that proposal and thought: "it's over".
lern_too_spel
That's the blogger's point. The hiring manager saw the proposal, knew that wasn't what he wanted, and then proceeded to waste an entire week of the candidate's time while he was looking for income.
Tiberium
Regarding 4 - in the full version shared by the author at https://archive.md/A95Ju there is info on what they meant by "terminal-inspired"
brudgers
Reading the brief, the simplest thing that might work is:
1. Spin up an EC2.
2. Install Himalaya.
3. Do some configuration.
Code quality and a sound engineering approach are there.
Personal touches aren’t. Though they look for them, absent domain knowledge they probably don’t want to see them.
Himalaya has documentation and a Github already.
No need to invent the wheel.
Won’t take an unreasonable amount of time.
And looks like a first iteration of a tool.
minikomi
It seems they wanted "keyboard driven", "fast/light", "quickly interactive"
The youtube video provided by the OP seems more "web-app", "click driven".
For contrast:
* The OP's submission: https://www.youtube.com/watch?v=yY1sVXMkP_o
* Someone interacting with aerc: https://youtu.be/kpAwwgnZUxg?t=308
* Someone interacting with mutt: https://youtu.be/C35NRp42bEQ
MeetingsBrowser
> It seems they wanted
This is the problem. Your guess is different from the author's guess, because nothing is explicitly stated.
For others who did not click the link, the explicit requirements are:
> - Email client can either be in the terminal (i.e. a TUI) or a web app
> - Should have basic email viewing + sending functionality
> - Can use a fake backend (DB, in-memory, etc) or real IMAP/POP/JMAP/etc backend
> - Does not have to handle rich text messages, just plaintext
> Your implementation should take inspiration from existing terminal email tools like aerc, mutt, or even something like himalaya. It should feel fast and intuitive, and you can choose which email flows you'd like to implement.
The word "keyboard" does not appear. Inspiration from X, Y, and Z is entirely subjective, and you should not be punished for not reading the interviewer's mind.
theamk
My first though on looking at the code, and then on demo video was: wow, it took that person a solid week to write a web app with two pages.. all while missing the most basic email features, like an ability to opening a message (and not just show full text of mail bodies on one page).
Later on I read the requirements... This person applied to a position named "Email Backend Engineer" but they actually used a third-party product (postmark + turso) for email backend! They also clearly don't think about email too much - the basic stuff, like plaintext email formatting, viewing, and folders (at least inbox + outbox) are simply missing; while there are optional features, like login screen, admin page and backend framework. And backend database does not even containing a email headers map!
That person might be a great engineer, but I don't think they would be a good fit for that specific position. I'd reject them as well.
(A separate question is that hiring manager's second response... We don't do take-home interviews, but I imagine I'd be stumped by a proposal like that, it seems so irregular in a take-home assignment. Still, I can see how the candidate took that response for an approval... perhaps a next candidate would get an extra sentence perhaps something like "actual problem grading would depend on the code quality, number of features implemented, and how close those are to requirements and job description")
Update: read original job description and not just the except from the blog. That person surely omitted some stuff in their blog! the original title was:
"The project is to build a minimal, terminal-inspired email client"
it gave examples:
"Your implementation should take inspiration from existing terminal email tools like aerc, mutt, or even something like himalaya."
wow! that's 100% no hire, serious inability to read the requirements.
MeetingsBrowser
> serious inability to read the requirements.
Which requirements were not met?
- Email client can either be in the terminal (i.e. a TUI) or a web app
- Should have basic email viewing + sending functionality
Seems like both were more than met to me.
Inspiration from existing tools is subjective. I would have assumed that spending time on the UI for a backend position was not the best way to show off my skills in a take home test.
theamk
The 2nd line of assignment, "The project is to build a minimal, terminal-inspired email client".
I agree that "inspiration" can be subjective, but in this particular case the solution was so much off that it'd be hard to argue otherwise. There is nothing terminal-like in it, and the tool is not usable as an email client either. Instead of doing login screens and user management, author should have made a page to view individual email or added folder (just 3, inbox/sent/trash, would already be a great improvement)
And if you want to ignore the requirements and work off position description... the position is titled "Email Backend Engineer", and the candidate's solution offloads actual email operations (storage, transfer) to third-party services. I suspect that even if candidate provided the same UX, but would have backed it with SMTP, IMAP, TCP/IP (not via http library), DNS MX lookup, resilient storage etc... then they might have passed.
But author failed to do either serious front-end work (required by question) or serious back-end work (required by job posting), so result was entirely predictable.
danpalmer
Take home assessments can be a valuable part of an interview process but they absolutely need a time limit. I think 2-3 hours is going to give you all the information you need, unless what you're selecting for is new grads with no dependents, hobbies, or responsibilities.
If this had been limited to 3 hours then the worst case is that the candidate would have lost 3 hours, but far more likely is that they would have come up with an entirely different proposal and/or solution that was appropriate for that timeline, and that extra information would have made it clearer what the company was looking for.
The other point I'd always encourage applicants to confirm is: are you looking for any answer, or are you looking for a good answer. Some take-home tests are purely about passing a test suite and how you manage it doesn't matter, some would prefer that you meet 80% of the requirements but write better code. I've seen applicants do the wrong thing on both sides of this.
stingraycharles
To me, as someone who hires and gives candidates take home assignments, Kagi’s assignment is huge and disrespectful of the candidate’s time. Surely they’re (probably unintentionally) filtering for candidates that have a lot of time to waste on projects like this — while people who are busy (the kind of people you want) will pass.
Surely there must be other ways to have an idea on a candidate’s skills.
In our case, hiring people with data engineering skills, we just ask of them a simple ETL challenge (pull data from zip file, transform it, insert into any database). We leave ambiguities in there and there are some Easter eggs in the dataset (eg null values where you would not expect it, incorrectly formatted CSV) that we use to evaluate how well a candidate can perform.
We timebox it at 4 hours, but don’t give guidance in case they run out of time, that’s a good suggestion.
During a follow up call, we review the code together and we’ll ask them questions on how to improve the code (“what if the dataset doesn’t fit in memory”, etc), which is what the actual technical assessment is. At that point they should already feel somewhat comfortable with the problem domain, and you can assess their real skills.
fenomas
I agree about Kagi, but about your process wanted to ask: do you really feel like having them write the code as a take-home task adds any signal to the process?
At my current gig we do a 1-hour pair programming kind of thing, where we video-chat and watch the candidate work on a small, straightforward task. And as the interviewer I watch how they use the tools, where they go for docs, do they read the requirements, how do they test, etc. By the end I always feel like I have a strong picture of their ability, and the whole thing is capped at 90 minutes for both sides (adding time for their questions).
If the candidate's code was written offline beforehand, I'd have no idea whether it was theirs, whether it came from a friend or chatGPT, whether it took ten minutes or ten hours, etc. Sure I could try to suss out those things during discussion, but isn't it better to observe directly?
null
Teever
The solution to this problem ultimately needs to be a regulatory one.
People should be paid for the time they spend in interviews.
You make that the law and this ambiguous hoop jumping bullshit goes away real fast. Companies will optimize for cost instead of dumping cost onto the prospective employees.
This is good for the economy because it forces companies to innovate and optimize the interview process and it saves hundreds hours of totally economically unproductive time on the part of candidates.
jv22222
Yes. It would also force them to screen resumes and do better profile research or they wouldn’t spend the money.
quantadev
That's basically my feeling too. No one would ask for a maid to clean their house free for 4 hours, in order to decide if they want to hire her long term. And that's precisely what hiring managers have been getting away with for decades, because no one is pushing back. The managers are essentially abusing their power. It's all about abuse of power and utter arrogance.
quantadev
But if you're unable to determine if someone has this knowledge via a phone call, instead of 4 hours of their work without you even being present, then that failing is on you, not them. If you can't judge someone's knowledge by asking questions, then you don't know how to come up with the right questions. Again that's on you. The only thing a 4-hr take home test will filter for is desperation. You'll get the most desperate candidates, and you'll do so by wasting days and days of people's time once you add it all up. It's just utterly disrespectful to demand these silly homework problems. I always take it that way. I take it personally, tbh. I find it absolutely insulting to even be asked and I simply refuse.
rjmill
How do you know that interviewees aren't spending more time on it?
Because you can't guarantee all candidates are spending the same amount of time, it becomes a game theory problem where the candidates will typically lose in some form. In many cases, the right answer is to spend extra time making a really polished (but not too polished!) solution and pretend like you stayed in the time limit. And every candidate is either a) doing that, or at least b) worried that their competition is doing that.
Even if we ignore that dynamic, 3 hours is a long ass time for a candidate to spend when they're not even sure they'll get to talk to another human about it.
In a 1-hour interview, you can run a candidate through a programming exercise and be guaranteed they're not wasting extra time on it. And if they happen to prefer doing take home assessments, you can always let them send you an updated answer later. (But often by the time a candidate asks me if they can do that, I've already developed a favorable view of their skills and can tell them, "go for it if you want, but you've already 'passed' my test.")
By keeping the candidate-interviewer time investment the same, you guarantee that you're respecting the candidate's time as you would your own (because you're sitting there with them.) I can help them skip over the parts I'm not interested in (e.g., by feeding them info they'd be able to find via search or telling them not to worry about certain details.)
If a hiring manager doesn't respect their candidates' time, how likely are they to respect their employees' time?
zelphirkalt
Yep, this is what I am taking from this thread: Next time I am given a take-home, I am going to ask them to promise, that I will get to talk to a human about it. They can of course straigh-ass lie about it, and I am sure I will run into such abysmal behavior at some point.
nailer
I agree with the author that live code reviews are much better than live coding, but if companies insist on a live coding exercise: let me bring my laptop and mouse leave the room for 45 minutes and come back when we can talk about what I built.
Tiberium
I understand that their responses were very minimal and not helpful, but it clearly says in the requirements to make a "terminal-inspired" email client. However, in the video you shared [1] I see a somewhat generic email web app, with nothing particularly "terminal-inspired". Considering the fact that they wanted either a real TUI or a webapp, I'm pretty sure that the web app should've also been "terminal-inspired". Am I missing something? I'm not trying to necessarily criticize you, perhaps I just misunderstood the requirements.
Edit: I've actually checked the full requirements page, and they explicitly say this in "Inspiration":
> Your implementation should take inspiration from existing terminal email tools like aerc, mutt, or even something like himalaya.
benmusch
Yeah, a clearer explanation in the rejection email would have been nice, or perhaps even a warning in response to the proposal (though it's not 100% clear from the proposal alone that OP would be going down a path that ignores that part of the assignment.) But the prompt explicitly lists other terminal clients as the inspiration.
Also, the prompt for a terminal client really changes what they're testing! Email web UIs have been a known quantity for years. But the UX of a terminal client is still something that's not "solved." I suspect the rubric for the question has large sections about how they decide to make a terminal client that OP's submission doesn't address at all
TechDebtDevin
Also they seem to put emphasis on Go programming, which takes < 20 lines to get a cli running so not sure why they chose a browser GUI, which is arguably much more work.
crystal_revenge
I did a recent round of interviews and this experience closely mirrors mine (at multiple places). Delivered an exceptional solution to the problem only to be rejected without a discussion about the delivered project. I have been on the hiring end of take-homes multiple times and firmly believe that if you ask someone to do a take-home assignment you must follow up with a chat about the code. Apparently that's not the case at most places.
If you're asked to do a take home, I highly recommend confirming that there will be a follow up regardless of the assessment, and if they do not agree to this, do not do the "home work". The honest truth is that most of the teams hiring are of pretty low quality and therefore implementing a good solution is a negative because the team hiring is not at your level (which is a frustrating reason for being rejected).
I'm an early adopter of Kagi and am now planning on cancelling my account over of this. Completely unacceptable. If you don't have time to chat with a candidate about their work, don't ask them to do the work in the first place.
jupblb
I agree. The company should have either published clear guidelines on how the project would be assessed or provided some feedback on what could have been done better. It's okay to fail an assignment, but it's not acceptable to waste someone's time without offering anything in return. There are many companies, including pop startups, that handle this well.
sheepscreek
> I have been on the hiring end of take-homes multiple times and firmly believe that if you ask someone to do a take-home assignment you must follow up with a chat about the code.
That’s actually a very valid point. Take-home assignments not only require a significant amount of effort from the person administering them but also from the interviewer (or rather, the hiring team). After investing the time and effort in reviewing a project, it’s reasonable to expect feedback/a response back if requested.
However, we must also acknowledge certain realities. If there are 20 solid candidates for a single open position, many capable individuals will be rejected. This doesn’t imply that they were inadequate or even “failed.” It’s simply a reality of life.
Now to be asked to justify why a hiring manager picked A and not B, legally speaking, cannot be that I had to pick one out of the amazing candidates, so I picked one. The legally correct response (unfortunately) is to get nit picky and find faults where none really exists. At least, that has been my observation in how corporate America likes to operate. And last time I checked, Kagi is based out of Palo Alto.
kadushka
to justify why a hiring manager picked A and not B, legally speaking, cannot be that I had to pick one out of the amazing candidates, so I picked one.
Why not? Does this phrasing implies any form of illegal discrimination?
crystal_revenge
> if there are 20 excellent responses for a single open position, many capable individuals will be rejected.
I would never ask 20 people to do a take-home assignment. There are so many better ways to test team fit before asking someone to commit serious, unpaid, time to a project. Historically speaking a 30 minute chat with someone provides a surprisingly good amount of information to anyone experienced in hiring.
But if you want to commit 20 people to take-home assignments, then block off 20 hours next week for 1-on-1s to chat with them about those assignments. If that sounds like too much, then don't find a better way to filter down the number of people doing homework until it feels manageable.
theamk
did they really deliver "exceptional solution" though?
Their solution seems to be nothing like "a minimal, terminal-inspired email client", and OP completely ignored the references to tools they were told to "take inspiration from"
When there is such bad misunderstanding of the requirements, I'd not waste time on the discussion either.
crystal_revenge
There was able opportunity for the hiring manager to point that out if that were the case. They specify questions where encouraged and then completely ignored the questions. If the HM doesn't have time to respond, then maybe take-home as first filter is not a good decision.
theamk
Were there? The question clearly said, "build a minimal, terminal-inspired email client" and "take inspiration from existing terminal email tools like aerc, mutt". Candidate completely ignored that part and built a tool which is nothing like terminal email at all.
Would any of their emails give a hiring manager idea that the candidate failed to understand the assignment in such a gross way?
Email 1, "What kind of extra feature do you value highly"
Interviewer thinks: "UX improvement could be VI-like megacommands, "pretty UI" must mean creative use of colors and font attributes, privacy-related must be encryption at rest... It's all good, we are happy to look at all of those!"
Email 2, "A webapp with golang accessible online, deployed through AWS using ECS Fargate, with SSL (https), integrated with an email sender provider, with authentication through a login screen, with the ability to send emails through a form, and displaying incoming emails in the user interface."
Interviewer thinks: "OK, that's a lot of implementation details.. Not sure why candidate feels the need to confirm that, but nothing in the list above will be graded as a negative. The important things we care about are that it's inspired by terminal apps like mutt, and that "it should feel fast and intuitive" and one can totally do that using technologies above"
Without seeing the screenshots/mockups, how would one even guess that the candidate was so off?
bboreham
I took a look at the code, to see how I would react as a reviewer.
In the first file I opened, I got as far as here: https://github.com/Sleepful/mymail/blob/main/app/router/page...
// Create a context variable that inherits from a parent, and sets the value "test".
// Create a context key for the theme.
ctx, err := getEmails(pb, e)
First line is very weird, unrelated to the task. Maybe copy-paste from a sample in a blog post? Anyway not paying attention to leave it in.Wording in the second line is not consistent with third.
I’d stop my review there. Lack of attention to detail. Author does not demonstrate an ability to think clearly.
jupblb
The problem in the story is not that the candidate was rejected but that the process is largely disrespectful by asking for a lot of unpaid time to implement some project without clear guidelines or giving valuable feedback.
qmmmur
This is a classic case of misreading the subtext. They want you to be independent and able to create your own work and goals. The ambiguity of the take home task is not there for you to interrogate over multiple emails, rather its an open palette for you to show how you take a relatively broad task and produce your own interrogation of the problem space.
As someone who works at a university this is very reminiscent of students who don't understand the assignment then complain when they get an unexpected mark.
asmor
That would maybe be a valid point if the take home set any context beyond "it's an R&D project" and "minimal".
What do you want to achieve here, is this a throwaway prototype or would a user ever see this? Am I going to get picked on for imperfect UX or do you just want to see something. It becomes an exercise in guessing the reviewers sensibilities.
holoubekm
As an engineering interviewer I feel the urge to comment. I like neither leet code, nor home assignments. They are both time consuming and provide you with a little information.
But having said this I would have likely rejected the author too. Kagi Search is a startup, these folks are typically looking for fast moving, pragmatic optimists who can strike the breadth - depth balance.
We used to have a colleague. They would collect the inputs, close themselves for a few days, come up with a solution only to learn that reqs changed in the meantime. It was not pleasant experience for anyone.
r053bud
I just can’t get past the fact that he didn’t even deliver on the core deliverable of “ The project is to build a minimal, terminal-inspired email client”. Nothing about the demo I watched on YouTube looked “terminal-inspired”
parpfish
Man, I hate take-homes.
When I see instructions that say “This project tests your ability not only to code, but to deal with ambiguity and open-endedness”, it actually means either a) this exercise has been so poorly conceived that we didn’t bother with a rubric or b) the work environment is so chaotic, we never clearly define specs or requirements for anything.
That, and the instruction to simultaneously “show off your skills” and deliver a pragmatic functional solution are completely at odds. Good simple solutions aren’t flashy.
danpalmer
To me, take-homes that have UI or API integrations are a bit of a red flag, because UI code (for most roles) is relatively boring, and API integrations are a lot of faff with not much signal. Cool you can make an HTTP request, cool you've got a basic CRUD editing setup. It's a lot of code that takes a lot of time and tells me almost nothing about how you code, hell, AI tools will happily generate these things in no time and at a pretty good quality.
What I want to see is an engineer implement an awkward bit of business logic. Does it become a million nested if statements and a "here be dragons" comment at the top, or do they identify the right patterns and build something that I can reason about when reading the code? This is far more valuable in the job, more signal in the interview, and much harder for AI to get right. It also takes less time.
parpfish
I’ve seen a few that let you fork a repo with all that boilerplate set up and you just have a few stubbed methods to fill out, and that seems reasonable. But going from 0->1 on an app is so much grunt work and I doubt the reviewers would even look into all of it
worthless-trash
I believe they don't. I think its a filter that they want people they can push into too much work to apply.
dzhiurgis
Can I ask you and everyone else - why do AI is so good at UI/CRUD apps and terrible at business logic?
I've been caught with this few times now. Spend ages trying to coerce AI to solve logic problem and end up just manually solving it myself. Whereas UIs are so good and usually near perfect from first prompt. I suspect it's the weak prompt. I need to learn and solve this before my brain completely atrophies (there must be Anthropic joke here somewhere hehe).
ncallaway
> we never clearly define specs or requirements for anything.
I mean, what if part of the role that’s being hired for is to help people clearly define the specs and requirements? I consider that a big part of what it means to be a senior software engineer.
Maybe this exact format isn’t the best way to test for it, but I don’t think “we want to see if someone can deal with ambiguity” means all the work is ambiguous. It might just mean all work needs to go through a process to take it from “ambiguous requirements” to “clearly defined specs”
crystal_revenge
> what if part of the role that’s being hired for is to help people clearly define the specs and requirements?
Then they should have responded to his questions in email?
I personally love working on projects that are vaguely defined because it means getting to interact with people and understanding the heart of the problem. My favorite roles have involved reaching out to non-technical people and figuring out how to solve their problem. Often it's not the solution they even initially asked for.
But if your role is to guess about vague specs with no communication, then you're going to fail no matter how senior you are.
duskwuff
> I mean, what if part of the role that’s being hired for is to help people clearly define the specs and requirements?
Then I'd expect the interview process to focus on that process, not on the final deliverable. As it stands, the candidate tried to interact with the interviewer by trying to ask for clarification on the requirements, then making a detailed proposal, and got no actionable feedback from either.
theamk
Could one do a "terminal inspired, mutt-like email client" that completely satisfies OP's proposal (web-based, TEMPL, pocketbase, pulumi, etc...)? Sure, it would be possible. None of those are _required_ for the submission but you can totally use them if you wanted to. So the interviewer probably thought, "hey this person is going all out", and was absolutely honest in saying "Looking forward to receiving your submission"
I cannot really blame the interviewer for not reminding the candidate that they should actually follow the requirements, in addition to all the optional stuff they mentioned in their spec.
null
carlosjobim
It's a start-up with a lot of different projects. It is expected that the work environment would be chaotic. People who look for a no-surprises type of work week should probably not apply to such a kind of workplace.
> Good simple solutions aren’t flashy.
Maybe showing off your skills is making a good and simple solution?
parpfish
Sure, the work is chaotic. But why would the interview process need to be chaotic? You want to get the best signals of ability that you can, and one thing you can do to help that is to make sure that you’ve given an assignment that will be evaluated consistently on your end and understood uniformly by the participants
lmm
> Sure, the work is chaotic. But why would the interview process need to be chaotic?
Because the interview is meant to measure how well someone would perform on the work?
> You want to get the best signals of ability that you can, and one thing you can do to help that is to make sure that you’ve given an assignment that will be evaluated consistently on your end and understood uniformly by the participants
Well sure, all else being equal, but if the cost of consistency is an assignment that doesn't reflect the actual work environment then that may outweigh the benefit.
austin-cheney
I have done this dance a few times. My learning about interview assignments is review the written grading rubric before reading anything else. If the grading criteria lacks specificity then don’t do the assignment. If there is no provided grading rubric in advance then don’t do the assessment.
edfletcher_t137
Building a concrete, working, minimum-viable solution from ambiguous requirements: that's the point of the exercise. That's what hiring managers want in candidates because those candidates end up being good at building a concrete, working solutions from ambiguous requirements. Which is every software project ever. Although the AI Age has unquestionably changed the efficacy of this kind of candidate screening, that is orthogonal to this discussion. For many years it has been one of the most-effective ways to screen for the ability to build concrete, working solutions from ambiguous requirements. Which is every software project ever. So it's no surprise it persists.
exeldapp
Yes, software is full of ambiguities but there are methods we use to handle them. OP emailed an outline wanting feedback, as any team player would do to iron out ambiguities, and received a meaningless reply. I think it's safe to say companies don't want their engineers going into a corner never to be seen again for 2 weeks, which is what this interview process recreates.
theamk
OP's proposal was only describing irrelevant stuff (the backend technologies) and was completely silent on on stuff that mattered (demonstrating how actual RFC822 email works, mutt-inspired UI). It was therefore accepted without comments, as there were no "substance" to comment on.
That is often a problem with proposals/design docs in general. In the real job, if proposal is actually required, it would be sent it back with "please add details on UX and how you are going to store email headers". In this case, the proposal was explicitly _not_ required though, so interviewers did not want to ask for more details on the optional document. They checked what was written there, found no problems, and approved it.
edfletcher_t137
OP didn't take into account the (great) asymmetry between themselves and the hiring manager, then built an entire lament on that. Dealing with this job req is likely just one of many day-to-day responsibilities the HM has and frankly I'm impressed they responded with three whole sentences. One method we can use to handle such ambiguity is to "make your best judgement" based on your skills, knowledge and experience (things that are tested for in the hiring process, incidentally), because often you may not get the answer you want or expect if any at all.
dalmo3
You don't think the author built a concrete, working solution?
Crestwave
They explicitly asked for a minimal, terminal-inspired email client for their Email Backend Engineer role. OP built a ton of infrastructure, created a generic web app that has no semblance of terminal inspiration as far as I can tell, and outsourced the backend to third party APIs.
Concrete and working? Technically, yes. This would have been an excellent submission for a different assignment and role. But it doesn't seem to suit the specifications for this one.
edfletcher_t137
Not what was expected of them. I included "minimum-viable" in my original reply for a specific reason: to counter OP's lament that they lost out to a simpler solution.
If you are asked to implement X and instead you take extra time and come back with X+Y+Z, what have you done? Wasted time e.g. money. Companies really hate wasting money.
So if in your candidate project you demonstrate a propensity for bike-shedding any task, that's gonna be a big red flag.
dalmo3
It was expected that the candidate filled the blanks. He specifically mentioned he would fill those blanks with Y+Z, before he spent time on them.
In the real world, if the time he spent was deemed wasted time, that's management's fault.
My honest feedback below from the perspective of a hirer. I'll start by saying I hate takehome stuff, for exactly reasons like this. It wastes everyone's time. They're fine as a 'last step before hire' thing, but not as a filter.
1 - Too much chatter. Part of the assignment is using judgment and working in ambiguity. I probably would have ran with what was given enough to knock out something small and local in an evening or two. Asking questions is usually fine, they even welcomed it, but seems counter to the original ask.
2 - Writing and sharing a proposal seemed like way overkill. You have to remember that these companies are now getting hundreds if not thousands if not tens of thousands of applicants, that is a lot to deal with if everyone does so. I think it's a bit of a disconnect...you feel like you're going above and beyond and being thorough, they feel like it's being a bit long winded and wasting time. That probably explains the nonresponse.
3 - The finished product seemed functional, but seemed a bit overkill on the infra and polish. This is probably a good thing to work with you, but ended up wasting a lot of your time if not being selected, which was the case.
4 - Maybe I missed something, but the requirement asked for terminal inspired. I'm not quite sure precisely what they meant by that, but didn't see any possible interpretation of that in the result.
Anyways, hope you don't take it too negatively or personally - you obviously are a talented individual and moreso seem to really care about your work. Just wanted to play a little devil's advocate with a different perspective.