Em resumo
Consultamos várias fontes em paralelo, normalizamos os dados, agrupamos itinerários equivalentes em um cartão só, comparamos preços apenas dentro da mesma moeda e ordenamos de forma determinística por preço, duração, paradas e horários.
1. Coleta em paralelo
Cada fonte ativa recebe a mesma busca ao mesmo tempo, com um limite de tempo próprio. Fonte lenta não segura a lista: mostramos o que chegou e indicamos que houve fonte ausente.
2. Normalização
Cada oferta é convertida para um formato comum: trechos, horários locais, companhia e identificação do voo conforme fornecidas pela fonte, número de paradas, duração total, moeda e preço. Campos que uma fonte não fornece ficam vazios em vez de serem estimados.
3. Agrupamento de itinerários equivalentes
Dois resultados descrevem o mesmo voo quando coincidem na cabine e na sequência completa de trechos: número de voo normalizado, aeroportos de origem e destino e horários de partida e chegada normalizados de cada trecho — ida e, quando houver, volta. Nesses casos geramos uma chave estável do itinerário e reunimos as ofertas em um único cartão.
O cartão mostra o menor preço disponível naquele grupo e, ao abrir “onde comprar”, lista os vendedores encontrados para aquele itinerário.
4. Moeda
Não convertemos valores. Resultados são separados em buckets por moeda; a ordenação por preço e o score Recomendado comparam/ordenam apenas ofertas dentro da mesma moeda. A moeda predominante da busca aparece primeiro. Não existe comparação cruzada entre moedas e nenhuma conversão FX.
5. Ordenação
Três critérios explícitos: preço (menor primeiro), duração (viagem mais curta) e recomendado.
O recomendado é um score com pesos fixos: preço 45%, duração 30%, paradas 15% e horário 10%. Ele é calculado separadamente dentro de cada grupo de moeda: preço e duração são colocados numa escala de 0 a 1 usando o menor e o maior valor daquele mesmo grupo de moeda — não há conversão cambial em nenhuma etapa.
As paradas não entram nessa escala relativa: elas usam uma penalidade própria e fixa, que cresce com o número de paradas até um teto de três. O componente de horário também é uma penalidade própria, aplicada às horas extraídas dos horários já normalizados que o motor recebe (hoje lidas em UTC, não no fuso do aeroporto): partidas e chegadas antes das 5h ou a partir das 23h recebem penalidade cheia, e as faixas entre 5h–7h e 21h–23h recebem penalidade parcial.
Empates são desfeitos pela chave do itinerário, então o cálculo é determinístico — nenhuma fonte compra posição.
6. Compra
O link do vendedor é resolvido no nosso servidor a partir do resultado já consultado, e não de dados enviados pelo navegador. Isso evita que o destino do clique seja alterado. A partir daí, preço, taxas e condições são responsabilidade do vendedor.
Limitações honestas
Nenhum comparador enxerga o mercado inteiro. Ofertas podem expirar entre a busca e a compra, uma fonte pode ficar indisponível e alguns vendedores não são exibidos para determinados itinerários. Sempre confira a tela final do vendedor antes de pagar.
Perguntas frequentes
- A WESTFLY converte moedas?
- Não. Comparamos preços apenas entre ofertas na mesma moeda. Quando aparecem moedas diferentes na mesma busca, avisamos e não misturamos os valores na ordenação por preço.
- A ordenação é influenciada por quem paga mais?
- Não. A ordenação é calculada a partir dos dados do próprio itinerário — preço, duração, número de paradas e horários — e é determinística: a mesma lista gera sempre a mesma ordem.
- Todas as fontes aparecem em toda busca?
- Nem sempre. Se uma fonte não responde a tempo ou não tem resultado para aquele trecho, mostramos o que as demais retornaram e sinalizamos que houve fonte ausente.
