DesenvolvimentoPagamento protegidoDetalhes
- Os ajustes previstos no pacote são gratuitos.
- Se você não responder em 3 dias após a entrega, o trabalho é aprovado automaticamente.
O dinheiro fica reservado no pagamento e só é liberado quando você aprova o trabalho.

Exemplo de resultado
Juntando os arquivos mensais de vendas de 9 lojas em um só relatório do Excel
Como ele é executado
python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO Pasta: sales/2026-10, 9 arquivos encontrados
2026-11-02 09:14:03 INFO shop-01.csv: 1.284 linhas
2026-11-02 09:14:04 INFO shop-02.xlsx: 967 linhas
2026-11-02 09:14:04 WARN shop-07.csv: 3 linhas sem preço ignoradas (linhas 88, 412, 913)
2026-11-02 09:14:05 INFO Pronto: 10.412 linhas -> report-2026-10.xlsx (abas "Vendas" e "Totais")
Configurações, não código
Os nomes das colunas de cada loja ficam no settings.ini, então uma loja nova ou uma coluna renomeada é só uma linha ali:
[columns]
date = Data, Data da venda, Dia
product = Produto, Item, Descrição
quantity = Qtd, Quantidade, Unid
price = Preço, Preço unitário
Um trecho do código
def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
"""Lê o arquivo de uma loja e dá a ele os nomes de colunas do relatório."""
table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
renamed = {}
for name, variants in columns.items():
found = next((c for c in table.columns if c.strip() in variants), None)
if found is None:
raise ReportError(f"{path.name}: nenhuma coluna para '{name}' (procuradas: {', '.join(variants)})")
renamed[found] = name
table = table.rename(columns=renamed)[list(columns)]
table["shop"] = path.stem
return table
Arquivos: um arquivo ZIP com merge_sales.py (310 linhas), settings.ini, requirements.txt e um README que explica como instalar o Python, como rodar o script e o que significa cada mensagem do registro. O cliente roda o script no próprio computador.
Cliente: uma pequena rede de 9 papelarias; cada loja envia as vendas do mês em um arquivo CSV ou Excel, com nomes de colunas um pouco diferentes. Tarefa: um script que lê todos os arquivos de uma pasta, deixa as colunas em um só formato e grava um único relatório do Excel com todas as vendas e uma aba de totais por loja.
O cliente e todos os dados são fictícios.
Sobre este serviço
Uma lista de contatos reunida ao longo de anos a partir de uma loja, de um CRM e de planilhas acaba com a mesma pessoa três vezes, telefones escritos de cinco jeitos e e-mails com espaços ou erros de digitação. Este script em Python limpa a sua própria lista no seu computador: tira espaços, corrige maiúsculas, escreve os telefones em um só formato, sinaliza e-mails com formato inválido e encontra duplicados por e-mail ou telefone, depois salva um arquivo limpo e um arquivo separado com o que foi removido, para você conferir. Envie algumas linhas com nomes, telefones e e-mails inventados parecidos com os seus, e as suas regras. A lista nunca chega até nós, e o script nunca envia nada para lugar nenhum. Ele confere o formato de um endereço, não se a caixa de e-mail existe.
O que está incluído
- O que você recebeUm arquivo ZIP com o script em Python, um README com instruções passo a passo e, a partir do Padrão, um arquivo de configurações com as suas regras de limpeza; o código também aparece na página do pedido.
- Duplicados encontradosPor e-mail, por telefone ou pelos dois juntos
- Um só formato de telefoneCom o código do país que você definir para números sem ele
- Linhas removidas guardadasUm arquivo separado com cada linha removida ou mesclada
- Fica no seu computadorA sua lista nunca é enviada nem compartilhada
- Código legívelCom comentários, fácil de mudar uma regra depois
Como funciona
- 1RegrasVocê envia linhas de exemplo inventadas e as suas regras para duplicados
- 2CódigoEscrevemos o script e o guia para rodá-lo
- 3TesteVocê roda em uma cópia da sua lista e confere as linhas removidas
- 4AjustesVocê pede ajustes dentro do seu pacote e envia qualquer mensagem de erro
O que precisamos de você
Os nomes das colunas da sua lista e de 10 a 20 linhas com nomes, telefones e e-mails inventados, escritos do jeito que aparecem nos seus dados reais (com os mesmos tipos de bagunça). Suas regras: o que conta como duplicado, qual linha manter (a mais recente, a mais completa), o código do país para telefones locais e como os telefones devem ser escritos. CSV ou Excel, e o seu sistema: Windows, macOS ou Linux. Nunca envie a lista real.
Vamos perguntar:
- De onde vem a lista?
- O que conta como duplicado?
- Qual linha deve ficar?
- Como os telefones devem ficar?
Compare os pacotes
| Pacotes | BásicoLimpeza básicaR$ 89 | PadrãoLimpeza com regrasR$ 184 | PremiumFerramenta de limpezaR$ 373 |
|---|---|---|---|
| Prazo | 1 dia | 2 dias | 3 dias |
| Ajustes | 1 | 2 | 3 |
| Código | até 150 linhas | até 400 linhas | até 1.000 linhas |
| Arquivos de código | 1 | até 3 | até 8 |
| Arquivo de configurações | Não | Sim | Sim |
| Mensagens de erro claras e um log | Não | Sim | Sim |
| Opções de execução e guia para rodar de forma agendada | Não | Não | Sim |
| Guia de instalação e execução (README) | Sim | Sim | Sim |
| Linguagem | Python | Python | Python |
| Fazer pedido Básico | Fazer pedido Padrão | Fazer pedido Premium |
Pagamento protegido
Você paga ao fazer o pedido, mas o dinheiro só é liberado pelo trabalho aprovado.
- Preço fixoO preço do pacote não muda depois que você paga.
- O dinheiro fica reservadoAo pagar, o valor fica apenas reservado. Ele só é repassado quando você aprova o trabalho.
- Verificado antes da entregaCada resultado passa por um controle de qualidade antes de chegar até você, e você o vê na página do pedido antes de aprovar.
- Ajustes gratuitosPeça ajustes dentro do seu briefing quantas vezes o pacote permitir.
- Aprovação após 3 diasSe em 3 dias após a entrega você não aprovar o trabalho nem pedir ajustes, ele é aprovado automaticamente. Se você escrever no chat do pedido após a entrega, o pedido fica em espera; depois que respondermos, podemos reiniciar a contagem de 3 dias e avisaremos no chat.
- Refazer ou reembolso totalSe o resultado não corresponder ao seu briefing e os ajustes não resolverem, ou se o trabalho levar mais que o dobro do prazo, escreva no chat do pedido: refazemos o trabalho ou reembolsamos o pagamento integralmente.
Perguntas e respostas
Ele consegue dizer quais e-mails estão inativos?
Não. Ele confere se o endereço está escrito corretamente (um @, um domínio, sem espaços) e sinaliza erros comuns de digitação no domínio. Só o serviço de e-mail sabe se uma caixa existe, e essa verificação não faz parte desta oferta.
Ele consegue reconhecer João Silva e J. Silva como a mesma pessoa?
No Premium, ele sinaliza esses quase duplicados para você decidir, em vez de mesclá-los por conta própria, porque nomes sozinhos não são confiáveis. Duplicados exatos por e-mail ou telefone são mesclados pelas suas regras.
A minha lista de contatos fica segura?
Ela nunca sai do seu computador: você mesmo roda o script, o código dele não acessa a internet e nós só vemos as linhas inventadas que você envia. Guarde a lista e a cópia limpa com o mesmo cuidado de antes.
Ele pode incluir contatos ou achar e-mails que faltam?
Não. Ele só arruma os contatos que você já tem. Não procura ninguém nem coleta dados novos.
Não encontrou a resposta?


