// BSA Copilot — Blog: article data + list/reader components
// Migrated from bsa-partners.com/blog + 2 new articles.

const BLOG_POSTS = [
  {
    slug: 'automatiser-reponses-appels-offres',
    cat: 'Stratégie',
    title: 'Comment automatiser vos réponses aux appels d’offres et remporter plus de marchés',
    excerpt: 'Une réponse classique demande 25 à 60 heures de travail pour un taux de réussite rarement supérieur à 10 %. L’automatisation devient un avantage compétitif décisif.',
    author: 'Émile Pinson',
    date: '2026-06-10',
    read: '8 min',
    body: [
      ['h', 'Introduction'],
      ['p', 'Répondre à un appel d’offres est un exercice stratégique, mais souvent vécu comme une contrainte. Pour la plupart des entreprises, le processus est long, administratif, complexe, mobilise des ressources internes et ne garantit aucun résultat. Les chiffres parlent d’eux-mêmes : une réponse classique demande en moyenne entre 25 et 60 heures de travail et le taux de réussite des entreprises non structurées dépasse rarement 10 %.'],
      ['p', 'En 2026, les entreprises qui continueront à traiter leurs appels d’offres de manière artisanale perdront du temps et des opportunités, pendant que d’autres s’appuieront sur l’automatisation et la donnée pour accélérer leur développement commercial. Automatiser la réponse aux appels d’offres n’est plus un avantage. C’est un avantage compétitif décisif.'],
      ['h', '1. Le constat : un processus lourd, chronophage et peu prévisible'],
      ['p', 'Répondre à un appel d’offre, c’est gérer simultanément plusieurs contraintes : détecter les opportunités pertinentes parmi des milliers de publications quotidiennes, analyser le cahier des charges (DCE) et qualifier l’opportunité (GO / NO GO), préparer les documents administratifs (DC1, DC2, attestations fiscales et sociales, assurances, références), rédiger une réponse technique convaincante et conforme à la pondération des critères, puis déposer l’offre sur la bonne plateforme avant la date limite.'],
      ['p', 'Dans la majorité des entreprises, ce processus dépend d’une personne ou d’un commercial polyvalent qui doit jongler entre prospection, gestion client et réponse aux offres. Résultat : les dossiers sont incomplets, déposés dans la précipitation ou peu différenciants. Près de 30 % des offres déposées sont rejetées pour défaut de conformité administrative.'],
      ['h', '2. Pourquoi l’automatisation est devenue essentielle'],
      ['p', 'Automatiser, dans ce contexte, ne signifie pas déshumaniser. Il s’agit de déléguer les tâches à faible valeur ajoutée à une plateforme pour concentrer le temps et l’intelligence humaine sur les décisions stratégiques.'],
      ['ul', [
        'Détecter automatiquement les appels d’offres correspondant à l’activité et au périmètre géographique d’une entreprise',
        'Filtrer les mauvaises opportunités pour ne répondre qu’aux dossiers à forte probabilité de réussite',
        'Générer automatiquement une première version du dossier administratif et technique',
        'Suivre le statut des réponses et l’évolution des notations',
        'Capitaliser sur les dossiers précédents pour améliorer les futurs',
      ]],
      ['h', '3. ROI : des résultats mesurables'],
      ['p', 'Chez les clients BSA, les résultats observés sur 6 mois sont significatifs : augmentation de 300 % du nombre d’appels d’offres pertinents identifiés, gain de temps moyen de 5 heures par dossier grâce au préremplissage des documents administratifs, et passage d’un taux de réussite inférieur à 10 % à un taux compris entre 20 % et 35 % selon les secteurs.'],
      ['h', '4. Les quatre étapes d’une automatisation efficace'],
      ['p', '1. Détection et veille automatisée — l’entreprise définit ses critères (secteur, localisation, montant minimum, type de marché) et la plateforme remonte uniquement les opportunités pertinentes. 2. Processus GO / NO GO structuré — chaque opportunité est évaluée selon des critères objectifs. 3. Production automatisée du dossier — les documents administratifs sont générés et la partie technique s’appuie sur une base de réponses optimisées. 4. Dépôt, suivi et pilotage — la plateforme dépose l’offre puis suit l’avancée du dossier.'],
      ['h', 'Conclusion'],
      ['p', 'L’automatisation de la réponse aux appels d’offres transforme un exercice lourd et imprévisible en un processus commercial maîtrisé, mesurable et scalable. Les entreprises qui industrialisent leur approche prendront l’avantage dès 2026.'],
    ],
  },
  {
    slug: '5-erreurs-appels-offres-publics',
    cat: 'Méthode',
    title: 'Les 5 erreurs les plus fréquentes dans les appels d’offres publics (et comment les éviter)',
    excerpt: 'Près de 30 % des candidatures sont déclarées irrecevables à cause d’erreurs administratives. Le problème n’est pas la qualité des entreprises, mais la façon dont elles répondent.',
    author: 'Émile Pinson',
    date: '2026-05-21',
    read: '7 min',
    body: [
      ['h', 'Introduction'],
      ['p', 'Chaque année, des milliers d’entreprises répondent à des appels d’offres publics. Pourtant, une grande partie des offres déposées sont rejetées avant même d’être étudiées sur le fond : près de 30 % des candidatures sont déclarées irrecevables à cause d’erreurs administratives ou de documents manquants. Le problème n’est pas la qualité des entreprises, mais la façon dont elles répondent.'],
      ['h', '1. Oublier un document obligatoire ou non conforme'],
      ['p', 'Un dossier est automatiquement rejeté si un seul document est manquant, incomplet ou périmé : Kbis, DC1, DC2, attestations fiscales, assurances, certificats sociaux. Solution : mettre en place un dossier administratif à jour avec tous les documents normalisés, et utiliser une plateforme qui pré-remplit et classe les documents par marché.'],
      ['h', '2. Répondre à tous les appels d’offres sans stratégie ni filtrage'],
      ['p', 'Répondre à tout signifie perdre du temps sur des marchés non pertinents, trop concurrentiels ou inadaptés. Solution : qualifier chaque opportunité avec une méthodologie GO / NO GO et filtrer selon des critères précis. Les entreprises qui mettent en place un processus de sélection gagnent plus en répondant moins.'],
      ['h', '3. Déposer l’offre hors délai ou sur la mauvaise plateforme'],
      ['p', 'Un dépôt tardif, même de quelques secondes, entraîne une exclusion automatique. Solution : anticiper le dépôt, utiliser des outils de pilotage avec alertes et échéances, et centraliser les comptes sur les différentes plateformes. Une offre parfaite déposée en retard reste une offre refusée.'],
      ['h', '4. Présenter une réponse technique générique et non contextualisée'],
      ['p', 'Les critères d’évaluation sont pondérés, et un dossier générique ne répond pas aux attentes spécifiques du marché. Solution : analyser la pondération des critères, valoriser les résultats et références, et adapter la proposition à chaque marché — même avec une base modulaire automatisée.'],
      ['h', '5. Absence de pilotage global et de suivi des résultats'],
      ['p', 'Sans suivi analytique, il n’y a pas d’amélioration possible. Solution : mettre en place un tableau de bord (volume de réponses, taux de réussite, CA généré), capitaliser sur les retours des acheteurs et systématiser le retour d’expérience.'],
      ['h', 'Conclusion'],
      ['p', 'Les appels d’offres publics ne sont pas un jeu de hasard. Le succès est lié à la méthode. Éviter ces cinq erreurs permet déjà de se placer devant une grande partie des concurrents.'],
    ],
  },
  {
    slug: 'appels-offres-publics-vs-prives',
    cat: 'Analyse',
    title: 'Appels d’offres publics vs privés : où sont les vraies opportunités',
    excerpt: 'Public pour la stabilité et le volume, privé pour la vitesse et la marge. En 2026, la question n’est plus de choisir, mais de construire un pipeline hybride.',
    author: 'Émile Pinson',
    date: '2026-04-15',
    read: '6 min',
    body: [
      ['h', 'Introduction'],
      ['p', 'Faut-il répondre aux appels d’offres publics ou se concentrer sur le privé ? Les marchés publics offrent sécurité contractuelle, volumes importants et visibilité réglementée. Les appels d’offres privés permettent plus de souplesse, de rapidité et parfois une meilleure rentabilité. Choisir entre public et privé n’est plus une question de préférence, mais de stratégie.'],
      ['h', '1. Appels d’offres publics : un volume structuré, mais exigeant'],
      ['p', 'Les marchés publics représentent en France plus de 200 milliards d’euros par an. Avantages : transparence des règles, procédures encadrées, sécurité de paiement, opportunités sur tout le territoire. Inconvénients : procédures longues et complexes, notation stricte souvent défavorable aux nouveaux entrants, délais de paiement parfois longs, contraintes réglementaires.'],
      ['h', '2. Appels d’offres privés : réactivité, marges et agilité'],
      ['p', 'Le marché privé est beaucoup moins structuré. Avantages : délai plus court entre contact et signature, négociation directe possible, moins de barrières administratives, opportunités souvent invisibles sur les plateformes classiques. Inconvénients : moins de visibilité sur les critères, risques de paiement plus élevés, moins de transparence en cas d’échec.'],
      ['h', '3. Les tendances 2026 : convergence et opportunités hybrides'],
      ['p', 'Le clivage entre public et privé tend à s’estomper. De plus en plus de donneurs d’ordre privés adoptent des procédures similaires au secteur public, tandis que certains acheteurs publics simplifient l’accès aux TPE/PME. Tendances : digitalisation croissante, généralisation des critères RSE/ESG, montée des achats groupés, analyse des données post-marché.'],
      ['h', '4. Quelle stratégie adopter ?'],
      ['p', 'La meilleure approche n’est pas de choisir, mais de construire un pipeline hybride : le public pour la stabilité, le volume et les références ; le privé pour la vitesse, la marge et l’agilité ; l’automatisation et le filtrage pour ne répondre qu’aux dossiers réellement pertinents.'],
      ['h', 'Conclusion'],
      ['p', 'La question n’est plus « public ou privé ? », mais comment construire un portefeuille d’appels d’offres aligné avec ses objectifs commerciaux. L’avenir appartient aux entreprises qui maîtrisent les deux mondes.'],
    ],
  },
  {
    slug: 'ia-business-development',
    cat: 'Intelligence artificielle',
    title: 'L’IA au service du business development : transformer vos équipes en machines commerciales',
    excerpt: 'L’IA ne remplace pas les commerciaux : elle augmente leur capacité d’analyse, de ciblage et de décision. 3 à 5× plus d’opportunités détectées, cycles de vente réduits de 40 %.',
    author: 'Émile Pinson',
    date: '2026-03-12',
    read: '8 min',
    body: [
      ['h', 'Introduction'],
      ['p', 'Dans un monde où l’information circule plus vite que jamais et où la concurrence est féroce, les méthodes classiques de développement commercial montrent leurs limites. L’intelligence artificielle devient un levier opérationnel, accessible et rentable pour toutes les entreprises, y compris les TPE/PME et les acteurs du BTP, de l’ingénierie ou du service.'],
      ['h', '1. Pourquoi le business development traditionnel est en train de mourir'],
      ['p', 'Pendant des années, le business development reposait sur un CRM rempli à la main, des commerciaux non outillés et un pipeline flou. Résultat : des cycles de vente trop longs, des opportunités ratées et un pilotage réactif plutôt que stratégique. Aujourd’hui, les entreprises qui réussissent industrialisent leur développement commercial.'],
      ['h', '2. Ce que l’IA change concrètement'],
      ['p', 'L’IA augmente la capacité d’analyse, de ciblage et de décision des commerciaux. Cas d’usage : détection d’opportunités en temps réel, qualification automatique des leads, scoring GO / NO GO sur les appels d’offres, relances intelligentes personnalisées, et synthèse / coaching commercial à partir des échanges.'],
      ['h', '3. L’impact mesurable'],
      ['ul', [
        '3 à 5 fois plus d’opportunités détectées',
        'Un taux de transformation supérieur de 20 à 30 %',
        'Des cycles de vente réduits de 40 %',
        'Un pilotage du pipeline beaucoup plus fiable',
      ]],
      ['h', '4. Comment démarrer'],
      ['p', 'Pas besoin d’un data scientist. Cartographier les tâches chronophages (veille, qualification, rédaction, relance), identifier les outils adaptés, mettre en place des workflows simples et mesurables, et former l’équipe à une culture « augmentée ». Commencer par les 20 % d’efforts qui génèrent 80 % des résultats.'],
      ['h', 'Conclusion'],
      ['p', 'L’IA appliquée au business development transforme un centre de coût en centre de profit. Les dirigeants qui prendront ce virage aujourd’hui domineront leur marché demain.'],
    ],
  },
  {
    slug: 'guide-sources-appels-offres-2026',
    cat: 'Guide',
    title: 'BOAMP, JOUE, plateformes privées : le guide 2026 des sources d’appels d’offres',
    excerpt: 'Où sortent réellement les marchés, et comment couvrir 40+ sources sans y passer ses journées. Panorama des plateformes publiques et privées à surveiller.',
    author: 'Émile Pinson',
    date: '2026-01-14',
    read: '6 min',
    body: [
      ['h', 'Introduction'],
      ['p', 'La première difficulté d’une stratégie appels d’offres n’est pas de répondre : c’est de voir passer les bonnes opportunités. Les marchés se publient sur des dizaines de plateformes hétérogènes, chacune avec ses formats, ses filtres et ses délais. Voici comment s’y retrouver en 2026.'],
      ['h', '1. Les sources publiques incontournables'],
      ['p', 'Le BOAMP (Bulletin officiel des annonces des marchés publics) centralise une grande partie des marchés français au-dessus des seuils. Le JOUE / TED couvre les marchés européens. À cela s’ajoutent les profils acheteurs : AWS-Achat, PLACE, Maximilien, Achatpublic, Marchés Sécurisés. Chacun publie des avis qui ne sont pas toujours répliqués ailleurs.'],
      ['h', '2. Le gisement privé, souvent ignoré'],
      ['p', 'Une part croissante des opportunités circule hors plateformes officielles : consultations de grands donneurs d’ordre, promoteurs, foncières, sous-traitance de groupes. Moins visibles, ces marchés sont aussi moins concurrentiels — à condition de les détecter à temps.'],
      ['h', '3. Le vrai enjeu : la déduplication et le scoring'],
      ['p', 'Multiplier les sources crée du bruit. Un même marché peut apparaître sur 3 plateformes ; un avis sur 5 ne vous concerne pas. La valeur n’est pas dans le volume capté, mais dans le tri : dédupliquer, filtrer par CPV / géographie / montant, et scorer la pertinence avant de mobiliser une équipe.'],
      ['h', 'Conclusion'],
      ['p', 'Couvrir 40+ sources à la main est intenable. L’enjeu 2026 n’est pas de surveiller plus de plateformes, mais d’automatiser la veille pour ne voir que ce qui compte.'],
    ],
  },
  {
    slug: 'memoire-technique-methode-gagnante',
    cat: 'Méthode',
    title: 'Mémoire technique : la méthode pour transformer un DCE en réponse gagnante',
    excerpt: 'Les acheteurs ne veulent pas savoir ce que vous faites en général. Ils veulent savoir comment vous répondrez à leur besoin précis. La méthode, critère par critère.',
    author: 'Émile Pinson',
    date: '2026-02-03',
    read: '7 min',
    body: [
      ['h', 'Introduction'],
      ['p', 'Le mémoire technique est l’élément qui fait la différence sur un appel d’offres — et celui que la plupart des entreprises bâclent. Un dossier générique ne répond jamais à la pondération précise du marché. Voici comment structurer une réponse qui marque des points.'],
      ['h', '1. Partir de la grille de notation, pas de votre catalogue'],
      ['p', 'Avant d’écrire une ligne, extrayez du DCE les critères de jugement et leur pondération (prix, valeur technique, délais, RSE). Votre plan de mémoire doit épouser cette grille : un acheteur note plus vite et mieux un document qui suit l’ordre de ses critères.'],
      ['h', '2. Répondre au besoin, pas à votre histoire'],
      ['p', 'Les acheteurs ne veulent pas un copier-coller de votre plaquette. Pour chaque critère, montrez concrètement comment vous traitez le besoin décrit : méthodologie, moyens humains et matériels affectés, planning, gestion des risques, références comparables et chiffrées.'],
      ['h', '3. Capitaliser sur vos réponses passées'],
      ['p', 'Vos meilleurs mémoires sont une matière première. Une bibliothèque de réponses indexée permet de réutiliser les paragraphes qui ont gagné, tout en les recontextualisant. C’est exactement ce qu’automatise BSA Copilot : générer une trame structurée critère par critère à partir de votre historique et du DCE.'],
      ['h', 'Conclusion'],
      ['p', 'Un mémoire technique sur mesure augmente fortement le score final. La bonne nouvelle : la rigueur méthodologique peut être outillée, pour produire en 40 minutes ce qui prenait trois jours.'],
    ],
  },
];

const fmtDate = (iso) => {
  const months = ['janv.', 'févr.', 'mars', 'avr.', 'mai', 'juin', 'juil.', 'août', 'sept.', 'oct.', 'nov.', 'déc.'];
  const d = new Date(iso);
  return `${d.getDate()} ${months[d.getMonth()]} ${d.getFullYear()}`;
};

const BlogCard = ({ post, onOpen, featured = false }) => (
  <article className={`blog-card ${featured ? 'featured' : ''}`} onClick={() => onOpen(post.slug)}>
    <div className="blog-thumb" data-cat={post.cat}>
      <span className="blog-thumb-cat">{post.cat}</span>
    </div>
    <div className="blog-card-body">
      <div className="blog-card-meta">{fmtDate(post.date)} · {post.read}</div>
      <h3 className="blog-card-title">{post.title}</h3>
      <p className="blog-card-excerpt">{post.excerpt}</p>
      <span className="blog-card-link">Lire l’article →</span>
    </div>
  </article>
);

const ArticleView = ({ post, onBack }) => (
  <article className="article">
    <div className="article-head">
      <div className="container container-narrow">
        <button className="article-back" onClick={onBack}>← Tous les articles</button>
        <span className="article-cat">{post.cat}</span>
        <h1 className="article-title">{post.title}</h1>
        <div className="article-meta">{fmtDate(post.date)} · {post.read} de lecture</div>
      </div>
    </div>
    <div className="article-hero" data-cat={post.cat}></div>
    <div className="container container-narrow">
      <div className="article-body">
        {post.body.map((block, i) => {
          if (block[0] === 'h') return <h2 key={i}>{block[1]}</h2>;
          if (block[0] === 'ul') return <ul key={i}>{block[1].map((li, j) => <li key={j}>{li}</li>)}</ul>;
          return <p key={i}>{block[1]}</p>;
        })}
      </div>
      <div className="article-cta">
        <div>
          <div className="article-cta-title">Envie d’appliquer tout ça sans y passer vos journées ?</div>
          <p>BSA Copilot automatise la détection, l’analyse et la rédaction de vos réponses aux appels d’offres.</p>
        </div>
        <button className="btn btn-primary btn-lg" onClick={() => window.go && window.go('home')}>Réserver une démo →</button>
      </div>
    </div>
  </article>
);

const BlogPage = () => {
  const [slug, setSlug] = React.useState(null);
  const open = (s) => { setSlug(s); window.scrollTo({ top: 0, behavior: 'instant' }); };
  const back = () => { setSlug(null); window.scrollTo({ top: 0, behavior: 'instant' }); };
  const current = BLOG_POSTS.find(p => p.slug === slug);

  if (current) return <ArticleView post={current} onBack={back} />;

  const [feat, ...rest] = BLOG_POSTS;
  return (
    <>
      <section className="page-head">
        <div className="container">
          <span className="eyebrow gold"><span className="dot"></span>Blog</span>
          <h1>Le terrain des appels d’offres, décrypté.</h1>
          <p className="lede">Méthodes, analyses et retours d’expérience pour détecter, qualifier et gagner plus de marchés — publics comme privés.</p>
        </div>
      </section>
      <section className="section">
        <div className="container">
          <div className="blog-featured-row">
            <BlogCard post={feat} onOpen={open} featured />
          </div>
          <div className="blog-grid">
            {rest.map(p => <BlogCard key={p.slug} post={p} onOpen={open} />)}
          </div>
        </div>
      </section>
    </>
  );
};

Object.assign(window, { BLOG_POSTS, BlogPage });
