Medica Studio
Backend

Pipeline CRM Recrutement Médical

Système CRM complet pour cliniques avec tunnel de recrutement en 9 étapes (Match → Intégration), gestion candidats enrichie, analytics conversion et workflows automatisés

Stack Technique

Firebase FirestoreFirebase Cloud FunctionsTypeScriptNode.jsFirebase StorageSendGrid APIAnalytics & MetricsWebhook System
Architecture CRM complexe dédiée au recrutement médical avec pipeline Kanban de 9 étapes trackées individuellement. Solution hybride combinant sous-collection prospects (annonces/{id}/prospects) pour matching automatique et collection candidates (cliniques/{id}/candidates) pour CRM actif. Chaque candidat possède un profil enrichi avec RPPS validé, documents (CV, diplômes, références), historique interactions détaillé (messages, appels, notes), scoring IA 0-100, tags personnalisés et métriques temporelles (first_contact_date, last_activity_date, next_follow_up_date). Système d'automatisation avec workflows conditionnels, templates emails, rappels automatiques et analytics conversion par étape.

Caractéristiques

Pipeline Kanban 9 étapes structuré

Tunnel de recrutement complet : Match → New Candidate → First Contact → Qualification → Interview RH → Interview Medical → Proposal → Finalization → Integration. Tracking progression et durée moyenne par étape.

Profils candidats enrichis RPPS

Données complètes par candidat : RPPS validé, spécialités, sous-spécialités, expériences (établissements, dates, postes), formations (diplômes, thèses, publications), disponibilités, préférences contrat (CDI/CDD/remplacement), prétentions salariales.

Gestion documentaire intégrée

Upload et stockage sécurisé Firebase Storage : CV, diplômes, références, attestations assurance, contrats signés, rapports installation. Preview documents dans interface, versioning automatique, téléchargement par lots.

Historique interactions complet

Timeline exhaustive : messages envoyés/reçus, appels téléphoniques (date, durée, résumé), notes internes recruteur, changements statut, documents partagés, rappels créés. Export CSV pour audit.

Scoring IA et priorités dynamiques

Match score 0-100 recalculé automatiquement selon évolution profil + nouveau scoring CRM basé sur engagement (taux réponse, délai réponse, actions complétées). Priorités low/medium/high avec alertes visuelles.

Analytics et métriques KPI

Dashboard temps réel : taux conversion par étape, durée moyenne pipeline, top recruteurs, annonces performantes, motifs rejet, satisfaction candidats (NPS). Export rapports hebdomadaires/mensuels.

Performance

< 200ms requêtes Firestore
Latence
50 cliniques, 200+ candidats actifs
Throughput
99.9% (Firebase infrastructure)
Uptime
35 jours (Match → Intégré)
Pipeline complet moyen
35%
Taux conversion Match → Entretien
72%
Taux conversion Offre → Accepté
500+ (CV, diplômes, contrats)
Documents stockés

Exemples de code

typescript
1interface Candidate {
2  // Identifiants
3  id: string;
4  user_id: DocumentReference;      // Référence vers users/{userId}
5  annonce_id: DocumentReference;   // Référence vers annonces/{annonceId}
6  clinic_id: DocumentReference;    // Référence vers cliniques/{clinicId}
7  recruiter_id?: DocumentReference; // Recruteur assigné
8
9  // Pipeline & Statut
10  pipeline_stage: 'match' | 'new_candidate' | 'first_contact' |
11                 'qualification' | 'interview_rh' | 'interview_medical' |
12                 'proposal' | 'finalization' | 'integration';
13  status: 'active' | 'paused' | 'rejected' | 'withdrawn';
14  priority: 'low' | 'medium' | 'high';
15
16  // Source & Scoring
17  source_type: 'prospect_promotion' | 'direct_application' |
18               'referral' | 'headhunt';
19  match_score: number; // 0-100 (score initial de matching)
20  engagement_score?: number; // 0-100 (score CRM basé sur interactions)
21
22  // Dates tracking
23  created_at: Timestamp;
24  updated_at: Timestamp;
25  first_contact_date?: Timestamp;
26  last_activity_date?: Timestamp;
27  next_follow_up_date?: Timestamp;
28
29  // Historique pipeline
30  pipeline_stage_history: Array<{
31    stage: string;
32    entered_at: Timestamp;
33    duration_days?: number;
34    notes?: string;
35  }>;
36
37  // Interactions
38  total_interactions: number;
39  last_email_sent?: Timestamp;
40  last_call_made?: Timestamp;
41  messages_count: number;
42  calls_count: number;
43
44  // Données candidat
45  recruiter_notes?: string;
46  tags: string[]; // ['urgent', 'top-candidate', 'needs-follow-up']
47  salary_expectation?: number;
48  availability_date?: Timestamp;
49  contract_preference: 'CDI' | 'CDD' | 'remplacement';
50
51  // Documents
52  documents: Array<{
53    name: string;
54    type: 'cv' | 'diploma' | 'reference' | 'contract' | 'other';
55    url: string; // Firebase Storage URL
56    uploaded_at: Timestamp;
57  }>;
58}
59

Informations

Année
2024-2025
Version
v2

Intéressé par ce projet ?

Discutons de vos besoins et voyons comment nous pouvons vous aider.

Nous contacter