← Retour aux projetsSaaS · Fiscalité · IA

CIICIR

CIICIR construit, tout au long de l'année, le dossier justificatif du Crédit d'Impôt Recherche et du Crédit d'Impôt Innovation à partir des traces réelles de travail — puis génère la demande de rescrit fiscal.

Stack technique

Ce que j'ai utilisé

Backend
KotlinSpring Boot 3.4Architecture DDDPostgreSQL 15FlywayJWT
Frontend app
Vue 3 + TypeScript + Vite + Tailwind
Site & blog
Nuxt 3 + @nuxt/content
Paiement
Stripe
Architecture

Comment c'est construit

Le parcours de rédaction du dossier CIR/CII est découpé en étapes, chacune confiée à un agent IA spécialisé plutôt qu'à un seul flux monolithique.

Intégrations IA

Ce que l'IA fait dans le produit

  • Un client Anthropic dédié pilote 7 « conducteurs » IA spécialisés, un par étape du parcours : cadrage, rédaction, conseil, vérification finale, présentation de la société, entre autres — environ 2800 lignes au total, modèle configurable par conducteur, avec son propre fichier de test.
  • C'est un pipeline multi-étapes piloté par plusieurs agents spécialisés, pas un seul appel générique à un modèle.
Qualité

Tests et vérifications

  • 63 fichiers de test backend
  • 13 specs unitaires Vitest et 4 specs E2E Playwright côté frontend
Déploiement & exploitation

Ce qui part en production

Un script unique fait systématiquement tourner le gate de tests (backend Gradle, frontend Vitest, build, audit de dépendances) avant tout déploiement, sur préproduction comme sur le site — rien ne part sur du rouge.

La cible de déploiement groupé exclut volontairement la production, pour ne jamais confondre un déploiement fréquent (préproduction + site) avec un déploiement rare et sensible (production).

Sécurité

Ce qui protège le produit

  • JWT, Flyway pour les migrations versionnées
  • Gate de tests obligatoire avant toute mise en ligne
Ce qui a cassé, ce que j'ai appris

Le déploiement dépendait de GitHub Actions jusqu'à un incident de facturation GitHub qui a bloqué des workflows sans aucune alerte visible : un push était accepté par git, le job échouait en silence sur l'attribution du runner, et rien ne partait. Le script de déploiement a remplacé l'orchestrateur cloud par un point d'entrée local, avec le même gate de tests — sans dépendre d'un service tiers pour savoir si le code est prêt à partir en production.