Design a System That Generates Personalized Recruiter InMails at Scale
Company: LinkedIn
Role: Machine Learning Engineer
Category: ML System Design
Difficulty: hard
Interview Round: Technical Screen
Recruiters use LinkedIn Recruiter to find candidates who match a job's requirements among more than one billion LinkedIn members, and a single recruiter may need to send InMail messages to hundreds of candidates a day. Writing a personalized message for each candidate by hand takes a lot of time. A generic template is efficient but lacks personalization, and weak personalization can reduce candidates' willingness to reply and hurt overall recruiting results.
Design a system that helps recruiters efficiently generate personalized InMail messages based on each candidate's information and the job's requirements.
```hint Which details are worth mentioning
A profile holds many facts, but only a few make a message feel written for that person and relevant to this job. Decide how the system picks them.
```
```hint Wrong is worse than generic
Think about what happens when a draft states something about the candidate that is not true, and where in your design you would catch it.
```
```hint Hundreds of drafts a day
Look at which inputs change from one candidate to the next and which stay the same across a recruiter's outreach for one job, and what that means for cost.
```
### Constraints and Clarifications
- The candidate pool has more than one billion members, but a message is needed only for candidates a recruiter decides to contact.
- A single recruiter may send InMail to hundreds of candidates a day.
- The inputs are the candidate's information and the job's requirements; the recruiter is the sender of each message.
### Clarifying Questions
- Does the system start from candidates the recruiter has already selected, or is finding candidates in scope too?
- Must the recruiter review every draft before it is sent, or may drafts be sent in bulk?
- Which profile data may the system use: only what the recruiter can see, and under which privacy settings?
- What defines success: reply rate, positive replies, recruiter time saved, or hires?
- Should messages follow the recruiter's own tone, saved templates or company branding?
- Must a draft appear interactively for one candidate, in a batch for a whole list, or both?
- Which languages must be supported?
### What a Strong Answer Covers
- Clear framing: inputs, outputs, the recruiter's role, and a success metric tied to candidate replies rather than message volume
- A step that selects relevant, verifiable personalization points from the profile and the job before any text is generated
- A generation approach with its quality and cost trade-offs, such as template filling versus a generative model, or a large versus a smaller fine-tuned model
- Factual grounding and safety checks: no invented claims, no sensitive or protected attributes, and spam controls
- Training and feedback data from recruiter edits and candidate replies, including their biases
- Offline evaluation and an online experiment design with guardrail metrics
- Serving for hundreds of drafts per recruiter per day: latency, cost, caching and fallbacks
### Follow-up Questions
- Reply rates depend heavily on how attractive the job is and how open the candidate is to moving. How would you measure the effect of the personalization itself?
- How would you stop the model from using or implying protected attributes such as age, gender or ethnicity?
- If recruiters start sending drafts without reading them, what changes in your safeguards?
- How would you adapt drafts to each recruiter's writing style without leaking one recruiter's content into another's messages?
Overview: Design a machine learning system that helps recruiters draft personalized InMail messages for candidates found in a pool of over a billion members, based on each candidate's profile and the job's requirements. It tests personalization signal selection, grounded text generation, safety, evaluation against reply rates, and serving cost at scale.
Read the full LinkedIn Machine Learning Engineer interview experience this question came from