Banco de dados de imigração para trabalhadores brasileiros. Atualizado automaticamente todo mês por um pipeline de extração com LLM a partir de fontes oficiais de 10 países.
O Rota Legal mantém um conjunto de arquivos JSON estruturados com as condições oficiais de imigração de 10 países na perspectiva de um cidadão brasileiro que quer trabalhar no exterior.
Os dados cobrem tipos de visto disponíveis, requisitos de entrada, renda mínima exigida, direitos trabalhistas e mudanças recentes detectadas. Cada campo é extraído diretamente de páginas oficiais de governo.
O projeto serve dois propósitos: alimentar a ferramenta web Rota Legal (esta interface) e servir como fonte viva para os conteúdos do vl-builds, que referenciam os dados sem precisar atualizá-los manualmente.
Cada execução percorre todas as URLs configuradas por país, extrai o conteúdo com LLM, valida o resultado com Zod e salva no Git.
Cada país tem uma lista de URLs em src/sources/{cc}.ts. Apenas páginas de governo oficial. Nenhuma fonte de terceiros como fonte primária.
Primeiro tenta fetch nativo do Bun. Se a página for JS-pesada e retornar HTML vazio, usa Playwright (browser headless) como fallback.
O HTML cru passa pelo @mozilla/readability, que extrai só o conteúdo principal da página. Menus, rodapés e banners são descartados antes de ir para o LLM.
Claude Haiku 4.5 por padrão. URLs marcadas como críticas usam Claude Sonnet 4.5. O modelo recebe o texto limpo e retorna o JSON estruturado conforme o schema.
O JSON retornado pelo LLM é validado com Zod. Campos obrigatórios faltando ou com tipo errado causam falha alta: o pipeline para e registra o erro sem comitar um snapshot parcial.
O snapshot novo é comparado com o anterior. Mudanças de alta relevância abrem uma issue automática no GitHub. Tudo é versionado em Git, sem banco de dados.
Todos os países seguem o mesmo schema TypeScript. Um arquivo por país em data/current/{cc}.json, sobrescrito a cada execução.
Apenas fontes oficiais de governo. Sites informativos oficiais como make-it-in-germany.com são aceitos como fonte secundária. Blogs de advogados e portais não-oficiais nunca entram como fonte primária.
Transparência sobre o que o sistema faz e não faz é parte do produto. Leia antes de tomar qualquer decisão baseada nos dados desta ferramenta.
Não é assessoria jurídica
Nenhuma informação aqui constitui parecer jurídico personalizado. Para processos reais de visto e imigração, consulte um advogado de imigração licenciado no país de destino.
Confiança média na extração por LLM
Todos os países têm extractionConfidence: "medium". Nenhum passou por revisão humana completa. O LLM pode interpretar incorretamente passagens ambíguas nas fontes. Sempre confirme em na fonte oficial antes de agir.
Campos vazios são ausência de dado, não ausência de requisito
Se um campo como incomeRequirement está null, significa que a fonte não especificou ou o LLM não conseguiu extrair. Não significa que o requisito não existe.
Ciclo mensal: mudanças entre execuções não são capturadas imediatamente
O pipeline roda dia 1 de cada mês. Alterações publicadas pelo governo no dia 15, por exemplo, só aparecem aqui a partir do dia 1 do mês seguinte. Para países com histórico de mudanças frequentes, consulte a fonte oficial diretamente.
Não cobre processos específicos por consulado ou cidade de origem
Os dados refletem as regras gerais do país. Consulados individuais podem ter agendas, taxas e requisitos extras que não estão documentados aqui. O processo real de solicitação varia por cidade de origem no Brasil.
Decisões tomadas para minimizar custo, maximizar confiabilidade e manter zero infraestrutura própria.
Decisões de arquitetura
Correções, novos países e melhorias no schema são bem-vindas. O processo é simples.
data/current/{cc}.json com o valor correto e abra um PR com link para a fonte. Alterações em src/ exigem que os testes passem.src/extractors/schema.ts, docs/data-schema.md e de todos os arquivos em data/current/.Veja os países disponíveis ou compare dois destinos lado a lado.