CV Match
A workflow that compares CVs with requirements, calculates matches, and returns the candidate with the best fit.
+2
graph TD
%%{init: {'theme': 'mc','layout': 'elk'}}%%
TextInput-dvpjv[<div><img alt="logo" src="/_astro/type.Dy26vmDy.svg" style="height: 20px !important;width: 20px !important"/></div>Carrera]
style TextInput-dvpjv stroke:#a170ff
TextInput-s2vgd[<div><img alt="logo" src="/_astro/type.Dy26vmDy.svg" style="height: 20px !important;width: 20px !important"/></div>Certificados]
style TextInput-s2vgd stroke:#a170ff
TextInput-oz3io[<div><img alt="logo" src="/_astro/type.Dy26vmDy.svg" style="height: 20px !important;width: 20px !important"/></div>Habilidades]
style TextInput-oz3io stroke:#a170ff
TextInput-6r3sb[<div><img alt="logo" src="/_astro/type.Dy26vmDy.svg" style="height: 20px !important;width: 20px !important"/></div>Experiencia]
style TextInput-6r3sb stroke:#a170ff
TextInput-ep0wz[<div><img alt="logo" src="/_astro/type.Dy26vmDy.svg" style="height: 20px !important;width: 20px !important"/></div>Educación]
style TextInput-ep0wz stroke:#a170ff
ChatOutput-zlpn1[<div><img alt="logo" src="/_astro/messages-square.BaSDmT6g.svg" style="height: 20px !important;width: 20px !important"/></div>Chat Output]
style ChatOutput-zlpn1 stroke:#a170ff
OpenAIEmbeddings-5myel[<div><img alt="logo" src="/_astro/openAI.BhmuxEs3.svg" style="height: 20px !important;width: 20px !important"/></div>OpenAI Embeddings]
style OpenAIEmbeddings-5myel stroke:#a170ff
GDriveFilesComponent-3xa20[<div><img alt="logo" src="/_astro/google_drive.wKmDsV2c.svg" style="height: 20px !important;width: 20px !important"/></div>Obtener CV]
style GDriveFilesComponent-3xa20 stroke:#a170ff
Prompt-3a8sl[<div><img alt="logo" src="/_astro/square-terminal.BMOXc-nZ.svg" style="height: 20px !important;width: 20px !important"/></div>Requisitos]
style Prompt-3a8sl stroke:#a170ff
OpenAIEmbeddings-6p7a2[<div><img alt="logo" src="/_astro/openAI.BhmuxEs3.svg" style="height: 20px !important;width: 20px !important"/></div>OpenAI Embeddings2]
style OpenAIEmbeddings-6p7a2 stroke:#a170ff
LanguageRecursiveTextSplitter-rweqg[Language Recursive Text Splitter]
style LanguageRecursiveTextSplitter-rweqg stroke:#a170ff
AstraDB-un98t[Astra DB]
style AstraDB-un98t stroke:#a170ff
AstraDB-un1f3[Astra DB2]
style AstraDB-un1f3 stroke:#a170ff
LanggraphRAGAgent-cgjw7[RAG Agent]
style LanggraphRAGAgent-cgjw7 stroke:#a170ff
OpenAIModel-448zp[<div><img alt="logo" src="/_astro/openAI.BhmuxEs3.svg" style="height: 20px !important;width: 20px !important"/></div>OpenAI]
style OpenAIModel-448zp stroke:#a170ff
TextInput-dvpjv -.- Prompt-3a8sl
linkStyle 0 stroke:#a170ff
TextInput-s2vgd -.- Prompt-3a8sl
linkStyle 1 stroke:#a170ff
TextInput-ep0wz -.- Prompt-3a8sl
linkStyle 2 stroke:#a170ff
TextInput-6r3sb -.- Prompt-3a8sl
linkStyle 3 stroke:#a170ff
TextInput-oz3io -.- Prompt-3a8sl
linkStyle 4 stroke:#a170ff
GDriveFilesComponent-3xa20 -.- LanguageRecursiveTextSplitter-rweqg
linkStyle 5 stroke:#a170ff
LanguageRecursiveTextSplitter-rweqg -.- AstraDB-un98t
linkStyle 6 stroke:#a170ff
OpenAIEmbeddings-5myel -.- AstraDB-un98t
linkStyle 7 stroke:#a170ff
LanggraphRAGAgent-cgjw7 -.- ChatOutput-zlpn1
linkStyle 8 stroke:#a170ff
OpenAIEmbeddings-6p7a2 -.- AstraDB-un1f3
linkStyle 9 stroke:#a170ff
AstraDB-un1f3 -.- LanggraphRAGAgent-cgjw7
linkStyle 10 stroke:#a170ff
Prompt-3a8sl -.- LanggraphRAGAgent-cgjw7
linkStyle 11 stroke:#a170ff
OpenAIModel-448zp -.- LanggraphRAGAgent-cgjw7
linkStyle 12 stroke:#a170ff
🧩 Overview
The CV Match workflow automatically matches job‑candidate profiles against a set of user‑defined requirements.
Users supply the desired career, education, experience, certifications, and skills via text inputs.
The system ingests CVs stored on Google Drive, embeds them with OpenAI, stores the vectors in Astra DB, and then employs a Langgraph RAG agent to retrieve the most relevant CVs and present the best match in a conversational chat format.
⚙️ Main Features
- Interactive prompt generation from user‑provided requirements.
- Dynamic ingestion of CVs from Google Drive, including text extraction and chunking.
- Vector‑based similarity search via Astra DB powered by OpenAI embeddings.
- RAG‑enabled language model that combines retrieved documents with the prompt to produce a ranked recommendation.
- Chat‑style output that displays the final recommendation to the user.
🔄 Workflow Steps
| Component Name | Role in the Workflow | Key Inputs | Key Outputs |
|---|---|---|---|
| Carrera Text Input | Captures the desired career field | User text | Career string |
| Certificados Text Input | Captures required certifications | User text | Certifications string |
| Educación Text Input | Captures educational qualifications | User text | Education string |
| Experiencia Text Input | Captures work experience | User text | Experience string |
| Habilidades Text Input | Captures skill set | User text | Skills string |
| Prompt | Builds a requirement‑prompt template using the above inputs | Career, Certifications, Education, Experience, Skills | Prompt message |
| Langgraph RAG Agent | Runs the RAG model, retrieves relevant CVs, and generates the answer | Prompt, LLM, Retriever | Final chat message |
| Chat Output | Displays the agent’s reply in the playground chat | Agent response | Chat message shown to user |
| GDrive Files Component | Retrieves CV files from a Google‑Drive folder | Folder path, file selection | Raw CV documents |
| Language Recursive Text Splitter | Splits documents into manageable chunks | Raw CV documents | Chunked data |
| OpenAI Embeddings (ingestion) | Generates embeddings for each chunk | Chunked data | Embedding vectors |
| Astra DB (ingestion) | Stores embeddings and associated metadata | Embedding vectors | Stored vector collection |
| OpenAI Embeddings (retrieval) | Generates embeddings for the query prompt | Prompt | Query embedding |
| Astra DB (retrieval) | Returns most similar CV vectors | Query embedding | Retrieved CV snippets |
| OpenAI Model | Executes the language model for the RAG agent | LLM prompt, retrieved snippets | LLM output |
| Langgraph RAG Agent (retriever integration) | Feeds the Astra DB retriever into the agent | Retriever from Astra DB | Agent’s retrieval capability |
(Components are listed in the order they are invoked within the workflow.)
🧠 Notes
- Embedding Model: The workflow uses OpenAI’s
text‑embedding‑3‑smallby default. A valid OpenAI API key is required. - Astra DB: Connection details (API key, endpoint, collection name) must be configured. Retrieval performance depends on collection size and query threshold settings.
- Document Size: CVs are chunked with a 2000‑token limit and 400‑token overlap to preserve context.
- LLM Constraints: The OpenAI language model is limited to 0.1 temperature and a maximum token count of 256 (adjustable).
- Retrieval Scope: Only documents within the specified Google‑Drive folder are considered; the system does not search the entire Drive.
- Error Handling: The workflow assumes successful API responses. In production, guard clauses should handle API failures or empty results.
- Security: File access to Google Drive is governed by the user’s permissions; ensure that the credential used has the necessary scopes.