image

Accede a bootcamps ilimitados y a más de 650 cursos

50
%OFF
Article image
Izairton Vasconcelos
Izairton Vasconcelos30/01/2025 18:17
Compartir

Simulador de Métricas para Escolas Online: Decisões Baseadas em Dados com Python

    Contextualizando - métricas KPIs

    A decisão de crescer e se destacar num mundo cada vez mais competitivo está cada vez mais presente no cotidiano das pessoas e muito mais necessário na compreensão dos dados gerados no ambiente dos negócios.

    Tratar os dados de maneira profissional e eficiente faz parte da boa gestão empresarial e não podem ficar em segundo plano pelos administradores.

    As métricas (KPIs - Key Performance Indicators) vem de encontro a essa necessidade. Elas são a chave para entender como as coisas estão andando de acordo com o planejado.

    Este artigo tem como objetivo apresentar o conceito das KPIs no contexto prático de uma escola online que oferece diferentes produtos e recursos educacionais, fornecendo uma ferramenta que permita simular diferentes cenários de negócios, calculando métricas de desempenho e gerando relatórios detalhados em formato PDF através de um simulador construído em Python.


    Mas afinal, o que são e o que medem as KPIs? 

    image

    Nada mais são que indicadores que ajudam você a medir o sucesso de aspectos importantes do seu negócio. Por exemplo:

    •   Qual é o lucro da sua escola?

    •   Quantos alunos você perdeu no último mês (churn rate)?

    •   O quanto um aluno gera de receita ao longo do tempo (LTV)?

    •   E quanto custa adquirir novos alunos (CAC)?

    A resposta pode vir das métricas. E foi justamente analisando essa necessidade que este projeto nasceu.

    A Ideia: Unir Tecnologia e Gestão Educacional

    Criar um simulador simples e eficaz em Python que ajudasse administradores de escolas online (foco principal) a entenderem melhor a performance de sua empresa, oferecendo uma ferramenta que:

    1.  Permita simular diferentes cenários de negócio com base nos dados fornecidos.

    2.  Calcule automaticamente métricas importantes (KPIs) para a gestão.

    3.  Gere relatórios visuais em PDF para facilitar a análise.

    4.  Simplifique a tomada de decisão, transformando dados em informações úteis.

    Para desenvolver o projeto, estudei como as métricas funcionam na prática e direcionei esse conhecimento para um contexto educacional. O resultado? Um simulador que combina cálculos automatizados com relatórios visuais completos.


    Conceitos Técnicos das KPIs utilizadas

    1. Lucro: Receita total menos custos totais.

    2. Margem de Lucro: Percentual do lucro em relação à receita total.

    3. Taxa de Conversão: Percentual de alunos grátis que se tornam premium.

    4. Churn Rate: Percentual de alunos que cancelam suas assinaturas.

    5. LTV (Lifetime Value): Valor médio gerado por aluno durante o tempo de assinatura.

    6. CAC (Custo de Aquisição por Cliente): Custo médio para adquirir um novo aluno.

    7. NPS (Net Promoter Score): Métrica de satisfação dos alunos, dividida em promotores, neutros e detratores.

    8. Crescimento Mensal de Alunos: Taxa de crescimento do número de alunos de um mês para o outro.

    Montagem Simples e Bem Dividida da Estrutura

    O simulador foi dividido em quatro arquivos Python, cada um com uma responsabilidade clara. Isso facilita a manutenção e torna o código mais organizado:

    1.  simulacao.py:

    Função principal: calcular_kpis.

    Fornece toda a lógica para calcular os KPIs, como lucro, margem de lucro, churn rate, LTV, CAC, entre outros. Ele recebe os dados de entrada do usuário e retorna os resultados como um dicionário organizado.

    2.  interface_grafica.py:

    Através da biblioteca tkinter, cria a interface gráfica onde o usuário deverá inserir os dados.

    Coleta os valores de entrada e os passa para a função calcular_kpis.

    3.  gerar_relatorio.py:

    Função principal: gerar_relatorio_pdf.

    Este arquivo pega os resultados calculados e gera um relatório PDF contendo as métricas e gráficos. Ele usa as bibliotecas fpdf para PDFs e matplotlib para criar gráficos visuais.

    4.  main.py:

    Função principal: Iniciar o programa.

    Este é o ponto de entrada do script. Ele chama a interface gráfica e conecta todos os outros arquivos.


    Relação Entre os Arquivos


    - O arquivo main.py inicia a execução do programa, chamando a função coletar_dados do arquivo interface_grafica.py.

    - Por sua vez, a interface gráfica coleta os dados do usuário e os passa para a função calcular_kpis do arquivo simulacao.py.

    - Após o cálculo das KPIs, os resultados são passados para a função gerar_relatorio_pdf do arquivo gerar_relatorio.py, que gera o relatório final em PDF.

    Funcionamento do Script

    1. Entrada do Usuário:

    image- O usuário insere os dados na interface gráfica, como:

       - Quantidade de cursos, bootcamps e mentorias.

    - Número de alunos premium e grátis.

       - Valores das assinaturas premium e grátis.

       - Custos com professores, custos fixos e custos de marketing.

        - Receita mensal, número de alunos cancelados, novos alunos e tempo médio de assinatura.

    2.  Cálculo dos KPIs:

    Com os dados fornecidos, o script calcula automaticamente métricas como:

    o   Lucro e margem de lucro.

    o   Taxa de conversão e churn rate (taxa de cancelamento).

    o   LTV (Lifetime Value) e CAC (Custo de Aquisição de Cliente).

    o   ROI (Retorno sobre Investimento), entre outros.

    3.  Processamento:

      - Os dados são passados para a função `calcular_kpis`, que calcula todas as métricas.

      - Os resultados são então enviados para a função `gerar_relatorio_pdf`.

    4. Geração do Relatório:

      - A função gerar_relatorio_pdf cria gráficos utilizando matplotlib e os insere no PDF.

      - O relatório em PDF é salvo com o nome relatorio_kpis.pdf.

    5.  Tomada de decisão:

    O administrador usa o relatório para entender a performance da escola e tomar decisões mais embasadas.


    Resultados

    image

    O relatório gerado inclui:

    1. KPIs Calculados:

      - Lucro, margem de lucro, taxa de conversão, churn rate, LTV, CAC, NPS e crescimento mensal de alunos.

    2. Gráficos:

      - Distribuição de alunos (Premium vs Grátis).

      - Comparação de receita, custos e lucro.

      - Crescimento mensal de alunos.

      - Distribuição do NPS (Promotores, Neutros, Detratores).

    image


    Conclusão


    Este projeto provou que a tecnologia pode ser uma grande aliada na gestão de negócios, mesmo para iniciantes.

    Usando Python, conseguimos desenvolver um simulador simples, mas poderoso, que ajuda escolas online a transformarem dados em insights valiosos. Através de uma estrutura modular enxuta, o desenvolvimento se tornou prático com possibilidades de expandir no futuro. A ferramenta possui uma interface gráfica amigável disponibilizando ainda um relatório visual em PDF economizando tempo e oferecendo uma visão clara da performance.

    ANEXO – Os Códigos

    a) Simulação.py

    def calcular_kpis(cursos, bootcamps, mentorias, alunos_premium, alunos_gratis, valor_premium, valor_gratis, custos_professores, custos_fixos, receita_mensal, alunos_cancelados, custos_marketing, novos_alunos, tempo_medio_assinatura, alunos_mes_anterior, alunos_mes_atual):
      # Cálculo de KPIs
      total_alunos = alunos_premium + alunos_gratis
      receita_total = (alunos_premium * valor_premium) + (alunos_gratis * valor_gratis)
      custos_totais = custos_professores + custos_fixos + custos_marketing
      lucro = receita_total - custos_totais
      margem_lucro = (lucro / receita_total) * 100 if receita_total != 0 else 0
    
    
      # Novas KPIs
      taxa_conversao = (alunos_premium / alunos_gratis) * 100 if alunos_gratis != 0 else 0
      custo_por_aluno = custos_totais / total_alunos if total_alunos != 0 else 0
      receita_por_aluno = receita_total / total_alunos if total_alunos != 0 else 0
      roi = (lucro / custos_totais) * 100 if custos_totais != 0 else 0
      churn_rate = (alunos_cancelados / total_alunos) * 100 if total_alunos != 0 else 0
      ltv = (receita_total / total_alunos) * tempo_medio_assinatura if total_alunos != 0 else 0
      cac = custos_marketing / novos_alunos if novos_alunos != 0 else 0
      crescimento_mensal = ((alunos_mes_atual - alunos_mes_anterior) / alunos_mes_anterior) * 100 if alunos_mes_anterior != 0 else 0
    
    
      # Simulação de NPS
      nps_promotores = 60  # 60% promotores
      nps_neutros = 30     # 30% neutros
      nps_detratores = 10  # 10% detratores
    
    
      kpis = {
          "total_alunos": total_alunos,
          "receita_total": receita_total,
          "custos_totais": custos_totais,
          "lucro": lucro,
          "margem_lucro": margem_lucro,
          "taxa_conversao": taxa_conversao,
          "custo_por_aluno": custo_por_aluno,
          "receita_por_aluno": receita_por_aluno,
          "roi": roi,
          "churn_rate": churn_rate,
          "ltv": ltv,
          "cac": cac,
          "crescimento_mensal": crescimento_mensal,
          "nps_promotores": nps_promotores,
          "nps_neutros": nps_neutros,
          "nps_detratores": nps_detratores,
          "cursos": cursos,
          "bootcamps": bootcamps,
          "mentorias": mentorias,
          "alunos_premium": alunos_premium,
          "alunos_gratis": alunos_gratis,
          "valor_premium": valor_premium,
          "valor_gratis": valor_gratis,
          "custos_professores": custos_professores,
          "custos_fixos": custos_fixos,
          "receita_mensal": receita_mensal,
          "alunos_cancelados": alunos_cancelados,
          "custos_marketing": custos_marketing,
          "novos_alunos": novos_alunos,
          "tempo_medio_assinatura": tempo_medio_assinatura,
          "alunos_mes_anterior": alunos_mes_anterior,
          "alunos_mes_atual": alunos_mes_atual
      }
    
    
      return kpis
    
    

    b) gerar_relatorio.py

    from fpdf import FPDF
    import matplotlib.pyplot as plt
    import locale
    
    
    # Configurar o locale para o padrão brasileiro
    locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8')
    
    
    def gerar_relatorio_pdf(kpis):
      # Criar gráficos
      plt.figure(figsize=(15, 10))
    
    
      # Gráfico de Pizza: Distribuição de Alunos (Premium vs Grátis)
      plt.subplot(2, 2, 1)
      labels = ["Premium", "Grátis"]
      sizes = [kpis["alunos_premium"], kpis["alunos_gratis"]]
      plt.pie(sizes, labels=labels, autopct="%1.1f%%", colors=["green", "blue"])
      plt.title("Distribuição de Alunos (Premium vs Grátis)")
    
    
      # Gráfico de Barras: Receita, Custos e Lucro
      plt.subplot(2, 2, 2)
      categorias = ["Receita", "Custos", "Lucro"]
      valores = [kpis["receita_total"], kpis["custos_totais"], kpis["lucro"]]
      plt.bar(categorias, valores, color=["green", "red", "blue"])
      plt.title("Receita, Custos e Lucro")
    
    
      # Gráfico de Linhas: Crescimento Mensal de Alunos
      plt.subplot(2, 2, 3)
      meses = ["Mês Anterior", "Mês Atual"]
      alunos = [kpis["alunos_mes_anterior"], kpis["alunos_mes_atual"]]
      plt.plot(meses, alunos, marker="o", color="purple")
      plt.title("Crescimento Mensal de Alunos")
    
    
      # Gráfico de Barras: NPS (Promotores, Neutros, Detratores)
      plt.subplot(2, 2, 4)
      nps_categorias = ["Promotores", "Neutros", "Detratores"]
      nps_valores = [kpis["nps_promotores"], kpis["nps_neutros"], kpis["nps_detratores"]]
      plt.bar(nps_categorias, nps_valores, color=["green", "yellow", "red"])
      plt.title("NPS (Net Promoter Score)")
    
    
      plt.tight_layout()
      plt.savefig("graficos.png")
    
    
      # Gerar PDF
      pdf = FPDF()
      pdf.add_page()
      pdf.set_font("Arial", size=12)
    
    
      # Título do Relatório
      pdf.cell(200, 10, txt="Relatório de KPIs - Escola Online", ln=True, align="C")
      pdf.ln(10)
    
    
      # Adicionar KPIs ao PDF (formatados em R$)
      pdf.cell(200, 10, txt=f"Total de Alunos: {kpis['total_alunos']}", ln=True)
      pdf.cell(200, 10, txt=f"Receita Total: {locale.currency(kpis['receita_total'], grouping=True)}", ln=True)
      pdf.cell(200, 10, txt=f"Custos Totais: {locale.currency(kpis['custos_totais'], grouping=True)}", ln=True)
      pdf.cell(200, 10, txt=f"Lucro: {locale.currency(kpis['lucro'], grouping=True)}", ln=True)
      pdf.cell(200, 10, txt=f"Margem de Lucro: {kpis['margem_lucro']:.2f}%", ln=True)
      pdf.cell(200, 10, txt=f"Taxa de Conversão: {kpis['taxa_conversao']:.2f}%", ln=True)
      pdf.cell(200, 10, txt=f"Custo por Aluno: {locale.currency(kpis['custo_por_aluno'], grouping=True)}", ln=True)
      pdf.cell(200, 10, txt=f"Receita por Aluno: {locale.currency(kpis['receita_por_aluno'], grouping=True)}", ln=True)
      pdf.cell(200, 10, txt=f"ROI: {kpis['roi']:.2f}%", ln=True)
      pdf.cell(200, 10, txt=f"Churn Rate: {kpis['churn_rate']:.2f}%", ln=True)
      pdf.cell(200, 10, txt=f"LTV: {locale.currency(kpis['ltv'], grouping=True)}", ln=True)
      pdf.cell(200, 10, txt=f"CAC: {locale.currency(kpis['cac'], grouping=True)}", ln=True)
      pdf.cell(200, 10, txt=f"Crescimento Mensal: {kpis['crescimento_mensal']:.2f}%", ln=True)
      pdf.cell(200, 10, txt=f"NPS: Promotores {kpis['nps_promotores']}%, Neutros {kpis['nps_neutros']}%, Detratores {kpis['nps_detratores']}%", ln=True)
      pdf.ln(10)
    
    
      # Adicionar gráficos ao PDF
      pdf.image("graficos.png", x=10, y=pdf.get_y(), w=180)
    
    
      # Adicionar Anexo com Explicações Dinâmicas
      pdf.add_page()
      pdf.set_font("Arial", size=12)
      pdf.cell(200, 10, txt="ANEXO: Explicação das Fórmulas e Análise dos Resultados", ln=True, align="C")
      pdf.ln(10)
    
    
      # Explicação das Fórmulas e Análise dos Resultados
      pdf.set_font("Arial", size=12, style="B")
      pdf.cell(200, 10, txt="1. Explicação das Fórmulas e Resultados", ln=True)
      pdf.set_font("Arial", size=12)
      pdf.multi_cell(0, 10, txt=f"""
      - Receita Total: A receita total foi de {locale.currency(kpis['receita_total'], grouping=True)}, sendo {locale.currency(kpis['alunos_premium'] * kpis['valor_premium'], grouping=True)} proveniente dos alunos premium e {locale.currency(kpis['alunos_gratis'] * kpis['valor_gratis'], grouping=True)} dos alunos grátis. Isso indica que a escola depende principalmente dos alunos premium para gerar receita.
    
    
      - Custos Totais: Os custos totais foram de {locale.currency(kpis['custos_totais'], grouping=True)}, incluindo {locale.currency(kpis['custos_professores'], grouping=True)} com professores, {locale.currency(kpis['custos_fixos'], grouping=True)} com custos fixos e {locale.currency(kpis['custos_marketing'], grouping=True)} com marketing. A escola deve avaliar a eficiência desses custos.
    
    
      - Lucro: O lucro foi de {locale.currency(kpis['lucro'], grouping=True)}, resultante da diferença entre a receita total e os custos totais. {"Um lucro positivo indica que a escola está operando com eficiência financeira." if kpis['lucro'] >= 0 else "Um lucro negativo indica que a escola está operando com prejuízo, o que é preocupante."}
    
    
      - Margem de Lucro: A margem de lucro foi de {kpis['margem_lucro']:.2f}%. {"Isso é considerado saudável, mas há espaço para melhorias, como a redução de custos ou o aumento da receita." if kpis['margem_lucro'] >= 0 else "Uma margem de lucro negativa indica que a escola está gastando mais do que arrecada, o que é insustentável a longo prazo."}
    
    
      - Taxa de Conversão: A taxa de conversão foi de {kpis['taxa_conversao']:.2f}%, indicando que, para cada 5 alunos grátis, 1 se torna premium. A escola pode melhorar essa taxa com estratégias de marketing mais eficazes.
    
    
      - Custo por Aluno: O custo por aluno foi de {locale.currency(kpis['custo_por_aluno'], grouping=True)}, o que é {"razoável, mas pode ser otimizado." if kpis['custo_por_aluno'] <= 50 else "alto, indicando que a escola precisa reduzir custos para se tornar mais eficiente."}
    
    
      - Receita por Aluno: A receita por aluno foi de {locale.currency(kpis['receita_por_aluno'], grouping=True)}, um valor {"baixo devido ao grande número de alunos grátis. A escola deve focar em aumentar a base de alunos premium." if kpis['receita_por_aluno'] <= 50 else "adequado, mas ainda pode ser melhorado com estratégias de upsell."}
    
    
      - ROI: O ROI foi de {kpis['roi']:.2f}%, indicando que a escola está {"gerando um retorno positivo sobre seus investimentos." if kpis['roi'] >= 0 else "operando com um retorno negativo, o que é preocupante."}
    
    
      - Churn Rate: O Churn Rate foi de {kpis['churn_rate']:.2f}%, {"considerado baixo. Isso sugere que a maioria dos alunos está satisfeita com os serviços da escola." if kpis['churn_rate'] <= 5 else "considerado alto. Isso sugere que muitos alunos estão cancelando suas assinaturas, o que pode ser um sinal de insatisfação."}
    
    
      - LTV: O LTV foi de {locale.currency(kpis['ltv'], grouping=True)}, indicando o valor médio que um aluno gera durante todo o tempo de assinatura. A escola pode aumentar esse valor com estratégias de retenção.
    
    
      - CAC: O CAC foi de {locale.currency(kpis['cac'], grouping=True)}, o que é {"aceitável, mas pode ser reduzido com estratégias de marketing mais eficientes." if kpis['cac'] <= 100 else "alto, indicando que a escola está gastando muito para adquirir novos alunos."}
    
    
      - Crescimento Mensal: O crescimento mensal foi de {kpis['crescimento_mensal']:.2f}%, indicando uma {"expansão constante da base de alunos." if kpis['crescimento_mensal'] >= 0 else "redução na base de alunos, o que é preocupante."}
    
    
      - NPS: O NPS foi de {kpis['nps_promotores'] - kpis['nps_detratores']}, com {kpis['nps_promotores']}% de promotores, {kpis['nps_neutros']}% de neutros e {kpis['nps_detratores']}% de detratores. Isso indica que a maioria dos alunos está satisfeita com a escola.
      """)
    
    
      # Parecer Geral do Analista
      pdf.set_font("Arial", size=12, style="B")
      pdf.cell(200, 10, txt="2. Parecer Geral do Analista", ln=True)
      pdf.set_font("Arial", size=12)
    
    
      if kpis['lucro'] < 0:
          parecer = f"""
          A escola online está operando com prejuízo de {locale.currency(kpis['lucro'], grouping=True)} e uma margem de lucro negativa de {kpis['margem_lucro']:.2f}%. Isso indica que os custos estão muito altos em relação à receita gerada. Além disso, o Churn Rate de {kpis['churn_rate']:.2f}% sugere que muitos alunos estão cancelando suas assinaturas, o que pode ser um sinal de insatisfação.
    
    
          Recomenda-se:
          - Reduzir drasticamente os custos, especialmente com professores e marketing.
          - Revisar a estratégia de preços para aumentar a receita.
          - Implementar programas de retenção para reduzir o Churn Rate.
          - Avaliar a eficácia das campanhas de marketing, já que o CAC está alto em relação ao LTV.
    
    
          A situação atual é crítica, e ações imediatas são necessárias para evitar prejuízos maiores.
          """
      else:
          parecer = f"""
          A escola online apresenta um desempenho financeiro {"satisfatório" if kpis['lucro'] > 0 else "neutro"}, com um lucro de {locale.currency(kpis['lucro'], grouping=True)} e uma margem de lucro de {kpis['margem_lucro']:.2f}%. No entanto, há oportunidades de melhoria, como:
          - Aumentar a taxa de conversão de alunos grátis para premium.
          - Reduzir os custos de marketing para melhorar o ROI.
          - Implementar estratégias de retenção para aumentar o LTV.
          - Acelerar o crescimento mensal de alunos com campanhas mais eficientes.
    
    
          No geral, a escola está no caminho certo, mas pode alcançar resultados ainda melhores com ajustes estratégicos.
          """
    
    
      pdf.multi_cell(0, 10, txt=parecer)
    
    
      pdf.output("relatorio_kpis.pdf")
      print("Relatório gerado com sucesso: relatorio_kpis.pdf")
      
    

    c) interface_grafica.py

    import tkinter as tk
    from tkinter import messagebox
    from src.simulacao import calcular_kpis
    from gerar_relatorio import gerar_relatorio_pdf
    import locale
    
    
    # Configurar o locale para o padrão brasileiro
    locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8')
    
    
    def coletar_dados():
      def gerar_relatorio():
          try:
              # Coletar dados dos campos
              cursos = int(entry_cursos.get())
              bootcamps = int(entry_bootcamps.get())
              mentorias = int(entry_mentorias.get())
              alunos_premium = int(entry_alunos_premium.get())
              alunos_gratis = int(entry_alunos_gratis.get())
              valor_premium = float(entry_valor_premium.get())
              valor_gratis = float(entry_valor_gratis.get())
              custos_professores = float(entry_custos_professores.get())
              custos_fixos = float(entry_custos_fixos.get())
              receita_mensal = float(entry_receita_mensal.get())
              alunos_cancelados = int(entry_alunos_cancelados.get())
              custos_marketing = float(entry_custos_marketing.get())
              novos_alunos = int(entry_novos_alunos.get())
              tempo_medio_assinatura = float(entry_tempo_medio_assinatura.get())
              alunos_mes_anterior = int(entry_alunos_mes_anterior.get())
              alunos_mes_atual = int(entry_alunos_mes_atual.get())
    
    
              # Calcular KPIs
              kpis = calcular_kpis(
                  cursos, bootcamps, mentorias, alunos_premium, alunos_gratis,
                  valor_premium, valor_gratis, custos_professores, custos_fixos,
                  receita_mensal, alunos_cancelados, custos_marketing, novos_alunos,
                  tempo_medio_assinatura, alunos_mes_anterior, alunos_mes_atual
              )
    
    
              # Gerar relatório
              gerar_relatorio_pdf(kpis)
              messagebox.showinfo("Sucesso", "Relatório gerado com sucesso: relatorio_kpis.pdf")
          except ValueError:
              messagebox.showerror("Erro", "Por favor, insira valores válidos.")
    
    
      # Configuração da interface gráfica
      root = tk.Tk()
      root.title("Simulador de KPIs - Escola Online")
    
    
      # Campos de entrada
      campos = [
          ("Quantidade de cursos:", 0),
          ("Quantidade de bootcamps:", 1),
          ("Quantidade de mentorias:", 2),
          ("Alunos Premium:", 3),
          ("Alunos Grátis:", 4),
          ("Valor Assinatura Premium (R$):", 5),
          ("Valor Assinatura Grátis (R$):", 6),
          ("Custos com Professores (R$):", 7),
          ("Custos Fixos (R$):", 8),
          ("Receita Mensal (R$):", 9),
          ("Alunos Cancelados:", 10),
          ("Custos de Marketing (R$):", 11),
          ("Novos Alunos:", 12),
          ("Tempo Médio de Assinatura (meses):", 13),
          ("Alunos no Mês Anterior:", 14),
          ("Alunos no Mês Atual:", 15)
      ]
    
    
      entries = []
      for label_text, row in campos:
          tk.Label(root, text=label_text).grid(row=row, column=0, sticky="w")
          entry = tk.Entry(root)
          entry.grid(row=row, column=1)
          entries.append(entry)
    
    
      # Atribuir cada campo a uma variável
      (
          entry_cursos, entry_bootcamps, entry_mentorias, entry_alunos_premium,
          entry_alunos_gratis, entry_valor_premium, entry_valor_gratis,
          entry_custos_professores, entry_custos_fixos, entry_receita_mensal,
          entry_alunos_cancelados, entry_custos_marketing, entry_novos_alunos,
          entry_tempo_medio_assinatura, entry_alunos_mes_anterior, entry_alunos_mes_atual
      ) = entries
    
    
      # Botão para gerar relatório
      tk.Button(root, text="Gerar Relatório", command=gerar_relatorio).grid(row=16, column=0, columnspan=2, pady=10)
    
    
      # Encerrar o programa corretamente ao fechar a janela
      root.protocol("WM_DELETE_WINDOW", root.quit)
      
      root.mainloop()
    
    
    if __name__ == "__main__":
      coletar_dados()
    
    

    d) main.py

    from src.interface_grafica import coletar_dados
    
    
    def main():
      print("Iniciando o Simulador de KPIs para Escola Online...")
      coletar_dados()
    
    
    if __name__ == "__main__":
      main()
    


    Siga-me no LinkedIn: www.linkedin.com/comm/mynetwork/discovery-see-all?usecase=PEOPLE_FOLLOWS&followMember=izairton-oliveira-de-vasconcelos-a1916351

    Minha Newsletter, o link para assinar:https://www.linkedin.com/build-relation/newsletter-follow?entityUrn=7287106727202742273

    Link do artigo no Linkedin: https://www.linkedin.com/pulse/simulador-de-m%25C3%25A9tricas-para-escolas-online-decis%25C3%25B5es-em-vasconcelos-oeayf

    https://github.com/IOVASCON/simulador_kpi_escola.git

    Compartir
    Comentarios (2)
    Izairton Vasconcelos
    Izairton Vasconcelos - 31/01/2025 19:29

    Prezados amigos da DIO Community, obrigado pelo comentário gentil e encorajador! Fico extremamente contente em saber que vocês encontraram valor nas métricas KPIs utilizadas no projeto. Concordo plenamente que essas métricas são ferramentas essenciais não apenas para o setor educacional, mas também para qualquer outro setor da economia. Empresas de diversos ramos podem se beneficiar ao aplicar KPIs para tomadas de decisão mais assertivas e, em muitos casos, até evitar a insolvência.

    Além disso, existem tantas outras métricas valiosas que podem ser exploradas e personalizadas para atender às necessidades específicas de diferentes negócios. Isso reforça ainda mais a importância de estarmos constantemente aprendendo e trocando insights. Adoraria manter o contato e ampliar nossos conhecimentos juntos.

    No momento, estou me dedicando a concluir outros estudos relacionados à administração financeira, e, assim que finalizados, planejo disponibilizar mais conteúdos que possam agregar valor à comunidade. Fique à vontade para compartilhar suas ideias ou perguntas enquanto isso será um prazer continuar essa troca!

    Obrigado mais uma vez pelas suas palavras de incentivo, e acreditem, vocês fazem parte desse meu crescimento.!

    DIO Community
    DIO Community - 31/01/2025 15:15

    Que projeto impressionante, Izairton! O desenvolvimento de um simulador de métricas para escolas online utilizando Python, Flask, Celery e SQLAlchemy demonstra uma aplicação prática e poderosa da tecnologia na gestão educacional. A forma como você estruturou a ferramenta, dividindo-a em módulos bem organizados, facilita manutenção, escalabilidade e reutilização do código.

    A abordagem de calcular KPIs essenciais como lucro, churn rate, LTV, CAC e NPS é extremamente relevante para instituições que desejam basear suas decisões em dados concretos. A inclusão da interface gráfica com Tkinter e a geração de relatórios em PDF também mostram uma preocupação com usabilidade e acessibilidade.

    Outro ponto forte é a modularização do código, separando responsabilidades em arquivos distintos, o que torna o projeto mais organizado e facilita futuras melhorias. A documentação detalhada e os exemplos claros fazem deste projeto um ótimo case de estudo para quem quer aprender sobre análise de métricas e tomada de decisões baseada em dados.

    Como você enxerga a aplicação de ferramentas de análise de métricas em outras áreas além da educação? Vamos compartilhar insights e expandir essa discussão.