Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions demos/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,6 @@ batch-download:

batch-list:
uv run mp batch list $(PROJECT_NAME)

run-notebooks:
./run_notebooks.sh
Empty file added demos/__init__.py
Empty file.
Empty file added demos/notebooks/__init__.py
Empty file.
Original file line number Diff line number Diff line change
Expand Up @@ -114,33 +114,16 @@
},
{
"cell_type": "code",
"execution_count": 23,
"execution_count": null,
"id": "a1b2c3d4-0007",
"metadata": {
"ExecuteTime": {
"end_time": "2026-03-16T19:11:40.142006Z",
"start_time": "2026-03-16T19:11:40.034779Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"MLflow tracking URI : http://model-platform.com/registry/test-ia-act/\n"
]
}
],
"source": [
"# Author: Octo Technology MLOps Tribe\n",
"# \u2699\ufe0f Adapter l'URI \u00e0 votre projet Model Platform\n",
"PROJECT_NAME = \"test-ia-act\"\n",
"MLFLOW_TRACKING_URI = f\"http://model-platform.com/registry/{PROJECT_NAME}/\"\n",
"\n",
"mlflow.set_tracking_uri(MLFLOW_TRACKING_URI)\n",
"mlflow.set_experiment(\"credit_default_prediction\")\n",
"print(f\"MLflow tracking URI : {MLFLOW_TRACKING_URI}\")"
]
"outputs": [],
"source": "# Author: Octo Technology MLOps Tribe\n# \u2699\ufe0f Adapter l'URI \u00e0 votre projet Model Platform\nPROJECT_NAME = \"Credit-Risk-Assessment\"\nMLFLOW_TRACKING_URI = f\"http://model-platform.com/registry/{PROJECT_NAME}/\"\n\nmlflow.set_tracking_uri(MLFLOW_TRACKING_URI)\nmlflow.set_experiment(\"credit_default_prediction\")\nprint(f\"MLflow tracking URI : {MLFLOW_TRACKING_URI}\")"
},
{
"cell_type": "markdown",
Expand Down

Large diffs are not rendered by default.

Empty file.
60 changes: 60 additions & 0 deletions demos/run_notebooks.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#!/bin/bash
# Author: Octo Technology MLOps Tribe
# Run all AI Act demo notebooks sequentially via papermill

set -uo pipefail

SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
OUTPUT_DIR="$SCRIPT_DIR/notebooks/output"
mkdir -p "$OUTPUT_DIR"

NOTEBOOKS=(
"notebooks/banking/Banking Credit Scoring/credit_scoring_ai_act.ipynb"
"notebooks/banking/Customer Segmentation/customer_segment_classifier_ai_act.ipynb"
"notebooks/banking/Transaction Fraud Detection/transaction_fraud_ai_act.ipynb"
"notebooks/banking/Transaction Fraud Detection/transaction_anomaly_ai_act.ipynb"
"notebooks/ecommerce/Ecommerce Recommendation/product_recommender_ai_act.ipynb"
"notebooks/ecommerce/Ecommerce Recommendation/customer_churn_predictor_ai_act.ipynb"
"notebooks/hr/Employee Attrition Prediction/employee_attrition_ai_act.ipynb"
"notebooks/hr/Employee Attrition Prediction/satisfaction_scorer_ai_act.ipynb"
"notebooks/medical/Medical Document NLP/document_type_classifier_ai_act.ipynb"
"notebooks/medical/Medical Document NLP/clinical_entity_extractor_ai_act.ipynb"
"notebooks/supply_chain/Supply Chain Optimization/demand_forecaster_ai_act.ipynb"
"notebooks/supply_chain/Supply Chain Optimization/supplier_risk_scorer_ai_act.ipynb"
)

TOTAL=${#NOTEBOOKS[@]}
PASSED=0
FAILED=0
FAILED_LIST=()

cd "$SCRIPT_DIR"

for i in "${!NOTEBOOKS[@]}"; do
NB="${NOTEBOOKS[$i]}"
NAME=$(basename "$NB" .ipynb)
DIR=$(dirname "$NB")
NUM=$((i + 1))

echo ""
echo "=== [$NUM/$TOTAL] $NAME ==="

if uv run papermill "$NB" "$OUTPUT_DIR/${NAME}_out.ipynb" --cwd "$DIR" 2>&1; then
echo "PASS: $NAME"
PASSED=$((PASSED + 1))
else
echo "FAIL: $NAME"
FAILED=$((FAILED + 1))
FAILED_LIST+=("$NAME")
fi
done

echo ""
echo "========================================="
echo "Results: $PASSED/$TOTAL passed, $FAILED failed"

if [ $FAILED -gt 0 ]; then
echo "Failed notebooks:"
for f in "${FAILED_LIST[@]}"; do echo " - $f"; done
exit 1
fi
38 changes: 19 additions & 19 deletions frontend/js/pages/projects.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,56 +5,56 @@ const ProjectsPage = (() => {
{
name: "Credit-Risk-Assessment",
owner: "BancoFrance - Risk Management Division",
description: "Credit scoring and customer segmentation",
description: "Scoring crédit et segmentation client",
team: "Risk & Data Science",
domain: "Banking",
scope: "Credit scoring model to assess default risk of business clients. Uses transactional, financial and behavioral data to predict 12-month default probability. Production deployment to support advisor decision-making.",
data_perimeter: "French business customer data (2019-2024): financial statements, cash flows, credit history, financial ratios, business sector. ~500k companies. GDPR: Compliant - Pseudonymization via SHA-256 hashing of SIREN/SIRET identifiers.",
scope: "Modèle de scoring crédit pour évaluer le risque de défaut des clients professionnels. Utilise des données transactionnelles, financières et comportementales pour prédire la probabilité de défaut à 12 mois. Déploiement en production pour aide à la décision des conseillers.",
data_perimeter: "Données clients entreprises France (2019-2024): bilans comptables, flux de trésorerie, historique de crédit, ratios financiers, secteur d'activité. ~500k entreprises. RGPD: Conforme - Pseudonymisation par hachage SHA-256 des identifiants SIREN/SIRET.",
},
{
name: "Medical-Document-NLP",
owner: "AP-HP (Assistance Publique Hôpitaux de Paris) - DSI Innovation",
description: "Clinical entity extraction and document classification",
description: "Extraction d'entités cliniques et classification de documents",
team: "NLP & Clinical AI",
domain: "Healthcare",
scope: "Automatic extraction of clinical information from unstructured medical reports. NLP to identify pathologies, treatments, exam results, allergies. Supports PMSI coding and clinical research.",
data_perimeter: "Medical reports (hospitalization, consultations, imaging) from 2015 to 2024. ~50M documents. GDPR: Compliant - Pseudonymization per MR-004 CNIL. HDS-certified hosting. Ethics committee consulted.",
scope: "Extraction automatique d'informations cliniques depuis les comptes-rendus médicaux non structurés. NLP pour identifier pathologies, traitements, résultats d'examens, allergies. Aide au codage PMSI et à la recherche clinique.",
data_perimeter: "Comptes-rendus médicaux (hospitalisation, consultations, imagerie) de 2015 à 2024. ~50M de documents. RGPD: Conforme - Pseudonymisation selon MR-004 CNIL. Hébergement certifié HDS. Comité éthique consulté.",
},
{
name: "Employee-Attrition-Prediction",
owner: "TalentCorp HR - People Analytics Division",
description: "Attrition prediction and satisfaction scoring",
owner: "TalentCorp RH - People Analytics Division",
description: "Prédiction de l'attrition et scoring de satisfaction",
team: "People Analytics",
domain: "Human Resources",
scope: "Prediction of voluntary employee departure risk and satisfaction scoring. Models trained on synthetic HR data: tenure, satisfaction, performance, mobility. Supports retention and workforce planning.",
data_perimeter: "Synthetic HR data: employee profiles, performance history, satisfaction surveys, internal mobility. ~80k simulated employees. GDPR: Compliant - Entirely synthetic data.",
scope: "Prédiction du risque de départ volontaire des collaborateurs et scoring de satisfaction. Modèles entraînés sur des données RH synthétiques: ancienneté, satisfaction, performance, mobilité. Aide à la rétention et à la gestion prévisionnelle des emplois.",
data_perimeter: "Données RH synthétiques: profils collaborateurs, historique de performance, enquêtes de satisfaction, mobilités internes. ~80k collaborateurs simulés. RGPD: Conforme - Données entièrement synthétiques.",
},
{
name: "Fraud-Detection-Payments",
owner: "EuroBank Systems - Cyber & Fraud Prevention",
description: "Fraud detection and transaction anomalies",
description: "Détection de fraude et anomalies transactionnelles",
team: "Fraud & Cyber Analytics",
domain: "Banking",
scope: "Real-time fraud detection on card payments (e-commerce and retail). ML model assessing each transaction's risk in <100ms. Reduces false positives while maintaining >95% detection rate.",
data_perimeter: "Card transactions from the last 24 months: amount, merchant type, location, time, currency. ~2 billion transactions/year. GDPR: Compliant - PCI-DSS v4.0 tokenization, customer identity pseudonymization.",
scope: "Détection en temps réel des fraudes sur paiements par carte (e-commerce et retail). Modèle de ML évaluant le risque de chaque transaction en <100ms. Réduction des faux positifs tout en maintenant un taux de détection >95%.",
data_perimeter: "Transactions par carte des 24 derniers mois: montant, type de commerce, localisation, heure, devise. ~2 milliards de transactions/an. RGPD: Conforme - Tokenisation PCI-DSS v4.0, pseudonymisation des identités clients.",
},
{
name: "Ecommerce-Recommendation",
owner: "ShopNow Digital - Personalization & Growth",
description: "Product recommendation and customer churn prediction",
description: "Recommandation produit et prédiction du churn client",
team: "Personalization ML",
domain: "E-commerce",
scope: "Personalized product recommendation system and customer churn prediction. Models trained on purchase behavior, browsing and engagement. Optimizes average cart value and reduces attrition rate.",
data_perimeter: "Synthetic e-commerce behavioral data: purchase history, browsing, ratings, interactions. ~2M simulated profiles. GDPR: Compliant - Entirely synthetic data.",
scope: "Système de recommandation produit personnalisé et prédiction du churn client. Modèles entraînés sur les comportements d'achat, navigation et engagement. Optimisation du panier moyen et réduction du taux d'attrition.",
data_perimeter: "Données comportementales e-commerce synthétiques: historique d'achats, navigation, notes, interactions. ~2M de profils simulés. RGPD: Conforme - Données entièrement synthétiques.",
},
{
name: "Supply-Chain-Optimization",
owner: "MarchéPlus Distribution - Supply Chain & Advanced Analytics",
description: "Demand forecasting and supplier risk scoring",
description: "Prévision de la demande et scoring risque fournisseur",
team: "Supply Chain Analytics",
domain: "Retail & Logistics",
scope: "Inventory optimization and demand forecasting for fresh products in large retail. Supplier risk scoring to secure supply chains. Reduces food waste and stockouts.",
data_perimeter: "Daily sales history over 3 years for 12,000 SKUs across 5,000 stores. Local weather data, events, logistics, supplier ratings. GDPR: Compliant - No personal data collected.",
scope: "Optimisation des stocks et prévision de la demande pour les produits frais en grande distribution. Scoring du risque fournisseur pour sécuriser les approvisionnements. Réduction du gaspillage alimentaire et des ruptures de stock.",
data_perimeter: "Historique des ventes quotidiennes sur 3 ans pour 12000 références dans 5000 magasins. Données météo locale, événements, logistiques, évaluations fournisseurs. RGPD: Conforme - Aucune donnée personnelle collectée.",
},
];

Expand Down
Loading