Versão 1.0 — 09/ago/2026 · Dados: jan a ago/2026 · 5 propriedades · Brasil e Argentina
Painel ao vivo: https://unit-economics.elmistihostels.com
Este documento existe para uma pessoa poder discordar dos números. Cada decisão está
escrita com o motivo, e cada premissa vive num arquivo que você pode editar
(premissas.json) — mude um valor lá, rode de novo, e tudo se refaz.
Três perguntas, na verdade, e é útil separá-las porque respondem a decisões diferentes:
| Pergunta | Métrica | Serve para decidir |
|---|---|---|
| Quanto custa trazer uma reserva direta? | CAC | Se vale investir em mídia, e quanto |
| Cada real de anúncio volta em quanto de venda? | ROAS | Onde realocar verba entre campanhas |
| O investimento se paga? | ROI | Se o canal direto é melhor que a OTA |
| Quanto vale um hóspede ao longo do tempo? | LTV | Quanto podemos pagar para conquistá-lo |
Escopo: reservas do El Misti, com foco no canal direto — que é onde temos controle. A OTA entra como comparação, não como alvo.
O pedido original falava em ROE (Retorno sobre Patrimônio Líquido). ROE mede o lucro contra o dinheiro que os sócios têm investido na empresa — exigiria o balanço patrimonial, que não está nos insumos e é outro projeto. O que responde à pergunta real ("o investimento se paga?") é o ROI. Decisão tomada com o Pedro em 09/ago.
Só usamos fonte primária. Onde não havia, está marcado.
| Dado | Fonte | Como chega |
|---|---|---|
| Reservas, receita, canal | API Cloudbeds + banco D1 | 57.007 reservas baixadas |
| Data em que a reserva foi feita | API Cloudbeds (dateCreated) |
23.118 reservas de 2026 |
| Gasto de mídia diário | Planilha viva Meta + Google | por dia, por anúncio |
| Estrutura de custo (Argentina) | DRE dos 3 hotéis | mês a mês, em dólar |
| Repeat rate (quem volta) | D1 audience_profiles |
102.728 perfis |
| Comissões e gateway | Estudo de paridade, validado com Dani | — |
Sem fonte ainda: DRE do Brasil · investimento em TikTok · moeda das contas de anúncio.
O banco marca BRL para as cinco propriedades, inclusive as três de Buenos Aires, que faturam em dólar. Quem somasse por essa coluna teria um total que fecha bonito e mistura real com dólar.
Regra: a moeda é derivada do
property_id. Ipanema e Copa em BRL; BA Centro, Obelisco e Suites BA em USD. Conversão para dólar a US$ 1 = R$ 5,40 (mesma taxa do estudo de paridade, editável empremissas.json).
Em 2026, as reservas canceladas somam R$ 10,05 milhões — mais do que as concluídas (R$ 7,25 milhões). Três reservas canceladas carregam R$ 6,6 milhões sozinhas, e a maior delas é um tipo de quarto fictício ("Voluntarios (Last Minute Non-Refundable)", R$ 4,6 milhões) usado como lançamento interno.
Sem esse corte, o ROAS de fevereiro no Brasil aparecia como 59x. Um número desses manda triplicar a verba de anúncio em cima de reserva que nunca existiu.
Regra: entram
checked_out,checked_in,confirmedeno_show(o no-show costuma ter a primeira noite cobrada, então há receita real). Saemcanceled,not_confirmedecreated. Total descartado: 10.553 reservas, R$ 10,36 milhões.
O denominador do CAC é a decisão mais consequente do cálculo inteiro. As 91 fontes de reserva do Cloudbeds foram classificadas em seis baldes:
| Balde | Exemplos | Entra no CAC? | Por quê |
|---|---|---|---|
| Site | Website/Booking Engine | ✅ | alvo direto da mídia |
| Central de vendas | Central 9, MSR Central, Recovery 1 | ✅ | o lead costuma vir da mídia |
| OTA | Booking.com, Expedia, Hostelworld | ❌ | a plataforma gerou, não nosso anúncio |
| Recepção / walk-in | Recepción Francisco, Walk-In | ❌ | captação física, mídia não alcança |
| Extensão | Extensión Francisco, EXT Direta | ❌ | hóspede já hospedado prorrogando |
| Interno | HOUSE USE, DAY USE | ❌ | não é venda |
A extensão é a categoria que costuma passar batido. É o hóspede que já está no hotel e resolve ficar mais noites — a mídia não trouxe essa reserva, ela já estava dentro do prédio. Contar extensão no denominador barateia o CAC artificialmente.
O classificador tem 28 testes automáticos (
scripts/canais.py). Rodar antes de confiar em qualquer número.
Uma reserva feita em março para hospedagem em julho conta em qual mês?
Os dois são calculados. O dashboard alterna entre eles. O descolamento entre as duas leituras é, por si só, informação: mostra com quanta antecedência as pessoas reservam.
Isso exigiu buscar a data real da reserva na API da Cloudbeds — o banco só guarda o check-in. Armadilha: o filtro por data de criação não se chama
createdFrom. Esse parâmetro existe, é aceito sem reclamar, e devolve a base inteira (78.963 em vez de 78). O certo éresultsFrom.
O Pedro conferiu no gerenciador do Meta: as contas do Brasil gastam em dólar e as da Argentina gastam em real. O contrário do que o nome sugere — "El Misti USD" é a conta do Brasil e de fato cobra em dólar; "El Misti BA 2 Ads" é a Argentina e cobra em real.
Impacto: antes da correção, o CAC argentino aparecia como US$ 89,36 e a operação de Buenos Aires parecia ineficiente. O número real é US$ 16,55. Era erro de leitura, não de operação — 5,4x de diferença, o câmbio inteiro.
Se a moeda não estiver declarada em premissas.json, o gasto daquela conta é
ignorado com aviso, em vez de somado às cegas. Faltar dado é recuperável; somar
moedas diferentes produz um número que ninguém consegue rastrear depois.
As contas de anúncio são por país ("El Misti USD" = Brasil, "El Misti BA 2" = Argentina). Não existe gasto por casa na origem.
Regra: o gasto do país é rateado entre as propriedades na proporção das reservas diretas digitais de cada uma, mês a mês.
Descartado: ratear por receita favoreceria a casa de ticket alto mesmo sem mídia. Ratear igualmente ignoraria que Ipanema faz 60x o volume da Copa.
Consequência que precisa ficar clara: esse rateio faz o CAC de mídia por casa sair
quase idêntico dentro do mesmo país. É matemática, não coincidência —
gasto × (reservas_casa ÷ reservas_país) ÷ reservas_casa simplifica para
gasto ÷ reservas_país, e a casa desaparece da conta.
Ou seja: o CAC de mídia por propriedade não carrega informação nova. O que separa de verdade uma casa da outra é o CAC com estrutura (que vem do DRE real de cada uma) e o ROAS/ROI/LTV, que dependem do ticket real. Só haveria CAC de mídia por casa se as campanhas fossem separadas por hotel na origem — hoje não são.
CAC = gasto de mídia do mês ÷ reservas diretas digitais do mês
ROAS = receita das reservas diretas digitais ÷ gasto de mídia (É a linguagem nativa do Meta e do Google — serve para bater o olho com o gerenciador.)
ROI = (valor da reserva − custo de trazê-la) ÷ custo de trazê-la
LTV = ticket médio da reserva × margem do canal × quantas vezes o hóspede volta
Quando não houve gasto de mídia, ou não houve reserva, a métrica fica "—", nunca zero. Zero significa "medimos e deu zero". Vazio significa "não dá para medir". Trocar um pelo outro é como um dashboard mente sem errar nenhuma conta.
Tudo em dólar. CAC em três camadas: só anúncio · + equipe de marketing · + comissão do time. As duas últimas só existem onde há DRE — hoje, as três casas da Argentina.
| Recorte | Gasto mídia | Reservas diretas | CAC anúncio | + equipe | + comissão | ROAS | ROI direto | LTV direto | LTV OTA |
|---|---|---|---|---|---|---|---|---|---|
| TOTAL | 103.518 | 3.794 | US$ 27,28 | — | — | 8,44x | 574% | 288,62 | 173,37 |
| Brasil | 68.983 | 1.707 | US$ 40,41 | — | — | 6,44x | 440% | 367,19 | 210,75 |
| Argentina | 34.535 | 2.087 | US$ 16,55 | 48 | 64 | 12,44x | 806% | 236,31 | 150,52 |
| BA Obelisco | 16.914 | 1.057 | 16,00 | — | — | 14,98x | 934% | 274,39 | 200,15 |
| Suites BA | 7.783 | 457 | 17,03 | — | — | 13,13x | 842% | 249,35 | 106,97 |
| BA Centro | 9.839 | 573 | 17,17 | — | — | 7,53x | 514% | 153,07 | 141,88 |
| Suites Copa | 1.095 | 28 | 39,11 | — | — | 8,48x | 576% | 508,25 | 198,39 |
| Ipanema | 67.888 | 1.679 | 40,43 | — | — | 6,41x | 437% | 334,11 | 195,35 |
Como ler o CAC completo da Argentina: US$ 16,55 de anúncio viram US$ 64 por reserva quando se soma a equipe de marketing e a comissão do time. Ainda assim, contra um ticket direto médio de US$ 206, isso é 31% do valor da reserva — mais caro que os 16% da comissão da OTA, mas com um ticket que já é maior no canal direto e sem comissão recorrente nas próximas estadias.
O Brasil fez um teste de liga/desliga sem querer:
| Mês | Gasto | Reservas diretas | CAC | ROAS |
|---|---|---|---|---|
| jan | 29.003 | 218 | 133,04 | 2,70x |
| mar | 7.547 | 242 | 31,19 | 8,89x |
| mai | 3.880 | 216 | 17,96 | 12,50x |
| jul | 4.126 | 327 | 12,62 | 16,34x |
O investimento caiu 86% e as reservas diretas subiram 50%.
Isso é o indício mais concreto que já apareceu sobre a incrementalidade — o gap que está aberto desde junho. Sugere que boa parte da mídia brasileira não estava gerando reserva nova; estava se creditando por quem viria de qualquer jeito.
Não é prova. Julho é inverno no Rio, o mix de hóspede muda, e correlação não é causa. Mas é forte o suficiente para justificar um teste controlado de verdade.
| Ressalva | Impacto | Como fechar |
|---|---|---|
| Incrementalidade segue em aberto | O ROI do direto assume que a reserva é nova. Se a mídia só captura quem viria pela OTA, o ganho real é a comissão economizada, não o ticket inteiro | Teste com/sem anúncio |
| DRE do Brasil não existe nos insumos | As camadas "+ equipe" e "+ comissão" ficam vazias no Brasil. Os dois países não são comparáveis nessas colunas | Planilha do Lulo |
| Mapeamento DRE → hotel deduzido pelo nome | Se algum estiver trocado, o custo de estrutura está na casa errada | Confirmação do Pedro |
| Moeda das contas de Google herdada por país | O Google BR pesou US$ 4,7 mil no ano e o Google BA não teve gasto — risco pequeno, mas não conferido | Ver no gerenciador |
| TikTok sem fonte | Gasto subestimado se houver investimento lá | Export do gerenciador |
| Câmbio fixo em R$ 5,40 | Agora afeta os dois lados: a receita brasileira e o gasto argentino (que é cobrado em real) | Taxa mensal em premissas.json |
| DRE argentino tem células não conferidas | A Ede marca em fúcsia o que ainda vai revisar | Conferir com ela |
| CAC de mídia por casa é artefato do rateio | Comparar casas por essa coluna não diz nada — use ROAS, ROI e LTV | Campanhas separadas por hotel |
O estudo de jun/2026 chegou a US$ 9,38 (BR) e US$ 2,33 (AR) de mídia pura. Aqui deu US$ 40,41 e US$ 16,55. Não é contradição — é denominador e período diferentes. O estudo usou 12 meses móveis (jul/2025–jun/2026) e um denominador mais largo. Este cálculo usa 2026 corrido, só reservas válidas, e exclui extensões de estadia.
Os dois números respondem perguntas ligeiramente diferentes. Este é mais conservador, e a diferença está inteira nas decisões 2, 3 e 5 acima.
cd "Empresas/El Misti/unit-economics"
python3 scripts/coleta_data_reserva.py 2026 # datas de reserva (API Cloudbeds)
python3 scripts/exporta_d1.py 2025 # receita e canal (D1)
python3 scripts/canais.py # testes do classificador
python3 scripts/calcula_metricas.py # recalcula tudo
Para mudar uma premissa — câmbio, comissão, o que conta como reserva válida, o que
entra no CAC — edite premissas.json e rode calcula_metricas.py de novo.
Nenhum desses valores está escrito dentro do código.
Método construído pelo Time de TI a partir do estudo de paridade OTA vs Direto (Mesa mesa-224193d3, jun–jul/2026), do qual herda as premissas de comissão, gateway e repeat rate.