Como Criar CRM com Codex no VS Code usando Python e Flask

Aprenda a criar CRM com Codex no VS Code usando Python, Flask e SQLite, com login, orçamentos e PDF, em fases com testes e commits no Git.

Introdução

Se você presta algum tipo de serviço, já sabe como é: o contato do cliente está no WhatsApp, o preço está numa planilha, a proposta está num arquivo de Word e ninguém lembra se aquele orçamento foi aprovado ou não. Neste artigo você vai ver como criar CRM com Codex, a IA de programação da OpenAI, e sair com um sistema de verdade rodando no seu computador, com login, cadastro de clientes e produtos, orçamentos e propostas em PDF.

E o mais legal é que você não vai só pedir para a IA “fazer um sistema” e torcer para dar certo. Você vai entender cada peça do projeto, planejar antes de construir, dividir o trabalho em fases e registrar cada etapa com commits no Git. É assim que se usa ferramentas de IA para programação com controle, sem perder o fio do que está sendo criado.

No final, você terá um CRM completo feito com Python, Flask e SQLite, que pode adaptar para qualquer negócio e ainda colocar no seu portfólio.

Para fazer o download do(s) arquivo(s) utilizados na aula, preencha com o seu e-mail:

Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.

Saiba o que o seu CRM vai fazer de ponta a ponta

CRM é a sigla para gestão do relacionamento com o cliente. Na prática, é um sistema que reúne num só lugar tudo o que você precisa para atender e vender: os contatos de cada cliente, o histórico do que foi oferecido, combinado e vendido e as propostas que estão em aberto, aprovadas ou recusadas.

O CRM deste projeto foi pensado para quem precisa guardar contatos, consultar preços e acompanhar propostas. O fluxo tem quatro etapas bem simples:

  1. Cadastrar clientes e produtos ou serviços.
  2. Montar o orçamento, escolhendo o cliente e os itens.
  3. Baixar o PDF da proposta com a identidade da sua empresa.
  4. Registrar o resultado, marcando a proposta como aprovada ou recusada.
O que é um CRM: cadastrar, montar o orçamento, baixar o PDF e registrar o resultado

Tudo isso roda localmente, sem hospedagem e sem deploy. Você executa um único comando e a tela de login abre sozinha no navegador. Se hoje você controla seus clientes numa planilha CRM no Excel, esse projeto é o próximo passo natural quando o volume de propostas começa a crescer.

Escolha a ferramenta certa para cada parte do sistema

Antes de pedir qualquer coisa ao Codex, vale entender as peças do projeto. Cada ferramenta tem uma responsabilidade bem definida, e saber disso deixa o seu prompt muito mais claro.

FerramentaPapel no CRM
PythonLinguagem da lógica do sistema: regras, cálculos e orçamentos
FlaskRecebe os pedidos do navegador e encaminha para cada ação, como salvar um cliente
SQLiteBanco de dados em arquivo local que guarda clientes, produtos e orçamentos
Tailwind CSSCuida do visual das telas: cores, espaçamentos e responsividade
ReportLabBiblioteca que monta os arquivos PDF das propostas
GitGuarda o histórico do projeto; cada commit é um ponto salvo
Ferramentas para criar CRM com Codex: Python, Flask, SQLite, Tailwind CSS, ReportLab e Git

Se você ainda não conhece bem a peça central, vale a leitura sobre o que é o Flask. A própria documentação do Flask o define como um framework web leve, feito para começar rápido e crescer até aplicações complexas.

Já o SQLite tem uma vantagem enorme para projetos locais: o Python já vem com o módulo sqlite3, e o banco funciona em disco sem precisar de um processo servidor separado. Ou seja, você não instala nenhum servidor de banco de dados para o CRM funcionar.

Prepare o Codex no VS Code em poucos minutos

Existem duas formas de usar o Codex: pelo aplicativo do ChatGPT, alternando entre o Chat e o Codex e adicionando uma pasta do seu computador ao projeto, ou pela extensão dentro do VS Code. Para quem vai programar, o VS Code é bem mais prático, porque você vê as interações com a IA e os arquivos sendo criados lado a lado.

Se quiser entender melhor a ferramenta antes de começar, confira o que é o Codex e como ele funciona. E se ainda não tem o editor, veja como instalar o VS Code.

Com o VS Code aberto, siga estes passos:

  1. Abra a aba Extensões, pesquise por "Codex" e instale a extensão Codex, publicada pela própria OpenAI.

    Extensão Codex da OpenAI no marketplace do VS Code
  2. Entre com a mesma conta que você usa no ChatGPT.
  3. Clique no ícone do Codex na barra lateral para abrir o painel de conversa.
  4. Crie uma pasta vazia para o projeto e abra essa pasta em File > Open Folder.
  5. No seletor de permissões, escolha Approve for me. Assim o Codex só pede sua aprovação para ações que ele detectar como potencialmente inseguras.
    Opções de aprovação do Codex no VS Code com Approve for me
  6. No seletor de modelo, escolha o GPT-6 Sol com raciocínio Medium. Esse nível faz uma análise mais profunda sem gastar tantos tokens, que é a "moeda" que você usa para trabalhar com a IA.
Seleção do modelo GPT-6 Sol com raciocínio Medium no Codex

Se aparecer alguma dúvida na instalação, a documentação oficial da extensão mostra o passo a passo para o VS Code e editores compatíveis.

Planeje o CRM com o Codex antes de escrever código

Aqui está o segredo para o projeto dar certo. Você já sabe o objetivo (um CRM) e já escolheu as ferramentas. Agora precisa de um plano que diga quais funcionalidades entram e em que ordem elas serão construídas.

Quando você trabalha com IA, construir em pequenas etapas faz toda a diferença. Você consegue verificar se o resultado está do jeito que queria, se a stack escolhida está sendo respeitada e corrigir o rumo antes que o erro se espalhe pelo projeto inteiro.

Um detalhe importante: o resultado pode variar de pessoa para pessoa. Com o mesmo prompt, o Codex pode sugerir um número diferente de fases ou escolher outras cores e bordas para as telas. Isso é normal, porque a IA trabalha com probabilidades e faz escolhas dentro do que entende como, por exemplo, "um layout moderno".

Escreva um prompt com objetivo, stack e requisitos

O prompt inicial é a descrição completa do que você quer. Ele não precisa ser perfeito, mas precisa ser claro. Um bom prompt para esse CRM inclui:

  • A stack confirmada: Python com Flask, banco SQLite, Tailwind via CDN e ReportLab para os PDFs.
  • Como o projeto roda: localmente, com um único comando (python app.py), sem deploy e sem hospedagem.
  • As telas: login com usuário e senha, dashboard com orçamentos criados, aprovados e recusados e um botão "Novo Orçamento".
  • Os cadastros: clientes com nome, e-mail, telefone, empresa (opcional) e observações, com pesquisa por nome; produtos e serviços com nome, descrição e preço unitário.
  • Os orçamentos: cliente, vários itens, observações, total automático, status e o botão "Gerar PDF".
  • O banco e as pastas: as tabelas users, clients, products, quotes e quote_items, a estrutura de pastas e um arquivo requirements.txt com todas as dependências.
  • O objetivo final: um CRM completo, bonito e funcional, com todos os arquivos criados automaticamente.
Prompt inicial para criar CRM com Codex em Python, Flask e SQLite

Repare que o prompt não define a paleta de cores. A ideia é deixar o Codex propor o visual. Se você quiser aprofundar nesse assunto, vale conhecer algumas técnicas de engenharia de prompt.

Agora vem a parte que muita gente pula: em vez de mandar o Codex sair construindo, ative o Plan mode. Clique no botão + da caixa de mensagem e escolha Plan mode. O ícone muda para uma lâmpada, mostrando que você está no modo de planejamento. Cole o prompt e envie.

Ativando o Plan mode do Codex no VS Code

Planejar primeiro economiza tokens e evita que a IA saia acelerada misturando tudo. Nesse modo, o Codex inspeciona o seu computador (verifica se Python e Git estão instalados, por exemplo) e faz perguntas sobre o projeto, sempre marcando uma opção como Recommended. Alguns exemplos de perguntas que podem aparecer:

  • O que fazer com o Git no requirements.txt?
  • Como definir o usuário administrador? Uma boa resposta é deixar tudo no arquivo config.py.
  • Como entram o nome, os dados e o logotipo da empresa? Como configuração local, para cada pessoa preencher os próprios dados.
Codex fazendo perguntas no Plan mode antes de criar o CRM

Controle o Codex com um plano dividido em fases

Depois das perguntas, o Codex entrega um plano com um resumo do sistema, a implementação por fases, as verificações e as premissas do projeto.

Plano de implementação por fases gerado pelo Codex

Você pode aceitar esse plano ou refiná-lo, acrescentando regras de negócio, restrições e permissões. Neste projeto, em vez de seguir o plano de quatro fases sugerido, foi usado um plano próprio com cinco fases, para que qualquer pessoa chegue ao mesmo resultado. Esse plano faz parte do material para download.

As cinco fases para criar CRM com Codex, cada uma com seu commit

O que torna esse plano poderoso são as paradas obrigatórias. Cada fase só começa com uma autorização explícita sua (INICIAR FASE 1, CONTINUAR FASE 2 e assim por diante) e termina sempre do mesmo jeito: o Codex valida o que fez, corrige os problemas, faz o commit e para, esperando a sua próxima ordem.

Ciclo de cada fase no Codex: autorizar, executar, validar, commit e parar

Cada fase tem uma mensagem de commit definida, seguindo o padrão Conventional Commits: chore: para preparar a estrutura e feat: para novas funcionalidades. Se você está começando com versionamento, vale entender como funcionam o Git e os commits. Com isso você tem uma versão salva de cada etapa e consegue saber exatamente o que foi construído em cada momento.

O plano também traz regras que protegem você:

  • Uma autorização libera só uma fase. Perguntas ou correções sobre a fase atual não liberam a próxima.
  • Credenciais, banco de dados pessoal e ambiente virtual nunca entram nos commits.
  • O Git é um programa instalado no sistema, por isso não entra no requirements.txt, que guarda só pacotes Python.

Uma dica que evita dor de cabeça: no Plan mode o Codex não cria arquivos, não instala dependências e não faz commits. Antes de mandar INICIAR FASE 1, feche o modo de planejamento clicando no X ao lado dele.

Ícone ComunidadeComunidade
Impressionadora

Aprenda, em um só lugar, as habilidades mais importantes do mercado — do básico ao avançado. Desenvolva projetos práticos e se torne um profissional pronto para se destacar.

Começar agoraSeta para a direita
Fundo ComunidadeTelas Comunidade

Crie o CRM com Codex fase a fase

Agora é hora de construir. Em cada fase, o Codex responde num formato fixo: FASE N CONCLUÍDA, o que foi criado, as validações feitas e o commit registrado. Entre uma fase e outra, você pode pedir "rode o meu CRM" e o próprio Codex sobe o servidor e abre o sistema no navegador para você testar.

Fase 1: prepare o ambiente e o banco SQLite

Na primeira fase, o Codex verifica o que existe na sua máquina. No exemplo, ele encontrou Python 3.14.2, pip 25.3 e Git 2.51.0. Em seguida, cria o ambiente virtual no Python, instala as dependências (Flask, Flask-WTF e ReportLab) e monta toda a estrutura do projeto.

Também é nessa fase que nascem as cinco tabelas do banco: users, clients, products, quotes e quote_items. Se você quer entender melhor a lógica por trás delas, veja como funcionam tabelas em um banco de dados.

Antes do primeiro commit, o Codex pede seu nome e seu e-mail para registrar o autor no repositório. Depois disso, a fase termina com o banco criado, o administrador cadastrado com a senha em hash e a confirmação de que os dados continuam lá mesmo depois de reiniciar o sistema.

Fase 1 concluída no Codex com validações e commit

No explorador de arquivos do VS Code, você vê tudo o que foi criado dentro de outputs/crm-orcamentos: as pastas controllers, models, templates, static, pdf, data e tests, além de app.py, config.py, db.py, schema.sql e requirements.txt.

Estrutura de pastas do CRM com Python e Flask criada pelo Codex

Fase 2: proteja o acesso com login e interface

Com a base pronta, envie CONTINUAR FASE 2. Nessa etapa, o Codex cria o login e o logout, a sessão do usuário, a proteção das páginas e a proteção contra CSRF, que impede que formulários sejam enviados por sites mal-intencionados.

A interface ganha cabeçalho fixo, menu lateral recolhível, alertas de sucesso e erro e um visual responsivo feito com Tailwind CSS. Um detalhe: o Tailwind é carregado pela internet, e a própria documentação do Tailwind via CDN indica esse modo para desenvolvimento. Para um sistema local como esse, funciona muito bem, só exige conexão.

No exemplo, 11 testes passaram nessa fase. Para abrir o sistema por conta própria, abra o Prompt de Comando na pasta do projeto e rode:

  • .venv\Scripts\activate.bat para ativar o ambiente virtual;
  • python app.py para iniciar o CRM.

A tela de login abre sozinha no navegador. O usuário inicial é admin e a senha está no arquivo config.py. É só copiar de lá e entrar.

Tela de login do CRM com Flask criada pelo Codex

Depois do login, você já vê a área inicial com os atalhos para clientes, produtos e orçamentos. Eles aparecem como "disponível na fase 3" e "disponível na fase 4", porque ainda não foram construídos. É o plano funcionando: nada é antecipado.

Área inicial do CRM depois da fase 2

Por trás dessa tela, o Flask recebe o pedido de entrada, confere usuário e senha e cria a sessão que mantém você autenticado. Se quiser se aprofundar em rotas e templates, veja como criar um site com Flask. E saiba que dá para evoluir esse login depois, com perfis diferentes como administrador e vendedor.

Fase 3: cadastre clientes e produtos

Na terceira fase entram os cadastros. Para clientes, você consegue criar, listar, pesquisar por nome, editar e excluir. Para produtos e serviços, criar, listar, editar e excluir. Os formulários validam os dados antes de o Flask gravar no banco, e as exclusões pedem confirmação. No exemplo, foram 19 testes.

Fase 3 concluída com 19 testes no Codex

Hora de testar na mão. Cadastre um produto chamado Tela Login, com a descrição "Criar interface e todas suas funcionalidades" e preço de R$ 350,00.

Cadastro de produto no CRM com Python e Flask

Depois cadastre um cliente, por exemplo Claudio Ferreira, da empresa TechHash, com a observação "Cliente startup de marketing digital". Teste a pesquisa: buscando um nome que não existe, a lista fica vazia; buscando "Claudio", ele aparece.

Pesquisa de clientes por nome no CRM

Se você já fez um cadastro de clientes com Python e banco de dados em outro formato, vai reconhecer a lógica. A diferença é que aqui tudo roda numa aplicação web.

Quer ver o que foi gravado? Instale a extensão SQLite Viewer no VS Code e clique no arquivo .sqlite3 dentro da pasta data. O banco abre em formato de tabela, mostrando cada registro, as colunas, os tipos de dado e a chave primária.

Tabela de produtos do banco SQLite aberta no VS Code

Fases 4 e 5: gere orçamentos e propostas em PDF

A fase 4 traz o coração do CRM: os orçamentos. Você seleciona o cliente, adiciona vários produtos com quantidades e escreve observações. O total aparece na tela na hora, mas é recalculado no servidor, o que impede que alguém manipule o valor pelo navegador. Os valores são guardados em centavos, para evitar erros de arredondamento, e o orçamento é salvo junto com os itens numa única transação.

No exemplo, o orçamento para Claudio Ferreira teve 2 unidades da Tela Login, totalizando R$ 700,00, com a observação "Prazo 30 dias".

Novo orçamento no CRM com total calculado automaticamente

Um bom exemplo de por que as validações importam: nessa fase, os testes encontraram acentos gravados de forma errada, que apareceriam nas telas. O Codex corrigiu antes de fazer o commit, e 26 testes passaram.

Outro ponto: ao testar no navegador, a atualização de status ainda não estava funcionando. Em vez de corrigir à mão, a solução foi reforçar no comando da próxima fase: "inicie a fase 5, lembre de implementar os status de orçamento e também o botão para gerar o PDF". Revisar o resultado e pedir ajustes faz parte do trabalho com IA.

Na fase 5, o Codex finaliza os PDFs, roda os testes em uma instalação limpa (30 testes passaram), documenta a instalação e o uso e prepara uma cópia do projeto sem credenciais.

Fase 5 concluída no Codex com 30 testes

Agora você consegue mudar o status de cada orçamento entre Enviado (azul), Aprovado (verde) e Recusado (vermelho), sempre com texto e ícone.

Status do orçamento: enviado, aprovado ou recusado

E o painel de orçamentos se atualiza sozinho, mostrando quantos foram criados, aprovados e recusados, além dos orçamentos recentes.

Painel de orçamentos do CRM com indicadores

Por fim, o botão Gerar PDF baixa o arquivo orcamento-1.pdf, montado com a biblioteca ReportLab. A proposta traz os dados da empresa, o número do orçamento, a data, o status, os dados do cliente, a tabela de itens, o total e as observações.

Proposta em PDF gerada com ReportLab no CRM
Itens e total da proposta em PDF do CRM

Se quiser explorar mais o assunto, veja como gerar relatórios em PDF com Python usando a mesma biblioteca.

Personalize o CRM para o seu negócio

O CRM está pronto, mas ele ainda tem a cara da "Empresa Exemplo Ltda.". Para deixá-lo com a sua identidade, abra o arquivo config.py. Lá ficam o usuário e a senha do administrador, o nome da empresa, o e-mail, o telefone, o endereço, o logotipo e a opção de abrir o navegador automaticamente.

Arquivo config.py com os dados da empresa no CRM

Você pode editar esse arquivo direto no VS Code ou simplesmente pedir ao Codex para trocar o login, colocar o nome da sua empresa ou adicionar novos produtos. Só lembre de nunca compartilhar a chave secreta e a senha que ficam nesse arquivo.

E o mais interessante é que esse sistema serve para praticamente qualquer área: uma clínica de estética, uma consultoria financeira, um serviço de alimentação ou um freelancer que vende sites. Basta cadastrar os seus serviços e começar a montar propostas.

Alguns ajustes que você pode pedir ao Codex a partir daqui:

  • Pedir login sempre: como a sessão não é encerrada, o CRM pode abrir já logado na próxima vez. Se preferir, peça para ele exigir o login a cada inicialização.
  • Mais usuários: a versão atual tem um administrador. Dá para criar perfis como vendedor, cada um com o seu acesso.
  • Novas funcionalidades: impostos, descontos, estoque, envio de propostas por e-mail e edição de itens depois de salvar ficaram de fora desta versão e são ótimos próximos passos.

Por ser um sistema completo, de ponta a ponta, esse CRM também é uma ótima peça para mostrar em entrevistas. Se estiver montando o seu portfólio, confira outras ideias de projetos em Python para o portfólio.

Conclusão

Neste artigo, você viu como criar CRM com Codex do jeito certo: definindo o objetivo, escolhendo uma stack em que cada ferramenta tem o seu papel, planejando no Plan mode e construindo em cinco fases, cada uma com testes, commit e uma parada para você conferir o resultado. No fim, ficou com um sistema com login, cadastros, orçamentos, indicadores e propostas em PDF, rodando no seu computador.

Mais do que um CRM, você agora tem um método para construir qualquer projeto com IA sem perder o controle, e uma base que pode adaptar para outras ideias. E se quiser entender a fundo o Python que está por trás de tudo isso, para revisar, corrigir e evoluir o que a IA escreve, conheça o nosso curso de Python e leve os seus projetos para o próximo nível.

Caso prefira esse conteúdo no formato de videoaula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Posts mais recentes de Python

Posts mais recentes da Hashtag Treinamentos