Sobre os blocos de Markdown: se a chamada ao Gemini usa responseMimeType: "application/json" junto com o responseSchema, a resposta já vem como JSON puro, sem os ``` em volta. Então quando aparecer resposta cercada no log, eu olharia primeiro se aquele caminho tá mandando essa config, antes de culpar o modelo.
Pra parte do conteúdo tem um meio-termo barato antes da revisão humana: pedir que cada dúvida ou objeção venha com o trecho exato da mensagem a que ela se refere, e conferir no servidor se esse trecho existe mesmo na mensagem. Não prova que a objeção é boa, mas pega objeção sobre coisa que a mensagem nem diz, tipo reclamar de preço num texto que não fala de preço.