3 of 122 min

Why the closure of the job seeker API didn't kill the project but made it grow up

Originally this was an API-first project in the literal sense.

It didn’t just “search for something through an API”. Through HH’s official job seeker channel I had built almost the whole working cycle: OAuth authorisation, access token, search configs, fetching vacancies, reading details, generating cover letters, sending applications, logging results, updating statuses and working with history through /negotiations.

And even then these searches weren’t chaotic. The project had separate configs for different directions, each with its own filters for region, salary and attached resume. So the system could already search not just for vacancies but by different professional scenarios.

This was no longer a prototype but a proper application system built on the official channel.

Then HH closed that channel.

They said it directly: “We are ending support for the job seeker API”, “From 15 December access to the hh job seeker API will be closed”, “Unfortunately, there are no alternative formats for working with the job seeker API”.

The explanation was direct too: security, transparency, a flow of irrelevant auto-applications, fraudulent practices and data access risks.

And here one thing mattered most to me: the API for employers and their integrations stayed, while the job seeker API simply disappeared.

So one side of the market keeps working through automation, integrations and machine circuits. The other was left with no official programmatic channel at all.

At that moment the project took an architectural blow.

Before that the model was:

API search API details API apply API statuses

After that I had to assemble another:

browser search browser details browser apply Telegram-first handoff state, retry, safety

This is where it became clear whether the project had any margin of strength. Whether it could survive the disappearance of the official path without losing its own logic.

It was the moment when a project either dies with the closed API or grows up.

I chose the second.

Series contents
  1. Automating applications as an answer to market asymmetry
  2. How the bot compares me with a vacancy and assembles an application for it
  3. Why the closure of the job seeker API didn't kill the project but made it grow up
  4. How I kept the system's brain and replaced its transport
  5. The hardest part of auto-apply isn't submit
  6. Auto-apply in visible mode
  7. How the LLM in my project turns a vacancy into a cover letter
  8. Why full autonomy turned out weaker than managed autonomy
  9. I gave the system not only actions but also brakes
  10. How the project lives after applying: statuses, invitations, conversations and a manual dashboard
  11. Dashboard
  12. The most unexpected vacancy my bot found