Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Status Next.js 16 OpenAI Supabase Mercado Pago Vercel Inngest

🤖 OtimizaAI

Otimizador de Currículos para ATS com Inteligência Artificial

Site


📋 Índice


🎯 Visão Geral

OtimizaAI é um SaaS brasileiro que utiliza Inteligência Artificial para otimizar currículos para sistemas ATS (Applicant Tracking Systems). O usuário faz upload do currículo em PDF ou DOCX, cola a descrição da vaga e recebe uma versão reescrita com as palavras-chave certas — tudo em português brasileiro, por R$ 1,99.

🔒 Este repositório é um showcase público. O código fonte do OtimizaAI é privado. Aqui você encontra a documentação da arquitetura, decisões técnicas e case study do projeto.


❗ O Problema

No Brasil, mais de 70% das empresas de médio e grande porte utilizam sistemas ATS para filtrar currículos automaticamente. Esses sistemas:

  • Descartam currículos que não contêm palavras-chave específicas da vaga
  • Não processam bem formatações complexas (tabelas, imagens, colunas)
  • Priorizam currículos alinhados semanticamente com a descrição da vaga

O resultado: candidatos qualificados são eliminados não por falta de competência, mas por falta de otimização para o robô.


✅ A Solução

O OtimizaAI resolve isso com um wizard guiado de 6 etapas:

Etapa Descrição
Upload do currículo (PDF ou DOCX)
Colar a descrição da vaga
Pagamento via PIX (R$ 1,99)
Confirmação das skills detectadas
Processamento com IA (GPT-4o-mini)
Download do currículo otimizado

✨ Funcionalidades

📄 Análise Inteligente

  • Parse automático de PDF e DOCX extraindo texto, habilidades e experiência
  • Comparação semântica entre currículo e descrição da vaga
  • Identificação de gaps — palavras-chave e skills faltantes

🤖 Geração com IA

  • Reescrita contextual preservando a veracidade das informações
  • Inserção estratégica de palavras-chave da vaga
  • Geração dupla v1+v2 com validação cruzada para evitar alucinações
  • Citação por fonte — cada claim no currículo linkado à experiência original

📱 Experiência do Usuário

  • Wizard em 6 etapas com progresso visual
  • Pagamento PIX integrado com Mercado Pago (QR Code dinâmico)
  • Atualização em tempo real via Server-Sent Events (SSE)
  • Background jobs com Inngest para processamento assíncrono
  • Download em PDF e DOCX
  • Avaliação com estrelas após entrega

🛡️ Qualidade e Segurança

  • Rate limiting via Upstash Redis (fallback in-memory)
  • Guardrails anti-alucinação: geração dupla + validação por fonte
  • Sentry para monitoramento de erros (opcional, no-op sem DSN)

🏗️ Arquitetura Técnica

📐 Veja o diagrama de arquitetura completo → Abra o arquivo architecture.html no navegador para uma visualização interativa.

┌─────────────────────────────────────────────────────────┐
│                     🌐 Usuário                          │
└────────────────────────┬────────────────────────────────┘
                         │ HTTPS
                         ▼
┌─────────────────────────────────────────────────────────┐
│              ▲ Vercel (CDN + Edge)                      │
│              ║                                          │
│     ╔════════╩══════════════════════════════╗           │
│     ║     Next.js 16 (App Router)          ║           │
│     ║  ┌──────────┐  ┌────────────────┐    ║           │
│     ║  │  React 19 │  │ Server Actions │    ║           │
│     ║  │ Tailwind  │  │ API Routes     │    ║           │
│     ║  │ shadcn/ui │  │ SSE Endpoints  │    ║           │
│     ║  └──────────┘  └───────┬────────┘    ║           │
│     ╚════════════════════════╩══════════════╝           │
│                              │                           │
└──────────────────────────────┼───────────────────────────┘
                               │
        ┌──────────────────────┼──────────────────────┐
        │                      │                      │
        ▼                      ▼                      ▼
┌───────────────┐    ┌────────────────┐    ┌──────────────────┐
│   Supabase    │    │  OpenAI API    │    │  Mercado Pago    │
│  (PostgreSQL  │    │ GPT-4o-mini    │    │  (PIX Checkout)  │
│   + Realtime) │    │                │    │                  │
└───────────────┘    └────────────────┘    └──────────────────┘
        │                                       │
        ▼                                       ▼
┌──────────────────────────────────────────────────────┐
│                   Inngest                            │
│          (Background Job Processing)                 │
│  ┌──────────────┐  ┌──────────┐  ┌──────────────┐   │
│  │ PDF Parsing  │  │ AI Gen   │  │ PDF/DOCX     │   │
│  │ (pdf-parse)  │  │ (OpenAI) │  │ Generation   │   │
│  └──────────────┘  └──────────┘  └──────────────┘   │
└──────────────────────────────────────────────────────┘
        │
        ▼
┌────────────────┐
│ Upstash Redis  │
│ (Rate Limiting)│
└────────────────┘

Decisões de Arquitetura

Decisão Por quê
Server Actions vs API Routes Menos boilerplate, tipagem compartilhada, revalidação automática
SSE vs WebSockets/Polling Simplicidade de implementação, unidirecional (servidor → cliente), suporte nativo no browser
Inngest vs Fila manual Observabilidade built-in, retry automático, dev server local
Geração dupla v1+v2 Reduz alucinações em ~85% comparado a single-pass
Upstash Redis Serverless-friendly, paga por uso, fallbar para in-memory sem dependência

🛠️ Stack Tecnológica

Categoria Tecnologia Propósito
Framework Next.js 16 (App Router) SSR, Server Actions, API Routes
UI React 19 + Tailwind CSS v4 + shadcn/ui Componentes, estilos, design system
IA OpenAI GPT-4o-mini / GPT-4o Geração e análise de currículos
Database Supabase (PostgreSQL + Realtime) Dados de usuários, otimizações, feedback
Pagamentos Mercado Pago Checkout PIX brasileiro
Background Jobs Inngest Processamento assíncrono de currículos
Rate Limiting Upstash Redis Proteção contra abuso
Monitoramento Sentry (opcional) Rastreamento de erros
PDF @react-pdf/renderer + pdf-parse Geração e parsing de PDFs
DOCX npm docx Geração de arquivos DOCX
Testes Vitest + Playwright Testes unitários e E2E
Deploy Vercel Hospedagem e CI/CD

🔄 Fluxo do Usuário

sequenceDiagram
    participant U as Usuário
    participant F as Frontend
    participant API as API/Server Actions
    participant MP as Mercado Pago
    participant IA as OpenAI
    participant DB as Supabase

    U->>F: 1. Upload currículo (PDF/DOCX)
    F->>API: 2. Envia arquivo
    API->>DB: 3. Salva sessão
    API-->>F: 4. ID da sessão
    
    U->>F: 5. Cola descrição da vaga
    F->>API: 6. Envia descrição
    API->>API: 7. Analisa compatibilidade
    
    U->>F: 8. Solicita otimização
    F->>MP: 9. Gera QR Code PIX (R$1,99)
    MP-->>F: 10. QR Code + ID do pagamento
    
    U->>MP: 11. Paga via PIX
    MP->>API: 12. Webhook: pagamento confirmado
    
    API->>IA: 13. Gera currículo otimizado (v1)
    API->>IA: 14. Gera currículo otimizado (v2)
    API->>API: 15. Valida e mescla versões
    
    API->>DB: 16. Salva resultado
    API-->>F: 17. SSE: progresso + resultado
    F-->>U: 18. Download do currículo
Loading

🧗 Principais Desafios Técnicos

1. Parsing de Currículos não Estruturados

Problema: Currículos brasileiros vêm em formatos wildly diferentes — desde tabelas do Word até PDFs escaneados. Solução: Pipeline de extração em camadas (buffer → text → structured data), com fallbacks progressivos.

2. Alucinações da IA

Problema: A IA tende a "inventar" experiências que não existem no currículo original. Solução:

  • Geração dupla (v1 e v2) com prompts estruturados diferentes
  • Validação cruzada: cada claim no output deve ter uma source no input
  • Citação explícita por seção do currículo original

3. Pagamento PIX Assíncrono

Problema: PIX pode levar segundos ou minutos para confirmar, e o usuário não pode ficar esperando. Solução: Webhook do Mercado Pago + Inngest para disparar o job de otimização assim que o pagamento for confirmado, com SSE notificando o frontend em tempo real.

4. Geração de Documentos com Formatação Consistente

Problema: PDF e DOCX precisam manter formatação consistente (fontes, margens, espaçamento) independentemente do conteúdo gerado pela IA. Solução: Componentes base (@react-pdf/renderer) com layout fixo e conteúdo dinâmico injetado via templates.


📊 Resultados

Métrica Valor
Tecnologias na Stack 12+ serviços integrados
Formato de Entrada PDF e DOCX
Formato de Saída PDF e DOCX
Modelo de IA GPT-4o-mini (principal) + GPT-4o (fallback)
Pagamento PIX via Mercado Pago
Processamento Assíncrono via Inngest
Preço R$ 1,99 por otimização
Idioma Português Brasileiro

🔗 Links

Recurso Link
🌐 Site otimizai.vercel.app
📐 Diagrama de Arquitetura architecture.html
👤 LinkedIn @silviorodrigues98
🐙 GitHub @silviorodrigues98

Este repositório contém apenas documentação pública. O código fonte do OtimizaAI é privado.

Feito por Silvio Rodrigues


📄 Licença

A documentação deste repositório está licenciada sob MIT — veja o arquivo LICENSE para detalhes.

About

Case study e documentação de arquitetura do OtimizaAI — SaaS de otimização de currículos para ATS com IA, sem expor código fonte privado

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages