Build your quote
A few quick taps
Each choice updates your price on the right. No account needed to see it.
1Who's in the video?
set({ avatar: 'ready', voice: sel.voice === 'cloned' ? 'stock' : sel.voice })}
icon="user" title="Ready-made avatar" desc="Pick a polished presenter from our library." incl="Included" />
set({ avatar: 'twin' })}
icon="user-plus" title="My own digital twin" desc="A lifelike twin of you, set up once and reused forever." add={'+ ' + window.fmt(window.twinSetupPrice(margin)) + ' one-time setup'} />
2How long?
{Object.entries(window.PRICE.length).map(([k, v]) => (
set({ length: k })} title={v.label} desc={v.hint} />
))}
3What style?
set({ style: 'talking' })}
icon="user" title="Simple talking-head" desc="Clean, direct presenter to camera. Great for most posts." incl="Standard" />
set({ style: 'cinematic' })}
icon="film" title="Cinematic" desc="B-roll, scenes and motion — a richer, produced look." add="Premium render" />
4Whose voice?
set({ voice: 'stock' })}
icon="microphone" title="Stock voice" desc="A natural, professional voice from our library." incl="Included" />
sel.avatar === 'twin' && set({ voice: 'cloned' })}
icon="microphone" title="My cloned voice" desc="Sounds like you — comes with your digital twin."
lockedMsg={sel.avatar !== 'twin' ? 'Choose “My own digital twin” to unlock' : null}
incl={sel.avatar === 'twin' ? 'Included with your twin' : null} />
5Add background music?
set({ music: true })} icon="music" title="Yes, add music" desc="A licensed track that fits the mood." add={'+ ' + window.fmt(window.musicPrice(margin))} />
set({ music: false })} icon="music-off" title="No music" desc="Just the voice." incl="—" />
6Your script — or just describe the idea
{sel.script.trim() ? sel.script.trim().split(/\s+/).length + ' words' : 'Optional to quote'}
Help me write it