← Blog

A vacancy is not a ticket

A client rings. They need two Class 1 drivers for nights next week, or three warehouse operatives for a weekend turnaround. Someone opens the system, creates a task, assigns it to a consultant, and marks it open. The board looks tidy. The work has barely started.

A ticket tells you something was raised and someone owns it. A vacancy tells you who needs cover, what the job requires, and where it sits in the week. Those are not the same object with different labels. Treat them as the same and the desk spends Monday reconstructing context that should have lived on the job from the first call.

For UK HGV and industrial agencies under about fifty staff, that reconstruction is so ordinary it feels like the job. It is still how cover gets filled late, how the wrong licence category slips through, and how last week's open requests go stale because the queue looked "done".

Tickets close. Vacancies get filled.

Helpdesk tools are built for a different rhythm. Raise an issue. Assign it. Comment. Close it. Priority and due date matter more than whether the person you send can legally do the work.

An agency vacancy is commercial and operational at once. It belongs to a hiring company, not a free-floating request. It needs a status the desk already uses — open, filled, cancelled, on hold — not a generic workflow from a workshop. It carries requirements: licence category for drivers, shift pattern, site, dates, and whether the engagement runs PAYE or umbrella. In a ticket comment, those facts are notes. On a job linked to a client, they are the brief the rest of the pipeline has to meet.

That is why "we use tickets for jobs" fails under pressure. The consultant who took the call remembers the detail. The person covering lunch does not. The whiteboard gets a name. The ticket gets closed because someone went out. Nobody can see, without asking, whether the worker matched the vacancy or whether compliance was checked against this job rather than last month's habit.

How generic tools flatten the wrong thing

Blank CRMs and Salesforce-shaped platforms can be taught a "job" object. Consultants add fields. Someone builds a status picklist. Someone writes a process note that says "link to client before placing". Under a busy week the note loses. Staff create orphaned opportunities, attach cover to the wrong account, or keep the real brief in email because the configured screen takes longer than a WhatsApp from the yard manager.

Candidate-shaped systems make a different mess. They are good at people. They are poor at holding a client's vacancy as its own thing with history — what was raised, what filled, what cancelled, what keeps coming back every Thursday nights. You end up with candidates tagged "nights" and a hope that someone remembers which client meant which site.

Spreadsheets persist for the usual reason. A row per vacancy, a column for client, a column for status. Familiar. Fragile the moment two people edit at once, or finance asks which open jobs never invoiced because they never properly closed.

None of that is laziness. It is what happens when job management is treated as a queue of tasks instead of a stage in the same spine as workers, clients, and placements.

What a real job record has to carry

Recruitment software for this niche has to know how the stages connect. A candidate becomes a worker. A compliant worker becomes available for a placement. A placement fills a client's job. The vacancy is not an afterthought bolted onto a person record. It is the demand side of that sequence.

That means jobs linked to the client that raised them — contacts and history with the hiring company, not mixed into candidate data. Status the desk actually tracks, not a ticket lifecycle borrowed from IT. Enough detail to match: for HGV, licence categories and compliance gates on the worker; for industrial cover, the same need for Right to Work and a clear commercial route, without pretending every vacancy is a driver job.

Scheduling only works when the vacancy is real. Matching a name to a day is not enough. Matching a compliant worker to a client's job is the point — and that only happens when the job object already exists, with requirements you can check against the worker record instead of memory.

Invoice and credit note generation sits downstream of the same facts. If the vacancy never properly belonged to a client, billing becomes archaeology. If PAYE and umbrella were never distinguished on the placement that filled the job, finance inherits a comment field.

What we're building at Haulbase

Haulbase is recruitment software for UK HGV and industrial agencies — one system from job board to placement, pre-configured so job management is not a helpdesk module with recruitment words stuck on.

At launch that includes the job board, registration, worker, client, and job management, plus scheduling and placement tracking. Manual DVLA and Right to Work status tracking sits on the worker with documents in one place. Invoice and credit note generation sits next to the work it came from. Automated DVLA API checks, automated Right to Work verification, and payroll or umbrella integrations come later.

We would rather ship vacancies that already belong to clients, with statuses a desk recognises, than pretend a ticket queue is "job management" because someone labelled the columns. Built with ten years of agency back-office experience. Still pre-launch. If you are on the waitlist, thank you — more soon.

The call was never the hard part

Clients will keep ringing with cover needed by lunchtime. Consultants will keep filling gaps. What you should not need is a ticket, a sheet, and a phone call to answer questions the vacancy should have held from the start.

If your open jobs still live as tasks that get closed when someone goes out, you are running a queue. You are not running job management.