Como eu construi um site que faz entrevistas por mim (e porque voce deveria pensar no seu portfolio como um produto)
Vou contar uma historia que comecou com frustacao e terminou com um avatar meu respondendo recrutadores em 3 idiomas.
O problema
Todo profissional de tecnologia ja passou por isso: voce tem 10 anos de experiencia, trabalhou em projetos reais com resultados concretos, mas seu curriculo eh um PDF estatico que nao conta nem 5% da historia. Recrutadores mandam mensagens no LinkedIn com vagas que nao tem nada a ver com seu perfil. Outros pedem "30 minutos do seu tempo" para entender se a vaga faz sentido — e voce gasta 2 horas na semana com calls que nao dao em nada.
Eu decidi resolver isso do jeito que sei: construindo.
A ideia
E se meu portfolio nao fosse so um site bonito, mas um produto que trabalha por mim? Algo que:
- Recebe o recrutador ou cliente
- Entende o que ele precisa
- Conecta com minha experiencia relevante
- Qualifica o lead automaticamente
- E so me chama quando realmente vale a pena conversar
Parece ambicioso? Era. Mas fui fazendo por fases.
Fase 1: O basico que ninguem faz direito
Comecei com o que todo dev faz: montar o site. Mas com decisoes que iam me ajudar depois:
- Monorepo com Turborepo — frontend e backend no mesmo repo, tipos compartilhados
- Next.js 15 com App Router — SSG pro blog, ISR pro conteudo dinamico
- NestJS 11 no backend — modular, testavel, Swagger automatico
- Trillingue desde o dia 1 (en/pt/es) — porque meus clientes estao no Brasil, EUA e LATAM
A diferenca aqui foi pensar no portfolio como um SaaS de uma pessoa so. Cada secao vem de um CMS que eu controlo. Quero mudar minha experiencia? Edito no admin, o site atualiza em 5 minutos.
Fase 2-5: O admin que eu queria
Aqui a coisa ficou interessante. Alem do portfolio publico, construi um dashboard admin completo:
- Blog CMS com geracao de draft por IA, traducao automatica para 3 idiomas, e geracao de post pro LinkedIn
- Kanban com drag & drop e geracao de cards por IA
- Google Calendar integrado (OAuth2, CRUD de eventos, views Month/Week/Day)
- Finance tracker com contas PF/PJ, categorias, importacao de CSV
- Analytics com dashboard GA4 (trends, top pages, sources, devices)
- News aggregator com 10+ feeds RSS e sumarizacao por IA
- AI Assistant com 37 tools — consigo gerenciar tudo por chat
O assistant eh a peca que junta tudo. Eu falo "crie um card urgente no kanban sobre otimizar o deploy" e ele cria. "Qual foi minha receita esse mes?" e ele consulta o finance. "Traduz o ultimo artigo para espanhol" e ele faz.
Fase 6: Onde as coisas ficaram loucas
Aqui foi onde eu me empolguei — e o resultado ficou melhor do que eu imaginava.
O sistema de entrevista por IA
Construi um sistema progressivo de entrevista:
Nivel 1: Chat texto — A IA responde como se fosse eu (usando meu perfil completo, minha experiencia, meus projetos). Ela qualifica o lead silenciosamente, dando uma nota de 0 a 100 em 4 dimensoes: budget, timeline, fit tecnico e engajamento.
Nivel 2: Voz — Clonei minha voz no ElevenLabs. O visitante grava audio, o Deepgram transcreve, a IA responde, e o ElevenLabs sintetiza a resposta com a minha voz. O recrutador literalmente "conversa" comigo.
Nivel 3: Avatar — Integrei o SimliAI para lip-sync. Um avatar meu responde com movimento labial sincronizado com a voz. E tudo roda no browser do visitante — sem servidor de video.
Nivel 4: Transfer ao vivo — Quando a conversa fica boa, o visitante clica "Talk to Real JV", o sistema cria uma sala no Daily.co e me notifica. Eu entro na call e o avatar some, dando lugar a minha camera real.
Os desafios tecnicos
Fazer isso funcionar em celular foi a parte mais dificil:
- Safari nao suporta audio/webm — tive que detectar o MIME type e mandar como audio/mp4
- Mobile bloqueia audio sem gesto do usuario — criei um Audio element persistente e toco um buffer silencioso no momento do tap
- Audio duplo no modo avatar — o audio tocava localmente E no SimliAI. Resolvi com um flag dinamico baseado no estado real da conexao do avatar
- Avatar nao carregava na primeira visita — race condition no socket.io. Troquei por uma chamada REST para buscar a config
Cada bug desses levou horas de debug com DevTools mobile. Mas o resultado eh que funciona em Chrome, Safari e Firefox — desktop e mobile.
Os numeros
| Recurso | Metrica |
|---|---|
| Modulos backend | 15 |
| Endpoints REST | 130+ |
| Componentes React | 69 |
| Tools do AI Assistant | 37 |
| Tabelas no banco | 30+ |
| Idiomas | 3 |
| Schemas Zod | 40+ |
| Custo mensal estimado | ~$45 (5h de sessoes) |
O backend roda em uma VM Oracle Cloud de 1GB de RAM. Sim, 1GB. O segredo: a VM so orquestra — o audio pesado vai direto para as APIs cloud (Deepgram, ElevenLabs, SimliAI). Build local + rsync do dist.
O que aprendi
- Portfolio eh produto — Trate como tal. Versione, monitore, itere.
- IA nao substitui, amplifica — A IA nao faz minha entrevista melhor que eu. Ela faz as 20 entrevistas que eu nao tenho tempo de fazer.
- Mobile first nao eh opcional — 60%+ dos visitantes vem pelo celular. Se o audio nao funciona no Safari, perdeu o recrutador.
- Fallback em tudo — Claude cai? OpenAI assume. API do CMS falha? Dados estaticos carregam. Avatar nao conecta? Voice mode continua.
- Custo importa — Usei Deepgram ao inves de Whisper ($0.007/min vs $0.006/min mas streaming nativo), SimliAI ao inves de HeyGen (10x mais barato), Daily.co free tier.
Stack final
| Camada | Tecnologia |
|---|---|
| Frontend | Next.js 15, React 19, Tailwind v4, TypeScript |
| Backend | NestJS 11, Socket.io, TypeScript |
| Database | PostgreSQL (Supabase) com RLS |
| LLM | Claude Sonnet 4 + GPT-4o fallback |
| STT | Deepgram Nova-2 |
| TTS | ElevenLabs (voice clone) |
| Avatar | SimliAI (browser-side lip-sync) |
| Video | Daily.co (live transfer) |
| Deploy | Vercel (front) + Oracle Cloud VM (back) |
| CI/CD | GitHub Actions |
| Monitoring | Sentry |
Proximo passo
Agora esse site eh um projeto no meu portfolio. Meta, nao? O site que eu construi para mostrar meus projetos virou ele mesmo um dos projetos mais completos que eu ja fiz.
Se voce eh dev e seu portfolio ainda eh um HTML estatico ou um template do Vercel... pensa no seguinte: o melhor case study que voce pode ter eh o seu proprio site. Ninguem vai questionar se o projeto eh real — porque ele ta ali, funcionando, acessivel por qualquer um.
JV Martins — Lead Data Engineer @ Medtronic | Founder @ DadosNow Esse artigo foi escrito por mim, humano. Nao pela IA. Ironico, ne?