// ROI Calculator + Launch offer + CTA + Footer const ROICalculator = () => { const [rooms, setRooms] = React.useState(80); const [adr, setAdr] = React.useState(680); const [conversions, setConversions] = React.useState(15); // Conservative model: // - Without Chat Hotel: a hotel converts a baseline % of inbound contacts. // - With Chat Hotel: 24/7 + zero friction → +X% conversion lift. // - Plus upsell autônomo: ticket médio +12%. const monthlyContacts = rooms * 18; // ~18 inbound contacts per room/month average const liftPct = 0.32; // +32% conversion lift (industry conservative for 24/7 + humanized) const additionalReservations = Math.round(monthlyContacts * (conversions / 100) * liftPct); const additionalRevenue = additionalReservations * adr * 1.8; // avg 1.8 nights const upsellRevenue = Math.round(additionalReservations * 180); // avg upsell per booking const totalMonthly = additionalRevenue + upsellRevenue; const yearly = totalMonthly * 12; const fmt = (n) => 'R$ ' + Math.round(n).toLocaleString('pt-BR'); return (
CALCULADORA DE RETORNO

Quanto o Chat Hotel
devolve ao seu hotel.

Estimativa baseada em ganho de conversão 24/7 + upsell autônomo. Ajuste os parâmetros do seu hotel.

SEU HOTEL
'R$ ' + v.toLocaleString('pt-BR')}/> v + '%'}/>
CONTATOS ESTIMADOS / MÊS · {monthlyContacts.toLocaleString('pt-BR')}
GANHO DE CONVERSÃO APLICADO · +32%
UPSELL MÉDIO · R$ 180 / RESERVA
RECEITA INCREMENTAL ESTIMADA
POR MÊS
{fmt(totalMonthly)}
POR ANO
{fmt(yearly)}
Quero capturar essa receita
· Estimativas conservadoras baseadas em médias de mercado. Cada hotel é um caso.
); }; const Slider = ({ label, value, setValue, min, max, step, formatter }) => (
{label} {formatter ? formatter(value) : value}
setValue(Number(e.target.value))} style={{ width: '100%', appearance: 'none', height: 4, background: `linear-gradient(to right, var(--brand) 0%, var(--brand) ${((value-min)/(max-min))*100}%, var(--line) ${((value-min)/(max-min))*100}%, var(--line) 100%)`, borderRadius: 4, outline: 'none', cursor: 'pointer', }}/>
); const Row = ({ label, value }) => (
{label} {value}
); const LaunchOffer = () => (
OFERTA DE LANÇAMENTO · MAIO

Implantação por nossa conta.

Para hotéis que ativarem o Chat Hotel ainda em maio, a taxa de implantação de R$ 1.500 fica por nossa conta. Treinamos a IA na sua marca, conectamos seus canais e configuramos os fluxos de upsell.

· ativação em até 14 dias · sem fidelidade nos 30 primeiros dias
TAXA DE IMPLANTAÇÃO
R$ 1.500 R$ 0
Cortesia para hotéis que ativarem em maio.
{[ 'Treinamento da IA na voz e rituais da sua marca', 'Conexão de WhatsApp, Instagram, site e e-mail', 'Configuração de fluxos de reserva e upsell', 'Onboarding da equipe na plataforma', ].map((t, i) => (
{t}
))}
); const CTASection = () => { const [submitted, setSubmitted] = React.useState(false); const [loading, setLoading] = React.useState(false); const [error, setError] = React.useState(null); const formRef = React.useRef(null); const handleSubmit = async (e) => { e.preventDefault(); setLoading(true); setError(null); try { const formData = new FormData(formRef.current); const data = { name: formData.get('name'), email: formData.get('email'), phone: formData.get('phone'), hotel: formData.get('hotel'), message: `Solicitação de demonstração ao vivo do Chat Hotel.\n\nHotel: ${formData.get('hotel')}\nTelefone: ${formData.get('phone')}`, type: 'proposal', }; const response = await fetch('/api/send-proposal', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(data), }); const result = await response.json(); if (!response.ok) { throw new Error(result.error || 'Erro ao enviar mensagem'); } setSubmitted(true); } catch (err) { setError(err.message || 'Erro ao enviar. Tente novamente.'); console.error('Form submission error:', err); } finally { setLoading(false); } }; return (
FALE COM A GENTE

Conheça quem
responde por você.

Demonstração ao vivo com seus próprios canais. Em 30 minutos, mostramos o concierge atendendo um hóspede fictício do início ao fim.

{!submitted ? (
{error && (
⚠️ {error}
)}
) : (
✅ Recebemos!
Obrigado por seu interesse! 🎉

Enviamos uma confirmação para seu e-mail. Nosso time entra em contato em até 1 hora útil para combinar a demonstração no canal da sua preferência.
)}
); }; const FormField = ({ label, name, placeholder, type = 'text', required = false }) => ( ); const Footer = () => ( ); window.ROICalculator = ROICalculator; window.LaunchOffer = LaunchOffer; window.CTASection = CTASection; window.Footer = Footer;