Réalisations
Chaque projet avec ses technologies et les compétences du BTS SIO mobilisées.
Agenda automatisé
Stage chez Swan, juin 2026
Un agent Dust envoie chaque jour dans Slack les rappels des processus de l'équipe. Développé, testé et ajusté jusqu'à être fiable.
- Dust
- Slack
- Notion
- Traiter une demande d'évolution
- Tester et déployer un service
- Accompagner les utilisateurs
Tableaux de bord
Stage chez Swan, juin 2026
Des dashboards Metabase construits autour des indicateurs dont les équipes avaient besoin, ajustés selon leurs retours.
- Metabase
- SQL
- Notion
- Analyser les objectifs d'un projet
- Évaluer des indicateurs de suivi
- Déployer un service
Requêtes SQL
Stage chez Swan, mai à juin 2026
Besoins en données recueillis en shadowing, puis questions créées sur Metabase, en no-code ou en SQL simple.
- SQL
- Metabase
- Recenser les ressources numériques
- Collecter et traiter les demandes
Exemples de requêtes
Sur Metabase, on fait beaucoup de choses en no-code (filtres, regroupements, graphiques). Voici des exemples de requêtes en SQL. Les tables, les colonnes et les résultats sont inventés car les vraies données sont confidentielles.
requetes-fictives.xlsxComptes qui ont reçu plus de 10 000 € en 7 jours
Voir les comptes qui reçoivent beaucoup d'argent d'un coup. Ça peut être un compte "mule" utilisé pour faire passer de l'argent.
-- Comptes qui ont reçu plus de 10 000 euros sur les 7 derniers jours SELECT o.id_compte, COUNT(*) AS nb_entrees, SUM(o.montant) AS total_recu FROM demo.operations o WHERE o.sens = 'entrant' AND o.date_operation >= CURRENT_DATE - 7 GROUP BY o.id_compte HAVING SUM(o.montant) > 10000 ORDER BY total_recu DESC;
| A | B | C | |
|---|---|---|---|
| 1 | id_compte | nb_entrees | total_recu |
| 2 | CPT-0417 | 23 | 48 250,00 € |
| 3 | CPT-1093 | 11 | 31 780,50 € |
| 4 | CPT-0752 | 38 | 22 410,00 € |
| 5 | CPT-2281 | 7 | 18 900,00 € |
| 6 | CPT-0164 | 15 | 12 345,90 € |
Comptes connectés depuis plusieurs pays en 24 h
Si un compte se connecte depuis 3 pays ou plus dans la même journée, quelqu'un d'autre l'utilise peut-être.
-- Comptes connectés depuis au moins 3 pays différents en 24 h SELECT id_compte, COUNT(DISTINCT pays_ip) AS nb_pays, COUNT(*) AS nb_connexions FROM demo.connexions WHERE date_connexion >= CURRENT_DATE - 1 GROUP BY id_compte HAVING COUNT(DISTINCT pays_ip) >= 3 ORDER BY nb_pays DESC;
| A | B | C | |
|---|---|---|---|
| 1 | id_compte | nb_pays | nb_connexions |
| 2 | CPT-2281 | 5 | 41 |
| 3 | CPT-0889 | 4 | 17 |
| 4 | CPT-1504 | 3 | 9 |
| 5 | CPT-0417 | 3 | 26 |
| 6 | CPT-3012 | 3 | 5 |
Un même IBAN payé par plusieurs comptes
Quand plusieurs comptes qui n'ont rien à voir envoient de l'argent au même IBAN, ça peut être un réseau de fraude.
-- IBAN qui ont reçu des virements d'au moins 4 comptes différents SELECT o.iban_masque AS beneficiaire, COUNT(DISTINCT o.id_compte) AS nb_emetteurs, SUM(o.montant) AS total_recu FROM demo.operations o WHERE o.type_operation = 'virement_sortant' AND o.date_operation >= CURRENT_DATE - 30 GROUP BY o.iban_masque HAVING COUNT(DISTINCT o.id_compte) >= 4 ORDER BY nb_emetteurs DESC;
| A | B | C | |
|---|---|---|---|
| 1 | beneficiaire | nb_emetteurs | total_recu |
| 2 | FR76 **** **** 0042 | 12 | 27 600,00 € |
| 3 | LT12 **** **** 7781 | 8 | 15 990,00 € |
| 4 | FR76 **** **** 9310 | 6 | 8 420,50 € |
| 5 | DE89 **** **** 3006 | 4 | 4 750,00 € |
Nombre d'alertes fraude par semaine
La requête utilisée pour un tableau de bord : combien d'alertes chaque semaine, combien de vraies fraudes et combien de fausses alertes.
-- Alertes par semaine, avec les fraudes et les fausses alertes SELECT a.semaine, COUNT(*) AS alertes, SUM(CASE WHEN a.statut = 'fraude' THEN 1 ELSE 0 END) AS fraudes, SUM(CASE WHEN a.statut = 'faux_positif' THEN 1 ELSE 0 END) AS fausses_alertes FROM demo.alertes a GROUP BY a.semaine ORDER BY a.semaine;
| A | B | C | D | |
|---|---|---|---|---|
| 1 | semaine | alertes | fraudes | fausses_alertes |
| 2 | 25/05/2026 | 142 | 11 | 102 |
| 3 | 01/06/2026 | 168 | 14 | 116 |
| 4 | 08/06/2026 | 155 | 9 | 115 |
| 5 | 15/06/2026 | 131 | 12 | 87 |
| 6 | 22/06/2026 | 127 | 10 | 80 |
Pays des comptes fermés pour fraude
Compter les comptes fermés pour fraude selon le pays où ils étaient domiciliés. Le camembert se fait ensuite directement dans Metabase.
-- Comptes fermés pour fraude en 2026, par pays de domiciliation SELECT c.pays_domiciliation AS pays, COUNT(*) AS comptes_fermes, SUM(c.montant_fraude) AS montant_fraude FROM demo.comptes c WHERE c.motif_fermeture = 'fraude' AND c.date_fermeture >= '2026-01-01' GROUP BY c.pays_domiciliation ORDER BY comptes_fermes DESC LIMIT 6;
| A | B | C | |
|---|---|---|---|
| 1 | pays | comptes_fermes | montant_fraude |
| 2 | France | 412 | 1 284 500,00 € |
| 3 | Espagne | 96 | 402 300,00 € |
| 4 | Belgique | 71 | 251 800,00 € |
| 5 | Allemagne | 58 | 233 900,00 € |
| 6 | Italie | 44 | 158 200,00 € |
| 7 | Portugal | 39 | 131 400,00 € |
Comptes fermés pour fraude par pays de domiciliation
- France41257,2 %
- Espagne9613,3 %
- Belgique719,9 %
- Allemagne588,1 %
- Italie446,1 %
- Portugal395,4 %
Total : 720 comptes - données fictives
Outils d'investigation fraude
Stage chez Swan, mai à juin 2026
Pour analyser un client suspect, on croise plusieurs outils : un tableau de bord Metabase qui centralise les données, Seon pour le score de risque, Scamalytics pour vérifier l'adresse IP (VPN, proxy, Tor) et Open Sanctions pour les listes de sanctions.
- Metabase
- Seon
- Scamalytics
- Open Sanctions
- Exploiter des outils métier
- Analyser des données
- Respecter la confidentialité des données
Captures
Les informations personnelles sont floutées.




Ce portfolio
Formation, octobre à novembre 2026
Mon portfolio de BTS.
- HTML
- CSS
- JavaScript
- Vercel
- Valoriser son image en ligne
- Déployer un service
- Gérer son identité professionnelle