Política de privacidade da PAPYRO · Leitura Atômica
Este texto está em revisão jurídica. Onde aparece "em revisão", falta um dado que o responsável pela PAPYRO ainda não informou.
Versão: em revisão, texto de 21/10/2026
Quem cuida dos seus dados
- Controlador: em revisão: razão social, CNPJ e endereço da empresa responsável pela PAPYRO.
- Contato para qualquer assunto de dados: suporte@opapyro.com. É também o canal para exercer os seus direitos (LGPD, art. 41, § 2º, I): a empresa é agente de tratamento de pequeno porte e, por isso, não é obrigada a indicar um encarregado (Resolução CD/ANPD nº 2/2022, art. 11); quem responde por esse e-mail cumpre esse papel.
- Operadores: a Cloudflare, onde o site e o banco de dados rodam, e a Resend, que entrega os e-mails da conta (confirmação, senha nova, exclusão, aviso de entrada). A Resend recebe o seu endereço de e-mail e o texto da mensagem, e nada mais.
- Aviso de entrada: a cada entrada na sua conta, você recebe um e-mail com a data, o país aproximado (pelo endereço de internet) e o navegador da entrada, para saber se foi você. Esses dados vão só no e-mail; a PAPYRO não os guarda.
- Consulta de senhas vazadas: ao criar ou trocar a senha, o servidor pergunta ao serviço Have I Been Pwned se ela já apareceu em vazamentos de outros sites, mandando só os 5 primeiros caracteres de um resumo (SHA-1) dela. A senha, o seu e-mail e o seu endereço de internet não saem.
O que a PAPYRO NÃO guarda
- A sua senha. Guardamos só um resumo dela (PBKDF2-SHA256, 100 000 rodadas, com sal próprio e com uma "pimenta", um segredo que fica fora do banco), que serve para conferir a senha que você digita e não permite recuperá-la.
- Nome, telefone, endereço, CPF, foto, escola.
- Da criança: nome completo, e-mail, foto, escola, endereço ou data de nascimento inteira.
- Nada no seu navegador além dos cookies descritos abaixo. O programa de leitura (o "motor") não usa armazenamento do navegador nem fala com a internet.
- Anúncios, rastreadores ou análise de terceiros: não há.
O que a PAPYRO guarda, exatamente
Cada tabela do banco, com cada coluna. A bateria de testes da borda confere que toda coluna do banco está listada aqui: coluna nova sem explicação nesta política reprova o teste.
duelos_adesoes — participação voluntária nos duelos privados
Os duelos privados são opcionais, por convite, para quem declara ter 18 anos ou mais e está usando sua própria conta, sem perfil de criança ativo. Esta declaração não é uma verificação de idade. Não há busca de pessoas nem mensagens. O adversário vê apenas o símbolo Âmbar ou Safira, o estado de entrega e, depois das duas entregas, os acertos de ambos, a escolha de cada um em cada questão e a série entre as duas contas (vitórias, empates e derrotas das rodadas já encerradas). Nome e e-mail não são compartilhados.
| coluna | o que é | até quando |
|---|---|---|
usuario_id | conta que escolheu participar | até excluir a conta |
declarada_em | momento da declaração de maioridade e participação | idem |
versao | versão do texto de participação, duelos-1 | idem |
duelos — rodadas privadas entre duas contas
O prazo de 48 horas fecha o convite e as entregas; não apaga o histórico. As escolhas e o resultado ficam disponíveis para exportação da própria conta. Excluir qualquer uma das duas contas apaga a partida inteira, inclusive da lista do outro participante. Uma rodada incompleta não declara vencedor. O convite permite ocupar uma única cadeira. Compartilhe somente com quem deseja convidar. Para não repetir histórias, quando a segunda pessoa entra o servidor confere os cadernos das rodadas que as duas contas já jogaram e sorteia primeiro os textos menos vistos. Nenhum dado novo é guardado. O desempate (acertos nas duas últimas questões, as pistas de ouro) e a série entre as duas contas são calculados na hora, das rodadas já guardadas: também não guardam dado novo.
| coluna | o que é | até quando |
|---|---|---|
id | identificador aleatório da rodada | até excluir uma das contas participantes |
pedido | identificador do pedido de criação, para não criar duas rodadas ao repetir um envio | idem |
convite | código aleatório que permite a entrada de outra conta | idem; deixa de permitir entrada ao ser usado, cancelado ou após 48 horas |
criador | identificador da conta que abriu a rodada | idem |
convidado | identificador da conta que aceitou; vazio antes da entrada | idem |
criado_em | momento de criação | idem |
expira_em | fim do prazo para entrada e respostas | idem |
cancelado | indica cancelamento antes de outra pessoa entrar | idem |
caderno | cópia das seis questões originais, alternativas, gabarito e quais são as pistas de ouro da rodada; não contém dados dos jogadores | idem |
respostas_a | escolhas finais da conta criadora | idem |
respostas_b | escolhas finais da conta convidada | idem |
pontos_a | acertos da conta criadora, corrigidos pelo servidor | idem |
pontos_b | acertos da conta convidada, corrigidos pelo servidor | idem |
entregue_a | momento da entrega da conta criadora | idem |
entregue_b | momento da entrega da conta convidada | idem |
duelos_limites — limites de pedidos por conta
| coluna | o que é | até quando |
|---|---|---|
usuario_id | conta que fez o pedido | até excluir a conta |
acao | tipo de limite: envio de pedidos | idem |
janela | período do contador, calculado pelo relógio do servidor | substituído no próximo período em que houver pedido, ou ao excluir a conta |
total | quantidade de pedidos nesse período | idem |
usuarios — a sua conta
| coluna | o que é | até quando |
|---|---|---|
id | um código aleatório da conta, sem significado | até a exclusão da conta |
email | o seu e-mail, para entrar e para receber os links da conta | até a exclusão da conta |
senha_hash | o resumo da senha (ver acima); nunca a senha | até a exclusão da conta |
criado_em | quando a conta foi criada | até a exclusão da conta |
confirmado_em | quando você confirmou o e-mail | até a exclusão da conta |
senha_trocada_em | quando a senha foi trocada, ou quando você mandou sair dos outros aparelhos, pela última vez; serve para encerrar sessões antigas | até a exclusão da conta |
maior_de_idade_em | 0, que quer dizer "não perguntado": o cadastro não pergunta a idade (em "Seus dados" aparece "não perguntada no cadastro"; no arquivo baixado, vazio). Só uma conta criada antes de 28/09/2026, quando o cadastro pedia a caixa "Tenho 18 anos ou mais", tem aqui a data dessa declaração | até a exclusão da conta |
nome_exibicao | o nome que você escolheu para aparecer na PAPYRO; vazio se não escolheu (aí o nome sai do e-mail) | até você apagar o nome ou excluir a conta |
perfis — os perfis de criança dentro da conta
| coluna | o que é | até quando |
|---|---|---|
id | código aleatório do perfil | até apagar o perfil ou a conta |
usuario_id | a qual conta o perfil pertence | idem |
apelido | o apelido que você escolheu (não o nome) | idem |
faixa | a faixa de leitura (Infantil, Juvenil ou Ensino Médio) | idem |
ano_nascimento | só o ano de nascimento | idem |
criado_em | quando o perfil foi criado | idem |
consentimentos — a prova do consentimento do responsável
| coluna | o que é | até quando |
|---|---|---|
id | código aleatório do consentimento | até a exclusão da conta |
usuario_id | a conta de quem consentiu | até a exclusão da conta |
perfil_id | o perfil consentido; fica vazio quando o perfil é apagado | até a exclusão da conta |
versao_texto | a versão do texto que você aceitou (docs/CONSENTIMENTO_PERFIL_CRIANCA.md) | até a exclusão da conta |
dado_em | quando você consentiu | até a exclusão da conta |
ip_hash | um resumo do endereço IP de onde o consentimento foi dado, feito com uma chave secreta que fica fora do banco (HMAC-SHA256); sem essa chave, não dá para descobrir o endereço | até a exclusão da conta |
revogado_em | quando você revogou, apagando o perfil | até a exclusão da conta |
Apagar um perfil revoga o consentimento. A linha fica, sem nenhum dado da criança, como prova de que o consentimento existiu e de quando acabou. Excluir a conta apaga também essas linhas.
tokens — os links de uso único dos e-mails
| coluna | o que é | até quando |
|---|---|---|
hash | um resumo do código do link; o código em si não é guardado | até 24 h depois de vencer |
usuario_id | a conta do link | idem |
tipo | confirmação, senha nova ou exclusão | idem |
criado_em | quando o link foi criado | idem |
expira_em | quando ele vence: 2 h (confirmação) ou 30 min (senha nova, exclusão) | idem |
usado_em | quando ele foi usado (cada link serve uma vez) | idem |
envios — o limite de e-mails
| coluna | o que é | até quando |
|---|---|---|
chave | um resumo do e-mail de destino ou do IP de quem pediu, feito com a mesma chave secreta fora do banco; sem ela, não dá para descobrir nenhum dos dois | 24 h |
criado_em | quando o e-mail foi pedido | 24 h |
Serve para impedir que alguém use a PAPYRO para mandar e-mails em massa a uma pessoa. Conta também pedidos para e-mails que não têm conta. Não está ligada à conta, e por isso a exclusão da conta não a apaga: ela some sozinha em até 24 h.
convites — quem pode criar conta
| coluna | o que é | até quando |
|---|---|---|
email | o e-mail que o responsável pela PAPYRO autorizou a criar conta | até a conta ser criada, ou até o convite ser retirado |
criado_em | quando o convite foi feito | idem |
O cadastro é só por convite. O convite serve uma vez: quando a conta é criada, ele sai desta tabela. Não guarda nome nem quem convidou.
progresso_eventos — o progresso de leitura
| coluna | o que é | até quando |
|---|---|---|
usuario_id | a conta | até apagar o progresso, o perfil ou a conta |
perfil_id | o perfil de criança, ou vazio se for o adulto | idem |
event_id | código aleatório do evento, para não gravar duas vezes | idem |
formato | a versão do formato do progresso | idem |
exercicio | o exercício (Diagnóstico, Percepção ou Leitura) | idem |
degrau | a faixa do texto lido | idem |
comp | a compreensão no quiz, de 0 a 1 | idem |
venceu | se a faixa foi vencida (compreensão de 0,6 ou mais) | idem |
occurred_at_local | quando o quiz foi fechado, na hora do seu aparelho | idem |
persisted_at | quando o servidor gravou | idem |
envelope | o evento inteiro como chegou, com os mesmos campos acima | idem |
Respostas do quiz e textos lidos não são enviados ao servidor. A velocidade de leitura vai na marca do Diagnóstico (a tabela progresso_diagnostico, abaixo) e, quando o exercício a mede, nos resultados dos módulos (a tabela progresso_resultado, abaixo).
progresso_caderno — as folhas dos cadernos
| coluna | o que é | até quando |
|---|---|---|
id | número de ordem da linha, sem significado fora do banco | até apagar o progresso, o perfil ou a conta |
usuario_id | a conta | idem |
perfil_id | o perfil de criança, ou vazio se for o adulto | idem |
event_id | código aleatório do registro, para não gravar duas vezes | idem |
caderno | qual caderno (1 ou 2) | idem |
folha | qual folha do caderno foi feita (por exemplo, c1-03) | idem |
comp | a compreensão nas folhas com perguntas, de 0 a 1; vazio nas folhas sem perguntas | idem |
occurred_at_local | quando a folha foi feita, na hora do seu aparelho | idem |
recebido_em | quando o servidor gravou | idem |
As respostas dadas na folha e o que foi escrito nela não são enviados ao servidor.
progresso_diagnostico — as marcas do Diagnóstico
| coluna | o que é | até quando |
|---|---|---|
id | número de ordem da linha, sem significado fora do banco | até apagar o progresso, o perfil ou a conta |
usuario_id | a conta | idem |
perfil_id | o perfil de criança, ou vazio se for o adulto | idem |
event_id | código aleatório do registro, para não gravar duas vezes | idem |
faixa | a faixa de leitura escolhida no Diagnóstico | idem |
ppm | a velocidade medida, em palavras por minuto | idem |
comp | a compreensão no quiz do Diagnóstico, de 0 a 1 | idem |
acertos | quantas perguntas do quiz foram acertadas | idem |
total | quantas perguntas o quiz tinha | idem |
seg | quanto tempo durou a leitura, em segundos | idem |
ilf | a dificuldade do texto lido (índice de legibilidade) | idem |
occurred_at_local | quando o Diagnóstico foi fechado, na hora do seu aparelho | idem |
recebido_em | quando o servidor gravou | idem |
O texto lido e as respostas dadas no quiz não são enviados ao servidor.
progresso_resultado — os resultados dos exercícios dos módulos
| coluna | o que é | até quando |
|---|---|---|
id | número de ordem da linha, sem significado fora do banco | até apagar o progresso, o perfil ou a conta |
usuario_id | a conta | idem |
perfil_id | o perfil de criança, ou vazio se for o adulto | idem |
event_id | código aleatório do registro, para não gravar duas vezes | idem |
modulo | o módulo do exercício (Coordenação, Percepção, Leitura, Arena ou Memória) | idem |
exercicio | qual exercício do módulo foi feito (por exemplo, pares) | idem |
medidas_json | os números que o exercício mediu, com o nome de cada um (por exemplo, acertos, erros ou palavras por minuto; nos desafios do Modo Game, também a faixa em que a rodada foi jogada, de 1 a 3, que o jogo usa para abrir na mesma faixa); no máximo 8 números, sem texto | idem |
duracao_s | quanto tempo durou o exercício, em segundos | idem |
occurred_at_local | quando o exercício foi fechado, na hora do seu aparelho | idem |
recebido_em | quando o servidor gravou | idem |
O texto lido, as palavras escritas e as respostas dadas no exercício não são enviados ao servidor: só os números que ele mede. Na Expedição da Biblioteca, esses números incluem a edição semanal, os acertos e o total de perguntas. A edição permite identificar a história do catálogo que foi explorada; as alternativas escolhidas e o texto não são enviados. O resumo usa a primeira passagem da semana. As missões e a constelação são calculadas a partir do progresso do perfil.
No Atlas das Histórias, são guardados o número do percurso, a versão do catálogo, os acertos, o total de encontros e a duração. Percurso e versão identificam quais desafios foram apresentados (a versão também diz a faixa dos textos: 1 juvenil, 2 infantil, 3 universitário). O Atlas mostra a melhor passagem completa de cada percurso. A ordem escolhida para os trechos, as alternativas marcadas e o uso de dicas não são enviados ao servidor. Ao voltar ao mapa, um marcador mantém a questão, as escolhas e as pistas abertas na memória da página. Há no máximo um marcador por percurso; ele desaparece ao concluir, recarregar ou fechar a página. Os marcadores não são enviados ao servidor. No Rolo Selado (o desafio final de cada temporada do Atlas), são guardados a temporada, a versão do catálogo, os acertos (de 5), a velocidade de leitura em palavras por minuto, o número de palavras do texto e a duração. As respostas escolhidas não são enviadas ao servidor. As relíquias da Biblioteca (um achado por dia de treino) são calculadas a partir dos dias de treino já registrados; o achado de cada dia depende só da data. Nenhum dado novo é guardado para elas. A Ficha do Leitor usa as marcas do Diagnóstico, a melhor leitura e o grau da Memória já registrados; ela é calculada na hora e nenhum dado novo é guardado para ela.
A Oficina do Leitor mantém, apenas na memória da página aberta, até 16 questões erradas de Gêmeas e Golpe de Vista e sequências do Eco, com pistas para revisão. Essa fila não é enviada ao servidor e desaparece ao recarregar ou fechar a página.
Cookies
| cookie | o que leva | duração |
|---|---|---|
__Host-papyro_sessao | quem entrou (o id da conta) e quando; assinado, só o servidor lê | 12 horas; 30 dias se você marcar "Manter conectado neste aparelho" ao entrar (a caixa vem desmarcada) |
__Host-papyro_perfil | qual perfil está em uso (o id do perfil) e quando; assinado, só o servidor lê | 12 horas |
__Host-papyro_responsavel | só quando um perfil de criança está em uso e o adulto digita a senha da conta para abrir a área dele: o id da conta e até quando a área fica aberta; assinado, só o servidor lê | 15 minutos; apagado ao voltar ao adulto ou ao sair |
Todos têm o prefixo __Host- (o navegador só os aceita vindos do próprio site) e são HttpOnly, Secure e SameSite=Strict, e nenhum leva marca, velocidade, compreensão ou progresso (decisão D-17).
Registros do servidor
O Worker registra o desfecho de cada e-mail ("enviado" ou o motivo de não ter saído), sem o endereço e sem o link. A Cloudflare mantém os próprios registros de acesso, segundo a política dela.
Esses registros do Worker ficam no painel da Cloudflare por até 7 dias e depois são apagados. Eles não guardam o endereço das páginas pedidas nem os links que vão nos e-mails. Servem para achar defeitos, e não são usados para mais nada.
Dados fora do Brasil
A Cloudflare e a Resend podem tratar dados em servidores fora do Brasil, inclusive nos Estados Unidos. Essa transferência é necessária para prestar o serviço que você contratou ao criar a conta (LGPD, art. 33, IX, com o art. 7º, V). em revisão: confirmar com a revisão jurídica se esta base basta ou se é preciso firmar as cláusulas-padrão da Resolução CD/ANPD nº 19/2024 com os dois fornecedores
Seus direitos, e como exercê-los (LGPD, art. 18)
Tudo em "Seus dados" (/conta/dados), com a conta aberta:
- Ver e levar tudo (acesso e portabilidade): "Baixar os meus dados" gera um arquivo
.jsoncom a conta (sem o resumo da senha), os perfis, os consentimentos com versão e data, e o progresso de cada um. - Excluir (eliminação): "Excluir a conta" pede a senha atual e a palavra EXCLUIR escrita, e a exclusão acontece na hora. Quem preferir confirmar por e-mail pede, com a senha atual, um link; aí a exclusão acontece quando você abre o link. Nos dois caminhos, ela apaga a conta, os perfis, os consentimentos, os links pendentes e todo o progresso, de uma vez.
- Revogar o consentimento de uma criança: apagar o perfil em "Perfis".
- Apagar só o progresso: "Apagar o progresso" em "Perfis".
- Corrigir: o apelido e a faixa de um perfil se corrigem em "Perfis", em "Editar o apelido ou a faixa". Trocar o e-mail da conta ainda não tem tela; até existir, peça pelo e-mail de contato indicado em "Quem cuida dos seus dados".
O arquivo de progresso que você exporta, ou que o programa de leitura salva no seu computador, é seu. Nada que você apagar aqui alcança esse arquivo.
Pontos para a revisão jurídica
- Base legal. Conta de adulto: execução de contrato (art. 7º, V)? Perfil de criança: consentimento específico do responsável (art. 14, §1º). Confirmar.
enviosdepois da exclusão. A tabela do limite não é apagada junto com a conta. Os dados são resumos e somem em até 24 h. Isso é aceitável ou precisa ser dito na tela da exclusão?- Prova do consentimento depois da revogação: o mesmo ponto 2 de
docs/CONSENTIMENTO_PERFIL_CRIANCA.md. - Transferência internacional. O aditivo de proteção de dados da Cloudflare (versão 6.4, de 03/04/2026) trata da Europa, do Reino Unido, da Suíça e dos EUA, e não menciona LGPD, ANPD nem as cláusulas-padrão da Resolução CD/ANPD nº 19/2024 (obrigatórias para quem usa cláusulas desde 23/08/2025). O da Resend não foi conferido. O texto acima usa o art. 33, IX (execução do contrato com o titular): confirmar se basta, inclusive para os perfis de criança, cuja base é o consentimento do responsável.
- Encarregado. O texto acima usa a dispensa do art. 11 da Resolução CD/ANPD nº 2/2022. Ela vale se a empresa for ME, EPP ou startup dentro dos limites do art. 3º e se o tratamento não for de alto risco (art. 4º: dados de criança são critério específico, mas pedem também larga escala ou impacto significativo). Confirmar o porte da empresa e reavaliar se o número de perfis de criança crescer.
- Assinatura paga. Quando a cobrança existir, entram nesta política a empresa de pagamento (operadora), os dados de cobrança (nome, CPF para a nota fiscal, endereço de cobrança) e o prazo de guarda fiscal (5 anos, CTN art. 173). Hoje o site não cobra nada e não guarda nenhum desses dados.
Voltar à PAPYRO · Seus dados · Termos de uso · Entrar
PAPYRO · Leitura Atômica