Before an AI bot ever talks to a real customer, pilot-test it here. Ask it real questions, see what it would actually say, catch what it gets wrong or shouldn't answer alone — then export a ready-to-use knowledge base and escalation ruleset for whatever you deploy.
Food service, walk-in and online orders.
Coaching, design, writing, advisory work.
Education or skills-training business.
Appointment-based personal services.
Online store or product reviews and links.
Plumbing, electrical, repair, home services.
Products/services, channels, pricing basics, policies — anything a new support hire would need on day one.
Start with what you already know. You'll add more as the pilot reveals gaps.
Type questions the way customers actually ask them. After each answer, mark it — that's what builds the real ruleset, not your upfront guesses.
Three formats of the same decisions — pick whichever your platform takes, or keep all three.
Look for the chat bubble in the bottom-right corner of this page — that's built from your approved answer bank and escalation rules. Click it and ask the same questions a customer would.
The widget file has all your approved answers and escalation rules baked in already — it doesn't need this studio to work. The setup guide walks through adding it to WordPress, Shopify, Wix, Squarespace, or a plain HTML site, step by step.
" tag.'); lines.push('5. Save and upload/publish the page. Reload it in your browser — the chat bubble should appear in the bottom-right corner.'); lines.push(''); lines.push('OPTION B — WORDPRESS'); lines.push('1. In your WordPress dashboard, go to Appearance > Theme File Editor (or use a "Insert Headers and Footers" / "Code Snippets" plugin if your theme editor is restricted — recommended, since it survives theme updates).'); lines.push('2. Paste the same block described in Option A step 2 into your theme\'s footer.php, just before "", or into the plugin\'s "footer scripts" box.'); lines.push('3. Save. The bubble will now appear on every page using that theme/footer.'); lines.push(''); lines.push('OPTION C — SHOPIFY'); lines.push('1. Go to Online Store > Themes > Edit code.'); lines.push('2. Open "theme.liquid" under the Layout folder.'); lines.push('3. Paste the block from Option A step 2 just before "".'); lines.push('4. Save. The bubble will appear storewide.'); lines.push(''); lines.push('OPTION D — WIX'); lines.push('1. Go to Settings > Custom Code (under Advanced).'); lines.push('2. Add a new custom code snippet, paste the block from Option A step 2 in, set it to load on "All Pages" and place it at "Body - end".'); lines.push('3. Save and publish your site.'); lines.push(''); lines.push('OPTION E — SQUARESPACE'); lines.push('1. Go to Settings > Advanced > Code Injection.'); lines.push('2. Paste the block from Option A step 2 into the "Footer" box.'); lines.push('3. Save. Squarespace applies footer code sitewide automatically.'); lines.push(''); lines.push('TESTING AFTER YOU ADD IT'); lines.push('1. Open your live site in a fresh/incognito browser window (so you see it the way a new visitor would).'); lines.push('2. Click the chat bubble, paste a Gemini key when asked, and ask a few of the same questions you tested in the pilot.'); lines.push('3. Confirm the answers match what you approved, and that anything on your escalation list correctly says a person will follow up rather than guessing.'); lines.push('4. If something looks off, come back to Support Boundary Studio, load your saved pilot (or run a few more pilot questions), re-export, and download a fresh widget file to replace this one.'); return lines.join('\n'); } document.getElementById('downloadGuideBtn').addEventListener('click', function () { downloadFile('support-boundary-widget-setup-guide.txt', buildSetupGuide(), 'text/plain'); }); document.getElementById('restartBtn').addEventListener('click', function () { if (!confirm('Start a new pilot? This clears the current business setup, rules, and approved answer bank.')) return; clearDraft(); window.location.reload(); }); var exportBtn = document.getElementById('exportDraftBtn'); if (exportBtn) exportBtn.addEventListener('click', exportDraftFile); var importInput = document.getElementById('importDraftInput'); if (importInput) { importInput.addEventListener('change', function () { var file = this.files && this.files[0]; if (!file) return; var reader = new FileReader(); reader.onload = function () { try { var draft = JSON.parse(reader.result); applyDraftObject(draft); saveDraft(); var bar = document.getElementById('draftRestoredNote'); if (bar) { bar.hidden = false; bar.textContent = 'Loaded pilot from ' + file.name + '.'; } } catch (e) { alert('Could not read that file — make sure it is a JSON file exported from this app.'); } }; reader.readAsText(file); importInput.value = ''; }); } var clearBtn = document.getElementById('clearDraftBtn'); if (clearBtn) { clearBtn.addEventListener('click', function () { if (!confirm('Clear all saved pilot data and start fresh? This cannot be undone.')) return; clearDraft(); window.location.reload(); }); } renderRules(); restoreDraft(); if (localStorage.getItem(DRAFT_STORAGE)) { try { var d = JSON.parse(localStorage.getItem(DRAFT_STORAGE)); var bar = document.getElementById('draftRestoredNote'); if (bar && (d.bizContext || (d.bank && d.bank.length))) { bar.hidden = false; bar.textContent = 'Restored your saved pilot from ' + (d.savedAt ? new Date(d.savedAt).toLocaleString() : 'earlier') + '.'; } } catch (e) { /* ignore */ } } })();