📚 O problema do contexto
Você quer o conhecimento de elite que está nesses PDFs. Mas jogar um documento de 46 páginas inteiro no Claude Code estoura o limite de contexto — e o pior: enche a janela de sumário, agradecimentos e buzzword. Você precisa do valioso, não do volume.
✗ Jogar o PDF inteiro
- ✗Estoura o limite de tokens
- ✗Gasta contexto caro com lixo
- ✗Dilui o sinal no meio do ruído
- ✗Resposta genérica e superficial
✓ Destilar antes de usar
- ✓Cabe folgado no contexto
- ✓Só frameworks, números e insights
- ✓Sinal puro, alta densidade
- ✓Reutilizável em qualquer projeto
PDFs enormes
de contexto
valor vs volume
o que importa
✂️ Chunking em blocos de ~10k tokens
A ideia central do RAG preguiçoso: em vez de processar tudo de uma vez, você fatia. Extrai o texto do PDF, conta os tokens e corta em blocos de ~10.000 tokens. Cada bloco cabe folgado numa chamada de API.
// o conceito do chunking — fatiar por tokens
CHUNK_SIZE = 10_000 # tokens por bloco
texto = extrair_texto_do_pdf("bcg-guide.pdf") # via PyMuPDF
tokens = tokenizer.encode(texto) # cl100k_base
blocos = []
for i in range(0, len(tokens), CHUNK_SIZE):
pedaco = tokens[i : i + CHUNK_SIZE]
blocos.append(tokenizer.decode(pedaco))
# 1 PDF de 46 págs ≈ 3-4 blocos → cabem na API um a um
por bloco
extrai texto
cl100k_base
não de uma vez
🧪 O prompt de síntese
É aqui que mora a qualidade do cheat sheet. O prompt instrui o modelo a extrair só o que vale — frameworks, estatísticas, insights, citações, termos — preservando números e cortando buzzword. Bloco sem valor recebe a marca [MINIMAL_CONTENT] e é descartado depois.
// estrutura real do prompt de síntese (pdf_to_cheatsheet.py)
Você é um consultor criando um cheat sheet a partir deste documento. Extraia o conhecimento mais valioso: ## Conceitos & Frameworks → liste cada um em 1-2 frases ## Estatísticas críticas → preserve números e fontes ## Insights acionáveis → o que dá para implementar ## Citações notáveis → 2-3 frases de impacto ## Terminologia → defina termos e siglas Regras: seja conciso, NÃO generalize números, use bullets, negrito no termo na 1ª vez. Se o bloco for só sumário/ referências, responda: [MINIMAL_CONTENT: ...]
💡 O detalhe que faz diferença
A regra "NÃO generalize números" é o que separa um cheat sheet útil de um resumo vazio. "A IA aumenta produtividade" não vale nada; "40% de ganho de produtividade (Google Cloud, 2025)" é munição para o seu entregável.
extração fixa
não generaliza
só o valioso
marca o vazio
✨ Gemini 2.5 Flash: barato e contexto gigante
O modelo que faz a síntese. Escolha deliberada: contexto enorme, preço baixíssimo. É o que viabiliza destilar uma biblioteca inteira de PDFs por centavos — com retry exponencial e delay entre chamadas para respeitar o rate limit.
Contexto gigante
Aguenta os blocos de 10k tokens com folga — e responde sem cortar no meio.
Custo baixíssimo
A biblioteca inteira de guias sai por centavos. É o mesmo modelo que escreve os entregáveis na Fábrica.
Resiliente
Retry exponencial (3 tentativas) e delay de ~5s entre chamadas. Um erro de rede não derruba o processo.
💡 Dica prática
Esse foi um ponto de erro real na construção (no vídeo, o chunking do Gemini falhou num arquivo). Construir em público é mostrar a bagunça: quando der erro de API, é só pedir ao Claude Code para rodar de novo — a retomada continua de onde parou.
o modelo
gigante
custo baixo
exponencial
🧩 Montar o cheat sheet
Com os blocos sintetizados, você remonta: junta na ordem certa, descarta os marcados como vazios e gera um Markdown único — com cabeçalho (fonte, data), seções numeradas e um rodapé de "verifique no original".
// remontagem dos blocos num cheat sheet final
cheat = cabecalho(fonte="bcg-guide.pdf", data=hoje)
for i, bloco in ordenar_por_indice(blocos_sintetizados):
if "[MINIMAL_CONTENT" in bloco and tamanho_util(bloco) < 500:
continue # descarta o vazio
cheat += f"## Seção {i+1}\n\n{bloco}\n"
cheat += rodape("verifique no documento original")
salvar("bcg-guide_TLDR.md", cheat) # 1 página, pronto
✓ Cheat sheet bem montado
- ✓Blocos na ordem original
- ✓Vazios descartados
- ✓Cabeçalho com fonte e data
- ✓Rodapé pedindo verificação
✗ Cheat sheet mal montado
- ✗Blocos fora de ordem
- ✗Sumário e agradecimentos no meio
- ✗Sem rastro da fonte
- ✗Tratado como verdade absoluta
por índice
os vazios
fonte + data
Markdown final
🐍 pdf_to_cheatsheet.py na prática
Você não escreve nada disso na unha — o script já existe. Ele lê uma pasta de PDFs, salva progresso em progress.json, pula blocos já feitos e aceita flags úteis. É só pedir ao Claude Code para rodar.
// o que você digita ao Claude Code
# dá uma olhada sem gastar API (só conta os blocos) python pdf_to_cheatsheet.py --dry-run # processa só um arquivo python pdf_to_cheatsheet.py --single-pdf "bcg-guide.pdf" # se o contexto encher ou a API falhar, rode de novo: # ele retoma pelos blocos que faltam (progress.json)
💡 Por que a retomada importa
O ProgressTracker grava cada bloco concluído. Se o processo cai no bloco 7 de 10, ao rodar de novo ele pula os 6 primeiros e continua. Você não paga duas vezes pelo mesmo bloco — economia que se acumula numa biblioteca grande.
sem gastar API
um arquivo só
retoma do ponto
grava o feito
✅ Resumo do módulo
🎯 Missão 2.2 — Seu primeiro cheat sheet
Pegue 1 PDF de consultoria (um guia gratuito de McKinsey, BCG, KPMG, Google Cloud…) e transforme num cheat sheet de 1 página:
- Peça ao Claude Code para rodar o
pdf_to_cheatsheet.pynele (ou aplicar o prompt de síntese por blocos). - Confira: sobraram frameworks, números e insights — sem buzzword?
- Salve como
fonte_TLDR.mdcom cabeçalho (fonte + data).
Sucesso: 1 cheat sheet de 1 página gerado. O que você ganhou: a primeira peça da sua base de conhecimento — e a técnica para destilar qualquer PDF daqui pra frente.
Próximo módulo:
2.3 — Seu cérebro de consultor (organizar vários cheat sheets numa base curada e injetável)