Como padronizar o cadastro de produtos
Normaliza cadastros de produto que cresceram sem padrão: reescreve títulos e campos seguindo a regra que você define — ordem dos termos, unidades, capitalização, abreviações permitidas. “COCA COLA LT 350”, “Refrig. Coca-Cola 350ml lata” e “coca lata” viram o mesmo formato, e o catálogo passa a parecer obra de uma pessoa só.
Rode online
Rode nos nossos servidores com a sua conta. As ferramentas grátis rodam no seu navegador; esta aqui é descontada do seu saldo do KIT pelo preço acima.
Todo cadastro antigo virou um dialeto próprio
Anos de cadastros feitos por gente diferente, com pressa diferente, produzem o inevitável: o mesmo produto escrito de cinco jeitos, unidades ora em “ml” ora em “ML” ora por extenso, marca no começo ou no fim conforme o dia. As consequências são práticas — busca interna que não acha, duplicidade de estoque, relatório que soma errado porque trata variações como itens distintos. Padronizar na mão é o tipo de projeto que nunca começa; em lote, é uma tarde.
A regra é sua: descreva o padrão uma vez
Na instrução da chamada você descreve o padrão da casa — por exemplo: “Categoria + Marca + Produto + Variação + Conteúdo, unidades sempre em minúsculas com espaço (350 ml), sem abreviação exceto kg e ml” — e envia os itens. Cada um volta reescrito na regra, preservando a informação original: normalizar é arrumar a casa, não jogar dado fora. Vale mandar meia dúzia de exemplos do formato ideal junto; melhora a consistência do lote inteiro.
Onde isso rende mais
Três terrenos clássicos: unificação de bases após fusão ou troca de sistema, quando dois cadastros com culturas diferentes precisam conviver; recebimento de catálogos de fornecedores, cada um no seu dialeto, que precisam entrar no seu padrão; e marketplaces ou comparadores, onde título padronizado ranqueia e converte melhor que sopa de maiúsculas. Cada item normalizado custa US$ 0,0135, mais US$ 0,003 por chamada — o catálogo de 5.000 itens sai por uns US$ 68.
Casos de uso
Mercado de bairro informatizando
A Padaria Pão Dourado Ltda. ampliou para minimercado e herdou um cadastro com 2.300 itens digitados no caixa ao longo de dez anos — “LEITE INT 1L PARM”, “leite parmalat integral”, “LTE. INTEGRAL”. A normalização unificou o cadastro antes da migração para o sistema novo.
Distribuidora unificando dois sistemas
Na fusão de duas distribuidoras, cada base tinha seu jeito de escrever os mesmos 8.000 produtos. Os dois cadastros passaram pelo mesmo padrão via API e as duplicidades ficaram visíveis de imediato — antes de contaminarem o estoque unificado.
Farmácia e a busca que não achava
Na loja on-line de uma rede de farmácias, buscar “dipirona 500” não retornava metade dos itens, cadastrados como “DIP. 500MG CX 10 CP”. Com títulos normalizados (princípio, dosagem, forma, quantidade), a busca interna voltou a encontrar o que existe no estoque.
Comparando preços de fornecedores
Rafael Almeida Costa, comprador de um restaurante, recebe tabelas de quatro fornecedores onde o mesmo arroz aparece como “ARROZ AGULH T1 5KG”, “Arroz agulhinha tipo 1 5 kg” e “ARROZ 5QUILOS T1”. Normalizadas para o mesmo formato, as tabelas finalmente ficam comparáveis linha a linha.
Perguntas frequentes
Normalizar não vai apagar informação dos títulos?
A regra é reorganizar e uniformizar, não resumir: o conteúdo original (marca, variação, quantidade) é preservado no formato novo. Se algum item perder algo por ambiguidade da origem, ele pode voltar sinalizado para revisão em vez de sair “bonito e errado”.
Ele também acha os produtos duplicados?
Ele torna os duplicados evidentes — depois da normalização, duplicatas ficam com títulos idênticos ou quase, fáceis de agrupar. A detecção e fusão de duplicados em si é trabalho para as ferramentas de dados da mesma API, na sequência.
Posso normalizar também descrição e outros campos?
Sim: o padrão que você descreve pode cobrir título, descrição curta e campos de texto que precisem de uniformidade. Cada item enviado conta como uma unidade, com os campos que você incluir nele.
Como garanto que o resultado segue mesmo o meu padrão?
Teste com uma amostra: mande 30 itens difíceis, confira, ajuste a instrução e só então rode o lote completo. Como a regra é texto seu, refinar custa minutos — e a amostra de teste custa menos de US$ 0,50.
Em que moeda e como se paga?
Em dólares (US$), por uso: US$ 0,003 por chamada e US$ 0,0135 por item. O pagamento é via PayPal — ainda sem Pix, falando com franqueza — e sem assinatura: normalizou, pagou, acabou. O comprovante do PayPal documenta o gasto para a contabilidade.
O cadastro enviado pode acabar em mãos de concorrente?
Não: seus dados são processados para gerar o seu resultado e não integram nenhuma base compartilhada. Sortimento e nomenclatura de compra são informação sensível de varejo, e o tratamento aqui respeita isso — e a LGPD, quando houver dado pessoal no meio.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/text/product-normalize \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/text/product-normalize", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/product-normalize",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/product-normalize", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/product-normalize", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"items": [
"valor-1",
"valor-2"
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.product_normalize",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Limites
max_tokens | 20000 |
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
422 | task_failed | A tarefa falhou do nosso lado. Você não paga nada por ela. |