Interesting breakdown. Its a hard market.
My last Two jobs were both referrals.
Interesting breakdown. Its a hard market.
My last Two jobs were both referrals.
We get 100s of automated applications per day for a position we recently opened. 99% are automated and no where near meeting the requirements. We try to give everyone a review and a reply but it is a massive task, unfortunately. We do not have dedicated personel to handle these matters so it costs engineering time. The current situation for online software dev job application sucks for everyone.
I guess what I am trying to say is: If you don't get a reply to an application it is likely because you are drowning in noise and someone at the other end is struggling to keep up.
automated applications
What are these things exactly?
Do you mean someone has a bot to apply to stuff no matter whether they are interested in the job?
Or even worse, that there is no real applicant on the other side?
I have only taken technical rounds, so have no idea of what the HR experiences.
I don't know precisely how they are automated, but a pile of applications came in seconds after opening the position. I think I heard talk about online services that you can pay to do the bottling, but cannot remember the name(s). I personally know people who wrote their own bot to do this.
It looks like most applications are from real people, but impossible to tell without a deep vetting honestly. Malicious people running several "fake developer accounts" (for remote work, which is all we do) collecting paychecks until fired, or simply spying, is a known problem in the industry, but not something I have experienced first hand. Yet.
“fake developer accounts” (for remote work, which is all we do) collecting paycheques until fired,
I remember reading a story on such an incident. But honestly, I thought it would be something extremely rare.
Because, how does someone get money without providing work? And if they are giving actual work, then does it really matter if they are doing it themselves or making a bot do it? (despite it possibly requiring much greater effort to make a bot do a person's job well enough)
On the other hand, I see it being possible in case managing party doesn't care about whether or not the work is being done, for a long enough time, but can't the fake worker be caught and dismissed before the payment period in that case?
I mean, in my case, after working for the month, I have to submit a time-sheet and get it approved by the project manager and if they say that the work I have done doesn't justify the time I state, they can simply refrain from paying up and ask me to reduce the claimed time (and still keep the work I have given them (ok this part would be illegal if they don't pay me at all, but it's not like I can prove that they used my work)).
spying
This seems more viable. Industrial espionage and what-not. No idea how many sectors are competitive enough for anyone to consider this, though.
And then comes the point of interviews. Either it would be that the person has enough domain knowledge to clear the interview, or they are somehow getting lucky and not having to clear the interview (??feels weird saying that in the comments section of a post showing how hard it is to even get to an interview).
I feel it difficult to understand how someone would be able to get anything more than an entry level job, when they don't even care to work in the field. Some kind of master con-artist, maybe.
It seems like personal networks are still, by far, the most likely way to get a job. Having an internal reference helps you bypass so many filters.
It makes sense for employers, too, because a confirmed human that really wants the job is already better than the majority of the crap they have to sift through.
man.... over 400 applications, something like 5 interviews, no offers, i gave up ._. entry level is fucked
Is the SF Bay Area still the place to be? It looks kinda cursed lately.
Interesting. I recently was job hunting in 2025, January to June. In US. I was looking for remote only jobs.
My stats:
I guess I was applying to 2.2 per week. I was also mixing in studying and preparing for interviews during that time. Still slow though.
16 applications per week. Nice! Good job!
It only takes 1 opportunity to change your life.
I find this kind of graph a bit misleading/ambiguous. I intuitively want to follow horizontal association between in and out. For example, Recruiter at the bottom splits into three at the bottom.
Not sure if there's a better way to do this. Disconnect in-bar and out-bar with a condensed point/circle to indicate non-conformity?
If you know something better I’d like to give it a spin.
The better option is to keep colors from the original input stream for the flows instead of making the flows an uniform color.
In the input on the left you have pink, green and blue.
Keep these colors throughout the graph.
Except of the input, all of the other stages only ever split up and never merge, so keeping this single set of colors is enough.
The other option would be to get rid of the "leads" stage, since it actually doesn't change any state. All the other stages are an action that happens (e.g. "Applied" changes the state of the application from being just a lead to being an open application and it also filters out data for being e.g. abandoned). But the "leads" stage means the same thing as the first stage. So drop the "leads" stage and instead make flows go from all three input stages directly into "bad lead", "abandoned" or "applied".
Combine both to get the best result.
Is there any site that does this?
Don't know if there's a ready-made site for stuff like that, but it's not hard to do.
Here's a quick and dirty AI generated piece of trash code as a proof of concept:
# sankey_hiring_funnel_direct.py
# Requires: plotly
# Install: pip install plotly
import plotly.graph_objects as go
# Node labels (unique)
labels = [
"Network", # 0
"Hiring.cafe", # 1
"Abandoned Lead", # 2
"Applied", # 3
"Rejected", # 4
"No Response", # 5
"Screener", # 6
"Rejected by Screen", # 7
"Full Round", # 8
"Rejected by Panel", # 9
"Offer", #10
"Accepted", #11
"Declined" #12
]
# Colors for the two source groups (consistent)
network_color = "rgba(31,119,180,0.8)" # blue-ish
hiring_color = "rgba(255,127,14,0.8)" # orange-ish
sources = []
targets = []
values = []
link_colors = []
def add_link(src_idx, tgt_idx, val, color):
sources.append(src_idx)
targets.append(tgt_idx)
values.append(val)
link_colors.append(color)
# Direct flows from Network and Hiring.cafe into Abandoned Lead and Applied
add_link(0, 2, 1, network_color) # Network -> Abandoned Lead (1)
add_link(1, 2, 58, hiring_color) # Hiring.cafe -> Abandoned Lead (58)
add_link(0, 3, 11, network_color) # Network -> Applied (11)
add_link(1, 3, 70, hiring_color) # Hiring.cafe -> Applied (70)
# Applied -> Rejected, No Response, Screener (split by original group)
add_link(3, 4, 5, network_color) # Applied -> Rejected (network 5)
add_link(3, 4, 40, hiring_color) # Applied -> Rejected (hiring 40)
add_link(3, 5, 3, network_color) # Applied -> No Response (network 3)
add_link(3, 5, 15, hiring_color) # Applied -> No Response (hiring 15)
add_link(3, 6, 4, network_color) # Applied -> Screener (network 4)
add_link(3, 6, 15, hiring_color) # Applied -> Screener (hiring 15)
# Screener -> Rejected by Screen, Full Round
add_link(6, 7, 1, network_color) # Screener -> Rejected by Screen (network 1)
add_link(6, 7, 5, hiring_color) # Screener -> Rejected by Screen (hiring 5)
add_link(6, 8, 3, network_color) # Screener -> Full Round (network 3)
add_link(6, 8, 10, hiring_color) # Screener -> Full Round (hiring 10)
# Full Round -> Rejected by Panel, Offer
add_link(8, 9, 1, network_color) # Full Round -> Rejected by Panel (network 1)
add_link(8, 9, 7, hiring_color) # Full Round -> Rejected by Panel (hiring 7)
add_link(8, 10, 2, network_color) # Full Round -> Offer (network 2)
add_link(8, 10, 3, hiring_color) # Full Round -> Offer (hiring 3)
# Offer -> Accepted, Declined
add_link(10, 11, 1, network_color) # Offer -> Accepted (network 1)
add_link(10, 12, 1, network_color) # Offer -> Declined (network 1)
add_link(10, 12, 3, hiring_color) # Offer -> Declined (hiring 3)
# Sanity check
assert len(sources) == len(targets) == len(values) == len(link_colors)
# Node colors (visual guidance)
node_colors = [
"rgba(31,119,180,0.9)", # Network
"rgba(255,127,14,0.9)", # Hiring.cafe
"rgba(220,220,220,0.9)", # Abandoned Lead
"rgba(200,200,200,0.9)", # Applied
"rgba(220,180,180,0.9)", # Rejected
"rgba(200,200,220,0.9)", # No Response
"rgba(200,220,200,0.9)", # Screener
"rgba(255,200,200,0.9)", # Rejected by Screen
"rgba(210,210,255,0.9)", # Full Round
"rgba(240,200,220,0.9)", # Rejected by Panel
"rgba(200,255,200,0.9)", # Offer
"rgba(140,255,140,0.9)", # Accepted
"rgba(255,140,140,0.9)" # Declined
]
fig = go.Figure(data=[go.Sankey(
node=dict(
pad=18,
thickness=18,
line=dict(color="black", width=0.5),
label=labels,
color=node_colors
),
link=dict(
source=sources,
target=targets,
value=values,
color=link_colors,
hovertemplate='%{source.label} → %{target.label}: %{value}<extra></extra>'
)
)])
fig.update_layout(
title_text="Hiring funnel Sankey — direct source flows (no Leads node)",
font_size=12,
height=700,
margin=dict(l=20, r=20, t=60, b=20)
)
fig.show()
# To save as interactive HTML:
# fig.write_html("sankey_hiring_funnel_direct.html", include_plotlyjs='cdn')
Couldn't be bothered to write this by hand for just an online comment. There's enough that can be improved with this, but I think it's ok to show how it can be done quite easily.
Thanks for sharing that. Seems like a promising vis technique but would work better with fewer final states than I used for a regular Sankey.
This, but 28 months and remove that blue line at the top right.
My partner with two masters and tons of experience in management has sent over 400 applications in the past year. She even learned appscript and made a smart spreadsheet to track them all. She's still unemployed.
She just got rejected from a dentist receptionist job because they were worried they were gonna have to pay her too much
Formatting, fonts, and file format are very important. Certai. formats like PDF are harder to scrape. 2 or more colums cause the A.I. to get confused. Sometimes the scanners have trouble with fo ta with heavy kerning.
i would suggest ms word, with the default font, and a single colum. Dont get fancy with the formatting.
Also, there are a couple of online services that will use a.i. to score your resume. Find a service that uses the same ranking algo as the popular recruiting tools such as greenhouse and workday.
It sucks, but your resume has to get past the a.i. screener before it ever reaches a human.
More recently I injected an AI poison pill into her resume. Honestly, it's been working, at least with interviews. Getting past the human stage is still impossible.
Ms word recommended really? I went through markdown resume route for simple formatting, but still went with PDF as the norm
PDF is a typesetting format. Behind the scenes, every letter is placed on the page at a specific x,y coordinate. parsing text out of a pdf is essentially a series of guesses. sometimes the algorithm guesses wrong. PDF was invented for perfect layouts for printing.
Word docs are a text-based format. It's very easy to correctly pull text from a Word doc.
Why risk an ai parsing a pdf incorrectly? There is no upside.
😞
I know some folks have it much worse.
Being out of work sucks and I treated fixing it like a full time job.
Hang in there buddy.
Same, triple/cuadruple the leads amount though for me. Got like 5 last round interviews where I was rejected. Glad for OP though!
I feel like a separate breakdown per lead source would be interesting - was one source complete junk?
No sources were junk, but in-network and recruiter leads were much more likely to pan out.
If I had to call one thing ‘junk’ it would be any job openings that use Workday to apply. Big fucking waste of time to reenter everything on your resume and satisfy their picky but stupid form validators.
Ashby and Greenhouse are much nicer ATSs.
That's pretty good! Only 9 weeks and less than 200 applications, with that many interview rounds and offers? A lot better than what I've seen other people do
Gj OP. What's you're work experience? You application process seems so easy (not to put down your work or anything). I've done a lut triple if not cuadruple your applications, and no offers. I have a lit 2 years of software experience though and would not apply to a senior position.
About 20 years experience at a mix of startups and big tech.
Looking for senior individual contributor roles, mostly with “staff” in the title.
Any of the screening or application through AI? From what I've seen that is more a slap in the face than being rejected or ignored.
I find it not surprising the final success was through networking - my son got into his work because he happened to run into someone who helped get his foot in the door, and would probably not be at his level now had he gone through the usual process.
There was one application where the first reply was asking me to do a 2hr coding test solo using their secure coding environment.
If I had spoken with a recruiter and they said I seemed like a worthwhile candidate and asked me to complete it as a screener, sure thing.
Instead I got the impression no human had looked at me and that I was being jerked around by automation. No way I’m going to be to waste 2 hours pouring effort into a black hole.
I’m sure the ATSs are using AI for early screening, but all I can see is the responses or lack thereof.
Usually these sorts of results are an issue with your resume or cover letter.
As someone on the other end, the sheer amount of applications I get means any resume that isn't setup correctly can just go straight into the bin and I still have hundreds of good resumes to work with.
If the majority of your applications get rejected/ignored BEFORE a screener that means your resume or cover letter is improperly formatted or something is wrong with them that triggers an auto reject
This sounds like it might be true for you but isn't for others. I'd hesitate to say this is the norm.
I've put my resume through multiple parsers and made it as best as I can. I've gone through phases where I've tailored my cover letter down to every single miniscule details and saw the same results as OP, or pretty similar.
so you're either talking bs or you're in a different field where it does matter
What are the things that would be wrong?
Formatting is honestly a big part. Left align what matters.
Too wordy, missing key details, too big, too small, etc
Missing they key words the job posting covers. If the job posting talks about Node and angular and your resume doesn't explicitly namedrop them, then it loses a tonne of points.
Usually the majority of resumes that pass the sanity check then go to screening. You'd be surprised how many people just screw up basic stuff.
Every single time I've had someone complain to me about job offers, I'll grab a random job posting I find and ask em to send me the version of their resume + cover letter they would send to that specific posting.
Quite often within a min or two I can find several reasons why their resume would've gotten bin'd
all 23 comments