Skip to main content
Case studies
AI career platform

Job matching that readsmeaning, not keywords.

Job seekers lose 10+ hours a week to manual searches across LinkedIn, Indeed, and Glassdoor, and keyword matching still misses the roles they are actually qualified for. We built Letti AI: a career platform that scrapes all three, has AI extract 50+ data points from every job, and matches people on real skill overlap with 3072-dimensional embeddings.

0
Job platforms scraped
LinkedIn, Indeed, Glassdoor
0+
Data points per job
Extracted by AI
0
Embedding dimensions
Semantic search
0+
Frontend pages
The full platform
The challenge

Search is manual.Matching is blind.

Job seekers spend countless hours searching across LinkedIn, Indeed, and Glassdoor, applying to hundreds of positions with little sense of whether they are truly qualified or whether the role fits their career trajectory.

Traditional job boards rely on keyword matching, which misses relevant openings whenever a description uses different terminology. Career changers face an even bigger problem: conventional matching algorithms do not recognise transferable skills at all.

Manual search fatigue

Job seekers spend 10+ hours per week searching across multiple platforms, often seeing the same listings repeated.

Keyword mismatch

Traditional matching misses relevant jobs when descriptions use different terminology. 'Full Stack' vs 'Web Developer' vs 'Software Engineer'.

No career path insight

No visibility into salary benchmarks, H1B sponsorship likelihood, or realistic career pivot paths.

Generic applications

Without deep job analysis, candidates cannot tailor their applications or prepare for specific interview questions.

10+ hrs
Weekly search time
Across platforms
~70%
Relevant roles missed
To keyword mismatch
Zero
Pivot guidance
For career changers
What we built

A pipeline that turnslistings into understanding.

Letti AI is a six-stage data pipeline that scrapes, analyses, and matches jobs on semantic understanding rather than keywords. AI models extract 50+ data points per listing, and pgvector with 3072-dimensional embeddings matches people to roles on true skill overlap, so 'React' sits near 'Vue' and 'Data Science' relates to 'Machine Learning'.

The six-stage pipeline
01
Extract

Puppeteer with stealth plugins bypasses anti-bot measures to scrape job listings from LinkedIn, Indeed, and Glassdoor. Proxy rotation and request throttling keep collection reliable.

PuppeteerStealth pluginsProxy rotation
02
Clean

Raw HTML is parsed and sanitised, duplicate jobs are detected and merged, and missing fields are flagged for enrichment in the next stage.

HTML parsingDeduplication
03
Enrich

Company data gains additional context: funding stage, company size, industry classification, and Glassdoor ratings when available.

Company APIsData fusion
04
Transform

Job descriptions are normalised into a consistent schema, and skills are extracted and mapped to a standardised taxonomy.

Schema validationSkill taxonomy
05
AI analysis

AI models extract 50+ data points per job: required and nice-to-have skills, salary hints, remote policy, H1B likelihood, and company culture signals.

ChatGPT / GeminiStructured extraction
06
Save and index

Processed jobs are stored in PostgreSQL with pgvector. 3072-dimensional embeddings power semantic search and similarity matching.

PostgreSQLpgvectortext-embedding-3-large
The results

What the platformdoes differently.

Every job lands in one of four match bands: Best Match at 80 to 100 percent, Pivot Ready at 60 to 79, Stretch Role at 40 to 59, and Not Ready below 40. Career changers finally see which moves are realistic and which gaps to close first.

Metric
Typical job search
With Letti AI
Job discovery
LinkedIn, Indeed, Glassdoor
Manual, 10+ hours a week
Automated across 3 platformsAutomated
Matching
True skill overlap via pgvector
Keywords, ~70% of relevant roles missed
Semantic, on 3072-dimensional embeddingsSemantic
Job insight
Skills, salary, culture, H1B, remote policy
Title and description only
50+ data points per job50+
Career pivots
Across tasks, environment, tools, workstyle
No guidance
Transferable-skill scoringNew
Interview prep
Questions from the job description and the CV
No role-specific preparation
CV-based practice with scoring and feedbackNew
Career profiling
Goals, work preferences, soft skills
Resume parsing only
Structured multi-step questionnairesDeeper
4
Match bands
Best, Pivot, Stretch, Not Ready
6
Pipeline stages
Extract through index
20+
Frontend pages
Complete career platform
How it shipped

Six phases,six months.

From discovery to production deployment in six months.

01

Discovery and architecture

3 weeks

Analysed job market APIs, designed the scraping architecture, and mapped the skill taxonomy for career matching.

02

Scraping infrastructure

5 weeks

Built Puppeteer-based scrapers with stealth plugins, proxy rotation, and anti-detection measures for reliable data collection.

03

AI pipeline development

6 weeks

Developed the AI analysis prompts, embedding generation, pgvector integration, and semantic matching algorithms.

04

Frontend and UI

6 weeks

Built the React 18 frontend with Radix UI components, career profiling flows, and the interactive job matching interface.

05

Interview system

3 weeks

Implemented AI interview practice with CV-based question generation, response scoring, and the feedback engine.

06

Testing and launch

3 weeks

End-to-end testing, performance optimisation, embedding quality validation, and production deployment.

The stack

What it runs on.

React 18TypeScriptViteTailwind CSSRadix UITanStack QueryZustandReact Hook FormNode.jsExpressPuppeteerChatGPT / Geminitext-embedding-3-largeSupabasePostgreSQLpgvectorDockerGitHub ActionsVercel