Skip to content

Hadzab/career-intelligence-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Career Intelligence Service

Intelligent career analysis and job compatibility API built with Java and Spring Boot.


About the Project

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.


Main Objective

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.


Architecture

The application follows a layered architecture using Spring Boot.

Layers

  • 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.


Project Structure

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

Technologies

Backend

  • Java
  • Spring Boot
  • Spring Web

Architecture

  • REST API
  • Layered Architecture
  • Service-Oriented Structure

Planned Integrations

  • PostgreSQL
  • Redis
  • GitHub API
  • Discord API
  • AI-based recommendation systems

Main Features

Intelligent Job Match Calculation

The system calculates compatibility between users and jobs based on technical skills.

Each job contains:

List<String> requiredSkills
List<String> differentialSkills

Match Formula

matchFinal =
(requiredMatch * 0.7) +
(differentialMatch * 0.3)

Weight Distribution

Type Weight
Required Skills 70%
Differential Skills 30%

This approach prioritizes mandatory skills while still rewarding differential knowledge.


Skill Gap Analysis

The API identifies which skills the user still does not have.

Implemented structures:

missingRequired
missingDifferential

This allows the API to explain why the user did not achieve a full match score.


Intelligent Recommendations

Recommendations are dynamically generated based on missing skills.

The system searches for:

  • related learning tracks
  • related projects
  • fallback study recommendations

Example

{
  "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.


Skill Normalization

A utility called SkillNormalizer was implemented to standardize technologies and avoid inconsistencies during match calculations.

Example

NodeJS
node.js
Node Js

Normalized result:

node.js

This significantly improves consistency and reliability.


User Progression System

The project includes a complete user progression structure.

The XP system is dynamically calculated based on simulated user activities.

XP Sources

  • learning tracks
  • projects
  • competitions
  • events

Formula

Total XP =
Tracks +
Projects +
Competitions +
Events

Event XP System

Events were modeled separately from technical learning recommendations.

The idea is that events represent engagement and community participation.

Event Types

  • PRESENTIAL
  • ONLINE
  • LIVE

Each event contains:

  • event type
  • base XP
  • streak multiplier

Streak System

A streak multiplier rewards consistency and engagement.

Streak Multiplier
1–2 1.0
3–4 1.1
5–9 1.25
10+ 1.5

Formula

Final XP =
Base XP * Multiplier

Readiness Score

The system calculates a readiness status based on the final match percentage.

Possible Results

  • Profile in development
  • Competitive profile
  • Job-ready profile

The readiness score provides a more human-readable interpretation of compatibility.


Seniority Rules

The project also considers seniority during calculations.

Implemented Levels

  • junior
  • pleno
  • senior
  • lead

This allows the system to apply different compatibility expectations depending on job complexity.


API Flow

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

Running the Project

Starting the Application

Run the Spring Boot application through:

CareerIntelligenceServiceApplication

The API will start locally at:

http://localhost:8080

API Endpoints

GET /jobs

Returns all available jobs.

Endpoint

GET /jobs

Example

http://localhost:8080/jobs

Testing with Postman

  1. Select the GET method
  2. Insert the endpoint URL
  3. Click Send

The API will return the available job IDs for testing.


POST /match

Calculates job compatibility based on user skills.

Endpoint

POST /match

Example

http://localhost:8080/match

Request Body

{
  "userId": "hadassa",
  "jobId": "nubank_frontend",
  "userSkills": [
    "react",
    "typescript",
    "graphql"
  ]
}

Request Fields

userId

Available fictional users:

hadassa
joao

jobId

Must match an existing job ID inside JobRepository.

Retrieve available IDs using:

GET /jobs

userSkills

List of user skills used in compatibility calculations.

Example:

[
  "react",
  "typescript",
  "graphql"
]

Testing the Match Endpoint

  1. Select the POST method
  2. Insert the endpoint URL
  3. Go to:
Body → raw → JSON
  1. Insert a valid JSON body
  2. Click Send

Complete Request Example

{
  "userId": "hadassa",
  "jobId": "nubank_frontend",
  "userSkills": [
    "react",
    "typescript",
    "graphql",
    "nx",
    "micro-frontend",
    "design-system"
  ]
}

Response Example

{
  "matchPercentage": 100,
  "readiness": "Job-ready profile",
  "missingSkills": [],
  "recommendations": [],
  "xp": 2587
}

Testing

The API was manually tested using Postman.

Validated Scenarios

  • 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

Design Decisions

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.


Future Improvements

Infrastructure

  • PostgreSQL integration
  • Redis caching
  • Docker support

Integrations

  • GitHub API
  • Discord API
  • He4rt Hub integration

AI Evolution

  • automatic skill extraction
  • profile analysis
  • project analysis
  • recommendation models
  • machine learning improvements

Example

Input

Built a REST API with Spring Boot

Output

[
  "java",
  "spring-boot",
  "api-rest"
]

Final Considerations

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.

Releases

No releases published

Packages

 
 
 

Contributors

Languages