Overview
If a candidate’s CV is not readily available, you can import their profile directly from LinkedIn. Paste a LinkedIn profile URL into Recruitier, and the platform retrieves the candidate’s professional information — including work history, education, skills, and location — and creates a complete candidate profile using the EnrichLayer API. This is particularly useful when you discover candidates through LinkedIn searches, InMail conversations, referrals, or networking events and want to add them to your talent pool quickly without waiting for a CV. The import process builds a synthetic CV from the LinkedIn data, so the candidate is fully ready for AI job matching without needing a separate document upload.How to Import from LinkedIn
Open the Upload Wizard
Go to the Candidates section and click the Upload CV button. In the wizard dialog that opens, switch to the LinkedIn URL tab at the top of the first step.
Paste the LinkedIn URL
Enter the candidate’s LinkedIn profile URL. The URL should follow one of these formats:Both
www.linkedin.com and linkedin.com URLs are accepted. Trailing slashes are handled automatically. The URL is normalized internally — trailing slashes are stripped and the comparison is case-insensitive — so linkedin.com/in/John-Doe/ and linkedin.com/in/john-doe are treated as the same profile.Profile Data Is Retrieved
Recruitier uses the EnrichLayer API to retrieve the candidate’s publicly available LinkedIn data. This is a professional enrichment service that provides structured data from LinkedIn profiles. The retrieval typically completes within a few seconds.The following data is imported:
The system also automatically calculates years of experience and experience level from the work history dates.
| Data Field | Description | Example |
|---|---|---|
| Full Name | Combined from first and last name fields. If a full_name field is available, it takes precedence. | ”Jan de Vries” |
| Headline | Current role or professional tagline from the LinkedIn headline field | ”Senior Python Developer at TechCorp” |
| Summary | The “About” section text from the LinkedIn profile | Professional summary paragraph |
| Work Experience | Job titles, companies, dates, and descriptions (up to 8 most recent positions) | Title, company, start/end dates, description |
| Education | Degrees, institutions, fields of study (up to 4 entries) | “MSc Computer Science, TU Delft” |
| Skills | Skills listed on the LinkedIn profile (if publicly visible) | [“Python”, “FastAPI”, “PostgreSQL”] |
| Location | City, state, and country from the profile | ”Amsterdam, North Holland, Netherlands” |
Experience Calculation
The system analyzes the imported work history to determine two key fields:Years of Experience: Calculated from the sum of all work experience durations. Each position’s duration is computed from its start and end dates. Overlapping positions (concurrent roles) are counted individually, which may result in total years exceeding calendar time.Experience Level: Derived directly from the calculated years of experience using these thresholds:
| Years of Experience | Assigned Level |
|---|---|
| 0 - 2 years | Junior |
| 3 - 5 years | Medior |
| 6 - 10 years | Senior |
| 11+ years | Lead |
The experience level assignment is automatic but fully editable. If you believe a candidate’s seniority does not match their years of experience (for example, a career changer with 15 years in a different field who is junior in tech), you can adjust the experience level during the review step. The experience level influences the matching algorithm, so getting it right matters.
Skills Are Extracted
Skills come from two possible sources, with a clear priority order:Primary: LinkedIn Skills Section
If the LinkedIn profile includes listed skills, those are imported directly with a confidence score of 0.80. This is a high-confidence score because these are skills the candidate explicitly self-reported on their LinkedIn profile.Fallback: AI Extraction
If the profile does not have publicly visible skills (or the skills section is empty), the AI falls back to extracting skills from the candidate’s headline, summary, and work experience descriptions. This uses the same Gemini-powered extraction logic as CV upload, with variable confidence scores based on how explicitly each skill was mentioned.In both cases, skills go through the same normalization pipeline used for CV uploads — the SKILL_ALIASES taxonomy maps over 1,000 variations to canonical forms. “React.js” from LinkedIn becomes the same “react” as “ReactJS” from a CV.
LinkedIn skills with a confidence of 0.80 sit between AI-extracted skills from CVs (typically 0.95+ for explicit mentions) and the legacy default (0.70 for imported skills without clear provenance). The 0.80 score reflects high confidence with a small margin for the fact that LinkedIn skills are self-reported and may include aspirational or outdated technologies.
Review Profile
Just like the CV upload flow, you are presented with the candidate’s name and job title for review. Both fields are pre-filled but fully editable. The wizard checks for duplicate names.Pay particular attention to:
- Title/Headline: LinkedIn headlines are often marketing-oriented (“Passionate about building scalable solutions”). Consider editing to a more standard job title for better matching.
- Name: Verify the name was correctly combined from the LinkedIn profile data.
Review Skills
Review the AI-extracted skills with confidence scores. Toggle skills on or off, remove irrelevant ones, and add any that are missing. You can also skip this step.
Set Location and Start Matching
Configure the candidate’s location using the autocomplete field and set the search radius (default 40 km, adjustable from 5 km to 200 km). Once you click Start Matching, the wizard completes and the full 5-stage AI job matching pipeline starts automatically in the background.You are redirected to the candidate detail page where real-time progress updates show each matching stage as it executes.
Additional preferences like salary expectations, job type, and flexibility can be configured later from the candidate’s profile edit dialog.
What Data Is Extracted in Detail
Profile Information
- Name: Combined from first and last name fields. If the
full_namefield is available from the API, it takes precedence over the combined first/last name to ensure accuracy with multi-part names. - Title/Headline: The LinkedIn headline, which typically describes the candidate’s current role or professional identity (e.g., “Senior Data Engineer | Python | Spark | AWS”). If no headline exists, the title from the most recent work experience is used as a fallback.
- Location: Built from city, state, and country fields from the LinkedIn profile. This location string is automatically geocoded to latitude/longitude coordinates using the GeocodingService (Dutch city list, then Nominatim API, then AI normalization) for distance-based matching.
- Summary: The “About” section from the LinkedIn profile. This text provides professional context and is incorporated into the synthetic CV text used for matching.
Experience and Education Details
Work history and education are imported with specific limits to balance completeness with processing efficiency:- Work Experience
- Education
Up to 8 most recent positions are imported, each including:
- Job title
- Company name
- Start and end dates (or “Present” for current roles)
- Description/responsibilities text
- Calculate total years of experience
- Determine experience level (Junior/Medior/Senior/Lead)
- Build the synthetic CV text used for AI scoring
- Provide context for the Experience vector embedding
Synthetic CV Text
Since LinkedIn imports do not have an actual CV file, Recruitier generates a structured text representation of the candidate’s profile. This “synthetic CV” is assembled from the imported data in a specific format:cv_text field and serves the same purpose as extracted CV text from uploaded documents:
- It is used to generate the Experience vector embedding for semantic search
- It is sent to the AI during scoring (up to 8,000 characters) for evaluating match quality
- It provides the professional context needed for accurate role fit and experience fit assessment
The synthetic CV text is stored on the candidate profile and used for all subsequent matching and scoring operations. You do not need to upload a separate CV for LinkedIn-imported candidates. The synthetic text provides sufficient context for the AI to produce quality match scores.
When to Use LinkedIn Import vs. CV Upload
| Scenario | Recommended Method | Rationale |
|---|---|---|
| You have the candidate’s CV file | CV Upload | Provides the most detailed extraction. CV text is richer and skills get higher confidence (0.95+). |
| Candidate was found via LinkedIn search | LinkedIn Import | Fastest path to a profile. No need to request a CV first. |
| Candidate has a sparse LinkedIn profile | CV Upload | A CV typically contains more detail than a minimal LinkedIn profile. |
| You want structured work history and education data | LinkedIn Import | EnrichLayer provides cleanly structured employment data with dates. |
| Candidate’s CV is a scanned image | LinkedIn Import | Avoids OCR issues entirely. LinkedIn data is always text-based. |
| You need email and phone number | CV Upload | LinkedIn does not expose contact details publicly through the API. |
| Candidate is a career changer | CV Upload | The full CV narrative gives the AI more context to understand the transition. |
| You need to add candidates quickly in bulk | LinkedIn Import | Faster per-candidate than the CV upload review process. |
Limitations
No Contact Information
No Contact Information
LinkedIn imports do not include email addresses or phone numbers. This data is not publicly available through the EnrichLayer API. If you need contact details, you will need to add them manually to the candidate profile after import, obtain them through InMail or direct conversation, or use a separate contact enrichment tool.
Profile Visibility Restrictions
Profile Visibility Restrictions
The import relies on publicly available LinkedIn data accessed through the EnrichLayer API. If a candidate has heavily restricted privacy settings, some information may be unavailable. In such cases, the import will still succeed with whatever data is accessible, but the profile may be less complete — particularly the skills section and detailed work descriptions.
Duplicate Detection
Duplicate Detection
Recruitier checks for duplicate LinkedIn URLs within your account using normalized URL comparison. If you try to import a candidate whose LinkedIn URL has already been used, you receive a conflict error with the existing candidate’s name.The normalization handles common URL variations:
- Trailing slashes:
linkedin.com/in/john-doe/=linkedin.com/in/john-doe - Case differences:
linkedin.com/in/John-Doe=linkedin.com/in/john-doe - www prefix:
www.linkedin.com/in/john-doe=linkedin.com/in/john-doe
Skills Availability
Skills Availability
Not all LinkedIn profiles have publicly visible skills. When skills are not available from the API, the AI falls back to extracting them from the candidate’s summary and experience descriptions. This fallback works well but typically produces lower confidence scores (variable, based on extraction context) compared to directly imported LinkedIn skills (0.80 fixed).Profiles with very limited public information may produce a sparse skill set. In these cases, manually adding skills during the review step is especially important.
Work Experience Limits
Work Experience Limits
Only the 8 most recent work experiences are imported. For candidates with extensive careers (15+ positions), older roles are not captured. If older experience is relevant to the candidate’s current job search, you can add key details to the candidate’s summary field.Similarly, only 4 education entries are imported. For candidates with multiple degrees or certifications, you may need to add missing entries manually.
Overlapping Experience Durations
Overlapping Experience Durations
Years of experience is calculated by summing all position durations individually. If a candidate held two positions simultaneously (e.g., a consulting role alongside a permanent position), both durations count toward the total. This can result in calculated years exceeding actual calendar years. The experience level may need manual adjustment in these cases.
After Import
Once a LinkedIn profile is imported, the candidate follows the exact same workflow as a CV-uploaded candidate:- Review and confirm the extracted profile — Pay special attention to the headline/title, as LinkedIn headlines are often marketing-oriented rather than standard job titles
- Confirm skills — Especially important when the AI used fallback extraction from experience descriptions rather than importing LinkedIn-listed skills
- Set location and search preferences — Configure radius, salary, job types, and flexibility
- AI matching runs automatically — The full 5-stage pipeline executes in the background
Advanced
How the EnrichLayer Integration Works
The LinkedIn import uses the EnrichLayer API, a professional data enrichment service. Here is the technical flow:- URL Validation: The system validates that the provided URL is a properly formatted LinkedIn profile URL (must contain
/in/path segment) - API Request: The normalized URL is sent to the EnrichLayer API endpoint, which returns structured profile data in JSON format
- Data Mapping: The API response is mapped to Recruitier’s candidate entity fields:
full_nameorfirst_name+last_namemaps to candidatenameheadlinemaps to candidatetitlelocationfields are combined and geocodedexperiencesarray is processed for duration calculationskillsarray is normalized through SKILL_ALIASES
- Synthetic CV Generation: A text representation is assembled from all imported data
- Profile Creation: The candidate record is created with all mapped data
Confidence Score Hierarchy
Different data sources produce different confidence levels for skills. Understanding this hierarchy helps you interpret the skill review screen:| Source | Confidence Score | Rationale |
|---|---|---|
| AI extraction from CV (explicit mention) | 0.95+ | Highest confidence — skill explicitly stated in the document |
| LinkedIn profile skills section | 0.80 | High confidence — candidate self-reported the skill |
| AI extraction from LinkedIn text (fallback) | Variable (0.60-0.90) | Depends on how explicitly the skill was mentioned in descriptions |
| Legacy/unknown source | 0.70 | Default score for imported skills without clear provenance |
How Synthetic CV Text Affects Matching
The synthetic CV is not just a convenience display — it actively drives matching quality:- Experience Vector: The synthetic CV text is used to generate the Experience embedding vector (20% of semantic search weight). A richer synthetic CV produces a better Experience vector, which captures domain knowledge, industry context, and work complexity that skills and titles alone cannot represent.
- AI Scoring Input: During Stage 5 of matching, the synthetic CV text (up to 8,000 characters) is sent to the AI alongside each job description. The AI uses this to evaluate role fit, experience fit, and secondary fit with specific evidence from the candidate’s background.
- Query Generation: The synthetic CV text also influences how search queries are generated in Stage 2 of matching. The AI reads the candidate’s background to generate diverse, relevant search strategies.
Duplicate Detection Logic
The duplicate detection system normalizes LinkedIn URLs before comparison to prevent false negatives:- Protocol and
wwwprefix are stripped - Trailing slashes are removed
- The entire URL is lowercased
- The comparison is performed on the normalized form
https://www.linkedin.com/in/Jan-de-Vries/https://linkedin.com/in/jan-de-vrieshttp://www.linkedin.com/in/jan-de-vries/
Power-User Tips
Related
- Managing Candidate Profiles — Edit and maintain imported profiles
- Skills & Expertise — Review and confirm extracted skills
- How Matching Works — Understand the AI matching pipeline
- Uploading a CV — Alternative method for adding candidates

