Zanist - Jurisprudence AI
Zanist est un outil de recherche de jurisprudence suisse propulsé par l'IA. Il répond à un problème concret : la recherche par mots-clés exacts échoue souvent car l'utilisateur ne connaît pas le vocabulaire juridique précis, le droit fédéral suisse étant bilingue français/allemand. L'outil traduit une description factuelle en langage courant vers les bons termes juridiques, cherche à plusieurs niveaux de proximité sémantique, et hiérarchise les résultats par pertinence réelle plutôt que par correspondance exacte de mots.
Contexte
Objectifs
- Permettre une recherche de jurisprudence en langage naturel plutôt que par mots-clés juridiques exacts.
- Couvrir l'ensemble des tribunaux suisses, fédéral et cantonaux, plutôt que le seul Tribunal fédéral.
- Restituer les résultats progressivement plutôt qu'en un seul bloc, pour rassurer l'utilisateur pendant la recherche.
Mon rôle
- Développement Full-stack: conception et réalisation complète de l'application, de l'intégration de l'IA au déploiement, en solo.

Processus
Recherche et Inspiration
- Projet développé directement pour un avocat, sur la base de ses besoins concrets et de ses retours d'usage réels tout au long du développement.
Définition des fonctionnalités
- Enrichissement sémantique par IA (Claude Sonnet) : transforme la question en 5 niveaux de proximité terminologique bilingue FR/DE, avec domaines et articles potentiels.
- Recherche fédérée progressive sur entscheidsuche.ch, interrogée niveau par niveau en batches parallèles, avec scoring composite (pertinence 45% / domaine 35% / date 20%) et dédoublonnage.
- Détection directe des références ATF explicites, court-circuitant l'enrichissement IA pour une recherche exacte instantanée.
- Filtres canton/tribunal dynamiques, avec hiérarchie mise en cache.
- Résumé contextuel streamé : récupération du texte intégral de l'arrêt sélectionné et génération d'un résumé centré sur la question posée.
- Restitution en Server-Sent Events plutôt qu'en JSON classique, pour afficher le contexte juridique avant les résultats.
Développement
- Développement avec Next.js (App Router), React, TypeScript et Tailwind CSS, application stateless sans base de données.
- Pivot majeur de source de données en cours de projet : abandon du scraping HTML de search.bger.ch, fragile et limité au Tribunal fédéral, au profit de l'API structurée entscheidsuche.ch, couvrant aussi les tribunaux cantonaux.
- Mise en place d'un fallback sans IA : en cas d'échec de l'API, une extraction naïve de mots-clés prend le relai pour garder le service utilisable.
- Filtre de fraîcheur intelligent : recherche d'abord restreinte aux arrêts post-2018, avec repli automatique si aucun résultat.
- Architecture pensée pour l'hébergement serverless, avec timeouts stricts et régions proches de la Suisse.

Conclusion
Défis rencontrés
- Fragilité de la première source de données, le scraping HTML de search.bger.ch, avec formats de titres variables et erreurs serveur intermittentes, ayant nécessité un pivot technique complet vers une API structurée en cours de projet.
- Conception d'un scoring composite multi-critères pour hiérarchiser les résultats par pertinence réelle plutôt que par simple correspondance de mots-clés.
- Gestion de deux formats de numéros de dossier très différents, fédéral et cantonal, et de deux formats de réponse de l'API externe, signe d'une API tierce peu documentée.
Résultats et Apprentissages
- Pipeline complet fonctionnel : d'une question en langage naturel jusqu'à un résumé IA de l'arrêt choisi, en passant par jusqu'à 5 niveaux de recherche sémantique bilingue et une soixantaine d'arrêts candidats scorés et dédupliqués.
- Couverture élargie du Tribunal fédéral à l'ensemble des tribunaux cantonaux suisses, avec filtrage dédié.
- Reconnaissance directe des références ATF officielles, offrant un raccourci de recherche exacte en complément de la recherche sémantique.
- Outil développé et validé avec un avocat utilisateur réel, sur la base de ses retours d'usage.
Site en ligne
Un outil métier ou une app à créer ?
Décrivez-moi votre besoin en quelques lignes, je reviens vers vous avec une première approche.



