Jak gotowa jest Twoja organizacja do skalowania AI?
12 pytań w czterech wymiarach operacyjnych: Procesy, Dane, Systemy i Ludzie.
Otrzymasz swój wynik gotowości, poziom ryzyka i podział na wymiary natychmiast — za darmo.
Pełna mapa drogowa z priorytetami jest dostępna później.
⏱ Zajmuje około 3 minut · Bez e-maila, by zobaczyć wynik
/* ════════════════════════════════════════════════════════ AILEAN AUDIT — CONFIGURATION ════════════════════════════════════════════════════════ TO ACCEPT PAYMENTS: 1. Create a Stripe account → stripe.com 2. Products → Add Product → "AI Readiness Full Report" 3. Create a PAYMENT LINK for it (no code needed) 4. Paste the link below as STRIPE_PAYMENT_LINK 5. In Stripe, set the payment link's success URL to: https://YOURDOMAIN.com/audit.html?paid=true That's it. After payment Stripe redirects back and the full report unlocks automatically. ════════════════════════════════════════════════════════ */ const CONFIG = { STRIPE_PAYMENT_LINK: "https://buy.stripe.com/YOUR_PAYMENT_LINK_HERE", PRICE_DISPLAY: "$5", // Optional: where audit lead emails go (Formspree, etc.) CONTACT_EMAIL: "kontakt@ailean.pl" };
/* ─── QUESTION BANK ─── */ const QUESTIONS = [ // PROCESSES { cat: "Processes", text: "How standardized are your core workflows across teams?", opts: [ ["Fully documented and followed everywhere", 4], ["Documented, but teams deviate often", 3], ["Some documentation, mostly tribal knowledge", 2], ["Every team does it their own way", 1] ]}, { cat: "Processes", text: "If a key employee left tomorrow, how much process knowledge leaves with them?", opts: [ ["Almost none — everything is captured", 4], ["A little — minor gaps", 3], ["A lot — significant disruption", 2], ["Critical operations would stall", 1] ]}, { cat: "Processes", text: "How often do your processes produce inconsistent or rework-requiring outputs?", opts: [ ["Rarely — under 5% of cases", 4], ["Sometimes — 5–15%", 3], ["Often — 15–30%", 2], ["Constantly — over 30%", 1] ]}, // DATA { cat: "Data", text: "Where does your operational data live?", opts: [ ["One integrated system, single source of truth", 4], ["A few systems, mostly connected", 3], ["Many systems, partially connected", 2], ["Spreadsheets, emails, and people's heads", 1] ]}, { cat: "Data", text: "How much of your data entry is still manual?", opts: [ ["Under 10% — mostly automated capture", 4], ["10–30%", 3], ["30–60%", 2], ["Most of it is typed in by hand", 1] ]}, { cat: "Data", text: "If you pulled a report right now, how much would you trust the numbers?", opts: [ ["Completely — we make decisions on them daily", 4], ["Mostly — minor cleanup needed", 3], ["Partially — we double-check everything", 2], ["Honestly? Not much", 1] ]}, // SYSTEMS { cat: "Systems", text: "How well do your software systems talk to each other?", opts: [ ["Fully integrated — data flows automatically", 4], ["Key systems integrated, some manual bridges", 3], ["Mostly manual exports and imports", 2], ["They don't — we copy-paste between them", 1] ]}, { cat: "Systems", text: "How old is your core operational software stack?", opts: [ ["Modern, cloud-based, API-friendly", 4], ["Mixed — some modern, some legacy", 3], ["Mostly legacy with workarounds", 2], ["Legacy systems nobody dares to touch", 1] ]}, { cat: "Systems", text: "Have you automated any repetitive workflows already?", opts: [ ["Yes — several, running reliably", 4], ["A couple of pilots in production", 3], ["We tried, but they broke or were abandoned", 2], ["No automation yet", 1] ]}, // PEOPLE { cat: "People", text: "How does your team currently feel about AI and automation?", opts: [ ["Actively asking for it", 4], ["Open, but cautious", 3], ["Skeptical — worried about jobs or extra work", 2], ["Resistant — past tech rollouts went badly", 1] ]}, { cat: "People", text: "Is there a clear owner for operational improvement in your company?", opts: [ ["Yes — dedicated role with authority and budget", 4], ["Yes, but it's a side responsibility", 3], ["Informally — whoever has time", 2], ["No one owns it", 1] ]}, { cat: "People", text: "When you roll out new tools, what usually happens?", opts: [ ["Structured rollout, training, high adoption", 4], ["Decent adoption after some friction", 3], ["A few champions use it, most ignore it", 2], ["They quietly die within months", 1] ]} ];
/* ─── ROADMAP CONTENT (per weakest dimension) ─── */ const ROADMAP = { "Processes": [ ["Map your top 3 value streams", "Document how work actually flows today — not how the org chart says it should. This exposes the variability AI would amplify."], ["Standardize the highest-volume workflow first", "Pick the process with the most repetitions per week. Standardization here compounds fastest."], ["Create a single process owner per workflow", "Variability persists when everyone owns a process. Assign one accountable owner per core workflow."] ], "Data": [ ["Audit your data entry points", "List every place data enters your business manually. Each one is a future AI failure point."], ["Establish one source of truth for your core entity", "Whether it's customers, orders, or assets — pick one system as canonical and sync everything else to it."], ["Kill the spreadsheet shadow systems", "Identify the 3 most business-critical spreadsheets and migrate them into structured systems."] ], "Systems": [ ["Map your integration gaps", "Document every manual export/import between systems. These are your automation quick wins."], ["Connect your two most-used systems first", "One reliable integration between high-traffic systems beats five fragile ones."], ["Retire or wrap one legacy system", "If you can't replace it, put an API layer in front of it so modern tools can read from it."] ], "People": [ ["Run a transparent automation briefing", "Resistance comes from uncertainty. Show the team exactly what changes, what doesn't, and what's in it for them."], ["Appoint internal champions per department", "Adoption spreads peer-to-peer, not top-down. Equip one enthusiast per team before any rollout."], ["Tie improvement ownership to a named role", "Give operational improvement a name, authority, and 20% protected time minimum."] ] };
const SEQUENCE = [ ["Days 1–30 · Diagnose", "Map value streams, audit data entry points, and document system integration gaps. Output: a prioritized friction list."], ["Days 31–60 · Architect", "Standardize your highest-volume workflow, establish a single source of truth, and connect your two most-used systems."], ["Days 61–90 · Prepare to Scale", "Run your first reliable automation on the stabilized process. Measure. Only then evaluate where AI multiplies the gain."] ];
/* ─── APP ─── */ const AuditApp = { current: 0, answers: [],
start() { this.current = 0; this.answers = []; this.show('question'); this.render(); },
render() { const q = QUESTIONS[this.current]; document.getElementById('qCategory').textContent = q.cat + ' — Dimension ' + (['Processes','Data','Systems','People'].indexOf(q.cat) + 1) + ' of 4'; document.getElementById('qText').textContent = q.text; document.getElementById('stepLabel').textContent = 'Question ' + (this.current + 1) + ' of ' + QUESTIONS.length; document.getElementById('progressFill').style.width = ((this.current) / QUESTIONS.length * 100) + '%'; document.getElementById('backBtn').style.visibility = this.current === 0 ? 'hidden' : 'visible';
const wrap = document.getElementById('qOptions'); wrap.innerHTML = ''; q.opts.forEach((opt, i) => { const btn = document.createElement('button'); btn.className = 'audit-option slide-in'; btn.style.animationDelay = (i * 0.06) + 's'; if (this.answers[this.current] === i) btn.classList.add('selected'); btn.innerHTML = '' + opt[0] + ''; btn.onclick = () => this.answer(i); wrap.appendChild(btn); }); },
answer(i) { this.answers[this.current] = i; // brief visual confirmation, then advance this.render(); setTimeout(() => { if (this.current < QUESTIONS.length - 1) { this.current++; this.render(); } else { this.showResults(); } }, 280); }, back() { if (this.current > 0) { this.current--; this.render(); } },
calc() { const dims = { "Processes": [], "Data": [], "Systems": [], "People": [] }; QUESTIONS.forEach((q, idx) => { const pts = q.opts[this.answers[idx]][1]; dims[q.cat].push(pts); }); const dimScores = {}; let total = 0, max = 0; for (const [k, arr] of Object.entries(dims)) { const s = arr.reduce((a,b)=>a+b,0); const m = arr.length * 4; dimScores[k] = Math.round(s / m * 100); total += s; max += m; } return { score: Math.round(total / max * 100), dims: dimScores }; },
showResults() { this.show('results'); const { score, dims } = this.calc(); this.lastResult = { score, dims };
// Animate score ring + number const ring = document.getElementById('ringFill'); const circumference = 552; const risk = score < 50 ? 'high' : score < 75 ? 'medium' : 'low'; const colors = { high: '#b91c1c', medium: '#b8860b', low: '#1a7a4a' }; ring.style.stroke = colors[risk]; setTimeout(() => { ring.style.strokeDashoffset = circumference - (circumference * score / 100); }, 100);
let n = 0; const numEl = document.getElementById('scoreNum'); const timer = setInterval(() => { n += Math.ceil(score / 40); if (n >= score) { n = score; clearInterval(timer); } numEl.textContent = n + '%'; }, 30);
// Risk badge const badge = document.getElementById('riskBadge'); const labels = { high: ['⚠', 'System Risk: HIGH'], medium: ['◐', 'System Risk: MODERATE'], low: ['✓', 'System Risk: LOW'] }; badge.className = 'risk-badge risk-' + risk; badge.textContent = labels[risk][0] + ' ' + labels[risk][1];
// Dimension bars const barsWrap = document.getElementById('dimBars'); barsWrap.innerHTML = ''; for (const [name, pct] of Object.entries(dims)) { const color = pct < 50 ? colors.high : pct < 75 ? colors.medium : colors.low; const row = document.createElement('div'); row.className = 'dim-row'; row.innerHTML = '
' + '
'; barsWrap.appendChild(row); setTimeout(() => { row.querySelector('.dim-fill').style.width = pct + '%'; }, 300); }
// Summary text const weakest = Object.entries(dims).sort((a,b) => a[1]-b[1])[0]; const strongest = Object.entries(dims).sort((a,b) => b[1]-a[1])[0]; const summaries = { high: 'Deploying AI now would amplify existing friction rather than remove it. Your weakest dimension — ' + weakest[0] + ' (' + weakest[1] + '%) — would become the bottleneck of any AI initiative. The good news: this is exactly the profile that sees the fastest gains from structured foundation work.', medium: 'You have real foundations to build on — ' + strongest[0] + ' is your strength at ' + strongest[1] + '%. But ' + weakest[0] + ' (' + weakest[1] + '%) would limit AI performance. Targeted fixes here before deployment typically determine whether projects deliver ROI or stall.', low: 'Strong position. Your operations can likely support AI deployment now. Focus remaining attention on ' + weakest[0] + ' (' + weakest[1] + '%) in parallel with your first AI pilots to keep scaling smooth.' }; document.getElementById('resultSummary').innerHTML = summaries[risk];
// Set up payment button this.setupPayment();
// Check if returning from successful payment if (new URLSearchParams(window.location.search).get('paid') === 'true' || localStorage.getItem('ailean_report_unlocked') === 'true') { this.unlockReport(); } },
setupPayment() { document.getElementById('priceDisplay').textContent = CONFIG.PRICE_DISPLAY; const btn = document.getElementById('payBtn'); btn.onclick = (e) => { e.preventDefault(); // Save answers so results survive the Stripe redirect localStorage.setItem('ailean_answers', JSON.stringify(this.answers)); if (CONFIG.STRIPE_PAYMENT_LINK.includes('YOUR_PAYMENT_LINK')) { // Demo mode: unlock immediately so you can preview the full report alert('Demo mode: Stripe link not configured yet.\n\nIn production, this opens Stripe Checkout. Unlocking report now for preview.'); this.unlockReport(); } else { window.location.href = CONFIG.STRIPE_PAYMENT_LINK; } }; },
unlockReport() { localStorage.setItem('ailean_report_unlocked', 'true'); document.getElementById('paywall').style.display = 'none'; const report = document.getElementById('fullReport'); report.style.display = 'block';
const { dims } = this.lastResult; // Build prioritized actions from the 2 weakest dimensions const sorted = Object.entries(dims).sort((a,b) => a[1]-b[1]); const actionsWrap = document.getElementById('reportActions'); actionsWrap.innerHTML = ''; let priority = 1; [sorted[0][0], sorted[1][0]].forEach(dim => { ROADMAP[dim].forEach(([title, desc]) => { if (priority > 5) return; const item = document.createElement('div'); item.className = 'report-item'; item.innerHTML = '
' + desc + '
'; actionsWrap.appendChild(item); priority++; }); });
const seqWrap = document.getElementById('reportSequence'); seqWrap.innerHTML = ''; SEQUENCE.forEach(([phase, desc], i) => { const item = document.createElement('div'); item.className = 'report-item'; item.innerHTML = '
' + desc + '
'; seqWrap.appendChild(item); });
report.scrollIntoView({ behavior: 'smooth', block: 'start' }); },
restart() { localStorage.removeItem('ailean_report_unlocked'); localStorage.removeItem('ailean_answers'); // Clear ?paid=true from URL window.history.replaceState({}, '', window.location.pathname); this.show('intro'); },
show(name) { ['intro','question','results'].forEach(s => { document.getElementById('screen-' + s).style.display = s === name ? 'block' : 'none'; }); window.scrollTo({ top: 0, behavior: 'smooth' }); },
// Restore state if user returns from Stripe init() { const params = new URLSearchParams(window.location.search); const saved = localStorage.getItem('ailean_answers'); if (params.get('paid') === 'true' && saved) { this.answers = JSON.parse(saved); this.current = QUESTIONS.length - 1; this.showResults(); } } };
AuditApp.init();
// Nav scroll shadow window.addEventListener('scroll', () => { document.getElementById('nav').classList.toggle('scrolled', window.scrollY > 40); });