Skip to content

About

Collective academic Android recruitment app: Java, Firebase, PDF applications and a FastAPI service for semantic CV analysis.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

SmartHiring — Application Android de recrutement

Projet académique collectif EMSI, année 2025–2026. SmartHiring réunit les parcours candidat et recruteur : recherche d’offres, analyse de CV PDF, candidature, suivi et échanges.

Android · Java · Firebase Authentication / Realtime Database / Storage · Python · FastAPI · NLP / Sentence Transformers · Retrofit · PDF

Parcours et fonctionnalités

  • Inscription et connexion des candidats avec Firebase Authentication, adresse institutionnelle EMSI et validation de l’email.
  • Accès recruteur contrôlé par une attribution de rôle serveur (recruiter dans les custom claims Firebase).
  • Déverrouillage biométrique Android d’un compte déjà connecté sur l’appareil.
  • Catalogue d’offres, recherche et filtres, saisie vocale et publication d’offres par le recruteur.
  • Extraction de texte depuis un PDF, analyse sémantique CV/profil par modèle multilingue, score de similarité cosinus et repérage des compétences.
  • Dépôt de candidature avec document PDF téléversé dans Firebase Storage.
  • Suivi des candidatures, acceptation/rejet et notifications dans l’application.
  • Interface d’échange et stockage local des messages.
flowchart LR
  APP[Android : candidat / recruteur] --> AUTH[Firebase Authentication]
  APP --> DB[Realtime Database : offres / candidatures / notifications]
  APP --> STORE[Storage : CV PDF]
  APP --> API[FastAPI : analyse des compétences]
Loading

Installation

Ouvrir android-app dans Android Studio. Utiliser JDK 17, Android SDK 34 et le wrapper Gradle fourni. Créer votre projet Firebase, activer Authentication Email/Password, Realtime Database et Storage, puis placer votre google-services.json dans android-app/app/. Ce fichier reste ignoré par Git.

Les règles proposées sont dans firebase. Attribuer le custom claim recruiter=true aux comptes autorisés avec Firebase Admin SDK, depuis un environnement d’administration de votre projet. Les mots de passe et rôles ne sont pas codés en dur dans l’application. Utiliser des CV et identités fictifs pour la présentation académique.

Pour l’API :

cd backend
python -m venv .venv
# Activer l’environnement, puis :
python -m pip install -r requirements.txt
python -m uvicorn main:app --host 127.0.0.1 --port 8000

L’émulateur Android accède au poste hôte via http://10.0.2.2:8000/. Les échanges HTTP sont autorisés uniquement pour les adresses de développement locales ; les autres destinations utilisent HTTPS. Pour une autre adresse, définir AI_BASE_URL dans les propriétés Gradle locales. Le premier lancement de l’analyse charge le modèle multilingue MiniLM de Sentence Transformers, à une révision épinglée, puis le conserve en cache. L’inférence fonctionne sur le poste local ; les textes des CV ne sont ni enregistrés par cette API ni envoyés à un service d’inférence externe. La réponse contient une similarité cosinus CV/profil et, séparément, la couverture des compétences demandées. Le profil peut être fourni dans job_description et les compétences dans required_skills.

curl -X POST http://127.0.0.1:8000/analyze -H "Content-Type: application/json" -d '{"text":"Java Android XML Git SQL"}'

Vérifications

Dix tests API réussis localement et sur GitHub : validation des entrées, bornes de taille, stabilité du résultat, reconnaissance des mots complets, calcul cosinus, découpage des CV longs et maîtrise du contenu retourné. Le modèle multilingue réel a également été exécuté sur des exemples fictifs. Les 25 fichiers Java et 28 fichiers XML ont été contrôlés statiquement. La CI exécute les tests API et construit l’application Android ; un APK de démonstration est conservé dans les artefacts du build réussi.

cd backend
python -m pip install -r requirements-test.txt
python -m unittest -v test_api
# Depuis android-app : ./gradlew assembleDebug

Rapport et équipe

Rapport final — 23 pages.

Équipe : Omar Babba, Ilyas Ajelyan, Youssef Mouhi et Anas El Karkouri. Encadrement : Zakia Eluahhabi, EMSI. Version de publication préparée à partir de l’archive complète SmartHiring.zip.

About

Collective academic Android recruitment app: Java, Firebase, PDF applications and a FastAPI service for semantic CV analysis.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages