Design, development and deployment of an AI-assisted career platform (GLYBETTE) using a microservices architecture

Rayen Attia

Agenda

01

Project Context

02

Market Analysis

03

Vision & Objectives

04

Ecosystem

05

Stack & Architecture

06

Project Realization

07

Application Demo

08

Conclusion & Retrospective

01

Project Context

Problems We Aim to Solve

#1

Scattered Opportunities

The job market in Tunisia is fragmented: offers are scattered across dozens of platforms with no unified view.

2. Integration

Difficult Integration

Graduates struggle to find PFE topics, internships, or jobs matching their profile.

3. Fragmentation

Isolated Career Tools

No single solution covers search, CV, interviews, and training end-to-end.

4. Visibility

Recruiters Lacking Visibility

Companies struggle to identify the best candidates among applicants.

Host Organization

Update IT and Training logo Host Company
ManagerMr. Aymen Dardouri
SectorIT & Services
DomainSoftware · Salesforce · AI
SizeSmall & Innovative Start-up
Productivity User needs
Glybette logo Entrepreneurship Space

Dedicated space for students to transform ideas into concrete projects.

Digital incubator with mentoring, resources, and support throughout the journey.

Incubation Innovation Support

02

Market Analysis

Competitive Landscape

Resume.io screenshot

Resume.io

CV builder & templates. Strong on documents, weak on aggregation and matching.

Hi Interns screenshot

Hi Interns

Internship-focused in Tunisia. Limited scope beyond listings.

LinkedIn screenshot

LinkedIn

Global network. Broad reach, not tailored to student paths in Tunisia.

Unified ecosystem for fostering young talent; existing tools address isolated parts of the career journey.

Comparative Feature Analysis

Feature Glybette Resume.io Hi Interns LinkedIn
CV BuilderNoNo
Portfolio BuilderNoNoPartial
Job AggregationNo
AI MatchingNoNoPartial
Interview PrepNoNoNo
Project CollaborationNoNoNo
Market StatisticsNoNoPartial
Tunisia-focusedNoNo

03

Vision & Objectives

Our Vision & Objectives

One place to build, prepare, find and innovate.

Centralizing Offers

Aggregate internship, PFE and job offers from the best sources in one place.

01
Uniting Innovation

Collaborate and propose project topics across disciplines.

03
Informing Decisions

Market stats, salaries, and in-demand skills at a glance.

05
Personalizing Careers

AI matching tailored to each user's field and goals.

02
Serving Businesses

Recruiters post offers and rank candidates efficiently.

04
Supporting Studies

Training, certifications, and school choice across all fields.

06

04

Ecosystem

Glybette's Ecosystem: Students & Candidates

Students / Candidates
  • CV Builder
  • Portfolio Builder
  • Cover Letter Enhancer
  • Mock Interviews
  • Jobs Repository
  • Offers Matchmaking
  • Collaboration Platform
  • Statistics & Insights

CV Builder & Cover Letter Enhancer

01

CV Builder

  • Professional CV in minutes
  • Domain-specific templates
  • ATS-optimized metrics
  • PDF export & online sharing
  • Compatibility score with offers
  • AI-powered enhancements
02

Cover Letter Enhancer

  • Auto-adjustment per selected job
  • Profile and skills integration
  • Sector and company adaptation
  • Multi-language support
  • AI-powered enhancements

Portfolio Builder

01

Projects Showcase

Description, tech stack, etc.

02

Shareable Page

name.glybette.com, sent directly to recruiters.

03

Domain Templates

IT, Design, Finance, Medicine, Marketing…

04

Certifications

Coursera, AWS badges with verification.

05

Experience Timeline

Visual academic and professional journey.

Offers & Intelligent Matching

Sources
IndeedLinkedInWTTJPFE Books

Aggregated from multiple job boards and university listings.

Matching Engine
  • Profile ↔ offer compatibility score
  • Daily personalized recommendations
  • CV & cover letter enhanced per offer
  • Email notifications & tracked applications
Offer Types
InternshipPFEFull-timeRemoteFreelance

AI-powered pipeline from scrape to recommendation.

Interview Preparation

Job Analysis

AI generates tailored questions for the field and company.

01

Simulation

Interactive Q&A: AI evaluates clarity and structure.

02

Feedback

Gap detection, reformulation suggestions, overall score.

03

Projects Collaboration Platform

01

Post an Idea

Publish a PFE topic with description, field, and skills.

02

Join a Project

Browse ideas and request to join based on skills.

03

Collaborate

Shared workspace, task tracking, messaging.

04

Launch & Promote

Projects showcased in student portfolios.

05

Stack & Architecture

Why Microservices?

General benefits of splitting a monolith into services

Monolith vs Microservices

Scalability

  • Scale only the services under heavy load
  • Add capacity where demand grows, not across the whole app

Independent Deployment

  • Release, patch, or roll back one service at a time
  • Each service can use the language, runtime, and infrastructure best suited to its workload

Loose Coupling

  • Clear boundaries between business capabilities
  • Failures and refactors stay contained within a service

Database per Service

  • Each microservice owns its private data store
  • Teams evolve schemas without cross-service table coupling

Microservices Architecture

React Client API Gateway Users CV Portfolio Jobs Projects Scraping Notifications AI Service Internal only RabbitMQ HTTP internal HTTP internal

Full Technology Stack

Glybette global runtime architecture: frontend, API gateway, microservices, RabbitMQ, MongoDB, and technology stack

Deployment Tooling

Why Glybette standardizes on containers and an automated pipeline

Docker

One reproducible runtime for every microservice on the VPS.

  • Compose orchestrates the full Glybette stack: gateway, services, MongoDB, RabbitMQ, Redis
  • Same image boundaries in dev and production; each sprint ships an isolated service build
  • Environment injected at deploy time; no secrets baked into images

Jenkins

Automated CI/CD on the VPS, from Git push to live rollout.

  • Pipeline triggered on main: checkout, env injection, preflight, deploy, smoke tests
  • Production .env stored in Jenkins credentials, never committed to Git
  • Fits the Scrum cadence: every sprint ends with a verifiable, repeatable deployment

CI / CD Pipeline

From Git to VPS: continuous deployment of microservices

Git Push Monorepo source
Jenkins Build + tests
Docker Build 9 service images
Docker Push To Docker Hub
Docker Hub Image registry
VPS Ubuntu · Docker Engine · Jenkins · Nginx
Docker Pull From Docker Hub
Compose Up Orchestration
Nginx Proxy + TLS
Production Glybette live 24/7

06

Project Realization

Why Scrum?

3 releases 9 sprints 1 service / sprint
Plan
Build
Review
Retro

Each sprint cycles through ceremonies, then ships one microservice

01

Fit for Microservices

  • Each sprint = one microservice end-to-end
  • Services map naturally to sprint boundaries
  • Incremental integration, no big-bang deploy
02

Sprint Cadence

  • 3 releases × 3 sprints = 9 total
  • Plan → Build → Review → Retro
  • Continuous supervisor feedback
03

Feedback Loop

  • Weekly demos to enterprise & academic supervisors
  • Backlog refinement between sprints
  • Retrospectives drive process improvements

Releases & Sprints

Release 1

Platform Foundation

Sprint 1

API Gateway

Sprint 2

Users Service

Sprint 3

Notifications Service

Release 2

Professional Identity

Sprint 4

Portfolio Service

Sprint 5

CV Service

Sprint 6

Projects Service

Release 3

Opportunities & AI

Sprint 7

Scraping Service

Sprint 8

Jobs Service

Sprint 9

AI Service

Release 1 · Platform Foundation Sprint 1

API Gateway

  • Single public HTTP edge for all /api/* browser traffic
  • Declarative route registry proxying to feature services
  • Session validation via Users Service before protected routes
  • Injects trusted x-user-id and internal-auth headers
  • Stateless Hono service for CORS, routing, and forwarding only
Sprint 1

API Gateway: Diagrams

Route map

Gateway design view (placeholder)

Authenticated proxy sequence

Session validation flow (placeholder)

Release 1 · Platform Foundation Sprint 2

Users Service

  • Identity authority: OAuth sign-in, sessions, and user profiles
  • Email OTP verification with events published to RabbitMQ
  • Roles, account status, and admin moderation actions
  • Session resolution for the API Gateway on every protected call
  • User profile projection events for downstream read models
Sprint 2

Users Service: Screenshots

Login page

OAuth sign-in UI (placeholder)

Email verification

OTP verification UI (placeholder)

Release 1 · Platform Foundation Sprint 3

Notifications Service

  • Asynchronous delivery layer for auth, projects, and jobs events
  • Email via Resend (OTP, alerts) and in-app notification inbox
  • Idempotent RabbitMQ consumers with delivery lifecycle tracking
  • Template rendering keeps domain services free of provider credentials
  • Notification bell UI with read/unread state
Sprint 3

Notifications Service: Screenshots

OTP email

Verification email delivery (placeholder)

Project comment alert

In-app notification (placeholder)

Release 2 · Professional Identity Sprint 4

Portfolio Service

  • Block-based portfolio builder with templates, tabs, and styles
  • One MongoDB aggregate per user, with slug validation and moderation
  • Public pages at /user/{slug} or premium subdomains
  • Draft → published visibility lifecycle
  • Synchronous HTTP only; no domain events published
Sprint 4

Portfolio Service: Screenshots

Portfolio builder

Editor canvas (placeholder)

Public portfolio page

Published site view (placeholder)

Release 2 · Professional Identity Sprint 5

CV Service

  • Structured resume builder with typed sections and templates
  • AI enhancement via internal Lane B calls; CV owns all persistence
  • PDF export and opaque public share links
  • Portfolio-project entries inside CV sections (resume context)
  • ATS scoring, tailoring, extraction, and cover-letter support via AI
Sprint 5

CV Service: Screenshots

CV section editor

Builder UI (placeholder)

AI enhancement panel

Section enhancement UI (placeholder)

Release 2 · Professional Identity Sprint 6

Projects Service

  • Collaboration workspaces, distinct from CV portfolio-project entries
  • Owners, members, join requests, comments, and cover media
  • Project lifecycle: draft → published → archived
  • RabbitMQ events to Notifications + user profile projections
  • Lane B user resolution for member snapshots
Sprint 6

Projects Service: Screenshots

Create project

Project creation page (placeholder)

Project detail

Join-request panel (placeholder)

Release 3 · Opportunities & AI Sprint 7

Scraping Service

  • Python/FastAPI service collecting listings from external job boards
  • Normalize, deduplicate by hash_unique, publish OffreScrapedEvent
  • Redis dedup + RabbitMQ handoff; Jobs Service owns offer persistence
  • APScheduler runs + admin manual scrape triggers
  • Operational ScrapeLog in MongoDB, not a user-facing catalog
Sprint 7

Scraping Service: Screenshots

Admin manual scrape trigger

Operator UI (placeholder)

Release 3 · Opportunities & AI Sprint 8

Jobs Service

  • Authoritative offer store that consumes scraped events from RabbitMQ
  • Opportunities area: browse, filter, and offer detail at /app/opportunities
  • AI-powered matching, mock interviews, cover letters, and job chat
  • Lane B orchestration to AI Service with gateway-authenticated user actions
  • Idempotent ingestion by hash_unique + optional match notifications
Sprint 8

Jobs Service: Screenshots

Opportunities list

Offer browsing UI (placeholder)

Offer detail

Matching & tabs UI (placeholder)

Release 3 · Opportunities & AI Sprint 9

AI Service

  • Internal-only Lane B utility, not exposed via API Gateway
  • Centralizes prompts, Ollama integration, and Zod output validation
  • /ai/cv and /ai/jobs route trees for feature services
  • Stateless; no persistence of prompts, completions, or chat history
  • Production callers: CV Service and Jobs Service only
Sprint 9

AI Service: Diagrams

Technical architecture

Client → Jobs/CV → AI → Ollama (placeholder)

CV ATS score sequence

Lane B inference flow (placeholder)

07

Application Demo

Application Demo

Live walkthrough of the Glybette platform

08

Conclusion & Retrospective

Project Conclusion

Phase 1 · Thesis scope

Phase 1 accomplished

The candidate-facing platform is live: identity, portfolios, CVs, collaboration projects, scraped opportunities, and AI-assisted career tools, delivered across three releases.

9 microservices shipped 3 releases delivered 9 Scrum sprints

Candidate platform

Students and graduates can sign in, build a professional presence, and explore opportunities in one product.

Three releases shipped

Platform foundation, professional identity, and opportunities & AI, each as independently deployable services.

AI in core flows

CV enhancement, offer matching, mock interviews, cover letters, and job chat through internal AI Service.

Async foundations

RabbitMQ handles offer ingestion, notifications, OTP delivery, and profile projections.

Repeatable delivery

Docker Compose per sprint with Jenkins CI/CD: one service deployed end-to-end each iteration.

Ready for Phase 2

Architecture leaves room for recruiters, premium tiers, and institutional partnerships next.

What's Next

Phase 1 is shipped. Here's what comes next.

Phase 2

Recruiter Features

  • Enterprise offer posting & pipelines
  • Candidate ranking dashboards
  • Recruiter analytics & shortlists
Phase 3

Premium Plans

  • Advanced AI matching & interview prep
  • Priority alerts & enhanced themes
  • Premium portfolio subdomains
Phase 4

Partnerships

  • Universities & engineering schools
  • Incubators & career offices
  • Company onboarding programs

Thank You For Your Attention!

Questions?