/* QUITOS — Page sections */ const { useState, useEffect, useRef } = React; /* ---------- 1. Hero ---------- */ function Hero() { const sectionRef = useRef(null); const videoRef = useRef(null); const badgeRef = useRef(null); const h1Ref = useRef(null); const leadRef = useRef(null); const ctaRef = useRef(null); const footerRef = useRef(null); useEffect(() => { if (!window.gsap) return; const els = [badgeRef.current, h1Ref.current, leadRef.current, ctaRef.current, footerRef.current]; gsap.set(els, { opacity: 0, y: 20 }); const tl = gsap.timeline({ defaults: { ease: 'power3.out' } }); tl .to(badgeRef.current, { opacity: 1, y: 0, duration: 0.6 }, 0.3) .to(h1Ref.current, { opacity: 1, y: 0, duration: 0.8 }, 0.5) .to(leadRef.current, { opacity: 1, y: 0, duration: 0.7 }, 0.75) .to(ctaRef.current, { opacity: 1, y: 0, duration: 0.6 }, 0.95) .to(footerRef.current, { opacity: 1, y: 0, duration: 0.5 }, 1.1); const parallax = ScrollTrigger.create({ trigger: sectionRef.current, start: 'top top', end: 'bottom top', scrub: true, onUpdate: (self) => { if (videoRef.current) gsap.set(videoRef.current, { y: self.progress * 60 }); }, }); return () => { tl.kill(); parallax.kill(); }; }, []); return (
{/* Background video */} {/* Tonal grade */}
{/* Gradient mesh — green ambient depth */}
{/* Legibility scrim */}
{/* Bottom vignette */}
Zéro commission · Zéro interface · Résultats en euros

Devis ignorés.
Factures en retard.
On s'en occupe.

{"Votre CRM vous dit qui vous doit de l'argent. Pas comment le récupérer. QUITOS prend le relais : relances automatiques, devis signés, factures payées, reporting mensuel."}

30 jours de préavis · Sans pénalité · Sans justification

); } /* ---------- 2. Social proof — logos ---------- */ function SocialProof() { const v1Brands = [ { name: 'HubSpot', color: '#FF7A59' }, { name: 'Pipedrive', color: '#00B388' }, { name: 'Pennylane', color: '#A5B8FF' }, { name: 'Sellsy', color: '#7EC8E3' }, ]; const roadmapBrands = [ { name: 'Salesforce', color: '#00A1E0' }, { name: 'Odoo', color: '#9B59B6' }, ]; return (
CRMs supportés
{v1Brands.map((b) => )}
{roadmapBrands.map((b) => (
Sur devis
))}
En France, les PME de services perdent en moyenne{' '} 8 % de leur CA annuel{' '} en devis non relancés et factures non recouvrées.{' '} (Coface, 2025)
); } /* ---------- 3. Feature — QUITOS Quote ---------- */ function FeatureQuote() { const textColRef = useRef(null); const mockupColRef = useRef(null); useEffect(() => { if (!window.gsap) return; const textCol = textColRef.current; const mockupCol = mockupColRef.current; if (!textCol || !mockupCol) return; const listItems = textCol.querySelectorAll(".feature-list li"); gsap.set(listItems, { opacity: 0, x: -16 }); gsap.set(mockupCol, { opacity: 0, x: 40 }); const t1 = ScrollTrigger.create({ trigger: textCol, start: 'top 82%', onEnter: () => { gsap.to(listItems, { opacity: 1, x: 0, duration: 0.5, ease: 'power2.out', stagger: 0.1, delay: 0.35 }); }, once: true, }); const t2 = ScrollTrigger.create({ trigger: mockupCol, start: 'top 85%', onEnter: () => { gsap.to(mockupCol, { opacity: 1, x: 0, duration: 0.75, ease: 'power3.out' }); }, once: true, }); return () => { t1.kill(); t2.kill(); }; }, []); return (
QUITOS Quote

Vos devis relancés.
Sans que personne n'y pense.

Dès qu'un devis reste sans réponse, 7 messages personnalisés par IA partent au nom de votre commercial — avec son contexte, son historique, son ton. Vous ne cliquez sur rien.

  • Connecté à HubSpot, Pipedrive ou Sellsy
  • Personnalisé par profil prospect
  • Rapport mensuel des devis signés
); } /* ---------- 4. Feature — QUITOS Pay ---------- */ function FeaturePay() { const textColRef = useRef(null); const mockupColRef = useRef(null); useEffect(() => { if (!window.gsap) return; const textCol = textColRef.current; const mockupCol = mockupColRef.current; if (!textCol || !mockupCol) return; const listItems = textCol.querySelectorAll(".feature-list li"); gsap.set(listItems, { opacity: 0, x: 16 }); gsap.set(mockupCol, { opacity: 0, x: -40 }); const t1 = ScrollTrigger.create({ trigger: textCol, start: 'top 82%', onEnter: () => { gsap.to(listItems, { opacity: 1, x: 0, duration: 0.5, ease: 'power2.out', stagger: 0.1, delay: 0.35 }); }, once: true, }); const t2 = ScrollTrigger.create({ trigger: mockupCol, start: 'top 85%', onEnter: () => { gsap.to(mockupCol, { opacity: 1, x: 0, duration: 0.75, ease: 'power3.out' }); }, once: true, }); return () => { t1.kill(); t2.kill(); }; }, []); return (
QUITOS Pay

Vos factures recouvrées.
Sans cabinets, sans commission.

Cinq jours après l'échéance, la relance part — personnalisée par IA selon le profil du client, jusqu'à la mise en demeure électronique si ça traîne. Vous n'avez passé aucun appel.

  • Connecté à Pennylane ou Sellsy
  • Ton adapté : fidèle vs récidiviste
  • Forfait fixe — jamais de commission
); } /* ---------- 5. How it works (light — stagger cards) ---------- */ function HowItWorks() { const steps = [ { n: '01', title: 'QUITOS connecte votre CRM', sub: 'Une heure de votre temps', body: "HubSpot, Pipedrive, Sellsy ou Pennylane. QUITOS fait la connexion. Vous ouvrez les accès, vous n'installez rien.", }, { n: '02', title: 'QUITOS configure les séquences, vous validez le ton', sub: '7 jours de setup', body: "L'IA génère chaque message au profil du prospect — vous les lisez et approuvez une seule fois, avant le lancement. Ensuite, tout part automatiquement dès le bon timing.", }, { n: '03', title: 'Vous recevez un rapport mensuel', sub: 'Des euros, pas des stats', body: 'Deux chiffres en euros chaque mois : CA récupéré sur les devis, trésorerie récupérée sur les factures. Vous ne nous voyez pas travailler. Vous voyez le résultat.', }, ]; return (

Comment ça fonctionne

{steps.map((s) => (
{s.n}
{s.title}
{s.sub}

{s.body}

))}
); } /* ---------- 6. Lifestyle ---------- */ function Lifestyle() { return (
); } /* ---------- 7. Metrics ---------- */ function Metrics() { const items = [ { num: 68000, suffix: ' €', label: 'CA moyen récupéré par an', note: 'Estimation — agence 15 pers., 15 devis/mois' }, { num: 1, suffix: ' semaine', label: 'De mise en place' }, { num: 30, suffix: ' jours', label: 'Résiliable sans pénalité' }, ]; return (
{items.map((it, i) => (
{it.label}
{it.note && (
{it.note}
)}
))}
); } /* ---------- 8. Monthly report ---------- */ function MonthlyReport() { return (

Un rapport mensuel.
Des euros, pas des stats.

Chaque mois, vous recevez un rapport avec le CA récupéré, les relances envoyées, les réponses reçues. Rien d'autre.

); } /* ---------- 9. Comparison ---------- */ function Comparison() { const cols = [ { name: 'Logiciel de relance', muted: true }, { name: 'Cabinet de recouvrement', muted: true }, { name: 'QUITOS', accent: true }, ]; const rows = [ ['Configuration', 'Vous', '—', 'Incluse'], ['Maintenance', 'Vous', '—', 'Incluse'], ['Personnalisation', 'Générique', 'Aucune', 'Par IA, par client'], ['Commission', '—', '10–25 %', 'Zéro'], ['Relation client', 'Préservée', '✗', 'Préservée'], ['Résiliable 30j', 'Selon contrat', 'Non', 'Oui'], ]; return (

SaaS, cabinet, ou QUITOS — quelle différence ?

{cols.map((c) => ( ))} {rows.map((row) => ( {row.map((cell, j) => ( ))} ))}
{c.name}
{cell}
); } /* ---------- 10. Integrations — logos orbitants ---------- */ function Integrations() { const v1Crms = [ { name: 'HubSpot', color: '#FF7A59', delay: '0s' }, { name: 'Pipedrive', color: '#00B388', delay: '-5s' }, { name: 'Pennylane', color: '#A5B8FF', delay: '-10s' }, { name: 'Sellsy', color: '#7EC8E3', delay: '-15s' }, ]; const onDemand = [ { name: 'Salesforce', color: '#00A1E0' }, { name: 'Odoo', color: '#9B59B6' }, ]; return (

Intégrations natives

Compatible avec votre CRM.
{"Opérationnel en 7 jours."}

{"Nous faisons la connexion. Vous n'installez rien."}

{/* Centre — Q mark */}
Q
{/* Anneau dashed */}
{/* Logos V1 en orbite */} {v1Crms.map((crm) => (
{crm.name}
))}

Sur devis

{onDemand.map((crm) => (
{crm.name}
))}
); } /* ---------- 11. Pricing (stagger cards) ---------- */ function Pricing() { const plans = [ { name: 'QUITOS Quote', setup: '2 500 €', price: '550 €/mois', features: ['Devis relancés par IA, au nom de vos commerciaux', '7 messages adaptés au profil prospect', 'Rapport mensuel en euros — CA récupéré'], }, { name: 'Offre complète — Quote + Pay', setup: '3 500 €', price: '1 000 €/mois', features: ['Relances devis + factures', 'Rapport mensuel consolidé en euros', 'Économie de 750 € vs séparés'], featured: true, }, { name: 'QUITOS Pay', setup: '2 500 €', price: '700 €/mois', features: ['Factures relancées par IA, zéro commission', 'Mise en demeure électronique incluse', 'Rapport mensuel en euros — trésorerie récupérée'], }, ]; return (

Un prix fixe. Résiliable en 30 jours.

Pas de commission. Pas d'engagement annuel. Pas de surprise.

{plans.map((p) => (
{p.featured && (
Le plus choisi
)}
{p.name}
{p.price}
Setup {p.setup}
    {p.features.map((f) => (
  • {f}
  • ))}
Estimer mon CA récupérable
))}
Résiliable en 30 jours · Sans pénalité · Sans justification
); } /* ---------- 11. FAQ ---------- */ const FAQS = [ { q: 'Faut-il que je configure quelque chose ?', a: "Non. QUITOS connecte votre CRM (HubSpot, Pipedrive, Sellsy, Pennylane) en une semaine, configure les séquences, et lance. Vous ne touchez à rien." }, { q: 'Vous prenez quel pourcentage du CA récupéré ?', a: "Zéro. Forfait fixe mensuel. Le CA récupéré vous appartient entièrement — pas de commission, pas de surprise en fin de mois." }, { q: "Mes prospects sentiront-ils que c'est de l'IA ?", a: "Non. L'IA personnalise chaque message au contexte du prospect — historique, secteur, ton de votre commercial. Le message part avec sa signature. Vos prospects reçoivent un email qui ressemble à ce que votre équipe écrirait, pas à un template générique." }, { q: 'Quelle différence avec un logiciel de relance ?', a: "Un logiciel, c'est vous qui le configurez, l'entretenez, réécrivez les séquences. QUITOS est un service : nous le faisons à votre place, chaque mois. Vous ne gérez rien." }, { q: 'Et avec un cabinet de recouvrement ?', a: "Pas de commission (10-25 % chez un cabinet), pas d'agressivité, pas de rupture de relation client. QUITOS reste dans le ton de votre marque — même pour les relances fermes." }, { q: 'Mes données et celles de mes clients sont-elles protégées ?', a: "Oui. Données hébergées en Europe, conformité RGPD complète. Un DPA (accord de traitement des données, Art. 28) est signé avant tout démarrage. Vos données ne sont jamais utilisées pour entraîner un modèle tiers." }, { q: 'HubSpot ou Pipedrive proposent déjà des séquences — pourquoi payer en plus ?', a: "Ces outils proposent un outil. Qui écrit vos séquences ? Qui les maintient, les adapte, surveille les taux de réponse ? QUITOS fait tout ça. Le logiciel sans l'opérateur, c'est un outil qui dort dans votre CRM." }, ]; function FAQItem({ item, isOpen, onToggle }) { return (

{item.a}

); } function FAQ() { const [open, setOpen] = useState(0); return (

Questions fréquentes

{FAQS.map((item, i) => ( setOpen(open === i ? -1 : i)} /> ))}
); } /* ---------- 12. CTA Final — Calendly popup ---------- */ function CtaFinal() { useEffect(() => { if (document.querySelector('script[src*="calendly"]')) return; const script = document.createElement('script'); script.src = 'https://assets.calendly.com/assets/external/widget.js'; script.async = true; document.head.appendChild(script); }, []); const openCalendly = (e) => { e.preventDefault(); if (window.Calendly) { window.Calendly.initPopupWidget({ url: 'https://calendly.com/michael-chemla-alchmist/30min' }); } else { window.open('https://calendly.com/michael-chemla-alchmist/30min', '_blank'); } }; return (

Combien dort en ce moment
dans votre CRM ?

{"Réservez 20 minutes avec Michael pour estimer votre CA récupérable avec vos vrais chiffres."}

Réserver 20 minutes → Envoyer un e-mail →
Appel découverte · Sans engagement · Résultat en euros
); } /* ---------- 13. Footer ---------- */ function Footer() { return ( ); } /* ---------- Service Manifesto ---------- */ function ServiceManifesto() { return (
Comment ça fonctionne

Vous ouvrez les accès une fois.
Le système tourne. Vous encaissez.

{"On configure les relances selon votre CRM, vos clients et vos délais habituels. Chaque mois, un rapport en euros vous montre ce qui a été récupéré — vous n'avez rien d'autre à faire."}

{[ { icon: 'cpu', text: "L'IA personnalise chaque message au profil du prospect" }, { icon: 'settings', text: 'Configuré sur mesure pour votre CRM et vos délais' }, { icon: 'bar-chart-2',text: 'Vous recevez les résultats en euros, pas des métriques' }, ].map((item) => (
{item.text}
))}
); } /* ---------- For Who (stagger cards) ---------- */ function ForWho() { const profiles = [ { role: "Directeur d'agence digitale", size: '15–30 salariés · HubSpot ou Pipedrive', pain: 'Vos commerciaux envoient les devis. Personne ne relance. Vous perdez 20 % de vos propositions par silence.', gain: 'QUITOS relance au nom de chaque commercial — avec leur ton, leur contexte. Vous récupérez les devis sans intervention.', }, { role: "Patron d'ESN / cabinet de recrutement", size: '10–40 salariés · Sellsy ou Pennylane', pain: 'Vos clients tardent à payer. Votre DAF passe ses matinées à relancer manuellement. Votre trésorerie en souffre.', gain: 'QUITOS automatise les relances impayées — du mail courtois à la mise en demeure. Votre DAF se concentre sur autre chose.', }, { role: 'Fondateur de cabinet de conseil', size: '8–20 consultants · CRM actif', pain: 'Vous êtes trop occupé pour relancer. Vous attendez que les clients reviennent. Certains ne reviennent jamais.', gain: 'QUITOS relance à votre place, avec le bon ton au bon moment. Vous voyez les résultats dans votre rapport mensuel.', }, ]; return (

Pour qui exactement ?

QUITOS est fait pour les dirigeants qui ont un CRM actif et aucun process de relance systématique.

{profiles.map((p) => (
{p.role}
{p.size}
{p.pain}
{p.gain}
))}
); } /* ---------- ROI Calculator ---------- */ function ROICalculator() { const [devis, setDevis] = useState(15); const [ticket, setTicket] = useState(5000); const [tauxNR, setTauxNR] = useState(25); const [tauxRecu,setTauxRecu]= useState(30); const caPerdu = Math.round(devis * ticket * (tauxNR / 100)); const caRecup = Math.round(caPerdu * (tauxRecu / 100)); const roiAnnuel = caRecup * 12; const ratio = Math.round(roiAnnuel / 1000); const fmt = (n) => n.toLocaleString('fr-FR') + " €"; const fields = [ { label: 'Devis envoyés par mois', value: devis, set: setDevis, min: 1, max: 200, step: 1, suffix: '' }, { label: 'Ticket moyen (€)', value: ticket, set: setTicket, min: 500, max: 100000,step: 500, suffix: ' €' }, { label: 'Devis sans réponse (%)', value: tauxNR, set: setTauxNR, min: 5, max: 80, step: 5, suffix: ' %' }, { label: 'Taux de récupération QUITOS (%)', value: tauxRecu, set: setTauxRecu, min: 10, max: 60, step: 5, suffix: ' %' }, ]; return (

Calculez votre CA récupérable

Ajustez les curseurs avec vos vrais chiffres.

{fields.map((f) => (
{f.value.toLocaleString('fr-FR')}{f.suffix}
f.set(Number(e.target.value))} style={{ width: '100%', accentColor: '#2D6A4F', cursor: 'pointer' }} />
))}
Vos résultats estimés
{[ { label: 'CA non relancé / mois', value: fmt(caPerdu), muted: true }, { label: 'CA récupéré / mois', value: fmt(caRecup), accent: true }, { label: 'CA récupéré / an', value: fmt(roiAnnuel), large: true }, ].map((r) => (
{r.label} {r.value}
))}
Pour 1 000 €/mois (offre complète), votre ROI estimé est de {ratio}× la première année.
Affiner avec Michael →
Estimation indicative — résultats réels variables selon secteur et CRM
); } /* ---------- Founder Bio ---------- */ function FounderBio() { return (
{/* Left — text */}
Fondateur
Michael Chemla
QUITOS · Paris

{"7 ans en marketing digital B2B. J'ai construit QUITOS parce que j'ai vu des dizaines d'agences perdre des milliers d'euros par manque de relance systématique — pas par manque de bons clients."}

LinkedIn
{/* Right — photo + floating card */}
Michael Chemla — Fondateur QUITOS {/* Floating notification */}
Rapport mensuel
+12 400 € récupérés
); } Object.assign(window, { Hero, SocialProof, ServiceManifesto, ForWho, FeatureQuote, FeaturePay, HowItWorks, Lifestyle, Metrics, MonthlyReport, Comparison, Integrations, Pricing, ROICalculator, FAQ, CtaFinal, FounderBio, Footer, });