This demo showcases how to use vector search and Large Language Models (LLMs) to intelligently search Hacker News "Who is Hiring" posts based on job queries or candidate profiles.
Simply provide your resume or a link to your LinkedIn profile, and we'll leverage AI to find suitable job opportunities from Hacker News.
Submit a resume or LinkedIn profile of your ideal candidate, and we'll identify similar candidates from the Hacker News talent pool.
- We load all posts and top-level comments from "whoishiring" posts into a local SQLite database.
- Embeddings are generated for each post using one of the supported embedding models.
- When given a job query or candidate profile:
- The LLM suggests relevant search terms.
- We search the database for comments matching these terms using the pre-calculated embeddings.
- Comments are ranked based on embedding similarity to the search terms.
- Similar comments from the same user are removed to ensure diversity.
- The LLM provides recommendations based on the top K comments.
- Ollama: gemini:2, nomic-embed-text
- VoyageAI: voyage-2
- OpenAI: text-embedding-3-small
Note: Testing has shown that Voyage or OpenAI embeddings work best.
- Anthropic: Claude
- OpenAI: GPT models
Set the following environment variables:
OPENAI_API_KEY
ANTHROPIC_API_KEY
VOYAGE_API_KEY
PROXYCURL_API_KEY
Note: proxycurl is used to scrape LinkedIn profiles.
No worries if you don't have all the keys, the demo will still work.
Select the embedding model:
-embedding=openai|nomic-embed-text|gemma:2b|text-embedding-3-small|voyage-2
Select the completion model:
-completion=claude|openai
Use cached results (for testing):
-fake=true|false
- Embedding model: voyage-2
- Completion model: claude
The openai and ollama embeddings code and vector operations come from https://github.com/philippgille/chromem-go.
The react app was almost entirely written by Claude. Artifacts are amazing!