DocAi é um ecossistema completo para geração inteligente de documentos assistida por Inteligência Artificial (Ollama - Llama 3.2) e conversão de arquivos em múltiplos formatos (incluindo conversão profissional para o padrão arquivístico PDF/A).
Este projeto é composto por:
- DocAi Server & Web: API e interface web desenvolvida em Flask (Python).
- DocAi Mobile: Aplicativo para dispositivos móveis desenvolvido em Dart/Flutter com menu retrátil e interface adaptativa.
Gere documentos profissionais estruturados em segundos. O ecossistema envia dados brutos à IA local (Ollama) ou Gemini para a redação formal e gera PDFs diagramados via Playwright.
- Currículos (Resumes): Agora com Filtro e Otimização Inteligente de Recrutamento (ATS/Recruiter Friendly) que compacta o layout vertical, remove excesso de cursos de baixo impacto (limita às 4-5 certificações mais relevantes), agrupa habilidades em formato de tags categorizadas (sem repetir conteúdo da experiência) e prioriza a seção de projetos e portfólio no topo.
- Contratos Empresariais (Contracts)
- Relatórios Corporativos (Reports)
- Biblioteca de Arquivos: Gerencie seus documentos gerados (baixar ou excluir de forma dinâmica sem necessidade de recarregar a página, com interface SweetAlert2).
- Pré-visualização: Visualize os PDFs gerados diretamente na página da aplicação web através de um modal integrado, sem precisar fazer o download prévio do arquivo.
Converta arquivos de forma local no servidor ou aplicativo móvel.
- DOCX ➔ PDF (mantendo cabeçalhos e formatações).
- Imagens (PNG, JPG, JFIF) ➔ Múltiplos formatos alternativos.
- PDF ➔ PDF/A-3b (Conformidade com os padrões ISO de arquivamento de longo prazo).
- Python 3
- Flask (Gerenciamento de API e Rotas)
- SQLAlchemy & SQLite (Persistência de Metadados)
- Flask-JWT-Extended (Autenticação Segura)
- Playwright (Renderização HTML para PDF síncrona/assíncrona)
- pdftopdfa & pikepdf (Conversão estrutural para o padrão PDF/A)
- Ollama (Llama 3.2) (Geração de Conteúdo Inteligente)
- Dart & Flutter
- Navigation Side Drawer (Menu retrátil responsivo para otimização de tela)
- Http Client (Integração com a API Flask)
- File Picker (Interface nativa de seleção de arquivos do celular)
- Python 3.10+
- Flutter SDK
- Ollama instalado com o modelo
llama3.2:latest.
Entre na raiz do projeto e execute os passos a seguir:
- Crie e ative seu ambiente virtual:
python -m venv venv # No Windows: .\venv\Scripts\activate # No Linux/macOS: source venv/bin/activate
- Instale as dependências:
Nota: Caso precise instalar manualmente as dependências principais:
pip install -r requirements.txt
pip install Flask Flask-SQLAlchemy Flask-JWT-Extended python-docx requests playwright pdftopdfa PyMuPDF
- Inicialize os navegadores do Playwright (necessário para a renderização de PDF):
playwright install
- Certifique-se de que o Ollama está rodando localmente com o modelo correto:
ollama run llama3.2
- Inicie o servidor:
O servidor estará disponível em
python app.py
http://127.0.0.1:5000.
Acesse a pasta mobile/:
- Instale os pacotes e dependências:
flutter pub get
- Execute o app em um emulador ou dispositivo conectado:
Nota: Por padrão, o app conecta-se ao IP
flutter run
http://10.0.2.2:5000para compatibilidade com o emulador Android. Para testar em dispositivos físicos, altere a variávelbaseUrlemmobile/lib/services/api_service.dartpara o IP da sua máquina.
O ecossistema implementa boas práticas de segurança para o tráfego e armazenamento de credenciais de acordo com o cliente utilizado:
- Versão Web (Navegador): A autenticação utiliza Cookies HttpOnly e Secure (
access_token_cookie). Os tokens JWT de sessão não são expostos nem armazenados noLocalStorage, mitigando vulnerabilidades de roubo de sessão via XSS (Cross-Site Scripting). - Versão Mobile (Flutter): Utiliza autenticação do tipo
Bearer Tokenfornecido no cabeçalho HTTP (Authorization: Bearer <JWT>) para as requisições REST, permitindo o armazenamento seguro local no dispositivo. - Segredos de Ambiente: Credenciais sensíveis e chaves de API nunca ficam expostas no código client-side.