Portfolio Project Generator | IDOL Academy
Portfolio Project Generator

Your first project brief,
ready in seconds.

No blank page. No decision fatigue. A real performance problem, a fictional company, brand assets, and everything you need to build a portfolio piece that proves you can do this work.

Customize your brief — optional. Leave blank for a random project.
Entry Level
Entry LevelDevelopingAdvanced

Building your company...

Designing your project brief

Acme Learning Co.
Healthcare
Target Audience
The Performance Problem
Business Context
Brand Style Guide
What Portfolio-Ready Looks Like
    Brief ID:
    Ready to build this?

    IDOL Academy teaches you exactly how to design and build this kind of project — from the needs analysis through the final deliverable. 16 credentials. Real portfolio work. Personal review from Dr. Robin every milestone.

    Explore IDOL Academy Book an Admissions Conversation Try It Free First
    Built in IDOL Academy

    This generator was built using the same AI and design skills taught in the eLearning and IDOLai sections of the program. The brief you're reading was generated by Claude, using a system prompt grounded in real ID methodology. That's what you'll know how to build.

    ' const QUIZ_URL_BASE = 'https://idolcourses.com/portfolio-generator'; /* ============================================================ STATE ============================================================ */ let lastWasPersonalized = false; let currentBriefId = ''; /* ============================================================ URL PARAMS ============================================================ */ function getParam(k){return new URLSearchParams(window.location.search).get(k)} window.addEventListener('DOMContentLoaded',()=>{ const name = getParam('name'); if(name && name.trim()){ const g = document.getElementById('name-greeting'); g.innerHTML = `Hey ${name}. No blank page. No "what should I build?" paralysis. Your project brief is one click away.`; g.style.display = 'block'; } const briefId = getParam('brief'); if(briefId) loadSharedBrief(briefId); updateDiff(); }); /* ============================================================ DIFFICULTY ============================================================ */ function updateDiff(){ const v = parseInt(document.getElementById('diff-slider').value); const labels = ['Entry Level','Developing','Advanced']; const pcts = ['17%','50%','83%']; document.getElementById('diff-label').textContent = labels[v-1]; document.getElementById('diff-slider').style.setProperty('--pct', pcts[v-1]); } /* ============================================================ LOADING MESSAGES ============================================================ */ const loadMsgs = [ 'Building your company...', 'Writing the performance problem...', 'Designing your brand assets...', 'Identifying your target audience...', 'Building your project brief...' ]; /* ============================================================ GENERATE ============================================================ */ async function generate(personalized){ lastWasPersonalized = personalized; const diff = parseInt(document.getElementById('diff-slider').value); const diffLabels = ['entry-level','developing','advanced']; const diffLabel = diffLabels[diff-1]; const bg = personalized ? document.getElementById('sel-background').value : ''; const industry = personalized ? document.getElementById('sel-industry').value : ''; const format = personalized ? document.getElementById('sel-format').value : ''; document.getElementById('controls-card').style.display = 'none'; document.getElementById('brief-wrap').style.display = 'none'; const loadEl = document.getElementById('loading-wrap'); loadEl.style.display = 'block'; const msgEl = document.getElementById('loading-msg'); msgEl.style.transition = 'opacity .2s'; let step = 0; const iv = setInterval(()=>{ if(step < loadMsgs.length){ msgEl.style.opacity='0'; setTimeout(()=>{msgEl.textContent=loadMsgs[step];msgEl.style.opacity='1';},200); step++; } },900); try{ let data; if(AI_ENDPOINT){ const bgContext = bg ? `The learner's background is: ${bg}.` : ''; const industryContext = industry ? `The company should be in the ${industry} industry.` : ''; const formatContext = format ? `Lean toward a ${format} deliverable suggestion.` : ''; const resp = await fetch(AI_ENDPOINT,{ method:'POST', headers:{'Content-Type':'application/json'}, body:JSON.stringify({ model:'claude-sonnet-4-20250514', max_tokens:1200, system:`You are an expert instructional designer creating realistic portfolio project briefs for people learning instructional design. You follow IDOL Academy methodology founded by Dr. Robin Sargent: ID is performance problem solving first, training is not always the answer, good design starts with needs analysis. Create briefs that are realistic, specific, and professionally challenging. Return ONLY valid compact JSON, no markdown.`, messages:[{role:'user',content:`Create a ${diffLabel} instructional design portfolio project brief. ${bgContext} ${industryContext} ${formatContext} Return ONLY this JSON: { "company_name": "Fictional company name (realistic, not generic)", "industry": "Industry sector (2-3 words)", "company_about": "One sentence describing what this company does and its size/culture.", "brand_colors": ["#hex1","#hex2","#hex3"], "brand_primary_font": "A real Google Font name appropriate for this company", "brand_voice": "2-4 words describing brand tone (e.g. Direct and data-driven)", "brand_logo_concept": "One sentence describing what their logo looks like", "audience_tags": ["Tag 1","Tag 2","Tag 3"], "audience_detail": "One sentence describing the learner profile — role, experience level, context.", "problem_type": "Knowledge Gap / Skill Gap / Motivation Gap / Process Gap", "problem_statement": "2-3 sentences. A real performance problem, not a training request. What people are doing or not doing, and what it's costing the business.", "business_context": "2-3 sentences. Why this problem exists, what's at stake, what the stakeholder is asking for and why that may or may not be the full answer.", "deliverable_suggestions": [ {"name":"Deliverable type","why":"One sentence on why this format fits this problem","tools":["Tool A","Tool B"]}, {"name":"Deliverable type","why":"One sentence on why this format fits this problem","tools":["Tool A","Tool B"]}, {"name":"Deliverable type","why":"One sentence on why this format fits this problem","tools":["Tool A","Tool B"]} ], "success_criteria": ["Specific observable outcome 1","Specific observable outcome 2","Specific observable outcome 3"] }`}] }) }); const raw = await resp.json(); const text = raw.content.filter(c=>c.type==='text').map(c=>c.text).join(''); data = JSON.parse(text.replace(/```json|```/g,'').trim()); } else { data = getFallback(diffLabel, industry, bg); } clearInterval(iv); await new Promise(r=>setTimeout(r,400)); loadEl.style.display='none'; renderBrief(data, diffLabel); } catch(e){ clearInterval(iv); loadEl.style.display='none'; renderBrief(getFallback(diffLabel, industry, bg), diffLabel); } } /* ============================================================ FALLBACKS ============================================================ */ function getFallback(diff, industry, bg){ const pool = [ { company_name:"Meridian Health Partners", industry:"Healthcare", company_about:"A regional hospital network with 4,200 employees across 12 facilities, known for patient-centered care and high staff turnover.", brand_colors:["#1B4F72","#2ECC71","#F8F9FA"], brand_primary_font:"IBM Plex Sans", brand_voice:"Clear, compassionate, precise", brand_logo_concept:"A stylized green cross with a horizontal line suggesting a heartbeat monitor.", audience_tags:["Nursing Staff","New Hires","Clinical Teams"], audience_detail:"Registered nurses and clinical staff in their first 90 days, ranging from recent graduates to experienced nurses new to the Meridian system.", problem_type:"Skill Gap", problem_statement:"Patient fall rates in the medical-surgical unit have increased 22% over the past two quarters despite mandatory safety training completion rates above 95%. Staff can pass the knowledge check but are not consistently applying the fall prevention protocol during shift transitions.", business_context:"Each preventable fall costs the facility an average of $35,000 in additional care, documentation, and liability exposure. The Director of Nursing suspects the current training gives nurses the right information but doesn't build the habit of applying it during high-pressure handoffs. She needs a solution that works in the actual workflow, not just in a training room.", deliverable_suggestions:[ {name:"Interactive Scenario Module",why:"Lets nurses practice the handoff protocol in a realistic simulation before they face it under pressure.",tools:["Articulate Storyline","Rise 360"]}, {name:"Point-of-Care Job Aid",why:"A quick-reference visual tool nurses can check during actual shift transitions without interrupting workflow.",tools:["Canva","Adobe Express","Genially"]}, {name:"Short Video + Checklist Combo",why:"A 90-second demonstration of correct handoff procedure paired with a laminated checklist for the nurse station.",tools:["Vyond","Camtasia","Canva"]} ], success_criteria:[ "Learners can correctly identify all five fall-risk indicators during a timed scenario walkthrough", "Protocol adherence during observed shift transitions improves measurably within 30 days of rollout", "Falls in the medical-surgical unit trend downward at the 60-day mark compared to baseline" ] }, { company_name:"Vantage Supply Co.", industry:"Logistics", company_about:"A mid-size regional distributor with 800 warehouse and fleet employees, expanding rapidly into same-day delivery markets.", brand_colors:["#E67E22","#2C3E50","#ECF0F1"], brand_primary_font:"Barlow", brand_voice:"Fast, direct, no-nonsense", brand_logo_concept:"An orange arrow pointing right, suggesting speed and forward movement, with the company name in a bold condensed typeface.", audience_tags:["Warehouse Associates","Fleet Drivers","Shift Leads"], audience_detail:"Frontline warehouse associates aged 22-45, most without college degrees, many non-native English speakers, working rotating 10-hour shifts.", problem_type:"Process Gap", problem_statement:"Order accuracy rates have dropped from 98.2% to 94.7% since the new warehouse management system launched eight weeks ago. Associates completed the system training but are creating workarounds that bypass critical scanning steps, slowing fulfillment and generating customer complaints.", business_context:"The operations director believes the training explained the new system but didn't address why the old workarounds feel faster in the moment. Associates under production pressure revert to familiar habits. The real problem isn't knowledge — it's that the new process hasn't become habitual yet and the consequences of workarounds aren't visible until downstream.", deliverable_suggestions:[ {name:"Performance Support Tool",why:"A scannable quick-reference card at each station that reinforces the correct scanning sequence during live work.",tools:["Canva","Adobe Illustrator"]}, {name:"Short eLearning with Branching Scenarios",why:"Simulates the moments when associates are tempted to use workarounds and shows the downstream consequence of each choice.",tools:["Articulate Storyline","Lectora"]}, {name:"Instructor-Led Skills Practice",why:"A 45-minute team huddle design that lets shift leads run weekly micro-practice sessions with real system access.",tools:["Canva (facilitator guide)","Google Slides"]} ], success_criteria:[ "Associates complete the critical scanning sequence without prompting during a supervised floor observation", "Order accuracy returns to 97% or above within 45 days of intervention rollout", "Supervisor-reported workaround frequency drops by at least 60% at the 30-day check-in" ] }, { company_name:"Foxridge Financial", industry:"Financial Services", company_about:"A regional wealth management firm with 320 employees, repositioning its advisor team from transaction-focused to relationship-first client service.", brand_colors:["#2E4057","#C9A84C","#F5F5F0"], brand_primary_font:"Playfair Display", brand_voice:"Refined, trustworthy, confident", brand_logo_concept:"A gold fox silhouette above a thin horizontal rule, with the company name set in a classic serif typeface suggesting longevity and stability.", audience_tags:["Financial Advisors","Client Relations","Senior Associates"], audience_detail:"Licensed financial advisors with 2-15 years of experience, high performers under a commission model, skeptical of training they see as soft skills.", problem_type:"Motivation Gap", problem_statement:"Client retention scores have declined 11 points over 18 months despite strong product performance. Exit surveys consistently cite advisors being 'transactional' and 'not listening.' The firm has run two communication training programs in the past year. Both had strong completion rates. Neither changed observed advisor behavior in client meetings.", business_context:"The head of client experience suspects advisors understand relationship-first service intellectually but don't see the financial upside of changing their approach. They're hitting their commission targets and don't perceive a problem. Training that doesn't address the business case for behavioral change will fail again for the same reason.", deliverable_suggestions:[ {name:"Case Study Learning Module",why:"Shows advisors the revenue and retention data behind relationship-first service in a format they find credible — business outcomes, not soft skills.",tools:["Rise 360","Articulate Storyline"]}, {name:"Client Conversation Scenario Simulation",why:"Lets advisors practice and evaluate two versions of the same client conversation — transactional vs. relationship-first — and see the difference.",tools:["Articulate Storyline","Genially"]}, {name:"Manager Coaching Guide",why:"Equips team leads to reinforce the behaviors in 1:1s using real client feedback data, removing reliance on training alone.",tools:["Canva","Google Docs"]} ], success_criteria:[ "Advisors can articulate the revenue impact of client retention vs. acquisition using the firm's own data", "Observed advisor behavior in mock client meetings shows measurable shift toward discovery questions over product pitches", "Client retention scores trend upward at the 90-day mark following full rollout" ] } ]; return pool[Math.floor(Math.random()*pool.length)]; } /* ============================================================ RENDER ============================================================ */ function renderBrief(data, diffLabel){ const briefId = Math.random().toString(36).substr(2,8).toUpperCase(); currentBriefId = briefId; /* Difficulty badge */ const diffClasses = {entry:'diff-entry','entry-level':'diff-entry',developing:'diff-developing',advanced:'diff-advanced'}; const diffNames = {'entry-level':'Entry Level','developing':'Developing','advanced':'Advanced'}; const dBadge = document.getElementById('diff-badge'); dBadge.className = `diff-badge ${diffClasses[diffLabel]||'diff-entry'}`; dBadge.textContent = diffNames[diffLabel]||'Entry Level'; /* Company */ document.getElementById('co-name').textContent = data.company_name||''; document.getElementById('co-industry').textContent = data.industry||''; document.getElementById('co-about').textContent = data.company_about||''; /* Brand swatch */ const swatchEl = document.getElementById('brand-swatch'); swatchEl.innerHTML = (data.brand_colors||[]).map(c=>`
    `).join(''); /* Audience */ const tagEl = document.getElementById('audience-tags'); tagEl.innerHTML = (data.audience_tags||[]).map(t=>`${t}`).join(''); document.getElementById('audience-detail').innerHTML = data.audience_detail||''; /* Problem */ const ptTag = document.getElementById('problem-type-tag'); const ptColors = { 'Knowledge Gap':'background:rgba(66,186,120,.12);color:#237a45', 'Skill Gap':'background:rgba(86,99,138,.12);color:#3a4669', 'Motivation Gap':'background:rgba(243,185,24,.15);color:#7a5500', 'Process Gap':'background:rgba(245,156,177,.15);color:#8a1a4a', 'Environment Gap':'background:rgba(43,52,80,.1);color:#2b3450' }; const pt = data.problem_type||'Performance Gap'; ptTag.textContent = pt; ptTag.style.cssText = ptColors[pt]||ptColors['Process Gap']; document.getElementById('problem-text').innerHTML = data.problem_statement||''; document.getElementById('context-text').innerHTML = data.business_context||''; /* Brand guide */ const bgEl = document.getElementById('brand-guide'); const colors = data.brand_colors||[]; bgEl.innerHTML = `
    Brand Colors
    ${colors.map(c=>`
    ${c}
    `).join('')}
    Primary Font
    ${data.brand_primary_font||'Open Sans'}
    Brand Voice
    ${data.brand_voice||'Professional, clear'}
    Logo Concept
    ${data.brand_logo_concept||''}
    `; /* Success criteria */ const crEl = document.getElementById('criteria-list'); crEl.innerHTML = (data.success_criteria||[]).map(c=>`
  • ${c}
  • `).join(''); /* Brief ID */ document.getElementById('brief-id').textContent = briefId; /* Deliverables sidebar */ const delivEl = document.getElementById('deliverables-list'); delivEl.innerHTML = (data.deliverable_suggestions||[]).map(d=>`
    ${d.name||''}
    ${d.why||''}
    ${(d.tools||[]).map(t=>`${t}`).join('')}
    `).join(''); /* Share URL */ const shareUrl = `${QUIZ_URL_BASE}?brief=${briefId}`; document.getElementById('share-url').value = shareUrl; /* Show */ document.getElementById('controls-card').style.display = 'block'; const bw = document.getElementById('brief-wrap'); bw.style.display = 'flex'; bw.scrollIntoView({behavior:'smooth',block:'start'}); } /* ============================================================ SHARE ============================================================ */ function copyShareUrl(){ const input = document.getElementById('share-url'); navigator.clipboard.writeText(input.value).then(()=>{ const el = document.getElementById('copy-confirm'); el.textContent = 'Link copied. Post it in the IDOL community for feedback.'; setTimeout(()=>el.textContent='',4000); }); } function loadSharedBrief(id){ /* For now, shared briefs just auto-generate a random brief. Future: store brief data in a database and retrieve by ID. */ setTimeout(()=>generate(false),400); } /* ============================================================ PRINT STYLES ============================================================ */ const printStyles = document.createElement('style'); printStyles.textContent = ` @media print{ .site-header,.hero,.controls-card,.brief-sidebar,.regen-row{display:none!important} .brief-wrap{display:block!important} .brief-card{box-shadow:none;border:1px solid #eee} body{background:white} .main{padding:0} }`; document.head.appendChild(printStyles); const QUIZ_URL_BASE = 'https://idolcourses.com/portfolio-generator'; /* ============================================================ STATE ============================================================ */ let lastWasPersonalized = false; let currentBriefId = ''; /* ============================================================ URL PARAMS ============================================================ */ function getParam(k){return new URLSearchParams(window.location.search).get(k)} window.addEventListener('DOMContentLoaded',()=>{ const name = getParam('name'); if(name && name.trim()){ const g = document.getElementById('name-greeting'); g.innerHTML = `Hey ${name}. No blank page. No "what should I build?" paralysis. Your project brief is one click away.`; g.style.display = 'block'; } const briefId = getParam('brief'); if(briefId) loadSharedBrief(briefId); updateDiff(); }); /* ============================================================ DIFFICULTY ============================================================ */ function updateDiff(){ const v = parseInt(document.getElementById('diff-slider').value); const labels = ['Entry Level','Developing','Advanced']; const pcts = ['17%','50%','83%']; document.getElementById('diff-label').textContent = labels[v-1]; document.getElementById('diff-slider').style.setProperty('--pct', pcts[v-1]); } /* ============================================================ LOADING MESSAGES ============================================================ */ const loadMsgs = [ 'Building your company...', 'Writing the performance problem...', 'Designing your brand assets...', 'Identifying your target audience...', 'Building your project brief...' ]; /* ============================================================ GENERATE ============================================================ */ async function generate(personalized){ lastWasPersonalized = personalized; const diff = parseInt(document.getElementById('diff-slider').value); const diffLabels = ['entry-level','developing','advanced']; const diffLabel = diffLabels[diff-1]; const bg = personalized ? document.getElementById('sel-background').value : ''; const industry = personalized ? document.getElementById('sel-industry').value : ''; const format = personalized ? document.getElementById('sel-format').value : ''; document.getElementById('controls-card').style.display = 'none'; document.getElementById('brief-wrap').style.display = 'none'; const loadEl = document.getElementById('loading-wrap'); loadEl.style.display = 'block'; const msgEl = document.getElementById('loading-msg'); msgEl.style.transition = 'opacity .2s'; let step = 0; const iv = setInterval(()=>{ if(step < loadMsgs.length){ msgEl.style.opacity='0'; setTimeout(()=>{msgEl.textContent=loadMsgs[step];msgEl.style.opacity='1';},200); step++; } },900); try{ let data; if(AI_ENDPOINT){ const bgContext = bg ? `The learner's background is: ${bg}.` : ''; const industryContext = industry ? `The company should be in the ${industry} industry.` : ''; const formatContext = format ? `Lean toward a ${format} deliverable suggestion.` : ''; const resp = await fetch(AI_ENDPOINT,{ method:'POST', headers:{'Content-Type':'application/json'}, body:JSON.stringify({ model:'claude-sonnet-4-20250514', max_tokens:1200, system:`You are an expert instructional designer creating realistic portfolio project briefs for people learning instructional design. You follow IDOL Academy methodology founded by Dr. Robin Sargent: ID is performance problem solving first, training is not always the answer, good design starts with needs analysis. Create briefs that are realistic, specific, and professionally challenging. Return ONLY valid compact JSON, no markdown.`, messages:[{role:'user',content:`Create a ${diffLabel} instructional design portfolio project brief. ${bgContext} ${industryContext} ${formatContext} Return ONLY this JSON: { "company_name": "Fictional company name (realistic, not generic)", "industry": "Industry sector (2-3 words)", "company_about": "One sentence describing what this company does and its size/culture.", "brand_colors": ["#hex1","#hex2","#hex3"], "brand_primary_font": "A real Google Font name appropriate for this company", "brand_voice": "2-4 words describing brand tone (e.g. Direct and data-driven)", "brand_logo_concept": "One sentence describing what their logo looks like", "audience_tags": ["Tag 1","Tag 2","Tag 3"], "audience_detail": "One sentence describing the learner profile — role, experience level, context.", "problem_type": "Knowledge Gap / Skill Gap / Motivation Gap / Process Gap", "problem_statement": "2-3 sentences. A real performance problem, not a training request. What people are doing or not doing, and what it's costing the business.", "business_context": "2-3 sentences. Why this problem exists, what's at stake, what the stakeholder is asking for and why that may or may not be the full answer.", "deliverable_suggestions": [ {"name":"Deliverable type","why":"One sentence on why this format fits this problem","tools":["Tool A","Tool B"]}, {"name":"Deliverable type","why":"One sentence on why this format fits this problem","tools":["Tool A","Tool B"]}, {"name":"Deliverable type","why":"One sentence on why this format fits this problem","tools":["Tool A","Tool B"]} ], "success_criteria": ["Specific observable outcome 1","Specific observable outcome 2","Specific observable outcome 3"] }`}] }) }); const raw = await resp.json(); const text = raw.content.filter(c=>c.type==='text').map(c=>c.text).join(''); data = JSON.parse(text.replace(/```json|```/g,'').trim()); } else { data = getFallback(diffLabel, industry, bg); } clearInterval(iv); await new Promise(r=>setTimeout(r,400)); loadEl.style.display='none'; renderBrief(data, diffLabel); } catch(e){ clearInterval(iv); loadEl.style.display='none'; renderBrief(getFallback(diffLabel, industry, bg), diffLabel); } } /* ============================================================ FALLBACKS ============================================================ */ function getFallback(diff, industry, bg){ const pool = [ { company_name:"Meridian Health Partners", industry:"Healthcare", company_about:"A regional hospital network with 4,200 employees across 12 facilities, known for patient-centered care and high staff turnover.", brand_colors:["#1B4F72","#2ECC71","#F8F9FA"], brand_primary_font:"IBM Plex Sans", brand_voice:"Clear, compassionate, precise", brand_logo_concept:"A stylized green cross with a horizontal line suggesting a heartbeat monitor.", audience_tags:["Nursing Staff","New Hires","Clinical Teams"], audience_detail:"Registered nurses and clinical staff in their first 90 days, ranging from recent graduates to experienced nurses new to the Meridian system.", problem_type:"Skill Gap", problem_statement:"Patient fall rates in the medical-surgical unit have increased 22% over the past two quarters despite mandatory safety training completion rates above 95%. Staff can pass the knowledge check but are not consistently applying the fall prevention protocol during shift transitions.", business_context:"Each preventable fall costs the facility an average of $35,000 in additional care, documentation, and liability exposure. The Director of Nursing suspects the current training gives nurses the right information but doesn't build the habit of applying it during high-pressure handoffs. She needs a solution that works in the actual workflow, not just in a training room.", deliverable_suggestions:[ {name:"Interactive Scenario Module",why:"Lets nurses practice the handoff protocol in a realistic simulation before they face it under pressure.",tools:["Articulate Storyline","Rise 360"]}, {name:"Point-of-Care Job Aid",why:"A quick-reference visual tool nurses can check during actual shift transitions without interrupting workflow.",tools:["Canva","Adobe Express","Genially"]}, {name:"Short Video + Checklist Combo",why:"A 90-second demonstration of correct handoff procedure paired with a laminated checklist for the nurse station.",tools:["Vyond","Camtasia","Canva"]} ], success_criteria:[ "Learners can correctly identify all five fall-risk indicators during a timed scenario walkthrough", "Protocol adherence during observed shift transitions improves measurably within 30 days of rollout", "Falls in the medical-surgical unit trend downward at the 60-day mark compared to baseline" ] }, { company_name:"Vantage Supply Co.", industry:"Logistics", company_about:"A mid-size regional distributor with 800 warehouse and fleet employees, expanding rapidly into same-day delivery markets.", brand_colors:["#E67E22","#2C3E50","#ECF0F1"], brand_primary_font:"Barlow", brand_voice:"Fast, direct, no-nonsense", brand_logo_concept:"An orange arrow pointing right, suggesting speed and forward movement, with the company name in a bold condensed typeface.", audience_tags:["Warehouse Associates","Fleet Drivers","Shift Leads"], audience_detail:"Frontline warehouse associates aged 22-45, most without college degrees, many non-native English speakers, working rotating 10-hour shifts.", problem_type:"Process Gap", problem_statement:"Order accuracy rates have dropped from 98.2% to 94.7% since the new warehouse management system launched eight weeks ago. Associates completed the system training but are creating workarounds that bypass critical scanning steps, slowing fulfillment and generating customer complaints.", business_context:"The operations director believes the training explained the new system but didn't address why the old workarounds feel faster in the moment. Associates under production pressure revert to familiar habits. The real problem isn't knowledge — it's that the new process hasn't become habitual yet and the consequences of workarounds aren't visible until downstream.", deliverable_suggestions:[ {name:"Performance Support Tool",why:"A scannable quick-reference card at each station that reinforces the correct scanning sequence during live work.",tools:["Canva","Adobe Illustrator"]}, {name:"Short eLearning with Branching Scenarios",why:"Simulates the moments when associates are tempted to use workarounds and shows the downstream consequence of each choice.",tools:["Articulate Storyline","Lectora"]}, {name:"Instructor-Led Skills Practice",why:"A 45-minute team huddle design that lets shift leads run weekly micro-practice sessions with real system access.",tools:["Canva (facilitator guide)","Google Slides"]} ], success_criteria:[ "Associates complete the critical scanning sequence without prompting during a supervised floor observation", "Order accuracy returns to 97% or above within 45 days of intervention rollout", "Supervisor-reported workaround frequency drops by at least 60% at the 30-day check-in" ] }, { company_name:"Foxridge Financial", industry:"Financial Services", company_about:"A regional wealth management firm with 320 employees, repositioning its advisor team from transaction-focused to relationship-first client service.", brand_colors:["#2E4057","#C9A84C","#F5F5F0"], brand_primary_font:"Playfair Display", brand_voice:"Refined, trustworthy, confident", brand_logo_concept:"A gold fox silhouette above a thin horizontal rule, with the company name set in a classic serif typeface suggesting longevity and stability.", audience_tags:["Financial Advisors","Client Relations","Senior Associates"], audience_detail:"Licensed financial advisors with 2-15 years of experience, high performers under a commission model, skeptical of training they see as soft skills.", problem_type:"Motivation Gap", problem_statement:"Client retention scores have declined 11 points over 18 months despite strong product performance. Exit surveys consistently cite advisors being 'transactional' and 'not listening.' The firm has run two communication training programs in the past year. Both had strong completion rates. Neither changed observed advisor behavior in client meetings.", business_context:"The head of client experience suspects advisors understand relationship-first service intellectually but don't see the financial upside of changing their approach. They're hitting their commission targets and don't perceive a problem. Training that doesn't address the business case for behavioral change will fail again for the same reason.", deliverable_suggestions:[ {name:"Case Study Learning Module",why:"Shows advisors the revenue and retention data behind relationship-first service in a format they find credible — business outcomes, not soft skills.",tools:["Rise 360","Articulate Storyline"]}, {name:"Client Conversation Scenario Simulation",why:"Lets advisors practice and evaluate two versions of the same client conversation — transactional vs. relationship-first — and see the difference.",tools:["Articulate Storyline","Genially"]}, {name:"Manager Coaching Guide",why:"Equips team leads to reinforce the behaviors in 1:1s using real client feedback data, removing reliance on training alone.",tools:["Canva","Google Docs"]} ], success_criteria:[ "Advisors can articulate the revenue impact of client retention vs. acquisition using the firm's own data", "Observed advisor behavior in mock client meetings shows measurable shift toward discovery questions over product pitches", "Client retention scores trend upward at the 90-day mark following full rollout" ] } ]; return pool[Math.floor(Math.random()*pool.length)]; } /* ============================================================ RENDER ============================================================ */ function renderBrief(data, diffLabel){ const briefId = Math.random().toString(36).substr(2,8).toUpperCase(); currentBriefId = briefId; /* Difficulty badge */ const diffClasses = {entry:'diff-entry','entry-level':'diff-entry',developing:'diff-developing',advanced:'diff-advanced'}; const diffNames = {'entry-level':'Entry Level','developing':'Developing','advanced':'Advanced'}; const dBadge = document.getElementById('diff-badge'); dBadge.className = `diff-badge ${diffClasses[diffLabel]||'diff-entry'}`; dBadge.textContent = diffNames[diffLabel]||'Entry Level'; /* Company */ document.getElementById('co-name').textContent = data.company_name||''; document.getElementById('co-industry').textContent = data.industry||''; document.getElementById('co-about').textContent = data.company_about||''; /* Brand swatch */ const swatchEl = document.getElementById('brand-swatch'); swatchEl.innerHTML = (data.brand_colors||[]).map(c=>`
    `).join(''); /* Audience */ const tagEl = document.getElementById('audience-tags'); tagEl.innerHTML = (data.audience_tags||[]).map(t=>`${t}`).join(''); document.getElementById('audience-detail').innerHTML = data.audience_detail||''; /* Problem */ const ptTag = document.getElementById('problem-type-tag'); const ptColors = { 'Knowledge Gap':'background:rgba(66,186,120,.12);color:#237a45', 'Skill Gap':'background:rgba(86,99,138,.12);color:#3a4669', 'Motivation Gap':'background:rgba(243,185,24,.15);color:#7a5500', 'Process Gap':'background:rgba(245,156,177,.15);color:#8a1a4a', 'Environment Gap':'background:rgba(43,52,80,.1);color:#2b3450' }; const pt = data.problem_type||'Performance Gap'; ptTag.textContent = pt; ptTag.style.cssText = ptColors[pt]||ptColors['Process Gap']; document.getElementById('problem-text').innerHTML = data.problem_statement||''; document.getElementById('context-text').innerHTML = data.business_context||''; /* Brand guide */ const bgEl = document.getElementById('brand-guide'); const colors = data.brand_colors||[]; bgEl.innerHTML = `
    Brand Colors
    ${colors.map(c=>`
    ${c}
    `).join('')}
    Primary Font
    ${data.brand_primary_font||'Open Sans'}
    Brand Voice
    ${data.brand_voice||'Professional, clear'}
    Logo Concept
    ${data.brand_logo_concept||''}
    `; /* Success criteria */ const crEl = document.getElementById('criteria-list'); crEl.innerHTML = (data.success_criteria||[]).map(c=>`
  • ${c}
  • `).join(''); /* Brief ID */ document.getElementById('brief-id').textContent = briefId; /* Deliverables sidebar */ const delivEl = document.getElementById('deliverables-list'); delivEl.innerHTML = (data.deliverable_suggestions||[]).map(d=>`
    ${d.name||''}
    ${d.why||''}
    ${(d.tools||[]).map(t=>`${t}`).join('')}
    `).join(''); /* Share URL */ const shareUrl = `${QUIZ_URL_BASE}?brief=${briefId}`; document.getElementById('share-url').value = shareUrl; /* Show */ document.getElementById('controls-card').style.display = 'block'; const bw = document.getElementById('brief-wrap'); bw.style.display = 'flex'; bw.scrollIntoView({behavior:'smooth',block:'start'}); } /* ============================================================ SHARE ============================================================ */ function copyShareUrl(){ const input = document.getElementById('share-url'); navigator.clipboard.writeText(input.value).then(()=>{ const el = document.getElementById('copy-confirm'); el.textContent = 'Link copied. Post it in the IDOL community for feedback.'; setTimeout(()=>el.textContent='',4000); }); } function loadSharedBrief(id){ /* For now, shared briefs just auto-generate a random brief. Future: store brief data in a database and retrieve by ID. */ setTimeout(()=>generate(false),400); } /* ============================================================ PRINT STYLES ============================================================ */ const printStyles = document.createElement('style'); printStyles.textContent = ` @media print{ .site-header,.hero,.controls-card,.brief-sidebar,.regen-row{display:none!important} .brief-wrap{display:block!important} .brief-card{box-shadow:none;border:1px solid #eee} body{background:white} .main{padding:0} }`; document.head.appendChild(printStyles);