Como medimos os números
Cada métrica abaixo é calculada por uma query SQL no nosso banco e atualizada 1×/dia (às 2h da manhã). Nada é estimado, nada é inventado. Se um valor estiver abaixo de um piso mínimo razoável, a gente esconde na home em vez de inflar.
Figurinhas registradas no app
68.000
Inclui figurinhas registradas via scan IA, áudio, texto e edição manual. Exclui contas de teste.
SELECT SUM(quantity) FROM user_stickers us LEFT JOIN profiles p ON p.id = us.user_id WHERE us.quantity > 0 AND COALESCE(p.excluded_from_campaign, false) = false
Piso pra exibir na home: ≥ 5.000
Figurinhas escaneadas com IA
3.900
Só contam scans em que o usuário confirmou e salvou. IA detectou + humano validou.
SELECT SUM(matched_count) FROM scan_results sr LEFT JOIN profiles p ON p.id = sr.user_id WHERE sr.user_confirmed_count > 0 AND COALESCE(p.excluded_from_campaign, false) = false
Piso pra exibir na home: ≥ 1.000
Figurinhas trocadas entre colecionadores
1.000
Cada troca aprovada move N figurinhas dos dois lados. Soma o total de figurinhas que mudaram de mãos.
SELECT SUM(they_have + i_have) FROM trade_requests WHERE status = 'approved'
Piso pra exibir na home: ≥ 200
Distância mediana até o trocador mais próximo
7 km
Mediana (não média) pra evitar viés de outliers. Calculada a partir das coordenadas geográficas dos dois usuários no momento da troca.
SELECT percentile_cont(0.5) WITHIN GROUP (ORDER BY distance_km) FROM trade_requests WHERE status = 'approved' AND distance_km IS NOT NULL
Piso pra exibir na home: ≤ 30 km
Cidades com colecionadores ativos
169
Conta pares cidade+estado distintos (sem dobrar Boa Vista RR vs Boa Vista PB). Casing normalizado.
SELECT COUNT(DISTINCT lower(trim(city)) || '|' || COALESCE(lower(trim(state)),'')) FROM profiles WHERE city IS NOT NULL AND length(trim(city)) > 1 AND COALESCE(excluded_from_campaign, false) = false
Piso pra exibir na home: ≥ 30
Última atualização do snapshot: 11/05 · Cron: 0 5 * * * UTC (2h BRT) · Voltar pra home