Notre questionnaire intelligent analyse votre profil, votre domaine et vos objectifs pour vous proposer une feuille de route sur-mesure par nos experts Business Analysts.
ProfilDomaineSituationBesoinsPrioritésRésultat
Étape 1 sur 5
Qui êtes-vous ?
Aidez-nous à comprendre votre contexte pour personnaliser votre diagnostic.
🎯
Dirigeant / Fondateur
TPE, PME, startup — vous portez la vision
✓
📊
Manager / Responsable
Chef de projet, responsable métier ou IT
✓
💼
Indépendant / Freelance
Auto-entrepreneur, consultant, artisan
✓
🤝
Association / Collectivité
Secteur public, associatif, culturel
✓
Étape 2 sur 5
Votre secteur d'activité
Votre domaine métier nous permet d'adapter nos recommandations à vos réalités terrain.
🛍️
Commerce / Retail
✓
🏥
Santé / Bien-être
✓
🏗️
Immobilier / BTP
✓
💳
Finance / Assurance
✓
💻
Tech / Numérique
✓
🎓
Formation / RH
✓
🍽️
Restauration / Hôtellerie
✓
⚙️
Industrie / Logistique
✓
◎
Autre secteur
✓
Étape 3 sur 5
Votre situation actuelle
Où en êtes-vous dans votre transformation digitale ?
🚀
Je démarre de zéro
Pas encore de présence digitale ni d'outils — tout reste à construire
✓
🔧
J'ai déjà des outils à améliorer
Site web, outils internes ou processus qui ne donnent pas satisfaction
✓
📈
Je suis en croissance et dois structurer
Mon activité se développe mais mes outils et process ne suivent plus
✓
🔄
Je vis une transformation organisationnelle
Fusion, pivot, changement de modèle — j'ai besoin d'accompagnement au changement
✓
Étape 4 sur 5
Quels sont vos besoins ?
Sélectionnez tout ce qui correspond à votre situation.
Sélection multiple possible
🌐
Créer / refaire mon site web
Vitrine, e-commerce ou application
✓
🎨
Logo & identité visuelle
Charte graphique, kit de marque
✓
🔍
Analyser et formaliser mes besoins
Cahier des charges, expression du besoin
✓
⚙️
Optimiser mes processus métier
Automatisation, flux, gain de temps
✓
🎓
Former mes équipes
Outils digitaux, méthodes agiles
✓
🔄
Accompagnement au changement
Conduite du projet, adhésion des équipes
✓
Étape 5 sur 5
En quelques mots, quel est votre défi principal ?
Cette dernière étape nous permet de personnaliser votre diagnostic. Soyez direct et concis — il n'y a pas de mauvaise réponse.
0 / 600 caractères
Votre budget estimé pour ce projet :
<div class="opt" data-value="
Moins de 2 000 €
✓
2 000 – 5 000 €
✓
5 000 – 15 000 €
✓
15k">
+ de 15 000 €
✓
Je ne sais pas encore
✓
Analyse en cours…
Analyse de votre profil
Identification des enjeux clés
Croisement avec notre expertise BA
Génération des recommandations
Finalisation du diagnostic
✦ Diagnostic personnalisé
Votre feuille de route digitale
Analyse générée sur la base de vos réponses par notre moteur d'expertise Business Analyst.
Votre profil détecté
Analyse expert Digital Tower
Prêt à concrétiser votre projet ?
Nos Business Analysts ont analysé votre profil. Passons à l'étape suivante avec un premier échange gratuit de 30 minutes pour affiner votre feuille de route.
/* ═══════════════════════════════════════════════════════
STATE
═══════════════════════════════════════════════════════ */
var answers = { profil:'', secteur:'', situation:'', besoins:[], budget:'', contexte:'' };
var currentStep = 0;
var totalSteps = 5;
/* ═══════════════════════════════════════════════════════
OPTIONS : SÉLECTION
═══════════════════════════════════════════════════════ */
document.querySelectorAll('.options-grid').forEach(function(grid) {
var type = grid.dataset.type;
var field = grid.dataset.field;
grid.querySelectorAll('.opt').forEach(function(opt) {
opt.addEventListener('click', function() {
if(type === 'single') {
grid.querySelectorAll('.opt').forEach(function(o){ o.classList.remove('selected'); });
opt.classList.add('selected');
answers[field] = opt.dataset.value;
} else {
opt.classList.toggle('selected');
var vals = [];
grid.querySelectorAll('.opt.selected').forEach(function(o){ vals.push(o.dataset.value); });
answers[field] = vals;
}
checkCurrentStep();
});
});
});
/* ═══════════════════════════════════════════════════════
VALIDATION PAR ÉTAPE
═══════════════════════════════════════════════════════ */
function checkCurrentStep() {
var valid = false;
switch(currentStep) {
case 0: valid = !!answers.profil; break;
case 1: valid = !!answers.secteur; break;
case 2: valid = !!answers.situation; break;
case 3: valid = answers.besoins.length > 0; break;
case 4: valid = answers.budget !== ''; break;
}
var btn = document.getElementById('next-' + currentStep);
if(btn) btn.disabled = !valid;
}
function checkStep4() {
answers.contexte = document.getElementById('contexte-libre').value;
checkCurrentStep();
}
function updateCharCount(el) {
document.getElementById('charCount').textContent = el.value.length;
}
/* ═══════════════════════════════════════════════════════
NAVIGATION
═══════════════════════════════════════════════════════ */
function nextStep(from) {
document.getElementById('step-' + from).classList.remove('active');
currentStep = from + 1;
document.getElementById('step-' + currentStep).classList.add('active');
updateProgress();
checkCurrentStep();
window.scrollTo({ top: 0, behavior: 'smooth' });
}
function prevStep(from) {
document.getElementById('step-' + from).classList.remove('active');
currentStep = from - 1;
document.getElementById('step-' + currentStep).classList.add('active');
updateProgress();
window.scrollTo({ top: 0, behavior: 'smooth' });
}
function updateProgress() {
var pct = (currentStep / totalSteps) * 100;
document.getElementById('progressFill').style.width = pct + '%';
for(var i = 0; i <= totalSteps; i++) {
var el = document.getElementById('pl' + i);
if(el) el.classList.toggle('active', i === currentStep);
}
}
/* ═══════════════════════════════════════════════════════
LABELS LISIBLES
═══════════════════════════════════════════════════════ */
var labels = {
profil: { dirigeant:'Dirigeant / Fondateur', manager:'Manager / Responsable', independant:'Indépendant / Freelance', association:'Association / Collectivité' },
secteur: { commerce:'Commerce / Retail', sante:'Santé / Bien-être', immobilier:'Immobilier / BTP', finance:'Finance / Assurance', tech:'Tech / Numérique', formation:'Formation / RH', restauration:'Restauration / Hôtellerie', industrie:'Industrie / Logistique', autre:'Autre secteur' },
situation: { depart:'Démarre de zéro', existant_ameliorer:'Outils à améliorer', croissance:'En croissance à structurer', transformation:'Transformation organisationnelle' },
besoins: { site_web:'Site web', identite:'Identité visuelle', analyse:'Analyse des besoins', processus:'Optimisation processus', formation_equipe:'Formation équipe', changement:'Accompagnement au changement' },
budget: { '<2k':'15k':'> 15 000 €', 'nsp':'Budget non défini' }
};
function getLabel(cat, val) {
return labels[cat] && labels[cat][val] ? labels[cat][val] : val;
}
/* ═══════════════════════════════════════════════════════
GÉNÉRATION DU DIAGNOSTIC (Claude API)
═══════════════════════════════════════════════════════ */
async function generateDiagnostic() {
answers.contexte = document.getElementById('contexte-libre').value;
// Masquer étape 4, afficher loader
document.getElementById('step-4').classList.remove('active');
var loader = document.getElementById('loader');
loader.classList.add('active');
updateProgress();
// Animer les étapes du loader
var lsItems = ['ls0','ls1','ls2','ls3','ls4'];
lsItems.forEach(function(id, i) {
setTimeout(function(){ document.getElementById(id).classList.add('show'); }, i * 700);
});
// Remplir le récap profil
var summary = document.getElementById('profileSummary');
summary.innerHTML = '';
var items = [
{ label: getLabel('profil', answers.profil), cat: 'Profil' },
{ label: getLabel('secteur', answers.secteur), cat: 'Secteur' },
{ label: getLabel('situation', answers.situation), cat: 'Situation' },
{ label: getLabel('budget', answers.budget), cat: 'Budget' }
];
(Array.isArray(answers.besoins) ? answers.besoins : []).forEach(function(b) {
items.push({ label: getLabel('besoins', b), cat: 'Besoin' });
});
items.forEach(function(item) {
var span = document.createElement('span');
span.style.cssText = 'display:inline-flex;align-items:center;gap:.4rem;background:rgba(201,168,76,.07);border:1px solid rgba(201,168,76,.2);padding:.3rem .9rem;font-size:.72rem;color:var(--gold-pale)';
span.textContent = item.cat + ' · ' + item.label;
summary.appendChild(span);
});
// Construire le prompt
var besoinsStr = Array.isArray(answers.besoins)
? answers.besoins.map(function(b){ return getLabel('besoins', b); }).join(', ')
: '';
var contexteStr = answers.contexte ? '\nContexte libre du client : "' + answers.contexte + '"' : '';
var prompt = 'Tu es un expert Business Analyst chez Digital Tower, cabinet de conseil en transformation digitale. ' +
'Un prospect vient de remplir notre questionnaire de diagnostic. Rédige une analyse personnalisée, professionnelle et bienveillante en français.\n\n' +
'PROFIL DU PROSPECT :\n' +
'- Type : ' + getLabel('profil', answers.profil) + '\n' +
'- Secteur : ' + getLabel('secteur', answers.secteur) + '\n' +
'- Situation : ' + getLabel('situation', answers.situation) + '\n' +
'- Besoins identifiés : ' + besoinsStr + '\n' +
'- Budget estimé : ' + getLabel('budget', answers.budget) + '\n' +
contexteStr + '\n\n' +
'CONSIGNES DE RÉDACTION :\n' +
'1. Commence par une phrase d\'accroche personnalisée qui montre que tu as compris leur situation spécifique (2-3 phrases max)\n' +
'2. Identifie les 2-3 enjeux clés de leur profil (utilise des termes métier Business Analyst)\n' +
'3. Explique en quoi leur situation nécessite une approche structurée\n' +
'4. Conclude par un message motivant sur leurs opportunités\n\n' +
'Style : professionnel mais accessible, direct, orienté solutions. Pas de bullet points. Environ 200-250 mots. ' +
'Ne mentionne pas que tu es une IA. Parle en tant qu\'expert Business Analyst de Digital Tower.\n\n' +
'Après ta prose d\'analyse, ajoute une section JSON (uniquement du JSON brut, pas de markdown) structurée ainsi :\n' +
'{"recos":[{"priorite":"Priorité 1","titre":"...","description":"...","service":"..."},{"priorite":"Priorité 2","titre":"...","description":"...","service":"..."},{"priorite":"Priorité 3","titre":"...","description":"...","service":"..."},{"priorite":"À considérer","titre":"...","description":"...","service":"..."}]}\n' +
'Les services doivent être parmi : Audit & Analyse, Site Web, Identité Visuelle, Formation, Accompagnement au changement.';
try {
var res = await fetch('https://api.anthropic.com/v1/messages', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
model: 'claude-sonnet-4-20250514',
max_tokens: 1000,
stream: true,
messages: [{ role: 'user', content: prompt }]
})
});
// Afficher le résultat
loader.classList.remove('active');
var result = document.getElementById('result');
result.classList.add('active');
updateProgress();
window.scrollTo({ top: 0, behavior: 'smooth' });
// Streaming
var reader = res.body.getReader();
var decoder = new TextDecoder();
var aiEl = document.getElementById('aiText');
aiEl.innerHTML = '';
var fullText = '';
while(true) {
var _ref = await reader.read(), done = _ref.done, value = _ref.value;
if(done) break;
var chunk = decoder.decode(value);
var lines = chunk.split('\n');
for(var i = 0; i -1 ? fullText.slice(0, jsonIdx) : fullText;
aiEl.innerHTML = prose.replace(/\n/g, ' ') + '';
}
} catch(e) {}
}
}
// Parser le JSON des recommandations
var jsonIdx2 = fullText.indexOf('{"recos"');
if(jsonIdx2 > -1) {
try {
var jsonStr = fullText.slice(jsonIdx2);
var endIdx = jsonStr.lastIndexOf('}') + 1;
var recoData = JSON.parse(jsonStr.slice(0, endIdx));
buildRecos(recoData.recos);
} catch(e) { buildRecos([]); }
}
// Retirer le curseur final
aiEl.innerHTML = aiEl.innerHTML.replace('', '');
} catch(err) {
// Fallback si API indisponible
loader.classList.remove('active');
var result2 = document.getElementById('result');
result2.classList.add('active');
var fallback = buildFallbackAnalysis();
var aiEl2 = document.getElementById('aiText');
aiEl2.innerHTML = fallback.prose;
buildRecos(fallback.recos);
window.scrollTo({ top: 0, behavior: 'smooth' });
}
}
/* ═══════════════════════════════════════════════════════
RECOMMANDATIONS
═══════════════════════════════════════════════════════ */
function buildRecos(recos) {
var grid = document.getElementById('recoGrid');
grid.innerHTML = '';
if(!recos || recos.length === 0) return;
recos.forEach(function(r) {
var card = document.createElement('div');
card.className = 'reco-card';
card.innerHTML =
'
' + (r.priorite||'') + '
' +
'
' + (r.titre||'') + '
' +
'
' + (r.description||'') + '
' +
'
' + (r.service||'') + '
';
grid.appendChild(card);
});
}
/* ═══════════════════════════════════════════════════════
FALLBACK (sans API)
═══════════════════════════════════════════════════════ */
function buildFallbackAnalysis() {
var profLabel = getLabel('profil', answers.profil);
var secLabel = getLabel('secteur', answers.secteur);
var sitLabel = getLabel('situation', answers.situation);
var prose = 'Votre profil de ' + profLabel + ' dans le secteur ' + secLabel + ' présente des caractéristiques que nous rencontrons fréquemment chez Digital Tower.
' +
'Votre situation — ' + sitLabel.toLowerCase() + ' — implique une approche structurée qui commence toujours par une expression claire des besoins avant toute mise en œuvre technique. C\'est précisément là que notre expertise Business Analyst fait la différence.
' +
'Les enjeux identifiés dans votre questionnaire montrent qu\'une démarche progressive et priorisée sera votre meilleur atout pour réussir cette transformation. Nos recommandations ci-dessous ont été construites pour correspondre à votre réalité terrain.';
var recos = [
{ priorite:'Priorité 1', titre:'Audit & cadrage des besoins', description:'Avant toute action, formalisons ensemble vos besoins réels via un atelier de cadrage structuré.', service:'Audit & Analyse' },
{ priorite:'Priorité 2', titre:'Définition de la feuille de route', description:'Priorisation des chantiers et planification selon votre budget et vos ressources disponibles.', service:'Accompagnement au changement' },
{ priorite:'Priorité 3', titre:'Mise en œuvre progressive', description:'Déploiement itératif des solutions retenues avec des points de validation réguliers.', service:'Site Web' },
{ priorite:'À considérer', titre:'Montée en compétences des équipes', description:'Formation et accompagnement pour garantir l\'adoption durable des nouveaux outils.', service:'Formation' }
];
return { prose: prose, recos: recos };
}
/* ═══════════════════════════════════════════════════════
RESET
═══════════════════════════════════════════════════════ */
function resetDiag() {
answers = { profil:'', secteur:'', situation:'', besoins:[], budget:'', contexte:'' };
currentStep = 0;
document.querySelectorAll('.opt').forEach(function(o){ o.classList.remove('selected'); });
document.getElementById('contexte-libre').value = '';
document.getElementById('charCount').textContent = '0';
document.getElementById('result').classList.remove('active');
document.getElementById('step-0').classList.add('active');
document.querySelectorAll('.btn-next').forEach(function(b){ b.disabled = true; });
updateProgress();
window.scrollTo({ top: 0, behavior: 'smooth' });
}