Skip to content

WorkWingman — Scraper & Automation Learnings (Plain Language)

How WorkWingman learned to fill in job applications reliably — by practising thousands of times in a totally safe sandbox, and what it discovered.

The flight-simulator idea

The part of WorkWingman that fills in Workday job applications is like a new driver. You don't hand a new driver the keys to a real car on a busy motorway. You put them in a driving simulator first — same steering wheel, same pedals, same road signs, but if they crash, nobody gets hurt.

We built exactly that: a fake Workday website that runs only on your own computer. It looks and behaves like a real Workday application form (sign-in, contact details, work history, education, equal-opportunity questions, and a final "Submit"), but:

  • it never connects to the internet — it lives entirely on your machine;
  • there is no real company on the other end;
  • the "Submit" button does nothing — the practice run just writes "would submit (suppressed)" and starts again with a fresh variation.

Then we let the application-filler drive that fake form over and over — hundreds of laps — and watched where it stumbled.

The clever part: every lap is a little different

A real driving instructor throws surprises at you: a diversion here, roadworks there, a faded sign. Our fake form does the same on every lap. It renames the hidden name-tags on the form fields, sometimes hides a field, sometimes leaves out the exact answer you were looking for in a drop-down, sometimes makes fields load slowly, and sometimes shuffles the order of the steps. That constant variation is what forces the filler to be robust instead of memorising one layout.

What it learned

1. Look for the sturdy name-tags. Every important box on a real Workday form carries a hidden, stable label (Workday calls them data-automation-ids). The flashy stuff around them — colours, layout, style names — changes all the time, but those hidden labels stay put. So the filler now always looks for the sturdy label first, and only falls back to guessing from the visible text if the label is missing.

2. Only touch what's actually on screen. Workday keeps earlier steps of the form loaded in the background, just hidden from view — like keeping every page of a paper form stacked underneath the one you're writing on. The filler was accidentally writing on a hidden page underneath. The fix: only ever interact with the box you can actually see. This one change turned a run where every lap crashed into one where no lap crashed.

3. The button is sometimes tucked inside its label. For the degree drop-down, the sturdy label is on the box around the button, not the button itself. The filler learned to reach inside and click the button within.

4. When unsure about your degree, ask — don't guess. Your profile says "B.S. Game Development". A given company's drop-down might list "Bachelor of Science (BS)", "Bachelor of Arts (BA)", and so on — with no exact match. The filler scores how close each option is (and it's smart enough to know "B.S." means "Bachelor of Science", so it leans toward that over "Bachelor of Arts"). If nothing is a confident match, it stops and asks you rather than picking something wrong. In the practice sandbox it picks the top-ranked option automatically so the laps keep flowing; in the real app it genuinely waits for your say-so, and remembers your answer for next time.

5. Keep a diary. Every lap writes down which name-tags it found, which it had to fall back on, how long each step took, and anything that went wrong. Reading that diary is how we spotted the problems above.

The golden safety rule

The real application-filler has one rule that never bends: it will never press the final "Submit" button on its own. It always stops and waits for you to review everything first. The practice sandbox respects that completely — it never submits anything, to anyone, ever. All the improvements we made are about being more reliable, not about doing anything on your behalf without asking.

Want the technical version?

The engineer-level write-up — exact selectors, the scoring rules, the failure table, and how the sandbox guarantees no real network calls — is here: scraper-automation-learnings (technical).