AutomationFlowsAI & RAG › Dsaprojeto8

Dsaprojeto8

DSAProjeto8. Uses googleSheets, googleDrive, vectorStorePinecone, embeddingsGoogleGemini. Event-driven trigger; 21 nodes.

Event trigger★★★★☆ complexityAI-powered21 nodesGoogle SheetsGoogle DrivePinecone Vector StoreGoogle Gemini EmbeddingsDocument Default Data LoaderText Splitter Recursive Character Text SplitterOpenAI ChatTool Vector Store
AI & RAG Trigger: Event Nodes: 21 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Agent → Documentdefaultdataloader recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "DSAProjeto8",
  "nodes": [
    {
      "parameters": {
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1ckP-ZgAMs2l2sFUpLAXx-gWNOQrHXoAs48Vo271X3rs",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ckP-ZgAMs2l2sFUpLAXx-gWNOQrHXoAs48Vo271X3rs/edit?usp=drivesdk",
          "cachedResultName": "dsa_lista_arquivos"
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1476836405,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1ckP-ZgAMs2l2sFUpLAXx-gWNOQrHXoAs48Vo271X3rs/edit#gid=1476836405",
          "cachedResultName": "GOOG"
        },
        "options": {}
      },
      "id": "fbf17c10-f3c5-4ad7-9d6e-dd87f8fccd8e",
      "name": "Lista de Arquivos Para Carregar no RAG",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        64,
        416
      ],
      "typeVersion": 4.5,
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "notes": "DSA Log - Este n\u00f3 acessa uma planilha no Google Sheets contendo os caminhos dos arquivos pdf com demonstrativos financeiros de empresas. Os arquivos estar\u00e3o no Google Drive e na planilha vai apenas o caminho completo (url) de cada arquivo. Ou seja, a planilha funcionar\u00e1 como um \u00edndice."
    },
    {
      "parameters": {
        "content": "## Etapas de Configura\u00e7\u00e3o\n\n\n### 1. Chave da API do Google AI:\n\n* Obtenha uma chave da API do Google AI no Google AI Studio.\n\n### 2. Conta e chave da API do Pinecone:\n\n* Crie uma conta gratuita no site do Pinecone.\n* Obtenha sua chave da API no painel do Pinecone.\n* Crie um \u00edndice chamado dsa-relatorios no seu projeto do Pinecone.\n\n### 3. Google Drive - baixar e salvar documentos financeiros:\n\n* Acesse a empresa que deseja analisar e baixe os PDFs dos seus resultados trimestrais.\n* Salve os PDFs no Google Drive.\n* Crie uma Planilha no Google Sheets que armazene uma lista de URLs de arquivos apontando para os PDFs que voc\u00ea baixou e salvou no Google Drive.\n\n### 4- Configure as credenciais no seu ambiente n8n para:\n\n* Google Sheets OAuth2\n* Google Drive OAuth2\n* Google Docs OAuth2\n* API da OpenAI\n* API Google Gemini (PaLM) (usando sua chave da API Google AI)\n* API Pinecone (usando sua chave da API Pinecone)\n\n### 5- Execute o fluxo de trabalho:\n\n* Execute o workflow aqui no n8n. O relat\u00f3rio ser\u00e1 gerado no Google Docs. Ajuste o prompt do Agente de IA conforme desejar.\n\n\nExemplo de fonte de dados:\n\nhttps://abc.xyz/investor",
        "height": 1572,
        "width": 500,
        "color": 3
      },
      "id": "e38dea69-3a05-4c19-a58d-1f8b164bb2cf",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -624,
        336
      ],
      "typeVersion": 1
    },
    {
      "parameters": {
        "options": {}
      },
      "id": "5edea605-b04e-435a-9479-e250fa2784c1",
      "name": "Loop",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        288,
        416
      ],
      "typeVersion": 3,
      "notes": "DSA Log - Loop pelos elementos listados na planilha (nomes de arquivos)."
    },
    {
      "parameters": {
        "operation": "download",
        "fileId": {
          "__rl": true,
          "value": "={{ $('Lista de Arquivos Para Carregar no RAG').item.json['File URL'] }}",
          "mode": "url"
        },
        "options": {
          "fileName": "={{ $('Lista de Arquivos Para Carregar no RAG').item.json['10Q'] }}"
        }
      },
      "id": "9e8a436b-fcac-4726-8568-1571cdbcd0ad",
      "name": "Download de Arquivos do Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        560,
        416
      ],
      "typeVersion": 3,
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "notes": "DSA Log - Este n\u00f3 vai realizar o download dos arquivos que est\u00e3o no Google Drive e que ser\u00e3o usados no RAG como fonte para gera\u00e7\u00e3o de relat\u00f3rio com o Agente de IA."
    },
    {
      "parameters": {
        "mode": "insert",
        "pineconeIndex": {
          "__rl": true,
          "mode": "list",
          "value": "dsa-relatorios",
          "cachedResultName": "dsa-relatorios"
        },
        "options": {}
      },
      "id": "c7a3663c-4ff7-402a-aae2-66a268f669c6",
      "name": "Pinecone Vector Store",
      "type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
      "position": [
        816,
        416
      ],
      "typeVersion": 1,
      "credentials": {
        "pineconeApi": {
          "name": "<your credential>"
        }
      },
      "notes": "DSA Log - Este n\u00f3 vai construir um banco vetorial para armazenar os vetores dos dados de texto dos documentos em pdf."
    },
    {
      "parameters": {},
      "id": "7960fb45-101d-41dd-b54f-f612e4aa6caf",
      "name": "Embeddings Google Gemini",
      "type": "@n8n/n8n-nodes-langchain.embeddingsGoogleGemini",
      "position": [
        720,
        624
      ],
      "typeVersion": 1,
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "notes": "DSA Log - Este n\u00f3 \u00e9 do modelo de embeddings, usado para converter texto em representa\u00e7\u00e3o num\u00e9rica."
    },
    {
      "parameters": {
        "dataType": "binary",
        "loader": "pdfLoader",
        "options": {}
      },
      "id": "d629c5e4-032e-4f2e-8812-df4d994513bc",
      "name": "Default Data Loader",
      "type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
      "position": [
        896,
        624
      ],
      "typeVersion": 1,
      "notes": "DSA Log - N\u00f3 para carregar os documentos em pdf."
    },
    {
      "parameters": {
        "chunkOverlap": 50,
        "options": {}
      },
      "id": "1d174a5c-d9a8-47fe-bccf-11ae346a6327",
      "name": "Recursive Character Text Splitter",
      "type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
      "position": [
        976,
        832
      ],
      "typeVersion": 1,
      "notes": "DSA Log - N\u00f3 para a opera\u00e7\u00e3o de chunking (divis\u00e3o de dados de texto em blocos, ou chunks)."
    },
    {
      "parameters": {
        "content": "## Fluxo 1 - M\u00f3dulo de RAG",
        "height": 672,
        "width": 1360,
        "color": 6
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        320
      ],
      "typeVersion": 1,
      "id": "5b23dbae-831e-4240-9be3-de7af55dccde",
      "name": "Sticky Note1"
    },
    {
      "parameters": {
        "options": {}
      },
      "id": "43f4e561-4ef4-4bbb-aaff-5dede33eb025",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        320,
        1328
      ],
      "typeVersion": 1.1,
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "notes": "DSA Log - Node para o LLM da OpenAI. Este \u00e9 o LLM que vai gerar o relat\u00f3rio."
    },
    {
      "parameters": {
        "name": "dsa_vector_store_tool",
        "description": "Obtenha informa\u00e7\u00f5es sobre os resultados financeiros do Google nos \u00faltimos 3 trimestres."
      },
      "id": "34d035e4-b57e-4510-aeb0-1d2e28a6db38",
      "name": "Vector Store Tool",
      "type": "@n8n/n8n-nodes-langchain.toolVectorStore",
      "position": [
        560,
        1344
      ],
      "typeVersion": 1,
      "notes": "DSA Log - Ferramenta para consultar o RAG."
    },
    {
      "parameters": {
        "pineconeIndex": {
          "__rl": true,
          "mode": "list",
          "value": "dsa-relatorios",
          "cachedResultName": "dsa-relatorios"
        },
        "options": {}
      },
      "id": "1cc0783e-be89-40df-8c15-fbefecd61589",
      "name": "Pinecone Vector Store (Retrieval)",
      "type": "@n8n/n8n-nodes-langchain.vectorStorePinecone",
      "position": [
        432,
        1552
      ],
      "typeVersion": 1,
      "credentials": {
        "pineconeApi": {
          "name": "<your credential>"
        }
      },
      "notes": "DSA Log - Retriever do RAG."
    },
    {
      "parameters": {},
      "id": "8572c2bf-698a-440d-82fd-7e114559cd24",
      "name": "Embeddings Google Gemini (retrieval)",
      "type": "@n8n/n8n-nodes-langchain.embeddingsGoogleGemini",
      "position": [
        560,
        1728
      ],
      "typeVersion": 1,
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "notes": "DSA Log - Modelo de embeddings usado pelo retriever."
    },
    {
      "parameters": {
        "content": "## Fluxo 2 - M\u00f3dulo do Agente de IA",
        "height": 864,
        "width": 1360,
        "color": 2
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        1040
      ],
      "typeVersion": 1,
      "id": "fd359b88-c670-47ad-be0d-d098fff9cf5e",
      "name": "Sticky Note2"
    },
    {
      "parameters": {
        "content": "## IA e Fluxos Cognitivos Para Automa\u00e7\u00e3o de Processos de Neg\u00f3cios (BPA) com n8n\n\n### DSA - Projeto 8\n\n**Fluxo de Automa\u00e7\u00e3o com Agentes de IA e RAG Para Gera\u00e7\u00e3o de Relat\u00f3rios**\n\nwww.datascienceacademy.com.br",
        "height": 192,
        "width": 944,
        "color": 5
      },
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        0,
        0
      ],
      "typeVersion": 1,
      "id": "816eb986-b255-45bd-a723-d405c511ca2f",
      "name": "Sticky Note5"
    },
    {
      "parameters": {},
      "id": "dbfad583-83ff-4b73-ac81-662d5981abd1",
      "name": "In\u00edcio do Fluxo 2",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        128,
        1120
      ],
      "typeVersion": 1,
      "notes": "DSA Log - Node de in\u00edcio do Fluxo 2."
    },
    {
      "parameters": {
        "promptType": "define",
        "text": "Elabore um relat\u00f3rio sobre os resultados financeiros do Google nos \u00faltimos tr\u00eas trimestres. Formate-o em Markdown. Concentre-se nas diferen\u00e7as e tend\u00eancias. Identifique quaisquer valores discrepantes.",
        "options": {
          "systemMessage": "Voc\u00ea \u00e9 um analista financeiro altamente qualificado, especializado em analisar o desempenho financeiro do Google (Alphabet Inc.). Voc\u00ea tem acesso a duas ferramentas poderosas:\n\n1. **Ferramenta Vector Store:** Esta ferramenta permite recuperar informa\u00e7\u00f5es relevantes dos relat\u00f3rios de resultados do Google dos \u00faltimos tr\u00eas trimestres (documentos PDF). Os documentos foram processados e armazenados como embeddings em um banco de dados vetorial, possibilitando a busca sem\u00e2ntica. Use esta ferramenta para encontrar informa\u00e7\u00f5es espec\u00edficas relacionadas a receita, despesas, lucros, preju\u00edzos, crescimento, m\u00e9tricas-chave, coment\u00e1rios da administra\u00e7\u00e3o e quaisquer outros dados financeiros relevantes.\n\n2. **Ferramenta Google Docs:** Esta ferramenta permite criar, editar e formatar documentos do Google Docs. Use-a para salvar suas descobertas em um documento do Google Docs. Sua tarefa \u00e9 gerar relat\u00f3rio resumido sobre o desempenho financeiro do Google com base nos relat\u00f3rios de resultados dos \u00faltimos tr\u00eas trimestres. \n\n3. **Recupere informa\u00e7\u00f5es relevantes:** Use a ferramenta Vector Store para pesquisar e recuperar as passagens de texto mais relevantes dos relat\u00f3rios de resultados. Recupere v\u00e1rios trechos diversos para garantir uma cobertura abrangente.\n\n4. **Sintetize e analise:** Analise as informa\u00e7\u00f5es dos trechos de texto recuperados. Identifique as principais tend\u00eancias, padr\u00f5es e insights relacionados \u00e0 consulta do usu\u00e1rio.\n\n5. **Gere o relat\u00f3rio no Google Docs:** Use a ferramenta Google Docs para criar um novo documento do Google (ou anexar a um existente, se especificado pelo usu\u00e1rio). Estruture o relat\u00f3rio com t\u00edtulos claros, marcadores e par\u00e1grafos concisos. Inclua o seguinte em seu relat\u00f3rio, conforme apropriado:\n\n* **Resumo Executivo:** Uma breve vis\u00e3o geral das principais conclus\u00f5es.\n\n* **An\u00e1lise de Receita:** Relat\u00f3rio sobre os valores de receita, taxas de crescimento e principais fatores de receita.\n* **An\u00e1lise de Despesas:** Relate as principais categorias de despesas e seu impacto na lucratividade.\n* **An\u00e1lise de Lucratividade:** Discuta o lucro l\u00edquido, as margens de lucro e o lucro por a\u00e7\u00e3o (LPA).\n\n* **M\u00e9tricas Principais:** Inclua outras m\u00e9tricas financeiras relevantes mencionadas nos relat\u00f3rios (por exemplo, lucro operacional, fluxo de caixa, desempenho do segmento).\n\n* **Coment\u00e1rios da Administra\u00e7\u00e3o:** Resuma quaisquer insights ou explica\u00e7\u00f5es relevantes fornecidos pela administra\u00e7\u00e3o do Google nas teleconfer\u00eancias ou relat\u00f3rios de resultados.\n\n* **An\u00e1lise de Tend\u00eancias:** Compare o desempenho do trimestre atual com os dois trimestres anteriores, destacando mudan\u00e7as ou tend\u00eancias significativas.\n\n* **Visualiza\u00e7\u00f5es:** Se poss\u00edvel, use a ferramenta Google Docs para inserir gr\u00e1ficos ou tabelas b\u00e1sicos para representar visualmente os dados. (Voc\u00ea pode precisar orientar o usu\u00e1rio sobre como fazer isso se a ferramenta tiver limita\u00e7\u00f5es.)\n\n6. **Cite as Fontes:** Indique claramente a fonte de suas informa\u00e7\u00f5es (por exemplo, \"Relat\u00f3rio de Resultados do 2\u00ba Trimestre de 2023\") para cada ponto de dados ou an\u00e1lise.\n\n7. **Mantenha um tom profissional:** Escreva em um tom claro, conciso e objetivo, como esperado de um analista financeiro. Evite especula\u00e7\u00f5es ou afirma\u00e7\u00f5es sem fundamento.\n\nSeu objetivo final \u00e9 fornecer ao usu\u00e1rio um relat\u00f3rio financeiro bem estruturado, informativo e preciso, baseado nos dados dispon\u00edveis nos \u00faltimos tr\u00eas trimestres dos relat\u00f3rios de resultados do Google.\n\nSalve o relat\u00f3rio como um documento do Google usando a ferramenta dispon\u00edvel! Gere o relat\u00f3rio em portugu\u00eas do Brasil."
        }
      },
      "id": "fc17dfab-5290-4df9-b3b3-037a553714c1",
      "name": "Agente de IA",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        432,
        1120
      ],
      "typeVersion": 1.7,
      "notes": "DSA Log - N\u00f3 do Agente de IA"
    },
    {
      "parameters": {
        "operation": "update",
        "documentURL": "3bKUl-mnCaI4__tULmBZSvWlOQhTHdD-RUPesP7_sGB7",
        "actionsUi": {
          "actionFields": [
            {
              "action": "insert",
              "text": "={{ $json.output }}"
            }
          ]
        }
      },
      "id": "2e093d07-b56f-483d-a743-3ff3bb36af10",
      "name": "Salva o Relat\u00f3rio no Google Docs",
      "type": "n8n-nodes-base.googleDocs",
      "position": [
        848,
        1120
      ],
      "typeVersion": 2,
      "credentials": {
        "googleDocsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "notes": "DSA Log - N\u00f3 para salvar o relat\u00f3rio no Google Docs"
    },
    {
      "parameters": {
        "modelName": "models/gemini-2.0-flash-exp",
        "options": {}
      },
      "id": "9feddd46-22d5-4f02-a71c-2ead563a01db",
      "name": "Google Gemini Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        784,
        1536
      ],
      "typeVersion": 1,
      "credentials": {
        "googlePalmApi": {
          "name": "<your credential>"
        }
      },
      "notes": "DSA Log - Este LLM ser\u00e1 usado para formatar a resposta do RAG."
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        1168,
        416
      ],
      "id": "b03bcbbd-167c-44c3-9dc9-5cc6989e09cd",
      "name": "Fim1",
      "notes": "DSA Log - Fim do fluxo 1."
    },
    {
      "parameters": {},
      "type": "n8n-nodes-base.noOp",
      "typeVersion": 1,
      "position": [
        1104,
        1120
      ],
      "id": "c55258ba-da3f-4e30-b648-99d38da777c8",
      "name": "Fim2",
      "notes": "DSA Log - Fim do fluxo 2."
    }
  ],
  "connections": {
    "Lista de Arquivos Para Carregar no RAG": {
      "main": [
        [
          {
            "node": "Loop",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop": {
      "main": [
        [],
        [
          {
            "node": "Download de Arquivos do Google Drive",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download de Arquivos do Google Drive": {
      "main": [
        [
          {
            "node": "Pinecone Vector Store",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Embeddings Google Gemini": {
      "ai_embedding": [
        [
          {
            "node": "Pinecone Vector Store",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "Default Data Loader": {
      "ai_document": [
        [
          {
            "node": "Pinecone Vector Store",
            "type": "ai_document",
            "index": 0
          }
        ]
      ]
    },
    "Recursive Character Text Splitter": {
      "ai_textSplitter": [
        [
          {
            "node": "Default Data Loader",
            "type": "ai_textSplitter",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Agente de IA",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Vector Store Tool": {
      "ai_tool": [
        [
          {
            "node": "Agente de IA",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Pinecone Vector Store (Retrieval)": {
      "ai_vectorStore": [
        [
          {
            "node": "Vector Store Tool",
            "type": "ai_vectorStore",
            "index": 0
          }
        ]
      ]
    },
    "Embeddings Google Gemini (retrieval)": {
      "ai_embedding": [
        [
          {
            "node": "Pinecone Vector Store (Retrieval)",
            "type": "ai_embedding",
            "index": 0
          }
        ]
      ]
    },
    "In\u00edcio do Fluxo 2": {
      "main": [
        [
          {
            "node": "Agente de IA",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Agente de IA": {
      "main": [
        [
          {
            "node": "Salva o Relat\u00f3rio no Google Docs",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Google Gemini Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "Vector Store Tool",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Salva o Relat\u00f3rio no Google Docs": {
      "main": [
        [
          {
            "node": "Fim2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Pinecone Vector Store": {
      "main": [
        [
          {
            "node": "Fim1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "178c2491-e61d-4ee9-96f3-867169d6385d",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "2KKRmFrQqg36cMaL",
  "tags": []
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

DSAProjeto8. Uses googleSheets, googleDrive, vectorStorePinecone, embeddingsGoogleGemini. Event-driven trigger; 21 nodes.

Source: https://github.com/alexmabud/Pos-Graduacao-Engenharia-Automacao-Processos-IA-DSA/blob/b5ab72601b40d41d89e374e66355aaa3ea833761/projetos_dsa/modulo_4/projetos_8_modulo_4/DSAProjeto8.json — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Api Schema Extractor. Uses manualTrigger, httpRequest, splitOut, textSplitterRecursiveCharacterTextSplitter. Event-driven trigger; 88 nodes.

HTTP Request, Text Splitter Recursive Character Text Splitter, Document Default Data Loader +9
AI & RAG

Wait Splitout. Uses manualTrigger, httpRequest, splitOut, textSplitterRecursiveCharacterTextSplitter. Event-driven trigger; 88 nodes.

HTTP Request, Text Splitter Recursive Character Text Splitter, Document Default Data Loader +9
AI & RAG

This workflow automates the process of discovering and extracting APIs from various services, followed by generating custom schemas. It works in three distinct stages: research, extraction, and schema

HTTP Request, Text Splitter Recursive Character Text Splitter, Document Default Data Loader +9
AI & RAG

This advanced n8n workflow automates the full lead enrichment, qualification, and personalized outreach process tailored specifically for the B2B real estate sector. Integrating top platforms like Api

N8N Nodes Fillout, OpenAI Chat, Pinecone Vector Store +11
AI & RAG

This n8n template automatically classifies incoming emails (Sales, Support, Internal, Finance, Promotions) and routes them to a dedicated OpenAI LLM Agent for processing. Depending on the category, th

OpenAI, Gmail, Text Classifier +16