How to show job matches

Render a signed-in Matches page from board.me.recommendedJobs.list without inventing a ranker.

Job matches are a signed-in account surface. Keep the public job card usable before login and make /matches (or /account/matches) the authenticated page.

Hosted Cavuno boards use /matches. The API and SDK stay recommendedJobs / /me/recommended-jobs.

Load the ranked list

Each item wraps the same slim public job card. Order is the ranking. The response never includes scores, weights, or ranker identity.

If the account can exceed one page, iterate with the list cursor rather than treating the first page as complete.

Handle an empty list

Cold start is an empty list — no hint field. Drive a resume-upload CTA from board.me.profile and board.me.resume (parseStatus, skills), not from the list response.

Let candidates set their commute distance

On-site and hybrid matches stay within the candidate's commute distance of their home place; remote jobs are not affected. Put the location picker, the "How far are you willing to commute?" field, and "Open to relocate" together on the profile form, and save them with board.me.profile.update({ locationId, commuteRadiusKm, openToRelocate }). Show the distance in miles or kilometres with distanceUnitForCountry(profile.locationPlace?.countryCode) and prefill it from commuteRadiusDefaultKm. The Me reference has the field rules and a full example.

A candidate with only a free-text location gets country-level matching. If on-site matches look too far away, check that locationPlace is set.

Handle the authentication boundary

When the visitor is signed out, send them through the normal login flow with a return path of /matches. Validate the return path before redirecting back. On 401, use the application's single refresh path.

Verify the journey

  1. Sign in as a candidate with skills or a parsed resume and confirm Matches returns jobs in a stable order.
  2. Sign in as a candidate with an empty profile and confirm the empty state plus a resume CTA.
  3. Apply to a returned job and confirm it disappears on the next list.
  4. Sign in as a second user and confirm the first user's matches never appear.
  5. Expire the session and confirm refresh/retry happens at most once.
  6. Set a city home with a small commute distance and confirm on-site jobs farther away drop out while remote jobs stay. Turn on Open to relocate and confirm on-site jobs from the rest of the country return.

Production notes

  • Call board.me.recommendedJobs.list. Do not invent a client-side ranker or call board.client.fetch('/me/recommended-jobs') when the namespace exists.
  • Private match reads must bypass shared caches.
  • Do not render scores or "why this job" copy from fields the API does not return.

See the Me reference for the account namespace.