Home / Uncategorized / Como a Fyxer combina fine-tuning, LoRA e feedback de usuário para escrever emails na voz de cada pessoa

Como a Fyxer combina fine-tuning, LoRA e feedback de usuário para escrever emails na voz de cada pessoa

A OpenAI publicou em setembro de 2026 um estudo de caso descrevendo como a Fyxer, uma startup de Londres, construiu um assistente executivo de IA que organiza inboxes e escreve rascunhos de email na voz do usuário. O artigo detalha decisões concretas de arquitetura: fine-tuning supervisionado, LoRA, Direct Preference Optimization, e uma malha de modelos pequenos em vez de um único LLM gigante fazendo tudo.

O fato

A publicação está em openai.com/index/fyxer. Segundo o material, a Fyxer usa fine-tuning supervisionado e Low-Rank Adaptation (LoRA) em seu sistema para criar variantes de modelo específicas por tarefa, controlando o custo de treinamento. A base de dados de treinamento vem de uma agência humana que os fundadores operaram por anos antes de lançar o produto de IA: mais de 500.000 horas de fluxos de trabalho executivos anotados, capturando como assistentes reais gerenciam comunicação profissional.

Números reportados pela empresa e resumidos em cobertura secundária: 53% dos rascunhos são aceitos como escritos, 90% de retenção em 90 dias, e crescimento de receita de US$ 1M para US$ 32M ARR em 2025. Vou tratar esses números como reportados pela empresa, não como verificáveis independentemente.

Como funciona

A escolha central: quebrar o problema em muitos modelos pequenos

A decisão de arquitetura mais interessante do sistema é não usar um LLM gigante para gerar o email inteiro. Segundo cobertura do lançamento, o sistema divide as tarefas entre 30 a 50 modelos especializados que lidam com classificação, previsão de intenção, recuperação de memória e geração de rascunho, em vez de um único modelo grande de geração de texto.

Pense num restaurante durante o rush do almoço. Você pode colocar um único chef muito bom fazendo tudo, do risoto ao sushi, do pedido à sobremesa. Ele consegue, mas é lento, comete erros em pratos que não domina, e você paga caro pelo tempo dele. Ou você pode montar uma linha: alguém só recebe o pedido, alguém só corta legume, alguém só sela proteína, alguém só monta o prato. Cada estação é mais barata, mais rápida e melhor na coisa específica que faz. O prato final é montado no fim.

A analogia quebra num ponto importante: no restaurante os pratos são padronizados. No email, o “prato final” muda a cada thread. Então a orquestração precisa decidir a cada nova mensagem qual conjunto de estações ativar e em que ordem. Mas a mecânica de base é a mesma: cada modelo pequeno faz uma decisão bem definida (isto é urgente? isto precisa de resposta? qual thread anterior importa? qual tom usar?) e o rascunho final é a composição dessas decisões.

Do lado prático da inferência, um modelo pequeno especializado costuma ser mais rápido, mais barato e mais previsível numa tarefa estreita do que um modelo grande generalista fazendo a mesma coisa via prompt. O trade-off é ter que treinar e manter cada um deles.

Como o fine-tuning é feito sem estourar o custo

Aqui entra o LoRA. Fine-tuning tradicional atualiza todos os pesos do modelo, o que exige muita GPU e muito tempo. LoRA (Low-Rank Adaptation) faz uma coisa diferente: congela os pesos originais do modelo e treina apenas matrizes pequenas “por cima”, que representam a diferença entre o comportamento base e o comportamento desejado. Você fica com um adaptador de poucos MB em vez de um modelo inteiro de dezenas de GB. Para servir, o adaptador é aplicado sobre o modelo base em tempo de inferência.

Isso explica por que a Fyxer consegue manter dezenas de variantes especializadas: cada uma é um adaptador barato de treinar e armazenar, não um modelo inteiro replicado.

Sobre a infraestrutura de treinamento em si, o material da OpenAI diz que no início do produto a equipe usou a plataforma de fine-tuning da OpenAI para tarefas que exigiam alta acurácia, e mais recentemente trabalhou com o time de fine-tuning gerenciado da OpenAI para colocar um novo checkpoint em produção. O artigo não detalha quais modelos base específicos, o que fica na zona do que não dá para afirmar.

Como o feedback do usuário vira treino

Este é o loop que faz o sistema melhorar com uso. Segundo cobertura do lançamento, a Fyxer usa fine-tuning supervisionado, LoRA e Direct Preference Optimization derivada das edições do usuário para melhorar continuamente os rascunhos, validando mudanças através de testes A/B.

DPO (Direct Preference Optimization) é uma técnica que treina o modelo a preferir uma resposta sobre outra a partir de pares (versão A, versão B, humano preferiu B). No caso da Fyxer, o par natural aparece sozinho: a Fyxer gera o rascunho, o usuário edita antes de enviar, e agora você tem dois textos, o gerado e o enviado. O enviado é o “escolhido”, o gerado é o “rejeitado”. Cada edição do usuário vira um sinal de treino sem que ninguém precise rotular nada.

O detalhe importante é o A/B test como portão. Não é porque um novo checkpoint parece melhor nas métricas offline que ele vai para produção. Ele é servido para um subgrupo, comparado contra o modelo atual em métricas reais (taxa de aceitação, quantidade de edição), e só sobe se ganhar. Isso protege contra o caso comum onde o modelo “melhora” numa métrica sintética e piora na experiência real.

O que o modelo lê antes de escrever

A Fyxer não gera o rascunho a partir só da última mensagem. A documentação de suporte descreve que a Fyxer gera um rascunho quando um thread é classificado como “To Respond” e a configuração de rascunho está ligada. Ou seja, há primeiro um classificador decidindo se aquele email merece rascunho, depois um gerador. E o gerador recebe contexto: o sistema é informado por 500 mil horas de experiência de EA e se apoia no seu próprio histórico de email conforme cresce, puxando contexto de threads e reuniões em vez de apenas a mensagem à frente.

Em termos de fluxo, dá para desenhar assim, passo a passo:

  1. Email novo chega no Gmail ou Outlook via API.
  2. Um classificador decide categoria (marketing, notification, precisa resposta, FYI).
  3. Se “precisa resposta”, outro modelo decide o tipo de resposta esperada (agendamento, confirmação, recusa, follow-up de projeto).
  4. Um componente de recuperação puxa contexto relevante: threads anteriores com o mesmo remetente, notas de reuniões relacionadas, preferências do usuário.
  5. O gerador de rascunho, ajustado com LoRA para o estilo do usuário, escreve o texto.
  6. O rascunho vai para a pasta Drafts. Nunca é enviado automaticamente, o usuário mantém o controle e pode editar antes de enviar.
  7. Se o usuário editar antes de enviar, a diferença vira sinal para o próximo ciclo de treino.

O que isso significa na prática

A lição de arquitetura mais útil aqui, e que se aplica muito além de email, é a de decompor uma tarefa aparentemente monolítica (“escrever o email certo”) numa sequência de decisões pequenas onde cada uma pode ser medida, treinada e substituída de forma isolada.

Numa plataforma de conteúdo gerado por LLM em escala de catálogo, cheguei a uma conclusão parecida por outro caminho: o que estabiliza a qualidade não é escolher o modelo maior, é ancorar a geração em dado estruturado real e rodar validação antes de publicar. Um modelo generalista pedindo tudo em um prompt gigante alucina em cascata. Um pipeline que primeiro decide o que buscar, depois busca, depois valida, depois gera, quebra em pontos onde você consegue medir e consertar.

Uma versão mínima do padrão da Fyxer, aplicada a qualquer domínio de resposta assistida, se parece com isto:

entrada = mensagem_nova

# 1. classificar
categoria = classificador_leve(entrada)
if categoria != "precisa_resposta":
 arquivar(entrada, categoria)
 return

# 2. entender intenção
intent = modelo_intent(entrada)

# 3. buscar contexto
contexto = memoria.buscar(
 remetente=entrada.remetente,
 topico=intent.topico,
 limite=5
)

# 4. gerar com adaptador do usuario
rascunho = gerador_base.com_lora(usuario.adaptador_id).gerar(
 mensagem=entrada,
 intent=intent,
 contexto=contexto,
 estilo=usuario.perfil_de_escrita
)

# 5. entregar como rascunho, nunca enviar
salvar_rascunho(rascunho)

# 6. no envio, comparar texto final com rascunho
# a diferenca vira par (rejeitado, escolhido) para DPO futuro

Nenhum passo aqui é novo em separado. A escolha da Fyxer foi tratar cada um como um modelo pequeno especializado em vez de um prompt dentro de um modelo grande.

Onde quebra

Manter 30 a 50 modelos especializados tem um custo operacional real: cada um precisa de dados, avaliação, deploy, versionamento e monitoramento em produção. Uma equipe pequena tentando reproduzir este padrão sem os 500 mil horas de dados anotados vai encontrar rapidamente o problema inverso do que motivou a decisão: em vez de custo alto de inferência num modelo grande, você paga custo alto de manutenção em muitos modelos pequenos que ninguém sabe se ainda estão calibrados.

O feedback loop via edições do usuário também tem viés inerente. Um usuário que edita muito pode ser exigente com estilo, ou pode ser que o modelo esteja consistentemente errando em um segmento específico de emails, e você não distingue os dois só olhando a métrica agregada. Aqui o A/B test ajuda, mas não resolve o caso do usuário que edita menos por cansaço, aceita rascunhos ruins e ensina o modelo que “ruim” é aceitável.

Sobre a captura da voz do usuário: o material da própria Fyxer é honesto em dizer que a qualidade do rascunho melhora conforme a Fyxer vê mais dos seus emails enviados. Traduzindo: nas primeiras semanas, os rascunhos são fracos. Isso é limitação estrutural de qualquer sistema baseado em fine-tuning por usuário, não bug.

Existe também o limite do domínio. A própria Fyxer publicou análise reconhecendo que negociação e agendamento complexos ainda não são bem atendidos por IA: itinerários internacionais multi-trecho, gerenciar preferências de programas de fidelidade, lidar com mudanças de última hora quando uma conexão cai, manter preferências de assento e requisitos alimentares consistentes entre sistemas, tudo isso ainda é largamente manual, e apesar das melhorias, EAs gerenciando viagens complexas para executivos exigentes não deveriam repassar essas tarefas esperando confiabilidade ainda.

O que não dá para afirmar ainda

O artigo original da OpenAI, na parte que consegui capturar, descreve as técnicas em nível conceitual mas não especifica: qual modelo base é usado para o gerador, como exatamente os 30 a 50 modelos são orquestrados, se há um roteador aprendido ou regras determinísticas, com que frequência os adaptadores LoRA por usuário são retreinados, e como a memória de longo prazo é indexada. As citações sobre “30 a 50 modelos” e “DPO derivada de edições” vêm de cobertura secundária (daily.dev) que resume o artigo, e eu não confirmei palavra por palavra contra a fonte primária.

As métricas de negócio (53% de aceitação, 90% de retenção, ARR) são reportadas pela empresa. Não são verificáveis por terceiros a partir do material disponível. Trate-as como marketing bem-fundamentado, não como benchmark.

Também não vi menção clara a se o DPO é rodado por usuário (adaptador de preferência individual) ou agregado entre usuários. Faz diferença enorme para custo e para privacidade, e o material não esclarece.

Como testar isso você mesmo

Se você quer sentir o mecanismo sem reconstruir a Fyxer, um caminho pequeno é este:

  1. Pegue uma pasta com 200 dos seus emails enviados.
  2. Escreva um classificador simples (pode ser via prompt em um modelo pequeno) que rotule cada thread recebido em três categorias: precisa resposta, informativo, ignorar.
  3. Para os que precisam resposta, faça um gerador (também via prompt) que produza rascunho usando os últimos 3 emails que você enviou para o mesmo destinatário como few-shot de estilo.
  4. Compare, à mão, seus 20 próximos envios reais com o rascunho gerado. Anote onde o modelo errou: tom, estrutura, tamanho, sign-off.
  5. Só depois disso, se ainda fizer sentido, considere fine-tuning ou LoRA. Você vai descobrir que quase todo o ganho inicial vem da etapa 2 (o classificador) e da etapa 3 (o contexto certo no prompt), não do modelo em si.

Esse experimento leva um fim de semana e ensina, na prática, por que a Fyxer decidiu quebrar o problema em vez de jogar tudo em um único modelo grande. O aprendizado real fica quando você mede quanto tempo cada etapa consome, quanto ela custa em tokens, e onde o erro se acumula.

Deixe um Comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *