MyFounderFellow
Private Access
MyFounderFellow
Business Builder Suite  ·  By Invitation Only
Sign in with your Fellow account
Remember me across sessions
Smithy will recall past conversations
Keep conversations private
Don't share memory with other Fellows
Sign in failed. Please try again.
Secure access by Fellow.
WHO'S AT THE FORGE TODAY?
Choose the gender of Smithy's voice for this session
🔥
BEFORE WE BEGIN
Say your name — or type it below
SMITHY
HOW SHOULD SMITHY TALK?
Pick a personality — you can change anytime
WELCOME BACK TO THE FORGE
Stoking the coals
MyFounderFellow
MYFOUNDERFELLOW
Business Builder Suite
Free Beta
RETURN TO A SAVED SESSION
Have a session code? Pick up right where you left off.
That code doesn't look right. Double-check and try again.
YOUR SESSION IS SAVED
This code saves this station's inputs and results. Paste it back on the home screen to pick up right where you left off.
Email it to myself
SHARE YOUR THOUGHTS
Got an idea that would make MyFounderFellow better? Found a bug? We want to hear it.
Achievement Unlocked
Rank Achieved
FORGE
MASTER
12
Stations Forged
Date Forged
I
Forge Rank
"You walked every station. You came in with nothing but an idea — you leave with a business. The name, the pitch, the customers, the price, the structure. It's all yours now."
— Smithy
SMITHY
Listening
SMITHY'S MOOD
VOICE ON
SPEAK ANYTIME
FORGE LOG
The forge is quiet. Start a conversation with Smithy.
Session Paused
' + '
Your Fellow stepped away to protect your space.
' + ''; document.body.appendChild(lock); document.getElementById('resumeSessionBtn').addEventListener('click', function() { _resetActivity(); }); return; } if (elapsed >= _WARN_MS && !_warnShown) { // auto-save on pause warning // FF: no consolidation function available yet _warnShown = true; const warn = document.createElement('div'); warn.className = 'inactivity-warning'; warn.id = 'inactivityWarning'; warn.innerHTML = '
Still there?
' + '
Session will pause in 1 minute for privacy.
'; document.body.appendChild(warn); } }, 15000); })(); // ── Smithy Memory: Load consolidated memory on forge open ── window._smithyMemoryLoaded = false; window._smithyMemoryContext = null; async function _loadSmithyMemory() { if (window._smithyMemoryLoaded) return; if (localStorage.getItem('fellow_memory') !== 'on') return; var token = sessionStorage.getItem('ff_token'); if (!token) return; try { var res = await fetch('/.netlify/functions/consolidate', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + token }, body: JSON.stringify({ action: 'get_consolidated', name: window._ffUserName || 'anonymous' }) }); var data = await res.json(); if (data.ok && data.memory) { var ctx = ''; if (data.memory.identity) ctx += '\n[SMITHY MEMORY — WHO THIS FOUNDER IS]\n' + data.memory.identity; if (data.memory.patterns) ctx += '\n[SMITHY MEMORY — PATTERNS]\n' + data.memory.patterns; if (data.memory.recentSessions && data.memory.recentSessions.length > 0) { ctx += '\n[SMITHY MEMORY — RECENT SESSIONS]\n' + data.memory.recentSessions.join('\n'); } if (data.memory.crossFellowMemory) { ctx += '\n[CROSS-FELLOW CONTEXT — What other Fellows know about this person]\n' + data.memory.crossFellowMemory; } if (ctx) window._smithyMemoryContext = ctx; window._smithyMemoryLoaded = true; console.log('[smithy] Memory loaded:', data.memory.isolated ? 'isolated mode' : 'shared mode'); } } catch (e) { console.warn('[smithy] Memory load failed:', e); } } // ── Smithy Memory: Consolidate on session end ── window._ffConsolidateSent = false; function _ffConsolidateSession() { if (window._ffConsolidateSent) return; if (localStorage.getItem('fellow_memory') !== 'on') return; var token = sessionStorage.getItem('ff_token'); if (!token) return; if (typeof _smitherHistory === 'undefined' || _smitherHistory.length < 4) return; var sent = navigator.sendBeacon( '/.netlify/functions/consolidate?token=' + encodeURIComponent(token), new Blob([JSON.stringify({ action: 'summarize_session', name: window._ffUserName || 'anonymous', messages: _smitherHistory.slice(-30).map(function(m) { return { role: m.role, content: (m.content || '').substring(0, 500) }; }) })], { type: 'application/json' }) ); if (sent) { window._ffConsolidateSent = true; console.log('[smithy] Session consolidation sent'); } } // ── Robust save-on-close: sendBeacon + visibilitychange + freeze ── (function() { let _ffSaveOnCloseSent = false; function _ffSaveOnClose() { if (_ffSaveOnCloseSent) return; var token = sessionStorage.getItem('ff_token'); if (!token) return; // Consolidate Smithy session memory _ffConsolidateSession(); // Save Smithy conversation if it exists and has substance if (typeof _smitherHistory !== 'undefined' && _smitherHistory.length >= 4) { var sent = navigator.sendBeacon( '/.netlify/functions/claude-proxy', new Blob([JSON.stringify({ action: 'save_smithy_session', messages: _smitherHistory.slice(-20).map(function(m) { return { role: m.role, content: (m.content || '').substring(0, 300) }; }), token: token })], { type: 'application/json' }) ); if (sent) { _ffSaveOnCloseSent = true; } } // Stop any active audio/recording if (typeof currentAudio !== 'undefined' && currentAudio) { currentAudio.pause(); currentAudio = null; } if (typeof _rawAudio !== 'undefined' && _rawAudio) { _rawAudio.pause(); _rawAudio = null; } if (typeof recognition !== 'undefined' && recognition) { try { recognition.stop(); } catch(e) {} } if (typeof isRecording !== 'undefined') { isRecording = false; } if (typeof _smitherSTT !== 'undefined' && _smitherSTT) { try { _smitherSTT.stop(); } catch(e) {} } } // Layer 1: beforeunload (desktop) window.addEventListener('beforeunload', _ffSaveOnClose); // Layer 2: visibilitychange (mobile, phone lock, app switch) document.addEventListener('visibilitychange', function() { if (document.visibilityState === 'hidden') _ffSaveOnClose(); }); // Layer 3: freeze (browser tab freeze) if ('onfreeze' in document) { document.addEventListener('freeze', _ffSaveOnClose); } })(); // ── DOWNLOAD CONVERSATION BUTTON (FF) ── (function() { var dlBtn = document.createElement('div'); dlBtn.className = 'fellow-dl-btn'; dlBtn.id = 'fellowDlBtn'; dlBtn.title = 'Save this conversation'; dlBtn.innerHTML = ''; dlBtn.onclick = function() { if(typeof exportSmithyChat==='function')exportSmithyChat(); }; document.body.appendChild(dlBtn); setInterval(function() { var msgs = typeof _smitherHistory !== 'undefined' ? _smitherHistory : []; var forgeOpen = document.getElementById('smitherModal') && document.getElementById('smitherModal').classList.contains('open'); dlBtn.classList.toggle('visible', forgeOpen && msgs.length >= 4); }, 2000); })();