VoiceLock

VoiceLock™ Brand Voice Setup Kit

* {
margin: 0;
padding: 0;
box-sizing: border-box;
}

body {
font-family: -apple-system, BlinkMacSystemFont, ‘Segoe UI’, Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh;
padding: 20px;
}

.container {
max-width: 900px;
margin: 0 auto;
background: white;
border-radius: 20px;
box-shadow: 0 20px 60px rgba(0,0,0,0.3);
overflow: hidden;
}

.header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 40px;
text-align: center;
}

.header h1 {
font-size: 2.5em;
margin-bottom: 10px;
}

.lock-icon {
font-size: 3em;
margin-bottom: 15px;
}

.promise {
font-size: 1.1em;
opacity: 0.95;
margin-top: 15px;
}

.content {
padding: 40px;
}

.section {
margin-bottom: 40px;
padding: 30px;
background: #f8f9fa;
border-radius: 15px;
border-left: 5px solid #667eea;
}

.section h2 {
color: #667eea;
margin-bottom: 20px;
font-size: 1.8em;
}

.section-intro {
color: #666;
margin-bottom: 20px;
font-style: italic;
}

.slider-container {
margin: 25px 0;
}

.slider-label {
display: flex;
justify-content: space-between;
margin-bottom: 10px;
font-weight: 600;
color: #333;
}

.slider-endpoints {
display: flex;
justify-content: space-between;
margin-top: 8px;
font-size: 0.9em;
color: #666;
}

input[type=”range”] {
width: 100%;
height: 8px;
border-radius: 5px;
background: #ddd;
outline: none;
-webkit-appearance: none;
}

input[type=”range”]::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 24px;
height: 24px;
border-radius: 50%;
background: #667eea;
cursor: pointer;
box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

input[type=”range”]::-moz-range-thumb {
width: 24px;
height: 24px;
border-radius: 50%;
background: #667eea;
cursor: pointer;
box-shadow: 0 2px 5px rgba(0,0,0,0.2);
}

.cta-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 15px;
margin-top: 20px;
}

.cta-option {
padding: 15px;
background: white;
border: 2px solid #e0e0e0;
border-radius: 10px;
cursor: pointer;
transition: all 0.3s;
text-align: center;
}

.cta-option:hover {
border-color: #667eea;
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(102, 126, 234, 0.2);
}

.cta-option.selected {
background: #667eea;
color: white;
border-color: #667eea;
}

textarea, input[type=”text”] {
width: 100%;
padding: 15px;
border: 2px solid #e0e0e0;
border-radius: 10px;
font-family: inherit;
font-size: 1em;
margin-top: 10px;
transition: border-color 0.3s;
}

textarea:focus, input[type=”text”]:focus {
outline: none;
border-color: #667eea;
}

textarea {
min-height: 120px;
resize: vertical;
}

.example-box {
background: white;
padding: 20px;
border-radius: 10px;
margin: 15px 0;
border-left: 4px solid #667eea;
}

.example-label {
font-weight: 600;
color: #667eea;
margin-bottom: 10px;
}

.tag-container {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin-top: 15px;
}

.tag {
background: #fff;
border: 2px solid #e0e0e0;
padding: 8px 15px;
border-radius: 20px;
cursor: pointer;
transition: all 0.3s;
}

.tag:hover {
border-color: #667eea;
background: #f0f4ff;
}

.tag.selected {
background: #667eea;
color: white;
border-color: #667eea;
}

.prompt-box {
background: #2d3748;
color: #e2e8f0;
padding: 20px;
border-radius: 10px;
margin: 15px 0;
position: relative;
}

.prompt-box pre {
white-space: pre-wrap;
word-wrap: break-word;
font-family: ‘Monaco’, ‘Courier New’, monospace;
font-size: 0.9em;
line-height: 1.6;
}

.copy-btn {
position: absolute;
top: 15px;
right: 15px;
background: #667eea;
color: white;
border: none;
padding: 8px 15px;
border-radius: 5px;
cursor: pointer;
font-size: 0.9em;
transition: background 0.3s;
}

.copy-btn:hover {
background: #5568d3;
}

.copy-btn.copied {
background: #48bb78;
}

.generate-btn {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
border: none;
padding: 15px 40px;
border-radius: 10px;
font-size: 1.1em;
font-weight: 600;
cursor: pointer;
width: 100%;
margin-top: 20px;
transition: transform 0.3s, box-shadow 0.3s;
}

.generate-btn:hover {
transform: translateY(-2px);
box-shadow: 0 10px 25px rgba(102, 126, 234, 0.4);
}

.output-section {
background: #f0f4ff;
padding: 30px;
border-radius: 15px;
margin-top: 30px;
display: none;
}

.output-section.visible {
display: block;
}

.output-title {
font-size: 1.5em;
color: #667eea;
margin-bottom: 20px;
font-weight: 600;
}

.timer {
text-align: center;
font-size: 3em;
color: #667eea;
margin: 20px 0;
font-weight: 700;
}

.input-group {
margin-bottom: 20px;
}

.input-label {
font-weight: 600;
color: #333;
margin-bottom: 8px;
display: block;
}

.dos-donts {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
margin-top: 20px;
}

.do-column, .dont-column {
background: white;
padding: 20px;
border-radius: 10px;
}

.do-column {
border-left: 4px solid #48bb78;
}

.dont-column {
border-left: 4px solid #f56565;
}

.column-title {
font-weight: 600;
margin-bottom: 15px;
font-size: 1.1em;
}

.do-column .column-title {
color: #48bb78;
}

.dont-column .column-title {
color: #f56565;
}

@media (max-width: 768px) {
.dos-donts {
grid-template-columns: 1fr;
}

.header h1 {
font-size: 1.8em;
}

.content {
padding: 20px;
}
}

VoiceLock

Lock in your brand voice in 15 minutes. Never sound generic again.

15:00

Sliders

Slide to set your brand’s personality dimensions

Tone
Professional

Formal/Corporate
Casual/Conversational

Energy
Balanced

Calm/Understated
Energetic/Excitable

Complexity
Moderate

Simple/Direct
Sophisticated/Nuanced

Humor
Occasional

Serious/Straightforward
Playful/Witty

Empathy
Supportive

Direct/Efficient
Warm/Nurturing

📣 CTA Menu

Select your go-to calls-to-action (choose up to 5)

Get started
Learn more
Try it free
Book a demo
Join now
Grab yours
Dive in
Start building
Sign up
Get the guide
Download now
See it in action

Custom CTAs (comma-separated):

✍️ Sound-Like-Me Examples

Paste 3 examples of your best copy that captures your voice

Example 1: (Headline, social post, or email)

Example 2: (Different format or context)

Example 3: (Different tone or purpose)

✅ ❌ Dos & Don’ts

Define your non-negotiables

✅ Always Do

❌ Never Do

🚫 Taboo Words & Phrases

Words and phrases to NEVER use in your copy

Synergy
Leverage
Disrupt
Game-changer
Best-in-class
Cutting-edge
Innovative solution
Revolutionary
Utilize
Empower
Ecosystem
Seamless

Add your own taboo words/phrases (comma-separated):

🔒 Generate My VoiceLock™ Prompts

🎉 Your VoiceLock™ Prompts Are Ready!

📋 Starter Prompt #1: General Content Creation

Copy

📋 Starter Prompt #2: Email/Sales Copy

Copy

📋 Starter Prompt #3: Social Media

Copy

🔧 “Make It More Me” Fix Prompts

Use these when the output doesn’t quite sound like you

Fix #1: Too Formal/Stiff

Copy
Rewrite this in my brand voice. Make it less formal and more conversational. Reference my voice profile where I specified [insert your tone preference]. Keep the key points but make it sound like I’m talking to a friend.

Fix #2: Too Generic/Bland

Copy
This sounds too generic. Add more personality based on my voice examples. Make it more specific, use my typical CTAs, and inject some of my characteristic [energy/humor/empathy]. Avoid any taboo words from my list.

Fix #3: Wrong Energy Level

Copy
Adjust the energy level of this copy. Based on my voice profile, I need this to be [more/less] energetic. Dial it to a [1-5] on the energy scale I specified, while keeping the core message intact.

Fix #4: Breaking Voice Rules

Copy
Review this against my voice “Don’ts” list and rewrite to fix any violations. Check for: taboo words, sentence length issues, jargon, and formatting problems. Keep what works, fix what doesn’t.

// Timer functionality
let timeLeft = 15 * 60; // 15 minutes in seconds
let timerInterval;

function startTimer() {
timerInterval = setInterval(() => {
timeLeft–;
const minutes = Math.floor(timeLeft / 60);
const seconds = timeLeft % 60;
document.getElementById(‘timer’).textContent =
`${minutes.toString().padStart(2, ‘0’)}:${seconds.toString().padStart(2, ‘0’)}`;

if (timeLeft {
const element = document.getElementById(`${slider}-slider`);
const valueDisplay = document.getElementById(`${slider}-value`);

element.addEventListener(‘input’, (e) => {
const value = parseInt(e.target.value);
valueDisplay.textContent = sliders[slider][value – 1];
});
});

// CTA selection
const ctaGrid = document.getElementById(‘cta-grid’);
const selectedCTAs = new Set();

ctaGrid.addEventListener(‘click’, (e) => {
if (e.target.classList.contains(‘cta-option’)) {
const cta = e.target.dataset.cta;

if (selectedCTAs.has(cta)) {
selectedCTAs.delete(cta);
e.target.classList.remove(‘selected’);
} else if (selectedCTAs.size < 5) { selectedCTAs.add(cta); e.target.classList.add('selected'); } else { alert('You can select up to 5 CTAs. Deselect one first.'); } } }); // Taboo words selection const tagContainer = document.querySelector('.tag-container'); const selectedTaboos = new Set(); tagContainer.addEventListener('click', (e) => {
if (e.target.classList.contains(‘tag’)) {
const word = e.target.textContent;

if (selectedTaboos.has(word)) {
selectedTaboos.delete(word);
e.target.classList.remove(‘selected’);
} else {
selectedTaboos.add(word);
e.target.classList.add(‘selected’);
}
}
});

// Generate prompts
function generatePrompts() {
// Collect all data
const voiceProfile = {
tone: document.getElementById(‘tone-slider’).value,
toneLabel: sliders.tone[document.getElementById(‘tone-slider’).value – 1],
energy: document.getElementById(‘energy-slider’).value,
energyLabel: sliders.energy[document.getElementById(‘energy-slider’).value – 1],
complexity: document.getElementById(‘complexity-slider’).value,
complexityLabel: sliders.complexity[document.getElementById(‘complexity-slider’).value – 1],
humor: document.getElementById(‘humor-slider’).value,
humorLabel: sliders.humor[document.getElementById(‘humor-slider’).value – 1],
empathy: document.getElementById(’empathy-slider’).value,
empathyLabel: sliders.empathy[document.getElementById(’empathy-slider’).value – 1],
ctas: Array.from(selectedCTAs),
customCTAs: document.getElementById(‘custom-ctas’).value,
example1: document.getElementById(‘example1’).value,
example2: document.getElementById(‘example2’).value,
example3: document.getElementById(‘example3’).value,
dos: document.getElementById(‘dos’).value,
donts: document.getElementById(‘donts’).value,
taboos: Array.from(selectedTaboos),
customTaboos: document.getElementById(‘custom-taboos’).value
};

// Combine CTAs
let allCTAs = voiceProfile.ctas;
if (voiceProfile.customCTAs) {
allCTAs = allCTAs.concat(voiceProfile.customCTAs.split(‘,’).map(s => s.trim()));
}

// Combine taboos
let allTaboos = voiceProfile.taboos;
if (voiceProfile.customTaboos) {
allTaboos = allTaboos.concat(voiceProfile.customTaboos.split(‘,’).map(s => s.trim()));
}

// Generate Prompt 1: General Content
const prompt1 = `BRAND VOICE PROFILE – VoiceLock™

Write all content using this exact voice profile:

TONE & STYLE:
– Tone: ${voiceProfile.toneLabel} (${voiceProfile.tone}/5)
– Energy: ${voiceProfile.energyLabel} (${voiceProfile.energy}/5)
– Complexity: ${voiceProfile.complexityLabel} (${voiceProfile.complexity}/5)
– Humor: ${voiceProfile.humorLabel} (${voiceProfile.humor}/5)
– Empathy: ${voiceProfile.empathyLabel} (${voiceProfile.empathy}/5)

PREFERRED CTAs:
${allCTAs.map(cta => `- ${cta}`).join(‘n’)}

VOICE EXAMPLES (match this style):
Example 1: ${voiceProfile.example1 || ‘[Not provided]’}

Example 2: ${voiceProfile.example2 || ‘[Not provided]’}

Example 3: ${voiceProfile.example3 || ‘[Not provided]’}

ALWAYS DO:
${voiceProfile.dos || ‘- [Not specified]’}

NEVER DO:
${voiceProfile.donts || ‘- [Not specified]’}

TABOO WORDS/PHRASES (never use these):
${allTaboos.join(‘, ‘)}


Now write [describe your content need here] using this exact voice profile.`;

// Generate Prompt 2: Email/Sales Copy
const prompt2 = `VOICELOCK™ PROFILE – EMAIL/SALES COPY

Write this email/sales copy matching my brand voice exactly:

VOICE SETTINGS:
– Tone: ${voiceProfile.toneLabel}
– Energy: ${voiceProfile.energyLabel}
– Empathy: ${voiceProfile.empathyLabel}

USE THESE CTAs ONLY:
${allCTAs.join(‘, ‘)}

MATCH THESE WRITING EXAMPLES:
${voiceProfile.example1 ? `”${voiceProfile.example1.substring(0, 150)}…”` : ‘[No examples provided]’}

WRITING RULES:
✅ Do: ${voiceProfile.dos ? voiceProfile.dos.split(‘n’)[0] : ‘Follow brand guidelines’}
❌ Don’t: ${voiceProfile.donts ? voiceProfile.donts.split(‘n’)[0] : ‘Break brand voice’}

BANNED WORDS: ${allTaboos.slice(0, 10).join(‘, ‘)}


Subject: [Your topic]
Write the email/sales copy here, maintaining my exact voice throughout.`;

// Generate Prompt 3: Social Media
const prompt3 = `VOICELOCK™ – SOCIAL MEDIA VOICE

Create social media content in my brand voice:

PERSONALITY SETTINGS:
– ${voiceProfile.toneLabel} tone
– ${voiceProfile.energyLabel} energy
– ${voiceProfile.humorLabel} humor level

VOICE REFERENCE:
Study how I write: ${voiceProfile.example1 ? `”${voiceProfile.example1.substring(0, 100)}…”` : ‘[Paste your examples in main profile]’}

CALLS-TO-ACTION TO USE:
${allCTAs.slice(0, 5).join(‘ | ‘)}

NEVER USE: ${allTaboos.slice(0, 8).join(‘, ‘)}

RULES:
${voiceProfile.dos ? ‘✅ ‘ + voiceProfile.dos.split(‘n’).slice(0, 3).join(‘n✅ ‘) : ‘✅ Stay on brand’}


Platform: [Instagram/LinkedIn/Twitter/etc]
Topic: [Your topic]
Write the post in my voice:`;

// Display prompts
document.getElementById(‘prompt1’).textContent = prompt1;
document.getElementById(‘prompt2’).textContent = prompt2;
document.getElementById(‘prompt3’).textContent = prompt3;

// Show output section
document.getElementById(‘output-section’).classList.add(‘visible’);

// Scroll to output
document.getElementById(‘output-section’).scrollIntoView({ behavior: ‘smooth’ });
}

// Copy prompt functionality
function copyPrompt(button, promptId) {
const promptText = document.getElementById(promptId).textContent;
navigator.clipboard.writeText(promptText).then(() => {
button.textContent = ‘Copied! ✓’;
button.classList.add(‘copied’);

setTimeout(() => {
button.textContent = ‘Copy’;
button.classList.remove(‘copied’);
}, 2000);
});
}