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.
O que você vai ver aqui?
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:
- Cadastrar clientes e produtos ou serviços.
- Montar o orçamento, escolhendo o cliente e os itens.
- Baixar o PDF da proposta com a identidade da sua empresa.
- Registrar o resultado, marcando a proposta como aprovada ou recusada.

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.
| Ferramenta | Papel no CRM |
|---|---|
| Python | Linguagem da lógica do sistema: regras, cálculos e orçamentos |
| Flask | Recebe os pedidos do navegador e encaminha para cada ação, como salvar um cliente |
| SQLite | Banco de dados em arquivo local que guarda clientes, produtos e orçamentos |
| Tailwind CSS | Cuida do visual das telas: cores, espaçamentos e responsividade |
| ReportLab | Biblioteca que monta os arquivos PDF das propostas |
| Git | Guarda o histórico do projeto; cada commit é um ponto salvo |

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:
- Abra a aba Extensões, pesquise por "Codex" e instale a extensão Codex, publicada pela própria OpenAI.

- Entre com a mesma conta que você usa no ChatGPT.
- Clique no ícone do Codex na barra lateral para abrir o painel de conversa.
- Crie uma pasta vazia para o projeto e abra essa pasta em File > Open Folder.
- 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.

- 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.

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,quotesequote_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.

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.

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.

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.

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.

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.

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.
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.

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.

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.batpara ativar o ambiente virtual;python app.pypara 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.

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.

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.

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.

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.

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.

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".

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.

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

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

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.


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.

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!
Posts mais recentes de Python
- Como Criar CRM com Codex no VS Code usando Python e FlaskAprenda 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.
- Curso Básico de Python: Saia do Zero em 10 Aulas GrátisAprenda com o curso básico de Python gratuito da Hashtag: 10 aulas práticas, exercícios e projetos reais para sair do zero em programação.
- Agentes RAG com Python: como criar um assistente de IAAprenda a criar Agentes RAG com Python do zero: LangChain, FAISS e OpenAI para montar um assistente de IA que responde com base nos seus documentos.
Posts mais recentes da Hashtag Treinamentos
- O que é tabela dinâmica?O que é tabela dinâmica no Excel, para que serve e o passo a passo para resumir grandes bases de dados sem fórmulas.
- Planilha de Estudos no Excel: Cronograma e Revisões [Grátis]Baixe grátis a planilha de estudos no Excel: distribua as horas por matéria, agende revisões de 1, 7 e 30 dias e acompanhe a evolução até a prova.
- Dashboard no Power BI com Claude: Passo a Passo CompletoMonte um dashboard no Power BI com Claude: modelo, medidas DAX e visuais em HTML com efeito de vidro que respondem aos filtros. Veja o passo a passo.






![Planilha de Estudos no Excel Cronograma e Revisões [Grátis]](https://www.hashtagtreinamentos.com/wp-content/uploads/2021/11/Planilha-de-Estudos-no-Excel-Cronograma-e-Revisoes-Gratis-300x167.png)
