JobLens — Conversational Search for RecSys & Adtech ML Jobs

A domain-specialized conversational job search that combines ColBERT late-interaction retrieval with an LLM control plane for Search, RecSys, Adtech, and Personalization roles.

Project stage: LiveApp access: Public app
Oct 29, 2026conversational-searchretrievalcolberthybrid-searchweaviatenextjsrecsysadtech

JobLens is a domain-specialized job search I built as both a practical hiring tool and a working testbed for retrieval ideas. Generic boards treat “ML Engineer” as one bucket. Practitioners in Search, Recommendation Systems, Adtech, and Personalization need queries that can express ranking, retrieval, and marketplace intent—and filters that behave predictably across turns.

I wanted JobLens to sit inside a community hub for those practitioners (alongside research and learning material connected to my book work on AI-powered personalization). The jobs product is the hiring/discovery complement: a place where the same audience can search with domain language rather than generic job-board keywords.

The live application is a Next.js conversational interface with a three-panel layout: chat, results, and job detail. An LLM interprets natural-language requests into a retrieval query, hard filters, and a retrieval mode, then streams results from a Weaviate index that combines ColBERT-style multi-vector search with BM25. Removing a filter chip re-queries the index directly without another LLM call. Related listings that share a title and company collapse into one card with expandable locations. Signed-in users can save jobs and searches; anonymous use is supported with daily quotas.

I designed the product and architecture and directed an AI-assisted implementation across frontend, ingestion, and retrieval-quality work. Two experiments shaped the retrieval path: ColBERT hybrid search added relevant results that BM25 alone missed on a small domain set, and a query-time reranker was dropped after latency made it unusable. Seniority terms are stripped before retrieval so lexical matching does not promote unrelated “Senior …” titles. Production hardening includes Google sign-in, PostgreSQL persistence with row-level security, prompt caching, and abuse limits.

The corpus is periodically ingested from public job boards (Indeed and Google Jobs by default). Interview-prep marketplace, assessments, and richer company pages remain planned product lines, not part of the current live surface.

Links

Deep dives

No published articles yet.