# GENAURA — Copilote post-appel La Poste

Prototype fonctionnel pour le hackathon Women in Gen AI 2026 (EY & Microsoft).

## Installation

### 1. Installer Ollama

Télécharger et installer Ollama : https://ollama.com

Puis télécharger les modèles nécessaires :

Créer un espace de travail : 
```bash
py -3.11 -m venv .venv
```

```bash  Dans le terminal, saisir la commande suivante :
```

```bash Si l’environnement virtuel existe déjà :
```
.venv\Scripts\activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
ollama list
python index_documents.py
python -m streamlit run app.py
```


```bash
ollama pull mistral
ollama pull nomic-embed-text
python -m pip install "streamlit>=1.32.0" "ollama>=0.1.0" "chromadb>=0.4.0" "fpdf2>=2.7.0" "deep-translator>=1.11.0" "arabic-reshaper>=3.0.0" "python-bidi>=0.4.2" "SpeechRecognition>=3.10.0"
python -m pip install --upgrade "streamlit>=1.40.0"
```

### 2. Installer les dépendances Python

```bash
cd genaura
pip install -r requirements.txt
python -c "import streamlit as st; print(st.__version__)"
```

### 3. Indexer les documents La Poste

```bash
python index_documents.py
```

### 4. Lancer l'application

```bash
streamlit run app.py
```

L'application s'ouvre dans le navigateur à l'adresse http://localhost:8501

## Flux

1. Le conseiller saisit les informations de l'appel.
2. L'IA génère un résumé structuré de l'appel.
3. Le conseiller valide ou corrige le résumé.
4. L'IA génère un e-mail client (ancré dans la base documentaire La Poste).
5. Le conseiller valide, envoie. Le résumé est archivé dans le dossier client.

## Structure

```
genaura/
├── app.py                    # Application Streamlit
├── index_documents.py        # Indexation des documents dans ChromaDB
├── generate_pdf.py           # Génération du PDF résumé
├── prompts/                  # Prompts LLM
├── documents_la_poste/       # Documents de référence (RAG)
├── chroma_db/                # Base vectorielle (générée)
├── archives/                 # Appels archivés (JSON + PDF)
└── requirements.txt          # Dépendances Python
```
# README, installation et validations effectuées sur GENAURA

## Objet

Ce document synthétise, à partir des sorties terminal fournies, ce qui a été installé, ce qui était déjà présent dans l’environnement Python et ce qui a été validé fonctionnellement lors de la mise en route locale du projet `genaura`.

Aucune information non visible dans les logs n’est ajoutée. Lorsqu’un point n’est pas démontré par les traces fournies, il est signalé comme non confirmé.

## Contexte observé

Répertoires utilisés :

```powershell
C:\Users\lemai\Documents\Claude\Projects\Hackathon 2026
C:\Users\lemai\Documents\Claude\Projects\Hackathon 2026\genaura
```

Environnement Python visible dans les logs :

```text
c:\users\lemai\appdata\local\programs\python\python313\
```

## Ce qui a été validé côté dépendances du projet

Une exécution de l’installation via le fichier `requirements.txt` a produit des lignes `Requirement already satisfied`. Cela confirme que les paquets demandés par ce fichier étaient déjà présents dans l’environnement Python utilisé.

Extraits observés :

```text
Requirement already satisfied: streamlit>=1.30.0 ... (1.56.0)
Requirement already satisfied: ollama>=0.1.0 ... (0.6.1)
Requirement already satisfied: chromadb>=0.4.0 ... (1.5.7)
Requirement already satisfied: fpdf2>=2.7.0 ... (2.8.7)
```

Conclusion validée :

Les dépendances principales du projet, telles que déclarées dans `requirements.txt`, étaient installées et reconnues dans l’environnement Python :

- `streamlit` version `1.56.0`
- `ollama` version `0.6.1`
- `chromadb` version `1.5.7`
- `fpdf2` version `2.8.7`

## Ce qui a été installé pendant la session

### 1. Modèles Ollama téléchargés avec succès

Commandes exécutées :

```powershell
ollama pull mistral
ollama pull nomic-embed-text
```

Validation observée dans le terminal :

- `mistral`, téléchargement terminé avec le message `success`
- `nomic-embed-text`, téléchargement terminé avec le message `success`

Conclusion validée :

Les modèles suivants ont été installés localement via Ollama :

- `mistral`
- `nomic-embed-text`

### 2. Paquets installés explicitement via pip pendant la session

Commande exécutée :

```powershell
pip install chromadb
```

Validation observée dans le terminal :

```text
Successfully installed chromadb-1.5.7 opentelemetry-exporter-otlp-proto-grpc-1.41.0 tokenizers-0.22.2
```

Conclusion validée :

Les paquets suivants ont été installés pendant cette étape :

- `chromadb` version `1.5.7`
- `opentelemetry-exporter-otlp-proto-grpc` version `1.41.0`
- `tokenizers` version `0.22.2`

## Ce qui était déjà présent dans l’environnement Python

Les journaux `pip install chromadb` et `pip install -r requirements.txt` indiquent aussi de nombreux paquets marqués comme déjà présents. Cela ne prouve pas qu’ils ont été installés pendant cette session, mais cela confirme leur présence dans l’environnement Python utilisé.

Paquets explicitement visibles comme déjà présents :

- `altair` version `6.0.0`
- `anyio` version `4.13.0`
- `annotated-doc` version `0.0.4`
- `annotated-types` version `0.7.0`
- `attrs` version `26.1.0`
- `bcrypt` version `5.0.0`
- `blinker` version `1.9.0`
- `build` version `1.4.2`
- `cachetools` version `7.0.5`
- `certifi` version `2026.2.25`
- `charset_normalizer` version `3.4.7`
- `click` version `8.3.2`
- `colorama` version `0.4.6`
- `defusedxml` version `0.7.1`
- `durationpy` version `0.10`
- `filelock` version `3.25.2`
- `flatbuffers`
- `fonttools` version `4.62.1`
- `fpdf2` version `2.8.7`
- `fsspec` version `2026.3.0`
- `gitdb` version `4.0.12`
- `gitpython` version `3.1.46`
- `googleapis-common-protos` version `1.74.0`
- `grpcio` version `1.80.0`
- `h11` version `0.16.0`
- `hf-xet` version `1.4.3`
- `httpcore` version `1.0.9`
- `httptools` version `0.7.1`
- `httpx` version `0.28.1`
- `huggingface-hub` version `1.10.1`
- `idna` version `3.11`
- `importlib-metadata` version `8.7.1`
- `importlib-resources` version `6.5.2`
- `jinja2` version `3.1.6`
- `jsonschema` version `4.26.0`
- `jsonschema-specifications` version `2025.9.1`
- `kubernetes` version `35.0.0`
- `markdown-it-py` version `4.0.0`
- `MarkupSafe` version `3.0.3`
- `mdurl` version `0.1.2`
- `mmh3` version `5.2.1`
- `mpmath` version `1.3.0`
- `narwhals` version `2.19.0`
- `numpy` version `2.4.4`
- `oauthlib` version `3.3.1`
- `ollama` version `0.6.1`
- `onnxruntime` version `1.24.4`
- `opentelemetry-api` version `1.41.0`
- `opentelemetry-exporter-otlp-proto-common` version `1.41.0`
- `opentelemetry-exporter-otlp-proto-grpc` version `1.41.0`
- `opentelemetry-proto` version `1.41.0`
- `opentelemetry-sdk` version `1.41.0`
- `opentelemetry-semantic-conventions` version `0.62b0`
- `orjson` version `3.11.8`
- `overrides` version `7.7.0`
- `packaging` version `26.0`
- `pandas` version `3.0.2`
- `pillow` version `12.2.0`
- `protobuf` version `6.33.6`
- `pyarrow` version `23.0.1`
- `pybase64` version `1.4.3`
- `pydeck` version `0.9.1`
- `pydantic` version `2.12.5`
- `pydantic-core` version `2.41.5`
- `pydantic-settings` version `2.13.1`
- `pygments` version `2.20.0`
- `pyproject_hooks` version `1.2.0`
- `pypika` version `0.51.1`
- `python-dateutil` version `2.9.0.post0`
- `python-dotenv` version `1.2.2`
- `pyyaml` version `6.0.3`
- `referencing` version `0.37.0`
- `requests` version `2.33.1`
- `requests-oauthlib` version `2.0.0`
- `rich` version `14.3.3`
- `rpds-py` version `0.30.0`
- `shellingham` version `1.5.4`
- `six` version `1.17.0`
- `smmap` version `5.0.3`
- `streamlit` version `1.56.0`
- `sympy` version `1.14.0`
- `tenacity` version `9.1.4`
- `tokenizers` version `0.22.2`
- `toml` version `0.10.2`
- `tornado` version `6.5.5`
- `tqdm` version `4.67.3`
- `typer` version `0.24.1`
- `typing-extensions` version `4.15.0`
- `typing-inspection` version `0.4.2`
- `tzdata` version `2026.1`
- `urllib3` version `2.6.3`
- `uvicorn` version `0.44.0`
- `watchdog` version `6.0.0`
- `watchfiles` version `1.1.1`
- `websocket-client` version `1.9.0`
- `websockets` version `16.0`
- `zipp` version `3.23.0`

Conclusion validée :

L’environnement Python utilisé pour le projet était déjà largement provisionné, et les dépendances du `requirements.txt` étaient satisfaites.

## Ce qui a été validé fonctionnellement

### 1. Ollama était déjà exploitable localement

Commande exécutée :

```powershell
ollama serve
```

Résultat :

```text
Error: listen tcp 127.0.0.1:11434: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
```

Conclusion validée :

Le port `127.0.0.1:11434` était déjà utilisé. Cela indique qu’un processus occupait déjà ce port, très probablement une instance Ollama déjà active. La suite des commandes `ollama pull` a fonctionné, ce qui confirme qu’Ollama était utilisable dans cette session.

### 2. Le script d’indexation a d’abord échoué pour une raison identifiée

Commande exécutée :

```powershell
python index_documents.py
```

Erreur obtenue :

```text
Traceback (most recent call last):
  File "C:\Users\lemai\Documents\Claude\Projects\Hackathon 2026\genaura\index_documents.py", line 9, in <module>
    import chromadb
ModuleNotFoundError: No module named 'chromadb'
```

Conclusion validée :

L’échec initial était causé par l’absence du module `chromadb` dans l’environnement Python utilisé par `python`.

### 3. L’installation de `chromadb` a corrigé le blocage initial

Après exécution de :

```powershell
pip install chromadb
```

la commande suivante a été relancée :

```powershell
python index_documents.py
```

Résultat obtenu :

```text
=== GENAURA — Indexation des documents La Poste ===

  Indexé : charte_ton_la_poste.md
  Indexé : conditions_remboursement.md
  Indexé : faq_suivi_colis.md
  Indexé : procedure_colis_perdu.md
  Indexé : procedure_escalade.md
  Indexé : procedure_modification_contrat.md

6 documents indexés dans ChromaDB.
Base vectorielle prête dans ./chroma_db/
```

Conclusion validée :

Le correctif a fonctionné. Le script `index_documents.py` s’est exécuté avec succès après installation de `chromadb`.

### 4. Documents effectivement indexés

Les fichiers explicitement indiqués comme indexés sont :

- `charte_ton_la_poste.md`
- `conditions_remboursement.md`
- `faq_suivi_colis.md`
- `procedure_colis_perdu.md`
- `procedure_escalade.md`
- `procedure_modification_contrat.md`

Conclusion validée :

- `6 documents indexés dans ChromaDB`
- base vectorielle créée dans `./chroma_db/`

### 5. Commande de lancement Streamlit exécutée

Commande exécutée :

```powershell
streamlit run app.py
```

Conclusion validée :

La commande a bien été lancée.

Limite de validation :

Aucune sortie supplémentaire n’apparaît après cette commande dans les logs fournis. On ne peut donc pas confirmer, sur cette seule base, que l’application Streamlit a démarré correctement ou qu’une URL locale a été affichée.

## Inventaire synthétique

### Installé et confirmé

#### Modèles Ollama

- `mistral`
- `nomic-embed-text`

#### Paquets installés explicitement pendant la session

- `chromadb==1.5.7`
- `opentelemetry-exporter-otlp-proto-grpc==1.41.0`
- `tokenizers==0.22.2`

### Dépendances du projet confirmées comme présentes

- `streamlit==1.56.0`
- `ollama==0.6.1`
- `chromadb==1.5.7`
- `fpdf2==2.8.7`

### Validé fonctionnellement

- Ollama était accessible localement
- les modèles ont été téléchargés avec succès
- la dépendance manquante `chromadb` a été identifiée
- `chromadb` a été installée avec succès
- les dépendances du `requirements.txt` étaient satisfaites
- l’indexation des documents a réussi
- 6 documents ont été indexés dans ChromaDB
- la base vectorielle a été générée dans `./chroma_db/`
- la commande `streamlit run app.py` a été exécutée

## Commandes observées pendant la session

```powershell
ollama serve
ollama pull mistral
ollama pull nomic-embed-text
cd "C:\Users\lemai\Documents\Claude\Projects\Hackathon 2026\genaura"
python index_documents.py
pip install chromadb
python index_documents.py
streamlit run app.py
```

## Ce qui n’est pas démontré par les logs fournis

Les éléments suivants ne peuvent pas être affirmés à partir de la seule trace fournie :

- installation de `streamlit` pendant cette session
- installation de `ollama` pendant cette session
- affichage d’une URL locale Streamlit
- ouverture réussie de l’interface web dans le navigateur
- absence d’erreur après `streamlit run app.py`

## Conclusion

À partir des traces terminal fournies, le projet a franchi avec succès les étapes suivantes :

1. utilisation d’Ollama déjà actif localement,
2. disponibilité des dépendances principales du projet dans l’environnement Python,
3. téléchargement des modèles `mistral` et `nomic-embed-text`,
4. détection du module Python manquant `chromadb`,
5. installation réussie de `chromadb`,
6. indexation réussie de 6 documents dans ChromaDB,
7. création de la base vectorielle `./chroma_db/`,
8. exécution de la commande de lancement Streamlit.

Le seul incident visible a été l’absence initiale du module `chromadb`, corrigée avec succès.
