Build a Semantic Job Search Engine with Bright Data, LanceDB, and Cohere
Blog post from Bright Data
A tutorial demonstrates how to build and evaluate a semantic job-search engine using 200 LinkedIn postings collected through Bright Data, Cohere embeddings and reranking, and LanceDB as a local vector database. It contrasts exact-match keyword search with vector search, which retrieves jobs based on meaning, and shows how structured fields such as salary, seniority, and employment type can be applied as SQL-style filters alongside semantic queries. The pipeline includes asynchronous scraping, salary normalization, incremental upserts, full-text and vector indexing, optional hybrid search with reranking, a Streamlit interface, and LanceDB version snapshots for historical data access. In an evaluation across 10 hand-labeled queries, vector search achieved average precision@3 of 70%, compared with 43% for keyword search and 67% for hybrid search with reranking, suggesting that vector-only retrieval was adequate for this small dataset while hybrid approaches may become more useful at larger scale. The example project reportedly costs about $0.34 to run, identifies implementation caveats involving API behavior, scraped error rows, salaries, and UI rendering, and presents the architecture as reusable for other scraped domains such as e-commerce, real estate, news, and business prospecting.
| Trend | Post Mentions | Total Month Mentions | Posts | Companies | MoM |
|---|---|---|---|---|---|
| Vector Search | 24 | 2,358 | 371 | 127 | +5% |
| LLM | 10 | 5,068 | 1,020 | 229 | -34% |
| MCP | 2 | 8,729 | 854 | 211 | -20% |
| AI Agents | 1 | 5,780 | 1,243 | 245 | -15% |
| AI Guardrails | 1 | 551 | 150 | 54 | +6% |
Use this post, company, and trend context to find content marketing opportunities, perform competitive analysis, or address product feature gaps via the Plushcap MCP server or the Plushcap API.