Mindket

Quarterly earnings PDFs turned into an analyst report

Newversion 1 · updated

Overview

An n8n workflow that loads quarterly earnings PDFs from Google Drive into a Pinecone index with Gemini embeddings. An OpenAI agent then searches that index for a report on the last three quarters and adds it to a Google Doc.

Quarterly earnings PDFs turned into an analyst report is an n8n workflow in the Finance & accounting category, listed by Mindket. It is free. This is version 1, last updated on . Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

At a glance

Runs in
  • n8n Cloud: import the file into a new workflow there
  • Your own n8n server: the same file and steps
  • Google Drive: keep the PDFs there, with the sheet beside them
  • Another place for the report: replace the last node with Gmail or Slack

Platform

Connects 6 apps

How it works

Trigger

Two manual starts

Nothing runs on its own. You start it by hand, in one of two ways:

  • Load earnings PDFs, which fills the index from your sheet of PDF links
  • Test workflow, which asks the agent for the report

Actions

  1. Each row of your sheet gives the link to one earnings PDF in Google Drive
  2. The file is downloaded and read as a PDF
  3. The text is cut into chunks of 1000 characters, and Gemini turns each into a vector
  4. The vectors are stored in a Pinecone index called company-earnings
  5. An OpenAI agent searches the index and answers from the closest chunks
  6. The agent writes a markdown report on the last three quarters
  7. The report is added to the end of a Google Doc

Result

A markdown report comparing the last three quarters, added to your Google Doc

Integrations

What you need before you start.

Google Sheets

List of PDFs

Holds one row for each earnings PDF, with its Drive link and a file name.

NeedsA Google account to sign in with, and a sheet with File URL and 10Q columns

Google Drive

File storage

Opens each PDF from the link in its row.

NeedsA Google account to sign in with

Pinecone

Vector index

Stores the chunks as vectors in company-earnings and finds the closest ones for the agent.

NeedsPinecone API key, and an index with 3072 dimensions

Google Gemini

Embeddings and answers

Runs gemini-embedding-2 to embed the chunks and the questions, and gemini-3.6-flash to answer from the retrieved chunks.

NeedsGemini API key, in a Google Gemini(PaLM) Api credential

OpenAI

The agent’s model

Runs the agent that decides what to search for and writes the report.

NeedsOpenAI API key

Google Docs

Report

Takes the finished report at the end of a document.

NeedsA Google account to sign in with, and a Google Doc

Workflow check

Checked by Mindket on 13 Nov 2026

Steps
8 steps, starting by hand
AI
2 steps call an AI model: Pinecone Vector Store and AI Agent
Sign-ins
Signs in to: Google Sheets, Google Drive, Pinecone, Google Gemini, Google Docs and OpenAI
API keys
No API key is left in the file
Step types
Mindket’s checker reads all 7 of its step types

Read from the workflow’s file, not from a run.

About

What it is

This n8n workflow turns a stack of quarterly earnings PDFs into a written analyst report. Run its first half once and it reads each PDF listed in a Google Sheet, cuts the text into chunks and stores them in a Pinecone index, with Gemini embeddings. Its second half starts an OpenAI agent that searches that index and writes a markdown report on the last three quarters. The report is added to the end of a Google Doc. Sixteen nodes do the work, beside three sticky notes.

Who it suits

Private investors, junior analysts and finance students who follow a few listed companies and want a first draft of how recent quarters compare. Skip it if you need audited figures or cannot check the numbers against the PDFs. As imported, the prompt and the system message are written for Google.

Who uses it, and how
IndustryWho uses itHow they use itExample
InvestingPrivate investorsLoad the last three earnings PDFs of a stock they hold and ask for the trendsA retired engineer reads the draft before deciding whether to add to a holding.
Equity researchJunior analystsStart from a structured draft of the quarter-on-quarter changesAn analyst gets revenue, costs and outliers laid out, then checks each figure against the filing.
Finance educationStudents and teachersCompare a generated report with the PDFs it came fromA class marks which claims the filings back up and which they do not.
StrategyProduct and strategy leadsLoad a listed rival’s latest reports and ask what changedA product lead asks where a rival’s costs grew fastest.

You need solid n8n for this one: six credentials, a Pinecone index of the right size and a sheet of PDF links.

Where to use it

Any n8n that can reach Google, Pinecone and OpenAI will run it. The report lands in a Google Doc, so a shared document lets a team read it.

  • n8n Cloud: import the file into a new workflow there
  • Your own n8n server: the same file and steps
  • Google Drive: keep the PDFs there, with the sheet beside them
  • Another place for the report: replace the last node with Gmail or Slack

Setup

Download saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Make the Pinecone index before you load anything.

What you need first
NeedDetail
n8nOn n8n Cloud or on a server of your own
GoogleOne account for Sheets, Drive and Docs credentials, and a Gemini API key from Google AI Studio
PineconeAn account, an API key and an index named company-earnings with 3072 dimensions
OpenAIAn API key
Your filesThe PDFs in Drive, a sheet with File URL and 10Q columns, and an empty Google Doc
  1. In n8n, create a workflow, open its menu, choose Import from File and pick workflow.json.
  2. In Pinecone, create the index company-earnings with 3072 dimensions.
  3. Give the sheet two headings, File URL and 10Q, and add one row for each PDF: its Drive link and the name to save it under.
  4. Add the credentials and select each one in its nodes. The README lists which node takes which.
  5. In List Of Files To Load (Google Sheets), replace YOUR_SHEET_ID and YOUR_SHEET_TAB. In Save Report to Google Docs, replace YOUR_GOOGLE_DOC_ID.
  6. Press play on Load earnings PDFs and wait for the loop to end.
  7. Edit the prompt and system message in AI Agent for your company, then run When clicking ‘Test workflow’.

How to use it

Load the PDFs once, then ask for a report whenever you like. Open your Google Doc to read it. To follow another company, change the sheet’s rows and the agent’s prompt, and empty the index or make a new one.

What to change for a different result
To changeWhere
Company and quartersThe sheet’s rows, and the prompt and system message in AI Agent
The report’s sectionsThe numbered list in the system message
Chunk sizeChunk Size in Recursive Character Text Splitter
Passages for each searchLimit in Vector Store Tool
The modelsOpenAI Chat Model and Google Gemini Chat Model1

Example

An investor saves three of Alphabet’s quarterly earnings PDFs in Drive and lists them in the sheet. After the load, the typed prompt asks for a markdown report on the last three quarters, with the differences, the trends and any outliers.

The agent searches the index for revenue, expenses, profit and management comments. It then writes the report in the sections its system message lists, and the text is added to the end of the Google Doc. Check every figure against the PDFs before you use it.

For newcomers and experts

If you are new. n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. This one has two separate lines. The first fills the index and the second asks the questions. The index holds each chunk of text as a vector, a list of numbers that places similar passages close together, so the agent can look up the passages nearest a question.

For experts. The tool is a Vector Store Tool, which runs a question-answering chain with the Gemini model over the four nearest chunks. The agent’s model sees that answer, never the raw chunks.

Where to look closer
NodeWhat it doesWhat to know
Pinecone Vector StoreInserts chunks into company-earningsNo namespace is set, so every load adds to the same space and repeats pile up
Default Data LoaderReads each downloaded file as a PDFVersion 1 uses the connected splitter, 1000 characters with no overlap
Vector Store ToolAnswers the agent’s questions from the indexIts own Gemini model writes each answer from four chunks
AI AgentRuns the prompt with that one toolThe system message promises a Google Docs tool that is not attached

Good to know

The loading half had no start in the original, and two retired Gemini models are replaced.

  • Two starts: Mindket’s copy adds the trigger Load earnings PDFs for the loading half. Press it once, not on every report
  • Gemini models: Google’s deprecations page, read on 12 November 2026, shows text-embedding-004 as shut down on 14 January 2026 and the 2.0 Flash models on 1 June 2026. The copy calls gemini-embedding-2 and gemini-3.6-flash, the replacements it names
  • Index size: gemini-embedding-2 returns 3072 numbers by default, so make the Pinecone index 3072 wide
  • Repeats: each press on Load earnings PDFs adds every chunk again, so empty the index before you reload
  • OpenAI default: OpenAI Chat Model sets no model, so n8n uses gpt-5-mini. OpenAI’s page, read on 12 November 2026, gives 11 December 2026 for its shutdown, with gpt-5.6-terra as the replacement
  • Two models: Gemini writes each tool answer and the agent builds the report from those answers, so figures can drift
  • Billing: Gemini bills each chunk embedded and each search, OpenAI the agent’s turns, and Pinecone the index
  • Your data: the PDFs’ text goes to Google, the chunks sit in Pinecone, and the questions and tool answers go to OpenAI
  • Credentials: the JSON holds none

README and files

README

Quarterly earnings PDFs turned into an analyst report

An n8n workflow in two halves. The first loads quarterly earnings PDFs from Google Drive into a Pinecone index, with Gemini
embeddings. The second asks an OpenAI agent for a report on the last three quarters. The agent searches that index, and the
finished report is added to a Google Doc.

What is inside

  • workflow.json: the workflow as n8n exports it, nineteen nodes. Sixteen of them run and three are sticky notes. It holds no
    credential.
  • README.md: these notes.

What we changed from the original copy

  • Nothing started the half that fills the index, so a test run only reached the agent. We added a Manual Trigger,
    Load earnings PDFs, in front of List Of Files To Load (Google Sheets).
  • Both embedding nodes called models/text-embedding-004, which Google shut down on 14 January 2026. They now call
    models/gemini-embedding-2, the replacement on Google's deprecations page, read on 12 November 2026.
  • The Gemini chat model inside the vector store tool was models/gemini-2.0-flash-exp. The same page lists the 2.0 Flash models as
    shut down on 1 June 2026 and names gemini-3.6-flash as their replacement, so the node calls models/gemini-3.6-flash.
  • The sheet, the Google Doc and every credential link belonged to the file's author. The two IDs are placeholders now, and the
    credential links are gone.
  • The sticky note of setup steps is replaced by a short pointer to this file.
  • Nothing else. The file has no Code node.

Before you start

  • An n8n instance, on n8n Cloud or your own server.
  • A Google account for three OAuth2 credentials: Google Sheets, Google Drive and Google Docs.
  • A Gemini API key from Google AI Studio, for a Google Gemini(PaLM) Api credential.
  • A Pinecone account and API key.
  • An OpenAI API key.
  • The earnings PDFs, saved in Google Drive.
  • A Google Sheet with one row for each PDF, and an empty Google Doc for the reports.

Set it up

  1. In n8n, create a workflow, open its menu and choose Import from File. Pick workflow.json.
  2. In Pinecone, create an index named company-earnings with 3072 dimensions. Google's embeddings page
    gives 3072 as the default size of gemini-embedding-2. An index made for the older model's 768 will refuse the vectors.
  3. Fill the sheet's first row with two headings, File URL and 10Q. Under them, add one row for each PDF: its Google Drive link,
    and the name to save the file under.
  4. Add the credentials and select each one: Google Sheets in List Of Files To Load (Google Sheets), Google Drive in
    Download File From Google Drive, Google Docs in Save Report to Google Docs, Google Gemini(PaLM) in
    Embeddings Google Gemini, Embeddings Google Gemini (retrieval) and Google Gemini Chat Model1, Pinecone in both Pinecone
    nodes, and OpenAI in OpenAI Chat Model.
  5. In List Of Files To Load (Google Sheets), replace YOUR_SHEET_ID with the ID from the sheet's address, the part between /d/
    and /edit, and YOUR_SHEET_TAB with the tab's name.
  6. In Save Report to Google Docs, replace YOUR_GOOGLE_DOC_ID with the ID of your document, found the same way.
  7. Press the play button on Load earnings PDFs and wait until the loop ends. Check in Pinecone that the index now holds vectors.
  8. Open AI Agent and rewrite its prompt and system message for your company. Both are written for Google.
  9. Run the other trigger, When clicking ‘Test workflow’, and open the Google Doc.

How a run goes

Filling the index:

  1. Load earnings PDFs starts List Of Files To Load (Google Sheets), which reads every row of the tab.
  2. Loop Over Items passes on one row at a time, since its batch size is left at 1.
  3. Download File From Google Drive opens the file at File URL and names it after the 10Q column.
  4. Default Data Loader reads the file as a PDF, one document for each page. Recursive Character Text Splitter cuts those into
    chunks of 1000 characters with no overlap, and Embeddings Google Gemini turns each chunk into a vector.
  5. Pinecone Vector Store, set to insert, writes the vectors into the company-earnings index.
  6. The node hands control back to Loop Over Items for the next row.

Asking for the report:

  1. When clicking ‘Test workflow’ starts AI Agent (version 1.7). Its prompt is typed in the node: a markdown report on Google's
    last three quarters, with the differences, the trends and any outliers.
  2. The agent's model is OpenAI Chat Model. Its one tool, Vector Store Tool, is named company_financial_earnings_data_tool.
  3. When the agent calls the tool, Pinecone Vector Store (Retrieval) finds the four closest chunks, since Limit is left at 4.
    Google Gemini Chat Model1 answers from them and hands that answer back to the agent. The agent may call the tool many times.
  4. Save Report to Google Docs adds the agent's output to the end of your document.

Change the look

  • Company and quarters: the sheet's rows, and the prompt and system message in AI Agent.
  • The report's sections: the list in the system message.
  • Chunk size: Chunk Size in Recursive Character Text Splitter. Load the PDFs again after a change.
  • Passages for each search: Limit in Vector Store Tool.
  • Models: OpenAI Chat Model and Google Gemini Chat Model1. Keep both embedding nodes on the same model.
  • Where the report goes: replace the last node with Gmail, Slack or another node that takes text.

Good to know

  • Each press on Load earnings PDFs adds every chunk again, and nothing checks for repeats. Empty the index before you reload.
  • The index size must match the embedding model. If you change the model in both embedding nodes, make a new index to suit it.
  • The system message says the agent has a Google Docs tool. It has none: Save Report to Google Docs writes the text after the agent
    finishes. The sentence does no harm, and you can delete it.
  • The report passes through two models. Gemini writes each tool answer from four chunks, and the agent builds the report from those
    answers. Check the figures that matter against the PDFs before anyone relies on them.
  • OpenAI Chat Model sets no model, so n8n's default for that node version applies, gpt-5-mini. OpenAI's list of retiring models, read the
    same day, gives 11 December 2026 as its shutdown and gpt-5.6-terra as the replacement. Pick a model in the node.
  • Google's page also lists gemini-2.5-pro and gemini-2.5-flash for 1 December 2026. Neither is used here.
  • Billing: Gemini charges for each chunk embedded and again for each search, OpenAI for the agent's turns, and Pinecone for the index.
  • Where the data goes: the PDFs' text goes to Google for embedding, the chunks are stored in Pinecone, and the question and the tool's
    answers go to OpenAI. The finished report lands in your Google Doc.
Files
NOTICE.md  637 B
README.md  7 KB
workflow.json  14 KB

3 files, 21 KB, downloaded as a zip.

What’s new

  • Version 1 · 2026-11-12

Reviews

No ratings yet

Write a review

No reviews yet.

More from Mindket

See all from Mindket

Nanosaur2-670M

well9472 · Kit

Makes illustrations from text prompts with a small 670M-parameter diffusion model, run through ComfyUI. Built as a low-budget research model for people who wan…

New

Reads handwritten Arabic text from images and returns it as text. A fine-tuned PaddleOCR-VL model for people digitizing Arabic handwriting.

New

Makes video clips from a text prompt or an image plus text, at up to 720P and 24 frames per second, in the Diffusers format for a single consumer GPU.

New

Similar in Finance & accounting

See all in Finance & accounting

Kronos-mini

NeoQuasar · Kit

Forecasts financial candlestick series with a 4.1M-parameter foundation model trained on data from over 45 exchanges. For quant researchers and developers who…

New