Add complete Mail Fine-Tuning Web-App for macOS Apple Silicon

Implemented a full-stack web application for fine-tuning LLMs on email data, optimized for Apple Silicon (M4 Pro with 24GB RAM).

Features:
- Mail import with drag & drop support (.mbox, .eml, .txt)
- Automated mail cleaning and preprocessing
- Interactive labeling interface with keyboard shortcuts
- Training data export to JSONL format
- MLX-based LoRA fine-tuning with live updates
- Model evaluation and comparison interface
- Server-Sent Events for real-time training progress
- Dark theme UI optimized for extended use

Technical Stack:
- Backend: FastAPI with SQLite database
- Frontend: Vanilla HTML/CSS/JavaScript (no external dependencies)
- ML Framework: MLX for Apple Silicon optimization
- Models: Support for Mistral 7B and Llama 3 8B via MLX

Components:
- data_manager.py: SQLite operations for mail storage and labeling
- mail_parser.py: Parser for multiple mail formats with cleaning
- training.py: MLX training wrapper with LoRA support
- inference.py: Model loading and inference for evaluation
- main.py: FastAPI backend with REST API and SSE
- Frontend: Complete UI with all features

Documentation:
- Comprehensive README with installation and usage guide
- Quick-start guide for rapid setup
- Example mails for testing
- Troubleshooting and best practices

Ready for local deployment and fine-tuning workflows.
This commit is contained in:
Claude
2025-12-03 07:35:35 +00:00
commit 1456995462
20 changed files with 3884 additions and 0 deletions
+87
View File
@@ -0,0 +1,87 @@
# Beispiel-Mails für Training
Diese Beispiel-Mails können zum Testen des Mail-Imports verwendet werden.
## Enthaltene Beispiele
1. **test1.txt** - Projekt-Update
- Typ: Status-Update
- Empfohlen für: "Zusammenfassen"
2. **test2.txt** - Kundenanfrage
- Typ: Support-Anfrage
- Empfohlen für: "Antwort schreiben"
3. **test3.txt** - Meeting Notes
- Typ: Meeting-Protokoll
- Empfohlen für: "Action Items"
4. **test4.txt** - Out of Office
- Typ: Automatische Antwort
- Empfohlen für: "Kategorisieren" (als "Automatisch" oder "Skip")
## Verwendung
1. Wähle eine oder mehrere Dateien aus
2. Ziehe sie per Drag & Drop in die App
3. Die Mails werden automatisch geparst und bereinigt
4. Gehe zum Labeling und füge die erwarteten Outputs hinzu
## Beispiel-Labels
### test1.txt (Zusammenfassen)
```
Alex berichtet über erfolgreichen Abschluss der API-Integration mit 40% Performance-Verbesserung.
Nächste Woche starten Frontend-Anpassungen durch Maria und Tom.
Go-Live bleibt für Ende März geplant.
```
### test2.txt (Antwort schreiben)
```
Sehr geehrter Herr Schmidt,
vielen Dank für Ihre Anfrage zu Rechnung #2847.
Sie haben recht - hier ist uns ein Fehler unterlaufen. Der korrekte Betrag
laut Angebot beträgt 1.250€. Wir werden die Rechnung korrigieren und Ihnen
die berichtigte Version bis morgen zusenden.
Wir entschuldigen uns für die Unannehmlichkeiten.
Mit freundlichen Grüßen
Support-Team
```
### test3.txt (Action Items)
```
- Sarah: Pressemitteilung vorbereiten (Deadline: Freitag)
- Marketing-Team: Social Media Content erstellen (nächste Woche)
- Lisa: Influencer-Kontakte aufnehmen
- Design-Team: Finale Produktfotos liefern
- Location für Launch-Event buchen (1. April)
- Website-Landing-Page live schalten (bis Mittwoch)
- Feedback an Lisa bis Mittwoch
```
### test4.txt (Kategorisieren)
```
Kategorie: Automatische Antwort / Out of Office
Status: Abwesenheit vom 18.03.-25.03.2024
Vertretung: sarah.koch@company.com (Vertrieb), support@company.com (Support)
```
## Eigene Mails hinzufügen
Du kannst auch eigene .txt Dateien erstellen. Format:
```
Subject: Dein Betreff
From: absender@example.com
To: empfaenger@example.com
Date: 2024-03-15
Hier kommt der Mail-Text...
```
Die ersten Zeilen mit Subject:/From:/To:/Date: sind optional.
Wenn sie fehlen, wird der gesamte Text als Mail-Body interpretiert.
+19
View File
@@ -0,0 +1,19 @@
Subject: Q4 Projektupdate
From: alex@example.com
To: team@example.com
Date: 2024-03-15
Hallo Team,
ich wollte euch ein kurzes Update zum aktuellen Projektstand geben.
Wir haben letzte Woche die neue API-Integration abgeschlossen und erfolgreich getestet.
Die Performance-Tests zeigen eine Verbesserung von 40% gegenüber der alten Implementierung.
Nächste Woche starten wir mit der Frontend-Anpassung. Maria und Tom werden das Design
überarbeiten, während ich mich um die Backend-Anbindung kümmere.
Der Go-Live ist weiterhin für Ende des Monats geplant.
Beste Grüße
Alex
+16
View File
@@ -0,0 +1,16 @@
Subject: Frage zu Invoice #2847
From: michael.schmidt@example.com
To: support@company.de
Date: 2024-03-16
Hallo,
ich habe eine Frage zur Rechnung #2847 vom 15. März.
Der Betrag scheint nicht mit unserem ursprünglichen Angebot übereinzustimmen.
Laut Angebot sollten es 1.250€ sein, auf der Rechnung stehen aber 1.450€.
Könnten Sie das bitte prüfen und mir Bescheid geben?
Vielen Dank
Michael Schmidt
+22
View File
@@ -0,0 +1,22 @@
Subject: Meeting Notes - Produktlaunch Vorbereitung
From: lisa.mueller@startup.io
To: team@startup.io
Date: 2024-03-17
Hi alle,
hier die wichtigsten Punkte vom heutigen Meeting zum Produktlaunch:
1. Sarah bereitet die Pressemitteilung vor (Deadline: Freitag)
2. Marketing-Team erstellt Social Media Content für nächste Woche
3. Ich kümmere mich um die Influencer-Kontakte
4. Wir brauchen noch finale Produktfotos vom Design-Team
5. Launch-Event ist am 1. April - Location muss noch gebucht werden
6. Website-Landing-Page muss bis Mittwoch live gehen
Bitte gebt bis Mittwoch Bescheid ob ihr eure Aufgaben schaffen könnt.
Bei Problemen sofort melden!
Danke an alle für die tolle Zusammenarbeit!
Lisa
+24
View File
@@ -0,0 +1,24 @@
Subject: Automatische Antwort: Out of Office
From: thomas.weber@company.com
To: request@company.com
Date: 2024-03-18
Guten Tag,
vielen Dank für Ihre E-Mail.
Ich bin vom 18.03. bis 25.03.2024 nicht im Büro und habe keinen Zugriff auf meine E-Mails.
In dringenden Fällen wenden Sie sich bitte an:
- Vertrieb: sarah.koch@company.com
- Support: support@company.com
- Allgemeine Anfragen: info@company.com
Ich werde Ihre E-Mail nach meiner Rückkehr bearbeiten.
Mit freundlichen Grüßen
Thomas Weber
--
Diese E-Mail wurde automatisch generiert.
Bitte antworten Sie nicht direkt auf diese Nachricht.