Calling Discovery Visual Tools

Calling Discovery Visual Tools

Interactive frameworks to help discover your purpose and calling

Sweet Spot Discovery

What You
LOVE
What You're
GOOD AT
What the World
NEEDS
Your Sweet Spot

Your calling lives here!

What You Love

What You're Good At

What the World Needs

Calling Compass

YOU
DREAMS & PASSIONS
SKILLS & ABILITIES
PERSONALITY & TEMPERAMENT
VALUES & MEANING

Dreams & Passions (North)

Skills & Abilities (South)

Personality & Temperament (East)

Values & Meaning (West)

Life Design Dashboard

Rate each area of your life from 0-100%

50%

Health

Physical, mental, emotional wellbeing

50%

Work

Career satisfaction, purpose, growth

50%

Play

Fun, recreation, creativity, hobbies

50%

Love

Relationships, family, community, spiritual

Odyssey Plans

Design three different 5-year life scenarios

Plan A: Current Trajectory

Your current path if everything goes well

5/10

Plan B: Alternative Path

What you'd do if Plan A wasn't possible

5/10

Plan C: Wild Card

What you'd do if money and image didn't matter

5/10
// Tab functionality document.querySelectorAll('.tab').forEach(tab => { tab.addEventListener('click', () => { // Remove active class from all tabs and sections document.querySelectorAll('.tab').forEach(t => t.classList.remove('active')); document.querySelectorAll('.tool-section').forEach(s => s.classList.remove('active')); // Add active class to clicked tab and corresponding section tab.classList.add('active'); document.getElementById(tab.getAttribute('data-target')).classList.add('active'); }); }); // Sweet Spot functionality function generateSweetSpot() { const love = document.getElementById('love-input').value; const good = document.getElementById('good-input').value; const needs = document.getElementById('needs-input').value; if (love && good && needs) { const analysis = `Based on your responses, your sweet spot appears to be in helping others through your unique combination of passion, skills, and addressing world needs. Your passion for ${love.split('.')[0].toLowerCase()} combined with your strength in ${good.split('.')[0].toLowerCase()} could address the world's need for ${needs.split('.')[0].toLowerCase()}. Consider roles, projects, or causes that allow you to express these three elements simultaneously. This is where you'll find both fulfillment and impact.`; document.getElementById('sweet-spot-text').textContent = analysis; document.getElementById('sweet-spot-results').style.display = 'block'; } else { alert('Please fill in all three sections before generating your sweet spot.'); } } function saveSweetSpot() { const data = { love: document.getElementById('love-input').value, good: document.getElementById('good-input').value, needs: document.getElementById('needs-input').value, analysis: document.getElementById('sweet-spot-text').textContent }; const blob = new Blob([JSON.stringify(data, null, 2)], { type: 'application/json' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'sweet-spot-analysis.json'; a.click(); URL.revokeObjectURL(url); } // Compass functionality function showCompassDetail(direction) { const details = { north: "Dreams & Passions represent your deepest desires and what energizes you most.", south: "Skills & Abilities are your natural talents and developed competencies.", east: "Personality & Temperament reflect how you prefer to work and interact.", west: "Values & Meaning define what matters most to you and your desired legacy." }; alert(details[direction]); } function generateCompass() { const dreams = document.getElementById('dreams-input').value; const skills = document.getElementById('skills-input').value; const personality = document.getElementById('personality-input').value; const values = document.getElementById('values-input').value; if (dreams && skills && personality && values) { const analysis = `Your calling compass points toward a path that combines your dreams with your natural abilities while honoring your personality and values. The intersection of your passion for ${dreams.split('.')[0].toLowerCase()}, your skills in ${skills.split('.')[0].toLowerCase()}, your ${personality.split('.')[0].toLowerCase()} nature, and your value of ${values.split('.')[0].toLowerCase()} suggests a calling in roles that allow you to express all these elements. Look for opportunities that engage your dreams, utilize your skills, match your temperament, and align with your values.`; document.getElementById('compass-text').textContent = analysis; document.getElementById('compass-results').style.display = 'block'; } else { alert('Please fill in all four compass directions before generating your analysis.'); } } function saveCompass() { const data = { dreams: document.getElementById('dreams-input').value, skills: document.getElementById('skills-input').value, personality: document.getElementById('personality-input').value, values: document.getElementById('values-input').value, analysis: document.getElementById('compass-text').textContent }; const blob = new Blob([JSON.stringify(data, null, 2)], { type: 'application/json' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'calling-compass-analysis.json'; a.click(); URL.revokeObjectURL(url); } // Dashboard functionality function updateGauge(category, value) { const gauge = document.getElementById(category + '-gauge'); const valueSpan = document.getElementById(category + '-value'); valueSpan.textContent = value; const percentage = (value / 100) * 360; const color = getGaugeColor(value); gauge.style.background = `conic-gradient(${color} 0deg, ${color} ${percentage}deg, #e2e8f0 ${percentage}deg, #e2e8f0 360deg)`; } function getGaugeColor(value) { if (value < 30) return '#ff6b6b'; if (value < 70) return '#f39c12'; return '#38a169'; } function analyzeDashboard() { const health = document.getElementById('health-slider').value; const work = document.getElementById('work-slider').value; const play = document.getElementById('play-slider').value; const love = document.getElementById('love-slider').value; const values = [health, work, play, love]; const labels = ['Health', 'Work', 'Play', 'Love']; const lowest = Math.min(...values); const highest = Math.max(...values); const lowestIndex = values.indexOf(lowest);