O que as empresas brasileiras pedem de quem lidera times de dados, lido anúncio por anúncio e linha por linha, separando coordenação de gerência.
Os dados nascem de um app de acompanhamento de vagas que eu desenvolvi. É a amostra de uma busca real, não um censo do mercado: cada número mostra o seu n, e o dado bruto está aberto pra você refazer a conta.
110vagas de liderança em dados no Brasil, lidas por inteiro
2.001linhas de anúncio classificadas, uma a uma, numa lista fechada de 68 itens
0 de 110anúncios declaram faixa salarial
O que tem aqui · e por que nessa ordem
As respostas primeiro. O motor, lá embaixo.
Quem chega querendo saber o que muda de coordenação pra gerência, quanto de técnico ainda se pede ou se IA já virou exigência encontra isso logo depois do sumário, sem atravessar o método antes. A parte técnica fica mais pra baixo de propósito: é onde quem é de dados mergulha pra conferir de onde saiu cada número (e, se quiser, discordar com o dado na mão).
Sou designer de formação que virou gente de dados, e passei os últimos anos liderando times de dados. Este projeto nasceu da minha própria busca pela próxima cadeira de liderança: li cada uma dessas vagas inteira, e o app que acompanha a busca também fui eu que fiz (quem procura vaga de dados acaba montando um pipeline pra isso, né? hehe).
Autoria assistida por IA
As perguntas, a lista de itens, as regras de leitura e a régua são minhas, e fui eu que revisei a referência que mede o modelo. Agentes de IA (Claude Code) escreveram a maior parte do código e dos textos sob a minha direção, e um modelo de linguagem classifica as linhas novas toda semana. Onde entra a IA e onde entra uma pessoa está contado em detalhe na Arquitetura (4.1).
Achou um erro, ou tem uma pergunta que esses dados deveriam responder? Me chama no LinkedIn!
coordenaçãogerência% de vagas: cada vaga conta uma vez por itemdiferença firmedireçãosem diferença claracontagens são pisobase: 36 de coordenação × 42 de gerência
Mesmo núcleo. Coordenação opera o time;|gerência decide|para onde ele vai.
"O que muda quando a cadeira sobe de coordenação pra gerência?" Menos do que o título do cargo sugere. O núcleo do anúncio é o mesmo nos dois níveis: liderar o time, lidar com stakeholders, desenvolver pessoas. Só duas diferenças passam folgadas na régua: a gerência pede estratégia, a coordenação pede a operação do time.
Igual nos doisLiderar time92% · 95%
Sobe na gerênciaEstratégia e visão28% → 71% · p < 0,001
Fica na coordenaçãoOperação do time72% → 38% · p = 0,003
Na mesma direção, sem folgaIA aplicada ao negócio · Contratar e estruturar time · Tempo de experiênciap entre 0,01 e 0,05
Próximas perguntas
% das vagas que pedemconsultas/p1_0.sql
Base: 36 vagas de coordenação e 42 de gerência com o anúncio classificado. Classificação em andamento: 79% das linhas.
Consulta
01 · Análises · P2 · O lado técnico
Metade pede mão na massa.|Python é pedido|de coordenação.
"Quanto de técnico um gestor de dados ainda precisa ter?" Cerca de metade dos anúncios pede mão na massa, nos dois níveis, e subir de nível não muda a conta. Entre as ferramentas, Python é a única em que os níveis se separam com folga; SQL e nuvem citada pelo nome não se separam do acaso. Citar o nome é diferente de exigir (pode estar num diferencial ou numa lista de exemplos), e quem não nomeia pode pedir por outro termo: trate como piso.
Pedem mão na massaReferência técnica / hands-on47% · 50% · p = 0,824
A mais citada pelo nomeSQL67% · 48%
Separa os níveisPython53% → 21% · p = 0,005
Mais perto de diferencialDatabricks4 de 24 vagas só como diferencial
Próximas perguntas
cada ponto é uma vaga · aceso = pede mão na massaconsultas/p2_0.sql
Base: 36 vagas de coordenação e 42 de gerência com o anúncio classificado. Classificação em andamento: 79% das linhas.
Consulta
01 · Análises · P3 · Onde a IA entra
IA já está na maioria das vagas,|mais como tarefa do que|como pré-requisito.
"IA já é exigência pra liderar dados?" Algum item de IA (ciência de dados e ML, IA aplicada ao negócio, IA generativa, agentes, MLOps) aparece em sete de cada dez vagas. Ele aparece mais no que a pessoa vai fazer do que no que ela já precisa saber, e a gerência cita mais que a coordenação.
Vagas com algum item de IA69% das vagas54 de 78 · 61% · 76%
Como tarefa42 de 54 vagas com IAa linha é uma responsabilidade do cargo
Como requisito34 de 54 vagas com IAa linha pede algo de quem se candidata
O item mais pedidoCiência de dados e machine learning38 de 78 vagas
Próximas perguntas
% das vagas que pedemconsultas/p3_0.sql
Base: 36 vagas de coordenação e 42 de gerência com o anúncio classificado. Classificação em andamento: 79% das linhas. Os seis itens de IA somados na primeira linha.
Consulta
01 · Análises · P4 · Quanto paga
Nenhum anúncio|diz quanto paga.
"Quanto paga uma cadeira de gestão de dados, e por que o anúncio não diz?"0 de 110 anúncios declaram faixa salarial. O que se sabe de salário vem de fora do anúncio: a referência de mercado pesquisada vaga a vaga põe o meio da faixa em R$ 16,6 mil na coordenação e R$ 30,3 mil na gerência, por mês.
Anúncios com faixa0 de 110o que o anúncio declara
Referência, coordenaçãoR$ 16,6 milmediana por mês · 44 vagas
Referência, gerênciaR$ 30,3 milmediana por mês · 44 vagas
Fontes pesquisadas456 referênciasem 48 sites
Próximas perguntas
referência salarial pesquisada por vaga · R$ por mêsconsultas/p4_0.sql
Cada linha é uma vaga: a faixa de referência pesquisada pro cargo e a cidade dela. A mesma faixa de um guia salarial se repete em muitas vagas (tracejada): a mediana da gerência, em especial, fica presa a ela. A fonte de cada número está em benchmarks.csv.
Consulta
01 · Análises · P5 · Tipos de cadeira
Na gerência, a cadeira é de estratégia;|na coordenação,|se divide.
"Que tipos de cadeira de liderança de dados existem?" O tipo da cadeira é a dimensão que mais pesa no anúncio, entre as seis de conteúdo: gente, estratégia, engenharia, analytics, IA e governança. Estratégia lidera a gerência (20 de 42 vagas); na coordenação nenhuma domina e o tipo se divide entre engenharia, analytics e estratégia.
Gerência: o tipo mais comumEstratégia, negócio e gestão20 de 42 vagas · 48%
Coordenação: o mais comumAnalytics e BI e Engenharia e plataforma de dados10 de 36 vagas cada · 28%
O que separa os níveisEstratégia, negócio e gestão22% → 48% · p = 0,032
O tipo mais raroGovernança, qualidade e segurança2 de 78 vagas
Próximas perguntas
vagas por tipo da cadeiraconsultas/p5_0.sql
Tipo = a dimensão com mais linhas no anúncio, entre as seis de conteúdo; empate vai pra ordem alfabética. Base: 36 vagas de coordenação e 42 de gerência com o anúncio classificado. Classificação em andamento: 79% das linhas.
Consulta
01 · Análises · P6 · O gestor-unicórnio
Metade das vagas pede|as seis dimensões|de uma vez.
"O gestor-unicórnio existe? Quão ampla é a vaga?"Seis dimensões de conteúdo: gente, estratégia, engenharia, analytics, IA e governança. 39 das 78 vagas pedem as seis. Na gerência o anúncio é mais amplo (62% contra 36%), mas o tamanho é parecido: 25 itens por vaga na mediana contra 24.
vagas que pedem as seis dimensõesconsultas/p6_0.sql
Dimensões de conteúdo: gestão de pessoas; estratégia, negócio e gestão; engenharia e plataforma; analytics e BI; IA e ciência de dados; governança, qualidade e segurança. Fora: formação e comportamento.
Consulta
01 · Análises · O que parece, mas ainda não é
O que os dados|ainda não sustentam.
Diferenças que parecem grandes, mas que a amostra não separa do acaso. Servem pra levantar pergunta, não pra afirmar. Com mais vagas, alguma delas pode virar achado, ou sumir.
% das vagas que pedem · sem diferença clara
Fora daqui, de propósito: localização, setor da empresa e tendência no tempo. A distribuição geográfica e a de setores refletem a busca do autor, não o mercado, e a janela de coleta ainda é curta pra falar de tendência. Elas aparecem só no retrato da amostra (3.4) e na exploração livre.
Consulta
Seguimentos que a amostra ainda não responde
pergunta
por quê
volta quando
P1·4 · Vale dentro da mesma empresa?
2 empresas com vaga nos dois níveis
10 empresas
P3·4 · A IA muda por setor?
2 setores com 10 vagas ou mais
5 setores
P4·1 · As fontes concordam entre si?
o valor por fonte não está no dado publicado
o dado ganhar o valor por fonte
P4·2 · CLT × PJ
5 vagas PJ
10 vagas PJ
P4·3 · Quem não diz o salário diz o quê?
o dado só diz se a seção existe, não o que ela contém
o dado levar o conteúdo da seção
P5·1 · Qual setor pede qual tipo?
2 setores com 10 vagas ou mais
5 setores
Cada um tem a consulta pronta em consultas/: quando o dado chegar ao mínimo, o gráfico aparece sozinho, pela condição da própria consulta.
02 · Exploração livre · 2.1
Os 68 itens,|lado a lado.
Antes de explorar: esta é a amostra da busca de uma pessoa, não uma representação do mercado. Local, regime, portal e setor descrevem onde e como ela procurou.
Cada linha de anúncio foi classificada numa lista fechada de 68 itens, em 8 dimensões. Aqui estão todos, coordenação × gerência. Muitas comparações ao mesmo tempo produzem alguma diferença por acaso: por isso a régua é mais dura que o usual.
Base: 36 × 42. Classificação em andamento: 79% das linhas. "Outro" (o que não cabe na lista) fica de fora. Definição e regra de borda de cada item em rotulagem/taxonomia.md.
02 · Exploração livre · 2.2
Faça a sua pergunta|em SQL, no navegador.
Tabelas e colunas que você pode usar
As colunas em âmbar descrevem a busca, não o mercado: use pra recortar, não pra concluir sobre o país.
Consultar de fora sem baixar: select * from 'dados/mart_vagas.parquet' no DuckDB. Dado CC BY 4.0 · código MIT.
03 · Metodologia · 3.1
As regras do jogo,|antes de qualquer número.
RecorteO que conta como liderançaO anúncio pede gestão de pessoas num time de dados. Cargo de produto ou de software sem time de dados fica fora da comparação, mesmo com "gerente" no título.
NíveisQuatro níveis, pela regra do títuloCoordenação (coordenador, supervisor, líder de equipe) · Gerência (gerente, manager, gerente executivo) · Alta gestão (head, diretor) · Outros. A regra está em dbt/seeds/niveis.csv.
UnidadeA linha do anúncioCada linha das seções de responsabilidades, requisitos e diferenciais. "Sobre a empresa", descrição e benefícios não são classificados.
Lista fechada68 itens em 8 dimensõesCada linha recebe um ou mais itens de uma lista fechada, mais "outro" pro que não cabe. Definição e regra de borda de cada item em rotulagem/taxonomia.md.
Dimensões8 dimensões, seis de conteúdo
Cada item da lista pertence a uma dimensão. A lista saiu da leitura das linhas dos anúncios, foi testada em vagas-piloto e medida contra uma referência revisada por uma pessoa, e ficou congelada antes de classificar o resto.
Gestão de pessoas7 itensconta em P5 e P6
Estratégia, negócio e gestão14 itensconta em P5 e P6
Analytics e BI9 itensconta em P5 e P6
Engenharia e plataforma de dados12 itensconta em P5 e P6
Governança, qualidade e segurança7 itensconta em P5 e P6
IA e ciência de dados6 itensconta em P5 e P6
Formação, idioma e experiência8 itensfora de P5 e P6
Comportamental e condições5 itensfora de P5 e P6
As perguntas P5 (tipo da cadeira) e P6 (amplitude da vaga) usam só as seis que dizem o que o cargo cobre. As duas que ficam de fora dizem quem a pessoa precisa ser (formação, idioma, anos de experiência, comportamento, condições de trabalho), não o que o trabalho cobre. O tipo da cadeira é a dimensão com mais linhas no anúncio, e "pede as seis" quer dizer ter ao menos um item de cada uma. É uma regra de contagem, sem agrupamento automático: está em consultas/p5_0.sql e consultas/p6_0.sql.
NaturezaResponsabilidade, requisito ou contextoO que a pessoa vai fazer, o que ela precisa trazer, ou uma linha que só descreve o time ou a empresa.
FerramentasRegra fixa, sem modeloSQL, Python, Power BI e as outras são contadas pelo nome, com um dicionário de sinônimos (dbt/seeds/ferramentas.csv). Quem pede por outro termo não é contado.
RéguaA diferença ganha selo em palavrasTeste exato de Fisher entre os níveis: diferença firme abaixo de 0,01, direção entre 0,01 e 0,05, sem diferença clara acima disso.
SalárioDuas camadas, nunca misturadasO que o anúncio declara e a referência de mercado pesquisada pro cargo e a cidade. A referência nunca é "o que a vaga paga".
RepetiçãoAnúncio repetido conta uma vez por nívelMesma empresa e mesmo texto em mais de uma vaga: uma vez em cada nível em que aparece.
Contrato de dadosCinco arquivos e um manifesto
vagas.csvuma linha por vaga: empresa, cargo, local, regime, contrato, link, datas de publicação, captura e estruturação, idioma, se tem "sobre a empresa" e benefíciosrotulos.csvuma linha por linha do anúncio: seção, natureza, itens, ferramentas. Sem o textorequisitos.csvo resumo dos requisitos de cada vaga, em textobenchmarks.csva referência salarial: fonte e nota, por vagaempresas.csvempresa, nome normalizado e setormanifest.jsonquando foi gerado, contagens e cobertura
Como ler os gráficos.● coordenação ● gerência. As porcentagens são de vagas: uma vaga conta uma vez por item, por mais linhas que o citem. A classificação tende a deixar de marcar mais do que a marcar à toa: trate as contagens como piso.
03 · Metodologia · 3.2
Uma vaga vira 22 linhas,|e cada linha vira itens.
Um exemplo inventado, com 22 linhas. A vaga típica desta amostra tem 22 (metade das vagas tem entre 18 e 29). Siga os quatro passos que todo anúncio atravessa antes de virar número.
Passo 1 de 4 · Coleta
O anúncio é guardado inteiro, do jeito que foi publicado.
Todas as seções entram, inclusive "sobre a empresa" e benefícios, mesmo as que não são classificadas. É daqui que saem as datas e o idioma do retrato da amostra.
Passo 2 de 4 · Linha por linha
Cada linha das três seções que importam vira uma unidade.
Responsabilidades, requisitos e diferenciais. "Sobre a empresa" e benefícios ficam de fora da classificação; dizemos só se o anúncio tem essas seções.
0linhas
3seções classificadas
Passo 3 de 4 · Classificação
Um modelo de linguagem marca os itens da lista fechada em cada linha.
O modelo é o Claude Haiku 5.5, escolhido entre vários, medidos contra uma referência revisada por uma pessoa. Em média, dois itens por linha. A natureza (responsabilidade, requisito, contexto) vem junto. Ferramenta não passa pelo modelo: é regra fixa sobre o nome (em preto). O que não cabe na lista fica "outro".
0marcações nas 0 linhas
0linhas sem item da lista ("outro")
Passo 4 de 4 · O que é publicado
A vaga vira um conjunto de itens. O texto fica pra trás.
Pra comparar níveis, cada item conta uma vez por vaga, por mais linhas que o citem (entre parênteses, quantas linhas o citam). A cada publicação, testes conferem o dado e refazem as tabelas; os números desta página e o texto dos achados saem das mesmas tabelas, sem nada digitado à mão.
0itens diferentes nesta vaga
0ferramentas citadas pelo nome
03 · Metodologia · 3.3
110 vagas publicadas,|78 na comparação.
A comparação usa as vagas de coordenação e de gerência com o anúncio classificado. Alta gestão e vagas fora da gestão de dados entram só nos totais: são poucas pra quebrar. Um anúncio repetido (mesma empresa, mesmo texto, mesmo nível) conta uma vez.
Cada ponto é uma vaga
2.001 de 2.537linhas classificadas até esta publicação; as novas entram na próxima
36 · 42vagas de coordenação e de gerência na comparação
26vagas publicadas cujo anúncio ainda não passou pela classificação, que anda em rodadas; entram na próxima publicação
Consulta
03 · Metodologia · 3.4
Como é a amostra,|antes de qualquer conclusão.
Quando os anúncios foram publicados e lidos, onde ficam, onde estão publicados e como são. Tudo aqui descreve a busca que gerou os dados: serve pra entender a amostra, não o mercado, e nada desta seção vira achado.
Linha do tempo · vagas por semanaRetrato da amostra · não é achado
Quando o anúncio foi publicado, encontrado e lido.
As vagas capturadas antes de a leitura linha a linha existir foram lidas de uma vez, no primeiro lote: é o pico de "lida" no começo da série. Os anúncios que não trazem data de publicação ficam fora da 1ª faixa.
Onde fica a vagaReflete a busca, não o mercado
Onde a busca encontrou as vagas.
Estado
Cidade (top 8)
Reflete onde o autor procurou. Não leia isto como onde estão as vagas de gestão de dados do país.
Onde o anúncio está publicadoRetrato da amostra · não é achado
Em que sistema o anúncio está publicado.
Lido do endereço do anúncio (gupy.io → Gupy, inhire.app → InHire…), por uma tabela de endereços em dbt/seeds/ats_hosts.csv. "Site de carreiras" = página da própria empresa, sem ATS identificável pelo endereço.
Consulta
ComposiçãoRetrato da amostra · não é achado
Quem são as vagas.
Nível (todas as vagas)
Regime
Contrato
Setor da empresa
Idioma do anúncio
O anúncio tem…
Referência salarial: de onde vem
Nível em todas as vagas, classificadas ou não; a comparação usa 36 × 42 (seção anterior). O setor é proposto por um modelo de linguagem e revisado por uma pessoa. A referência salarial conta as fontes citadas (uma vaga tem várias).
Tamanho do anúncio · linhas classificadas por vagaRetrato da amostra · não é achado
Quantas linhas tem um anúncio.
CoordenaçãoGerência| traço = mediana
03 · Metodologia · 3.5
Quatro limites|que a amostra carrega.
01Funil de uma pessoaSão as vagas que uma busca real encontrou e leu, não todas as vagas do país.
02Local, setor e portal descrevem a buscaRefletem onde e como o autor procurou. Aparecem só no retrato da amostra, pra você entender de onde vêm os números, e nunca como achado sobre o mercado.
03Janela curtaA coleta começou em jul/2026: dá pra comparar níveis, não pra falar de tendência.
04A contagem é pisoO modelo deixa de marcar um item que está lá mais do que marca um que não está. Ferramenta pedida por outro nome não é contada.
04 · Arquitetura · 4.1
A IA faz o volume.|Uma pessoa define a régua.
Como um anúncio vira os números desta página: sem servidor e sem nenhuma credencial do lado público. A origem dos dados aparece fechada; tudo o que atravessa a fronteira de sigilo está neste repositório, e você pode refazer cada passo.
04 · Arquitetura · 4.2
Pequeno de propósito,|e o que faria crescer.
01 · ArmazenamentoArquivos CSV no git, não um bancoPoucos arquivos pequenos, um escritor só e uma publicação por semana. Cada commit é um retrato do dado, e o histórico do git guarda todos.
Muda seo volume ou o número de quem escreve crescer.
02 · MotorDuckDB, refeito do zero a cada execuçãoLê os CSV no lugar e monta as tabelas num arquivo que é jogado fora depois. O que persiste é o CSV. O mesmo motor roda no seu navegador.
Muda seuma consulta deixar de caber na memória de um computador comum.
03 · Transformaçãodbt pra transformar e testarResolve a ordem pelas dependências, roda os testes e documenta de onde vem cada coluna. O DuckDB executa; o dbt organiza e confere.
Muda senada à vista: é a peça mais estável.
04 · OrquestraçãoSem orquestrador, por enquantoUma transformação e um encadeamento simples: o commit em data/ dispara a CI, e a ordem interna é a do dbt.
Muda seentrar um segundo pipeline, ou etapas com cache e reprocesso parcial.
05 · SegurançaCI sem credencial de bancoO repositório é público e só lê os próprios arquivos. A única peça que fala com a origem fica do lado privado e publica por commit.
Muda senunca, por regra: é a guarda que deixa o resto ser aberto.
04 · Arquitetura · 4.3
O que rodou, quando,|e o que passou.
Cada mudança no código ou no dado dispara o GitHub Actions: confere o contrato, roda os testes do dbt e, se tudo passa, refaz esta página. Aqui estão o resultado do último build e o histórico das execuções, com as falhas incluídas. É um retrato tirado quando a página foi gerada; o histórico ao vivo fica no GitHub.
(a) Último dbt build14/11/2026, 11:00 · commit c6dfc59 · 1,7 s
92ok2avisos0erros5 listas de referência · 14 modelos · 75 testes
!As datas seguem a ordem natural: publicada, vista, lida.0,08 s1 vaga com data de publicação 14 dias depois do dia em que foi vista. O anúncio pode trazer a data de uma republicação, e a leitura de uma vaga antiga pode ter sido refeita depois.vaga_datas_coerentes · as vagas (stg_vagas)
!Toda linha de anúncio já foi classificada.0,04 s2.001 de 2.537 linhas (79%). Classificação pela metade é o estado normal enquanto ela roda, e não pode deixar o build vermelho.rotulos_cobertura_baixa · cobertura da classificação (mart_cobertura_rotulos)
Listas de referência
›portais de vagaats_hosts3 testes
✓ats sempre tem valor0,04 snot_null_ats_hosts_ats
✓host sempre tem valor0,04 snot_null_ats_hosts_host
✓host não repete valor0,03 sunique_ats_hosts_host
›lista de ferramentasferramentas4 testes
✓ferramenta sempre tem valor0,03 snot_null_ferramentas_ferramenta
✓ordem sempre tem valor0,05 snot_null_ferramentas_ordem
✓padrao sempre tem valor0,04 snot_null_ferramentas_padrao
✓ordem não repete valor0,04 sunique_ferramentas_ordem
›lista de setoreslista_setores3 testes
✓setor sempre tem valor0,05 snot_null_lista_setores_setor
✓o setor marcado numa linha vem da lista fechada e só aparece junto do item de setor0,05 srotulo_setor_coerente
✓setor não repete valor0,04 sunique_lista_setores_setor
›regras de nívelniveis4 testes
✓bucket só assume: coordenador, gerente, alta_gestao, outros0,04 saccepted_values_niveis_bucket__coordenador__gerente__alta_gestao__outros
✓ordem sempre tem valor0,05 snot_null_niveis_ordem
✓padrao sempre tem valor0,05 snot_null_niveis_padrao
✓ordem não repete valor0,05 sunique_niveis_ordem
›lista de itenstaxonomia3 testes
✓chave sempre tem valor0,04 snot_null_taxonomia_chave
✓dimensao sempre tem valor0,04 snot_null_taxonomia_dimensao
✓chave não repete valor0,06 sunique_taxonomia_chave
Entrada
›as vagasstg_vagas15 testes· 1 aviso
!as datas seguem a ordem natural: publicada, vista, lida0,08 svaga_datas_coerentes
✓contrato só assume: CLT, PJ0,04 saccepted_values_stg_vagas_contrato__CLT__PJ
✓geografia só assume: br0,05 saccepted_values_stg_vagas_geografia__br
✓idioma só assume: pt, en0,04 saccepted_values_stg_vagas_idioma__pt__en
✓modo só assume: lideranca0,04 saccepted_values_stg_vagas_modo__lideranca
✓regime só assume: presencial, hibrido, remoto0,05 saccepted_values_stg_vagas_regime__presencial__hibrido__remoto
✓salario_tipo só assume: base, total0,04 saccepted_values_stg_vagas_salario_tipo__base__total
✓uf só assume: AC, AL, AP, …, SE, TO (27 valores)0,04 saccepted_values_stg_vagas_uf__AC__AL__AP__AM__BA__CE__DF__ES__GO__MA__MT__MS__MG__PA__PB__PR__PE__PI__RJ__RN__RS__RO__RR__SC__SP__SE__TO
✓toda empresa tem setor na lista de empresas0,04 sempresa_sem_setor
✓cargo_oficial sempre tem valor0,13 snot_null_stg_vagas_cargo_oficial
✓data_analise sempre tem valor0,12 snot_null_stg_vagas_data_analise
✓data_captura sempre tem valor0,12 snot_null_stg_vagas_data_captura
✓empresa sempre tem valor0,11 snot_null_stg_vagas_empresa
✓id_publico sempre tem valor0,05 snot_null_stg_vagas_id_publico
✓id_publico não repete valor0,05 sunique_stg_vagas_id_publico
›as linhas dos anúnciosstg_requisitos5 testes
✓id_publico sempre tem valor0,05 snot_null_stg_requisitos_id_publico
✓ordem sempre tem valor0,04 snot_null_stg_requisitos_ordem
✓texto sempre tem valor0,04 snot_null_stg_requisitos_texto
✓todo id_publico existe também em stg_vagas.id_publico0,06 srelationships_stg_requisitos_id_publico__id_publico__ref_stg_vagas_
✓vaga + posição não se repetem (nem nas referências de salário)0,05 srequisitos_chave_unica
›referências de saláriostg_benchmarks3 testes
✓fonte_url sempre tem valor0,06 snot_null_stg_benchmarks_fonte_url
✓id_publico sempre tem valor0,05 snot_null_stg_benchmarks_id_publico
✓todo id_publico existe também em stg_vagas.id_publico0,06 srelationships_stg_benchmarks_id_publico__id_publico__ref_stg_vagas_
›empresas e setoresstg_empresas5 testes
✓empresa sempre tem valor0,05 snot_null_stg_empresas_empresa
✓empresa_normalizada sempre tem valor0,04 snot_null_stg_empresas_empresa_normalizada
✓setor sempre tem valor0,04 snot_null_stg_empresas_setor
✓todo setor existe também em lista_setores.setor0,04 srelationships_stg_empresas_setor__setor__ref_lista_setores_
✓empresa não repete valor0,05 sunique_stg_empresas_empresa
›a classificação de cada linhastg_rotulos9 testes
✓natureza só assume: responsabilidade, requisito, contexto0,09 saccepted_values_stg_rotulos_natureza__responsabilidade__requisito__contexto
✓secao só assume: responsabilidades, requisitos, diferenciais0,09 saccepted_values_stg_rotulos_secao__responsabilidades__requisitos__diferenciais
✓hash_linha sempre tem valor0,10 snot_null_stg_rotulos_hash_linha
✓id_publico sempre tem valor0,07 snot_null_stg_rotulos_id_publico
✓ordem sempre tem valor0,06 snot_null_stg_rotulos_ordem
✓todo id_publico existe também em stg_vagas.id_publico0,07 srelationships_stg_rotulos_id_publico__id_publico__ref_stg_vagas_
✓linha de contexto não carrega item0,05 srotulo_contexto_com_item
✓cada linha é classificada uma vez0,05 srotulo_linha_unica
✓uma só versão da lista de itens no arquivo0,06 srotulo_versao_unica
›itens marcadosstg_rotulo_itens2 testes
✓item sempre tem valor0,06 snot_null_stg_rotulo_itens_item
✓todo item existe também em taxonomia.chave0,06 srelationships_stg_rotulo_itens_item__chave__ref_taxonomia_
✓ferramenta sempre tem valor0,06 snot_null_stg_rotulo_ferramentas_ferramenta
✓todo ferramenta existe também em ferramentas.ferramenta0,06 srelationships_stg_rotulo_ferramentas_ferramenta__ferramenta__ref_ferramentas_
Tabelas finais
›vagas com nívelmart_vagas7 testes
✓nivel só assume: coordenador, gerente, alta_gestao, outros0,04 saccepted_values_mart_vagas_nivel__coordenador__gerente__alta_gestao__outros
✓cidade preenchida em vagas suficientes pra análise por local0,04 scobertura_minima_cidade
✓no máximo 15% das vagas sem nível definido0,04 snivel_outros_alto
✓id_publico sempre tem valor0,04 snot_null_mart_vagas_id_publico
✓nivel sempre tem valor0,04 snot_null_mart_vagas_nivel
✓id_publico não repete valor0,03 sunique_mart_vagas_id_publico
✓toda vaga tem pelo menos uma linha de requisito0,02 svaga_sem_requisito
›vaga × itemmart_vaga_item3 testes
✓id_publico sempre tem valor0,03 snot_null_mart_vaga_item_id_publico
✓item_chave sempre tem valor0,03 snot_null_mart_vaga_item_item_chave
✓cada vaga × item aparece uma vez0,03 svaga_item_unico
›vaga × ferramentamart_vaga_ferramenta3 testes
✓ferramenta sempre tem valor0,03 snot_null_mart_vaga_ferramenta_ferramenta
✓id_publico sempre tem valor0,03 snot_null_mart_vaga_ferramenta_id_publico
✓cada vaga × ferramenta aparece uma vez0,03 svaga_ferramenta_unico
›anúncios repetidosmart_repost3 testes
✓id_publico sempre tem valor0,03 snot_null_mart_repost_id_publico
✓repost_de sempre tem valor0,03 snot_null_mart_repost_repost_de
✓id_publico não repete valor0,03 sunique_mart_repost_id_publico
›cobertura da classificaçãomart_cobertura_rotulos1 teste· 1 aviso
!toda linha de anúncio já foi classificada0,04 srotulos_cobertura_baixa
Erro não aparece aqui, por construção: se um teste falha, a página não é refeita e a versão anterior continua no ar. As falhas ficam no histórico, logo abaixo.
(b) Execuçõesdesde 04/11/2026 · GitHub Actions deste repositório
Do lado fechadosó contagens · até a última publicação do dado · o que acontece antes do commit
6rodadas da classificação
5 concluídas · 1 interrompida
Cada rodada pega as linhas que ainda não têm rótulo. A interrompida não grava nada, e a seguinte pega as mesmas linhas.
1verificação semanal sem mudança
Toda semana o exportador compara a impressão digital de cada arquivo com a que está no repositório. Se nada mudou, não há commit, nem execução aqui em cima.