import React, { useState, useEffect } from 'react'; import { createRoot } from 'react-dom/client'; // --- Icons Components --- interface IconProps { className?: string; } const IconCheck = ({ className = "w-6 h-6" }: IconProps) => ( ); const IconArrowRight = ({ className = "w-6 h-6" }: IconProps) => ( ); const IconClock = ({ className = "w-6 h-6" }: IconProps) => ( ); const IconShield = ({ className = "w-6 h-6" }: IconProps) => ( ); const IconZap = ({ className = "w-6 h-6" }: IconProps) => ( ); const IconCpu = ({ className = "w-6 h-6" }: IconProps) => ( ); const IconMenu = ({ className = "w-6 h-6" }: IconProps) => ( ); const IconX = ({ className = "w-6 h-6" }: IconProps) => ( ); const IconChevronDown = ({ className = "w-6 h-6" }: IconProps) => ( ); const IconLinkedin = ({ className = "w-6 h-6" }: IconProps) => ( ); const IconCode = ({ className = "w-6 h-6" }: IconProps) => ( ); const IconUser = ({ className = "w-6 h-6" }: IconProps) => ( ); // --- Components --- interface ButtonProps extends React.ButtonHTMLAttributes { children: React.ReactNode; variant?: "primary" | "secondary" | "outline"; className?: string; } const Button: React.FC = ({ children, variant = "primary", className = "", ...props }) => { const baseStyle = "inline-flex items-center justify-center px-6 py-3 border text-base font-medium rounded-lg focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500 transition-all duration-300 relative overflow-hidden group"; const variants = { primary: "btn-gradient text-white border-transparent shadow-lg shadow-primary-500/20", secondary: "bg-white border border-slate-200 text-slate-700 hover:bg-slate-50 hover:border-primary-200 hover:text-primary-700 backdrop-blur-sm shadow-sm", outline: "border-primary-500 text-primary-600 hover:bg-primary-50" }; return ( ); }; interface SectionHeadingProps { title: string; subtitle?: string; align?: "center" | "left"; } const SectionHeading: React.FC = ({ title, subtitle, align = "center" }) => (

{title}

{subtitle && (

{subtitle}

)}
); interface CardProps { children: React.ReactNode; className?: string; } const Card: React.FC = ({ children, className = "" }) => (
{children}
); const Navbar = () => { const [isOpen, setIsOpen] = useState(false); const [scrolled, setScrolled] = useState(false); useEffect(() => { const handleScroll = () => setScrolled(window.scrollY > 20); window.addEventListener('scroll', handleScroll); return () => window.removeEventListener('scroll', handleScroll); }, []); const navLinks = [ { name: 'Services', href: '#services' }, { name: 'Cas d\'usage', href: '#use-cases' }, { name: 'Méthode', href: '#method' }, { name: 'Mon Histoire', href: '#story' }, ]; return ( ); }; const Hero = () => (
{/* Animated Blobs Background (Pastel for Light Mode) */}
Consultant Expert Automatisation & IA

Je transforme vos process en
moteurs de croissance.

Moi, c'est Hassan. Je ne vends pas du rêve, je construis des systèmes. J'aide les PME et ETI à reprendre le contrôle de leur temps grâce à l'automatisation intelligente.

{[ { icon: , text: "Jusqu'à -40% temps de traitement" }, { icon: , text: "Fiabilité des données & Zéro erreur" }, { icon: , text: "Architecture sécurisée & RGPD" }, ].map((item, i) => (
{item.icon} {item.text}
))}
); const TechStack = () => (
{[ { title: "No-Code / Low-Code", tools: ["Make (Integromat)", "n8n", "Zapier", "Softr"] }, { title: "CRM & Business", tools: ["Salesforce", "HubSpot", "Pipedrive", "Airtable"] }, { title: "IA & Data", tools: ["OpenAI API", "Anthropic Claude", "Pinecone", "Python"] }, { title: "Dev & API", tools: ["React/Node", "REST APIs", "Webhooks", "JSON"] }, ].map((category, i) => (

{category.title}

    {category.tools.map((tool, idx) => (
  • {tool}
  • ))}
))}
); const Comparison = () => (
{[ { title: "Silos de données", problem: "Vos équipes copient-collent des infos entre CRM, Excel et Email toute la journée.", solution: "Synchronisation temps réel : Vos outils dialoguent entre eux. Une entrée dans le CRM met à jour tout le reste." }, { title: "Erreurs humaines", problem: "Factures oubliées, leads non rappelés, données erronées.", solution: "Fiabilité 100% : Des workflows logiques qui ne fatiguent jamais et ne font aucune faute de frappe." }, { title: "Processus opaques", problem: "\"Seule Julie sait comment faire ça\". Si elle part, le process s'arrête.", solution: "Process documentés : Le savoir-faire est dans le système, pas seulement dans les têtes." } ].map((item, i) => (

{item.title}

Le Problème {item.problem}
Ma Solution {item.solution}
))}
); const Services = () => (
{/* Background accents */}
{[ { icon: , color: "bg-blue-500", title: "Audit & Stratégie", desc: "Analyse complète de vos flux actuels. Identification des goulots d'étranglement et calcul du ROI potentiel." }, { icon: , color: "bg-primary-500", title: "Architecture & Automatisation", desc: "Construction de workflows complexes (Make/n8n) connectant vos outils existants (CRM, ERP, Marketing)." }, { icon: , color: "bg-accent-500", title: "Intégration d'IA Générative", desc: "Implémentation d'agents IA pour le tri d'emails, l'analyse de documents ou le support niveau 1." } ].map((service, i) => (
{service.icon}

{service.title}

{service.desc}

))}
); const UseCases = () => (
{[ { dept: "Support Client", icon: , tasks: ["Tri automatique des tickets", "Réponses brouillons via IA", "Escalade Slack urgences"] }, { dept: "Sales Ops", icon: , tasks: ["Enrichissement automatique leads", "Scoring prédictif", "Génération contrats en 1 clic"] }, { dept: "Finance & Admin", icon: , tasks: ["OCR factures fournisseurs", "Réconciliation bancaire", "Relances impayés automatiques"] }, { dept: "RH & Recrutement", icon: , tasks: ["Parsing de CV", "Pré-qualification automatique", "Onboarding (accès outils, mails)"] } ].map((item, i) => (
{item.icon}

{item.dept}

    {item.tasks.map((task, idx) => (
  • {task}
  • ))}
))}
); const Story = () => (
{/* Profile Column */}
HS {/* Remplacez par Hassan Salehi */}

Hassan Salehi

Expert Automatisation

Expérience 5+ ans
Projets Livrés 30+
Heures sauvées 10k+
{/* Story Content Column */}
Mon Parcours

De la frustration à l'innovation

Tout a commencé par un constat frustrant lors de mes premières expériences professionnelles : nous perdons un temps fou.

Je voyais des équipes talentueuses passer des heures à copier-coller des données d'Excel vers un CRM, à trier manuellement des emails ou à générer des factures une par une. Ce n'était pas seulement une perte de temps, c'était une perte de potentiel humain.

C'est là que j'ai découvert la puissance des API et du No-Code. J'ai commencé à automatiser mes propres tâches, puis celles de mes collègues. La réaction était toujours la même : "Attends, tu as fait ça en 2 minutes ? Ça me prenait 2 jours."

Aujourd'hui, j'ai fait de cette passion mon métier. Je ne suis pas seulement un technicien, je suis un architecte de processus. Mon but n'est pas de remplacer l'humain, mais de le libérer des tâches robotiques pour qu'il puisse se concentrer sur ce qui compte vraiment : la stratégie, la créativité et la relation client.

Ma Philosophie

Pourquoi travailler avec moi ?

Pragmatisme > Hype

Je n'utilise pas l'IA parce que c'est à la mode, mais parce que ça apporte un ROI mesurable. Si un simple script suffit, je ne vends pas une usine à gaz.

Robustesse & Sécurité

Une automatisation qui plante le vendredi soir n'est pas une solution. Je construis des systèmes avec gestion d'erreurs et logs détaillés.

Pédagogie

Je ne pars pas en vous laissant une "boîte noire". Je documente tout et je forme vos équipes pour que vous restiez maîtres de vos outils.

Technique & Business

Je parle le langage des développeurs (API, JSON) et celui des dirigeants (Marge, churn, conversion). Je fais le pont entre les deux.

); const Method = () => (
{/* Connector Line */}
{[ { step: "01", title: "Cartographie", desc: "Audit profond de vos processus pour comprendre 'qui fait quoi'." }, { step: "02", title: "Prototypage", desc: "Création d'un POC rapide pour valider la faisabilité." }, { step: "03", title: "Déploiement", desc: "Mise en production robuste, sécurisée et documentée." }, { step: "04", title: "Optimisation", desc: "Formation des équipes et maintenance évolutive." }, ].map((item, i) => (
{item.step}

{item.title}

{item.desc}

))}
); const Offers = () => (
{/* Pack 1 */}
Diagnostic

Audit & Roadmap

Pour les entreprises qui savent qu'elles perdent du temps mais ne savent pas par où commencer.

Sur devis
  • Analyse outils & process (2h)
  • Identification gains rapides
  • Rapport d'audit complet
  • Calcul du ROI estimé
{/* Pack 2 - Highlighted */}

Sprint Auto

Populaire

Vous avez un problème précis à régler (ex: synchroniser CRM et Facturation).

Sur devis
  • Développement workflow
  • Tests et recettes
  • Mise en production
  • Vidéo de formation
{/* Pack 3 */}
Transformation

Scale & Deploy

Pour automatiser un département entier ou interconnecter tout l'écosystème.

Sur devis
  • Architecture système complète
  • Multiples workflows
  • Dashboards monitoring
  • Formation présentielle/visio
); const FAQ = () => { const [openIndex, setOpenIndex] = useState(null); const faqs = [ { q: "Combien de temps faut-il pour automatiser un processus ?", a: "Un workflow simple peut être livré en 3 jours. Un écosystème complexe prend généralement 2 à 4 semaines." }, { q: "Est-ce compatible avec mes logiciels actuels ?", a: "Si vos logiciels ont une API (c'est le cas de 99% des outils modernes comme Salesforce, HubSpot, Qonto...), oui. Sinon, des solutions existent." }, { q: "Quel est le ROI attendu ?", a: "Mes clients constatent généralement un retour sur investissement en moins de 3 mois grâce au temps homme économisé." }, { q: "Et si l'IA se trompe ?", a: "Nous mettons en place des garde-fous (Human-in-the-loop). L'IA ne \"décide\" pas seule des actions critiques (virements, suppression) sans validation." } ]; return (
{faqs.map((faq, i) => (
{faq.a}
))}
); }; const Contact = () => (

Prêt à libérer le potentiel de votre entreprise ?

N'attendez pas que vos concurrents automatisent avant vous.

); const Footer = () => ( ); const App = () => { return (
); }; const container = document.getElementById('root'); const root = createRoot(container!); root.render();