All guides
Intermediate-AdvancedSelf-pacedFree GuideSection 33/33

Tests, pitch et démo finale

Learn to build and check a web application with development tools and AI assistants. Practise design, coding and validation.

The full lessons for this course are currently available in French. Use the section menu to navigate the French course.

💡

Free content, available without an account. Tools and models change: use the current model guide to check their versions. Models and sources

Section 13.7.4 : Tests, pitch et démo finale

🎯 Objectif pédagogique

Finaliser le projet avec des tests complets, préparer un pitch professionnel de 10 minutes, et réaliser une démo live convaincante pour les recruteurs ou clients.


Stratégie de tests

# spec/system/conversations_spec.rb (test E2E)

RSpec.describe 'Conversations', type: :system do
  let(:user) { create(:user) }

  before { sign_in user }

  it 'allows user to start a new conversation' do
    visit conversations_path
    click_on 'Nouvelle conversation'

    fill_in 'Votre question', with: 'Quelles sont les règles du RGPD ?'
    click_on 'Envoyer'

    expect(page).to have_content('Quelles sont les règles du RGPD ?')
    expect(page).to have_css('.ai-response', wait: 15)
  end

  it 'saves conversation history' do
    conversation = create(:conversation, user: user, title: 'RGPD')
    create(:message, conversation: conversation, role: 'user', content: 'Question test')
    create(:message, conversation: conversation, role: 'assistant', content: 'Réponse test')

    visit conversation_path(conversation)

    expect(page).to have_content('Question test')
    expect(page).to have_content('Réponse test')
  end
end
# spec/services/rag_service_spec.rb

RSpec.describe RagService do
  describe '.answer' do
    let!(:document) do
      create(:document, content: 'Le RGPD impose une base légale pour tout traitement de données personnelles.')
    end

    before { SemanticSearch.index_document(document) }

    it 'answers based on indexed documents' do
      VCR.use_cassette('rag_answer') do
        answer = RagService.answer('Que dit le RGPD sur les données personnelles ?')
        expect(answer).to include('base légale').or include('données personnelles')
      end
    end

    it 'indicates when no relevant context is found' do
      VCR.use_cassette('rag_no_context') do
        answer = RagService.answer('Comment faire une omelette ?')
        expect(answer).to include('pas').or include('contexte')
      end
    end
  end
end

Métriques de qualité

## Checklist de qualité projet final

### Code
- [ ] Test coverage > 80%
- [ ] Aucune erreur RuboCop
- [ ] Pas de N+1 queries (Bullet gem)
- [ ] Seeds fonctionnels pour démo

### Performance
- [ ] Page load < 2 secondes
- [ ] Réponse IA streaming < 500ms (premier token)
- [ ] Base de données avec index appropriés

### Sécurité
- [ ] Authentification (Devise)
- [ ] Autorisations (Pundit)
- [ ] Strong Parameters partout
- [ ] HTTPS forcé
- [ ] Variables d environnement pour les secrets

### Déploiement
- [ ] CI/CD fonctionnel
- [ ] Heroku (ou alternative) configuré
- [ ] Domain custom (optionnel)
- [ ] Monitoring (Sentry)

Préparer votre pitch

Le pitch est une présentation de 10 minutes qui raconte l'histoire de votre projet :

## Structure du pitch (10 minutes)

### 1. Le problème (2 min)
- Quel problème résolvez-vous ?
- Pour qui ? (persona)
- Pourquoi c est important ? (chiffres)

### 2. La solution (2 min)
- Votre application en une phrase
- Les 3 features clés
- Pourquoi l IA est nécessaire (pas juste cool)

### 3. Démo live (4 min)
- Scénario concret (pas un tour de features)
- Montrer le happy path complet
- Montrer une feature IA impressionnante

### 4. Architecture technique (1 min)
- Diagramme simple
- Technologies clés et pourquoi
- Un défi technique et comment vous l avez résolu

### 5. Conclusion (1 min)
- Ce que vous avez appris
- Prochaines étapes
- Call to action

Préparer la démo

## Checklist démo

### Avant la démo
- [ ] Données de seed chargées et visuellement attrayantes
- [ ] Connexion internet stable (ou démo offline si possible)
- [ ] Un compte de démo pré-créé
- [ ] Screenshots en backup si la démo plante
- [ ] Navigateur en mode présentation (clean, pas d onglets)

### Pendant la démo
- [ ] Raconter une HISTOIRE, pas lister des features
  "Marie est avocate. Elle reçoit 50 questions par jour..."
- [ ] Montrer le problème AVANT la solution
- [ ] Interagir avec l app en temps réel
- [ ] Montrer une réponse IA en streaming (effet wow)
- [ ] Garder le rythme (pas de temps mort)

### Si quelque chose plante
- Restez calme
- "Comme dans tout logiciel en production, des bugs arrivent !"
- Montrez le screenshot de backup
- Passez à la suite

Portfolio et GitHub

## README professionnel pour votre repo

# 🤖 LegalAI — Assistant Juridique Intelligent

> Application web Rails permettant aux professionnels du droit
> de consulter une base juridique via un chat IA (RAG + GPT-4).

## Features
- Chat IA avec réponses sourcées (articles de loi)
- Base documentaire avec recherche sémantique
- Historique de conversations
- Dashboard d analytics

## Tech Stack
- Ruby on Rails 7.1
- PostgreSQL + pgvector
- OpenAI API (GPT-4 + embeddings)
- Hotwire (Turbo + Stimulus)
- Bootstrap 5

## Screenshots
[Screenshots de l app ici]

## Demo
🔗 [Live Demo](https://legalai.herokuapp.com)

## Installation
[Instructions de setup local]
Quick Check

Quelle est la partie la plus importante d'une démo de projet ?

Learn AI, from prompts to agents

15 free guidesQuizzes, diagrams and workshopsNo account needed

Your progress

Progress is self-reported and stored in your browser. The final completion record is not a qualification or an independent assessment.

View progress and completion record

Learn AI, from prompts to agents

15 free guidesQuizzes, diagrams and workshopsNo account needed

One practical AI workflow in your inbox

Methods, resources and new exercises. Free, unsubscribe at any time.