This repository serves as a personal portfolio, showcasing various topics and concepts about architecture, software development, and artificial intelligence through a practical use case.
For this reason, the solutions shown in this repository may be more complex than they should be in a production environment, but as mentioned, the goal of this repository is to use it as a didactical and playground tool.
This project is actively being developed as a portfolio and learning platform. The current version (MVP) includes:
- ✅ Fully functional Candidates and Recruitment portals developed using Angular
- ✅ AI-powered scoring (embeddings, cosine distance, LLM for explanation) and analysis of resumés (LLM)
- ✅ Business services developed in multiple technologies like Spring, Quarkus or Python
- ✅ EDA and associated technologies like Kafka or Kafka Streams
- ✅ Change Data Capture (CDC) using Debezium for data synchronization between contexts and managing transactions and multiple tables
- ✅ Outbox pattern implementation
- ✅ OpenAPI
- ✅ Traceability using OpenTelemetry and Jaeger
- ✅ Testcontainers fot testing
- ✅ Docker Compose deployment for local execution
- ✅ CI/CD pipeline with GitHub Actions
- 🔄 Kubernetes deployment (Helm), Infrastructure as Code (IaC) for AWS and GitOps
- 🔄 Schema Registry, Avro, AsyncAPI, Event Catalog / Apicurio
- 🔄 API Gateway (Kong for instance) in docker-compose runtime
- 🔄 Use case for MCP (Model Context Protocol) and enhance the AI analysis capabilities with more detailed insights
- 🔄 Internal Development Portal (Backstage)
- 📋 Authentication and authorization (Keycloak)
- 📋 Metrics and logs management
- 📋 Develop a candidate recommendation system
- 📋 Add dashboard for recruitment analytics and KPIs
- 📋 Implement configurable scoring algorithms
Note: This roadmap is tentative and subject to change as the project evolves and new learning opportunities are identified.
The structure of the project is the following:
- 📖 doc/ → Documentation
- 🚀 platform/
- local/ → folders and files associated with docker-compose runtime environment
- k8s/ → folders and files associated with Kubernetes runtime environment (in progress)
- ⚙️ project/
- 🧑🎓 candidates/ → all the components (frontend, backend, cdc) associated to candidates context
- frontend → includes the application and its backend for frontend
- backend → business services
- cdc → connectors for change data capture
- 🧑💼 recruitment/ → all the components (frontend, backend, cdc) associated to recruitment context
- frontend → includes the application and its backend for frontend
- backend → business services
- cdc → connectors for change data capture
- 🧑🎓 candidates/ → all the components (frontend, backend, cdc) associated to candidates context
For this project, I've selected a recruitment process as the business case. The scenario involves a company that publishes job positions on its portal where interested candidates can apply and submit their resumes:
Having participated in many recruitment processes from the recruiter's perspective, I understand the challenges of objectively evaluating a large number of resumes without bias. This process is typically time-consuming and labor-intensive.
The innovative solution implemented in this project uses an AI-powered scoring algorithm to calculate the matching percentage between candidates and the positions they apply for.
This approach helps streamline the recruitment process by automatically identifying the most suitable candidates based on their qualifications and the job requirements.
In this document you can find a detailed requirements list for this project
The project includes two fully functional applications that work together to create a complete recruitment ecosystem:
This application allows candidates to browse available positions and submit their applications with resumes.
This application enables recruiters to manage job positions, review applications, and see AI-generated scoring and analysis.
For detailed information about the functionality of both applications, please refer to the functional documentation.
Before you begin, ensure you have the following installed:
- Docker (latest stable version)
- Docker Compose (latest stable version)
- An OpenAI API Key (required for the AI-powered scoring functionality)
Note: You don't need to build any services or images manually. All necessary images are pre-built and published as GitHub Public Packages.
-
Set up your OpenAI API Key
Open a terminal and set the environment variable:
export OPENAI_API_KEY=<your OpenAI API key>
-
Start the application
In the same terminal, navigate to the local platform directory and start the services:
cd platform/local docker-compose up -dNote: The initial startup may take several minutes as all services and data are being initialized. Please be patient.
-
Access the applications
Once all services are up and running, you can access the following applications:
Application URL Description Recruitment App http://localhost:9070/private/home Application for recruiters to manage positions and review applications Candidates App http://localhost:8081/home Application for candidates to browse positions and submit applications Kafka UI http://localhost:8001/ Interface to monitor Kafka topics and messages Jaeger http://localhost:16686/search Distributed tracing system to monitor and troubleshoot transactions Minio http://localhost:9001/login Object storage service (credentials: minioadmin/minioadmin)
In this document you can find a detailed demo guide including technical details
In this document you can find all the architecture details about this project
The project implements a Continuous Integration and Continuous Deployment (CI/CD) pipeline based on GitHub Actions. The pipeline automates the process of building, creating Docker images, and publishing them to GitHub Packages:
This automation ensures consistent builds and deployments, making it easier to maintain and update the project components.
Note: Currently, the MVP is deployed using Docker Compose. Future releases will incorporate Infrastructure as Code (IaC) and deployment to cloud platforms such as AWS and Azure.
This section explains various concepts, patterns, and technologies implemented in this project. Each topic includes a link to detailed documentation:
- Testcontainers - Integration testing with containerized dependencies
- Mutation Testing - Advanced testing technique to evaluate test suite effectiveness
- API Contract First - OpenAPI - Designing APIs before implementation
- Hibernate - Eager/Lazy loading - Data loading strategies in Hibernate
- Spring Boot - Exceptions Handler - Centralized exception handling in Spring Boot
- Angular: Standalone Components vs Modules) - Standalone Components vs Modules in Angular framework
- CDC using Debezium - Change Data Capture implementation with Debezium




