Intelligent career analysis and job compatibility API built with Java and Spring Boot.
Career Intelligence Service is a REST API focused on career analysis, job compatibility, and user progression systems.
The project was designed as an independent service capable of integrating with the He4rt Hub ecosystem, transforming the traditional job experience into a more intelligent and guided journey.
Instead of only showing whether a user matches a job, the system:
- analyzes the user profile
- identifies missing skills
- generates personalized recommendations
- calculates engagement metrics
- determines a readiness score
The proposal focuses on creating a rule-based career intelligence engine capable of evolving into a more advanced recommendation and AI-driven system in the future.
The main goal of the project is to help users understand:
- how compatible they are with a job
- which skills are missing
- what they should study next
- how prepared they are for the market
- how engagement impacts their evolution
The system was developed to evolve from a simple matching platform into a complete career guidance service.
The application follows a layered architecture using Spring Boot.
- Controller Layer
- Service Layer
- Repository Layer
- DTO Layer
- Domain Layer
- Utility Layer
The service is fully decoupled and prepared for future integrations with external systems.
src
└── main
├── java
│ └── career_intelligence_service
│
│ ├── controller
│ │ ├── JobController.java
│ │ └── MatchController.java
│ │
│ ├── domain
│ │ └── Job.java
│ │
│ ├── dto
│ │ ├── MatchRequest.java
│ │ └── MatchResponse.java
│ │
│ ├── event
│ │ ├── Evento.java
│ │ └── TipoEvento.java
│ │
│ ├── repository
│ │ ├── JobRepository.java
│ │ ├── ProjetoRepository.java
│ │ ├── TrilhaRepository.java
│ │ └── UserRepository.java
│ │
│ ├── service
│ │ └── MatchService.java
│ │
│ ├── user_progress
│ │ ├── UserProgress.java
│ │ └── UserProgressService.java
│ │
│ ├── util
│ │ └── SkillNormalizer.java
│ │
│ ├── xp
│ │ ├── CompeticaoXpRepository.java
│ │ ├── EventoXpRepository.java
│ │ ├── ProjetoXpRepository.java
│ │ └── TrilhaXpRepository.java
│ │
│ └── CareerIntelligenceServiceApplication.java
│
└── resources
└── application.yaml- Java
- Spring Boot
- Spring Web
- REST API
- Layered Architecture
- Service-Oriented Structure
- PostgreSQL
- Redis
- GitHub API
- Discord API
- AI-based recommendation systems
The system calculates compatibility between users and jobs based on technical skills.
Each job contains:
List<String> requiredSkills
List<String> differentialSkillsmatchFinal =
(requiredMatch * 0.7) +
(differentialMatch * 0.3)
| Type | Weight |
|---|---|
| Required Skills | 70% |
| Differential Skills | 30% |
This approach prioritizes mandatory skills while still rewarding differential knowledge.
The API identifies which skills the user still does not have.
Implemented structures:
missingRequired
missingDifferentialThis allows the API to explain why the user did not achieve a full match score.
Recommendations are dynamically generated based on missing skills.
The system searches for:
- related learning tracks
- related projects
- fallback study recommendations
{
"recommendations": [
"Recommended track: TypeScript na Prática",
"Recommended project: Dashboard Analytics — React + D3",
"Study the skill: firebase"
]
}The API becomes an active career guidance service instead of a passive matching system.
A utility called SkillNormalizer was implemented to standardize technologies and avoid inconsistencies during match calculations.
NodeJS
node.js
Node Js
Normalized result:
node.js
This significantly improves consistency and reliability.
The project includes a complete user progression structure.
The XP system is dynamically calculated based on simulated user activities.
- learning tracks
- projects
- competitions
- events
Total XP =
Tracks +
Projects +
Competitions +
Events
Events were modeled separately from technical learning recommendations.
The idea is that events represent engagement and community participation.
- PRESENTIAL
- ONLINE
- LIVE
Each event contains:
- event type
- base XP
- streak multiplier
A streak multiplier rewards consistency and engagement.
| Streak | Multiplier |
|---|---|
| 1–2 | 1.0 |
| 3–4 | 1.1 |
| 5–9 | 1.25 |
| 10+ | 1.5 |
Final XP =
Base XP * Multiplier
The system calculates a readiness status based on the final match percentage.
- Profile in development
- Competitive profile
- Job-ready profile
The readiness score provides a more human-readable interpretation of compatibility.
The project also considers seniority during calculations.
- junior
- pleno
- senior
- lead
This allows the system to apply different compatibility expectations depending on job complexity.
1. Receive user data
2. Normalize skills
3. Retrieve job information
4. Calculate required match
5. Calculate differential match
6. Identify missing skills
7. Generate recommendations
8. Calculate XP
9. Calculate readiness score
10. Return structured response
Run the Spring Boot application through:
CareerIntelligenceServiceApplication
The API will start locally at:
http://localhost:8080
Returns all available jobs.
GET /jobshttp://localhost:8080/jobs- Select the
GETmethod - Insert the endpoint URL
- Click
Send
The API will return the available job IDs for testing.
Calculates job compatibility based on user skills.
POST /matchhttp://localhost:8080/match{
"userId": "hadassa",
"jobId": "nubank_frontend",
"userSkills": [
"react",
"typescript",
"graphql"
]
}Available fictional users:
hadassa
joao
Must match an existing job ID inside JobRepository.
Retrieve available IDs using:
GET /jobsList of user skills used in compatibility calculations.
Example:
[
"react",
"typescript",
"graphql"
]- Select the
POSTmethod - Insert the endpoint URL
- Go to:
Body → raw → JSON
- Insert a valid JSON body
- Click
Send
{
"userId": "hadassa",
"jobId": "nubank_frontend",
"userSkills": [
"react",
"typescript",
"graphql",
"nx",
"micro-frontend",
"design-system"
]
}{
"matchPercentage": 100,
"readiness": "Job-ready profile",
"missingSkills": [],
"recommendations": [],
"xp": 2587
}The API was manually tested using Postman.
- existing jobs
- nonexistent jobs
- users without skills
- partially compatible users
- fully compatible users
- empty recommendations
- empty missing skills
- different seniority levels
- XP calculations
- readiness score behavior
The project intentionally prioritizes:
- business rules
- architecture
- domain modeling
- scalability
- system reasoning
instead of focusing on infrastructure complexity.
Because of this, the MVP was developed without:
- database persistence
- Redis
- external integrations
- AI models
The main value of the project lies in the intelligence of the business rules and the extensible architecture.
- PostgreSQL integration
- Redis caching
- Docker support
- GitHub API
- Discord API
- He4rt Hub integration
- automatic skill extraction
- profile analysis
- project analysis
- recommendation models
- machine learning improvements
Built a REST API with Spring Boot
[
"java",
"spring-boot",
"api-rest"
]This project proposes the evolution of a traditional job matching system into a career intelligence platform.
Instead of simply displaying compatibility percentages, the service explains gaps, recommends next steps, measures engagement, and structures user progression.
The MVP was designed to be:
- simple
- extensible
- integration-ready
- business-oriented
- scalable
with a strong focus on clean business rules and software architecture.