Skip to content

How we practice filling in Greenhouse job applications (plain-English)

Lots of companies use a system called Greenhouse for their "Apply" pages. Before WorkWingman ever fills in a real Greenhouse application, we practice on a fake copy that runs only on this computer. This page explains what we built and what we learned, without the technical jargon.

The golden safety rule

Everything happens offline, on your own machine. The practice tool:

  • never visits the real Greenhouse website,
  • never creates an account,
  • never sends anything over the internet, and
  • never actually submits an application.

It builds a pretend Greenhouse "Apply" page on your own computer (at an address only your computer can see), practices typing into it, finds the "Submit" button so we know we could click it — and then deliberately does not click it. It just writes down "would submit here (skipped)" and moves on.

What we practice on

We made a fake Greenhouse apply form that behaves like the real thing, but changes a little every time — different labels, different hidden field names, an extra question here, a missing one there. Practicing against a form that keeps shifting is what makes the tool robust: it can't just memorize one layout.

The practice profile is a made-up person, Andrew Jones (andrewjonesdev1@gmail.com, Full Sail University, B.S. Game Development, worked at Equifax). None of it is ever sent anywhere.

What Greenhouse forms are like (and how they differ from Workday)

  • Greenhouse is one single page. You fill in everything at once and submit. Workday, by contrast, is a multi-step wizard (sign in, then page after page).
  • Greenhouse usually doesn't make you create an account. You just apply.
  • The boxes are named sensibly — "first name", "last name", "email", "phone", "resume" — so they're easy to find. Workday's boxes have cryptic internal codes.
  • Greenhouse has custom questions ("Are you authorized to work in the US?", "Desired salary", "How did you hear about us?"). The only dependable way to know which box is which is to read the visible label next to it — so that's what we do.
  • Sometimes the form is tucked inside a window-within-a-window (an "iframe"). Our tool learns to step into that inner window first, otherwise it would look at the wrong place and find nothing.

What we learned

  • Always have a backup plan for finding each box. We first look for the obvious name (like "first_name"). If the page renamed it, we try a looser match, then a match by the label you can actually see. Over a run, about a third of the boxes had to be found by a backup method — proof that the backups are worth having.

  • A real bug the practice caught. Our "find the resume box" search was too loose and accidentally grabbed the container around the resume box instead of the box itself, which made the tool stumble on half the attempts. We tightened the search to only ever grab an actual file-upload box. This is exactly the kind of mistake we want to catch on the fake form, not a real application.

  • When we're not sure, we ask instead of guessing. If a custom question doesn't clearly match anything in the profile (say, "Why do you want to work here?"), the tool flags it as a "judgement call" rather than inventing an answer. On a real application that's the moment it would pause and ask you.

  • If one attempt trips, the practice keeps going. Every run does many attempts in a row; if one hits a snag, it's written down and the next one starts fresh.

Running it

A short practice run of 20 attempts:

dotnet run --project tools/WorkWingman.ScraperLab.Greenhouse -- --iterations 20

At the end it prints a scoreboard: how many attempts finished, how often each box was found the easy way vs. a backup way, how many judgement calls came up, and a reminder that nothing was ever submitted and nothing left the computer.