I'm building G3 Apply, a copilot that finds jobs on official career pages and fills out the application for you. When I started, I was sure the fight would be with CAPTCHAs. I was very wrong. What actually breaks it is form questions.

Here are the numbers from the pilot. It's still small: 291 applications prepared since Oct 12, across 10 accounts.

13 questions per job

Greenhouse, Lever, Ashby and Gupy (a big Brazilian ATS) let each company add whatever questions it wants. I took 177 applications and counted: 2,363 questions. The median is 13 per application. The record was 33.

Where each answer came from:

  • 45% came straight from the profile the person filled in
  • 25% were answered by the language model
  • 26% were left blank

The rest (about 4%) came from saved past answers or from the person during review.

One blank and it's over

Of 1,794 required questions, 340 were left unanswered. That's 19%, which sounds small. But one is enough to block the application. Result: 123 of the 177 had at least one required question left blank. 7 in 10.

And I don't let the bot guess. If there's no reliable answer, the application stops and waits for the person. Ticking the wrong "yes" on "do you need visa sponsorship?" is far worse than not applying.

The culprit: select fields

Short text fields were left blank 11% of the time (100 of 926). Selects, 30% (219 of 741). Two out of every three blank questions are selects.

The reason is kind of silly: the options are text that each company writes its own way. I know how much the person wants to earn, but the field comes with salary bands the company made up. I know the country, but the question is "are you based in Latin America?" with Yes and No.

What was left blank most often (grouped by keyword, so it's approximate):

Topic Questions
Salary 41
"How did you hear about us?" and referrals 33
Where you live 29
Diversity and pronouns 27
Years of experience with a given technology 22
Visa 21
Work authorization 18

The worst part is that for a lot of these, the data was already in the profile. Just not in the shape of the field.

What I fixed

On Nov 13 I shipped a fix that converts the profile to the field's format: availability becomes a date, country becomes Yes or No, salary expectation becomes a band. I re-ran it on 30 stuck applications:

  • start date: 7 of 7
  • "based in Latin America?": 6 of 6
  • visa: 9 of 11
  • salary band in a select: 3 of 6

Three applications went out the same day. The other 26 are still stuck. Some are free-text salary questions, which I'll tackle next. Some I don't even want to automate: agreeing to a background check, pronouns, who referred you. The person answers those.

So what about CAPTCHAs?

They blocked 1 application. One.

What really got in the way was login: 37, all on Gupy, which requires a candidate account. On Greenhouse, what I hit wasn't even a CAPTCHA. It was a code sent by email at submit time. All 7 I've sent there since Oct 31 went through that. And there were 4 where the form went through but I couldn't confirm it. I don't count those as sent.

Where I am

To be honest: of the 291, 17 went out, and all of them are from my own account or test accounts. Nobody from outside has reached the submit step yet. That's what I want to see next.

Stack, for the curious: TypeScript, Postgres and Next.js.

Want to try it?

There's a free plan, no card: https://apply.g3infotech.app/?utm_source=devto&utm_medium=post

And there's an ATS résumé checker that works without signing up: https://apply.g3infotech.app/ats-check/en?utm_source=devto&utm_medium=post

A question for anyone who has fought this: how do you deal with select fields that every company words differently? Right now, when in doubt, I leave it blank and ask the person. If you have a better idea, I'm all ears.