Placements: recording placements, fees, credit splits, contract GP, contractor payroll details, timesheet approvers, guarantees and the forecast
Signed in? Ask Lovelio this question inside the app - it answers from this same page.
A placement records a candidate placed with a client. It captures the candidate, the client, the job, the first-year base salary and currency, anything on top of base (super, OTE, bonus), the fee, the start date, the guarantee period, an owner (the consultant who gets the credit) and optional notes. Placements live on the "Placements" tab of the Clients page, which is also where the billings figures come from.
What gets recorded
- Candidate, client and job. Every placement traces back to a real job and a live application on that job, and the job must be OPEN (Active or On Hold). Logging a placement for a candidate who is not on one of the client's open jobs is refused with a message to add them to the job first, and logging one on a Closed or Filled job is refused with a message to reopen the job. If the candidate is on more than one open job with that client, Lovelio asks which job rather than guessing.
- First-year salary and currency. The currency is a picker, and it pre-fills - see "What currency a placement is in" below.
- Fee, either a percent or a fixed amount. A percent is taken of the client's fee basis, set on their terms: base salary, or the total salary package (the agency standard picks one and each client can differ). The package is the larger of OTE and base, plus super, plus bonus; super can be a percent of base or an amount. The billing figure is computed once: the basis figure times percent divided by 100, rounded to whole currency units. A percent fee with no salary produces no fee figure.
- Fee and guarantee default from the client's terms. When a client is picked, their fee schedule loads (their own terms if an admin has set them, otherwise the agency standard); if an admin has overridden the fee on the specific job, that override wins over the schedule. The percent comes from the band the basis figure falls in on that schedule (base or package, whichever the terms name), the schedule's minimum fee applies, and the guarantee days pre-fill. Everything stays editable, and anything typed in wins over the defaults.
- Placement type: permanent or contract. It pre-fills from the job (a contract job logs a contract placement) and can be switched on the form.
- Offer date: when the offer was accepted. Pre-fills from the recorded acceptance. Confirm the date before reviewing the placement. The quota preview uses this same date.
- Start date and guarantee days. The guarantee window runs from the start date for the given number of days. Guarantees apply to perm placements; a contract placement has no guarantee.
- Owner. Defaults to the person who logs the placement; a different consultant can be picked. When an API call with no acting user logs one and passes no owner, the earliest admin or team leader gets it. The owner is the workflow owner - who the money counts for is the credit split, below.
Contract placements
A contract placement records the charge rate (what the client pays), the pay rate (what the contractor gets), whether those rates are hourly, daily or weekly, and the contract end date. From those, Lovelio computes the expected gross profit over the initial term: the margin (charge minus pay) times the working days in the term (Monday to Friday; hourly rates assume an 8-hour day, weekly rates divide the days by 5). The figure can be overtyped at any time - an entered figure always wins, and editing the rates or the term recomputes it unless it was set directly.
Contract rates and expected GP cannot be negative. The charge rate must be at least the pay rate, and the contract cannot end before it starts. Lovelio shows the same clear error whether the invalid terms came from a form, Ask Lovelio, Slack, an import or the API.
Expected GP is the contract placement's value everywhere a perm placement's fee appears: the billings cards, the client's fee history, reports. There are no timesheets and no invoicing - expected GP is a booking figure, and getting paid stays in the agency's accounting system.
What a contract placement hands to a timesheet or payroll system
Lovelio does not run timesheets or payroll. A connected timesheet or payroll partner reads these off the placement through the API, and the contract form collects them:
- Workplace: where the contractor does the work, picked from the client's sites. "Somewhere else..." types a new address in, and it becomes a site on the client for next time. Sites are also managed on the client record (Overview tab, Sites). Removing a site never strips the payroll details off a live placement.
- Timesheet approvers: the client contacts who sign the contractor's timesheets, in order. Every approver needs an email on their contact; the partner receives name and email for each.
- Payroll details for the contractor: the workplace's country decides which fields apply, and there is no setting to pick a region. A site in Australia shows the Australian fields: Paid as (PAYG through the agency, or ABN, invoicing under their own ABN) and the ABN itself, checked with the ATO checksum. A consultant whose clients are all in one country only ever sees that country's fields. A country Lovelio has no fields for yet shows one line saying so. Details are stored on the person, once per country, so the next placement pre-fills them; they also show and edit in a Contracting section on the candidate record.
- Payment terms: how many days the client has to pay, from the client's terms (their own variation, otherwise the agency standard). Nothing extra to enter.
Lovelio never stores a tax file number or bank details. The payroll partner collects those from the contractor directly.
On the API, all of this sits in the placement's contracting object. The workplace and approvers come with placements:read; the payment terms and the contractor's payroll details need the "Contractor payroll details" scope (placements:contracting:read), so a key that reads placements does not automatically see how a contractor is paid.
Credit splits
Every placement carries a credit split: one line per consultant with an optional role (candidate consultant, job owner, business development, or other) and a percent. The percents always total 100. A placement logged without a split credits the owner at 100%, so nothing changes for an agency that never touches splits.
The split is edited in the Credit section of the placement slideout ("Edit", change the lines, "Save changes"). Each line shows the consultant's money: their percent of the placement's value (the fee for perm, expected GP for contract). The team roll-up line shows how the money is counted per team - each consultant's share counts for the team they belonged to when the credit was written, and a later desk move never rewrites it. The agency's revenue is counted once regardless of how many consultants split the credit.
A consultant named on a split can always open that placement, even when team data visibility would otherwise hide it - being credited is visibility.
A candidate can only be placed once on a job. Logging a second placement for the same application, or the same candidate and job, is blocked with "This candidate is already placed on this job."
How logging works
A placement always starts with a job. The log form asks for the job first, and only offers OPEN jobs (Active or On Hold) that have somebody live on them; picking one then offers that job's own candidates with the stage each is sitting at. The client comes from the job, so there is no client to choose and no way to compose a placement between a person and a company that never met. If a job has nobody live on it, the form says so and points you at adding the candidate to the job first.
Closed and filled jobs are not in the list, and the rule is enforced everywhere, not just in the form: logging a placement on a Closed or Filled job is refused whether it comes from the application panel, Ask Lovelio, Slack or the API. If you closed the job before logging the placement, set it back to Active, log the placement, and close it after. Historical placements loaded by a data migration are exempt, since those jobs closed years ago.
Every entry point uses the same rules: the "Create placement" button on the Placements tab, the application panel, Quick Create, Ask Lovelio, Slack and the API. The client slideout only ever shows placements read-only - it has no create button of its own, so a placement can't be started before a candidate has actually reached the client. After the job and candidate, the form asks for the base salary and currency, then "Plus super, OTE or bonus?" for anything on top, then fee type, start date and guarantee days. The review shows the maths before anything is written: the package and its parts, the fee basis and the figure the percent was taken of, the band or the minimum fee, and the fee. A logged offer prefills the base and the package.
Actions drive stages: creating a placement against a live application automatically moves that application to "Placed". Dragging a candidate to Placed manually never creates a placement, so there is no double move.
What a placement tidies up
A placed person is out of every other process, so the form shows "What happens next" before you click Create placement:
- Their other live applications are withdrawn, each with a timeline note naming the placement ("Placed with Acme as Site Manager"). Every one is ticked by default; untick "Withdraw from" to keep them live on that job. The candidate gets no withdrawal email, because they accepted a job.
- Future interviews on the withdrawn applications are cancelled. Both sides are told: the candidate through the "Interview cancelled" email, and the interviewer (the client contact, or the consultant on an internal screen) through "Interview cancelled - interviewer". Each email has its own switch in Settings, Notifications. Calendar events are removed.
- The job stays open unless you tick "Close <job> as filled". Jobs can be multi-hire, so closing is your call, never a guess. The prompt shows how many other candidates are still live on it. Closing goes through the same door as closing a job anywhere else, so the close reason and the runners-up sweep happen as usual.
- If there is no start date, the form says so: the guarantee clock cannot run until one is set. Add it now, or on the placement later.
The same defaults apply from Ask Lovelio, Slack and the API: withdraw the others, keep the job open. The API takes tidy_up.keep_application_ids and tidy_up.close_job. Historical imports skip the tidy-up.
Placed under guarantee
While a placement is pending start or started and its guarantee has not ended, the person is not an approach target. They do not appear in job matches, talent pool rediscovery, marketplace fits or the matches shown against an inbound lead, and the runner-up sweeps skip them. Wherever they would have been listed, the Placed pill reads "Placed by us at <client>, guarantee to <date>". A placement with no start date counts as under guarantee until one is set, since the clock has not started. Search still finds their record; they are just not pitched.
After logging, a Slack "Placement Made" card fires if Slack is connected, and if the candidate was introduced to the client via a spec in the last 12 months, the placement links back to that spec on both timelines as the agency's introduction record.
Confirming that a placement has started moves the candidate to their new job. A pending start keeps their existing employer. Their record updates to show the client as their current employer and the placed role as their current job title, and the move is added to their work history. It does not turn them into one of your client contacts: knowing where somebody works is not the same as having a relationship with them. When their employer matches a client, they can appear under "Works here" until a recruiter chooses "Make a contact".
Editing a placement (base salary, super, OTE, bonus, currency, fee, start date, guarantee, owner, notes) recomputes the package total and the fee figure automatically whenever a fee input changes, on the client's fee basis, unless the fee amount is set directly.
What currency a placement is in
There are two currency settings, and they cover the common case of an agency whose people are not all in one country.
- The agency's currency lives in Settings > Hiring > Fees & Terms, on the standard fee schedule. This is what the whole agency bills in by default. A new agency starts on the currency of its own country rather than a fixed default.
- A consultant's own currency lives in Settings > You > Profile, as "Placement currency". It is set to "Same as the agency" until they change it. A UK agency with a consultant based in France sets that person to EUR and leaves everyone else alone.
When a placement is logged, the currency is picked in this order, first match wins:
- Whatever the consultant picked on the form.
- The client's own fee terms, when an admin has put that client on their own terms. This beats a personal setting on purpose: what the client signed is what gets billed.
- The consultant's own currency.
- The agency's currency.
Changing either setting only affects placements logged from then on. A placement already saved keeps the currency it was billed in - nothing is ever relabelled after the fact.
Lovelio never converts between currencies. Where a total covers placements in more than one, it shows one figure per currency ("£12,000 + €8,400") rather than adding them together, because there is no exchange rate that would make a single number true for both. This applies to the Booked and Forecast cards on the home page, the billings cards on the Placements tab, and reports.
Review before logging
Each candidate keeps a separate draft while the placement window stays open. Review the salary, fee, fee source, acceptance date and planned start. A missing start date stays visible as "Start date needed". Logging the placement saves it as Pending start and shows a receipt. Confirm the actual start on the placement record when the candidate begins work.
An offer counter stays separate from the client’s original terms. Record whether the client agreed to the counter before accepting it. The placement uses the agreed terms. Client withdrawal moves the application to No; candidate decline moves it to Withdrew. Neither sends a candidate email.
Guarantee lifecycle
A placement has one of four statuses:
- "Pending start" (the default when logged): the candidate has not started yet.
- "Started": the candidate is in the seat.
- "Fell off": the candidate left or was let go during the guarantee period.
- "Completed": the guarantee period has ended and the fee can no longer be refunded.
Marking a placement as fell off (a free-text reason can be given) also moves the linked application to "Withdrew", so pipelines and metrics stop counting it as a placement. Reversing a fall-off (back to started or completed) restores the application to Placed, provided nobody has moved it manually in between. Fell-off placements drop out of billings.
The Guarantee column counts down
On the placements table, the Guarantee column shows how much of the guarantee is left on each row: "18 days left" while the fee could still be refunded, "Cleared" once the window has passed or the placement is marked completed, and "-" when there is no start date or no guarantee days. It is deliberately not coloured. A guarantee running down means the refund window is closing, so there is nothing to warn about, and every recent placement is inside its guarantee by definition - a red flag on all of them would say nothing.
The one warning on a row is a start date that has passed while the placement is still "Pending start", which shows in red under the date as "12 days overdue". It means nobody has confirmed the candidate turned up. The same warning appears on the client record's placements list, the job record's Placements tab, and the placement record itself. The countdown and the "fees at risk" totals read the same rule, so a row can never say "Cleared" while Analytics still counts it as at risk.
The Placements dashboard: the table, and Adjustments
Opening the Placements tab opens straight on the table of placements, with search and the owner and status filters. That is the page. There is no Overview or summary view in front of it.
Admins and team leaders get a second view, Adjustments: the period's quota ledger, reached by the pill group above the table. Arrows there step between periods, and locked periods refuse new adjustments with a "Locked" chip. Admins also get a "Set targets" link through to Settings > Hiring > Quotas. A consultant who cannot touch the ledger sees no pill group at all, just the table.
The view is in the URL (view=adjustments), so the ledger is shareable. Any other link - an owner or status filter, a placement id, or an old view=overview bookmark - opens the table.
Each job record also has a Placements tab showing the placements on that job with their credit split: each credited consultant, their percent and what their share is worth, plus which quota period the placement counts in.
When logging or opening a placement, a one-line hint says which quota period it counts towards ("Counts towards Q3 2026 quotas"), or why it does not - fell off, the type is excluded by the plan, or the recognition date is not set yet.
Forecast: where the money figures live
The Placements tab itself carries no forecast cards. The figures live where they are acted on:
- Home: the Booked card shows your own quota progress for the period (credit-share money against your target) and the next start date; the Forecast card shows the next three months.
- The client record: billings with that client, pending starts, and fees at risk in guarantee for that client alone.
- Analytics: "Fees at risk" is a column in the catalogue, so it can be sliced by consultant, client or period.
The definitions behind them are unchanged. Fees at risk means fees still inside the guarantee window (status pending start or started, today before the guarantee end date); a placement with no start date or no guarantee days is never counted. Billings for a month or quarter are the fee amounts of placements whose start date falls in it, because the fee is recognised on the start date. Fell-off placements are excluded. Fees are summed within each currency and shown one line per currency, never added across currencies.
Lovelio does no invoicing. Getting paid stays in the agency's accounting system.
Where it lives and shareable filters
Placements is a tab on the Clients page, at /clients?tab=placements. There is no Placements item in the left navigation. Old /placements links and bookmarks redirect to the tab automatically. The tab is hidden from roles without permission to view placements, so a role that can see clients but not fees will not see it.
The list filters by owner and status via two drop-downs, and both filters live in the URL, so a filtered view is a link that can be shared or bookmarked. Status accepts pending_start, started, fell_off or completed. Owner accepts a specific consultant or "me"; a link with owner=me shows each person who opens it their own placements. There is also a "Search placements" box that matches candidate name, client name and job title. Asking the AI something like "show my pending starts" opens the tab with those filters applied.
Offers
You do not have to log an offer before logging a placement. Anyone the client has actually seen - Submitted, Client interview or Offer - can be placed straight away, because a client can make an offer off the submission without ever interviewing. Create placement is greyed only for candidates the client has not been sent yet, and for closed applications.
There are no offer letters, e-signatures or offer approvals in Lovelio. In agency recruitment the client makes and signs the offer with the candidate. Lovelio's "Log offer" opens a short form to confirm the offer's details - the offered salary, the offer date (which defaults to today and can be backdated) and an optional start date. Logging it moves the application to the "Offer" stage and the days-waiting counter runs from the offer date. The Offer panel then shows the confirmed salary and start date; on offers logged before this form existed it shows the job's advertised band instead, labelled as such.
"Record offer outcome" is how the offer's answer lands, and it is only available while an offer is out. Accepted keeps the candidate at Offer and opens Create placement with the salary, currency and start date already filled in from the offer; the placement is what closes it. Declined asks who said no: the candidate declining moves them to Withdrew (they stay in your talent pool), the client pulling the offer moves them to No. No email goes to the candidate on a decline. Countered takes the new salary and start date, keeps the candidate at Offer and keeps counting the days, with a timeline row for the counter. Every outcome is written on the application and shown on the Offer panel.
Recording an outcome notifies the job's owner and the candidate's owner (the person who recorded it is not told twice). The "Offer responses" email switch in Settings, Notifications governs that email - it fires when the outcome is recorded, not when the placement is logged.
Common questions
- Why can't I log a placement? The candidate must be live on an open job with that client. Add them to the job first, then log the placement.
- Why can't I log a placement on a job I closed? A placement is logged on an open job. Set the job back to Active, log the placement, and close it after.
- Why is my job missing from the job list? Only jobs with at least one live candidate can be placed on. If everyone on the job is rejected, withdrawn or already placed, there is nobody left to place.
- Why is the fee blank? A percent fee needs a salary to compute from. Enter the first-year base salary or switch to a fixed fee.
- Why is the fee higher than the percent of salary? The client's terms price on the total salary package, so the percent was taken of base plus super, OTE uplift and bonus. The placement review and the placement record both show the package and the basis. Change the basis on the client's Terms tab.
- Where did the fee percent come from? The salary's band on the client's fee terms. Type a different percent to override it.
- Why is the currency not what I expected? Check whether the client is on their own fee terms, because those win over your personal setting. Otherwise it is your own "Placement currency" in Settings > You > Profile, falling back to the agency's in Settings > Hiring > Fees & Terms.
- Why does my Booked number show two figures? Because that month has placements in two currencies. Lovelio shows both rather than converting one into the other. The percentage against target counts only the figure in your own currency.
- Can I see everything converted into one currency? No. Lovelio does not do currency conversion anywhere, deliberately: a converted figure would depend on which day's rate was used and would not match what was invoiced.
- Someone fell off, what happens? Mark the placement "Fell off" with the reason. The application moves to Withdrew, the fee drops out of billings, and the fee stops counting as at risk.
- Why does "fees at risk" show zero? A placement only counts as at risk if it has a start date and guarantee days and the guarantee has not yet ended.
- Can I share a filtered view? Yes. Set the owner and status filters and copy the URL. The filters are in the link.
- I placed someone but they are still on another job. Untick "Withdraw from" on that job when logging the placement keeps them live there. Otherwise the placement withdraws them; check the timeline on the other application for the note.
- Why did the job stay open after the placement? Jobs stay open by default because many need more than one hire. Tick "Close <job> as filled" on the form, or close the job from its page.
- Why is a placed person missing from my matches? They are under guarantee. The Placed pill on their record shows the date it ends; they come back into matching after that.