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…
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.
Two manual starts
Nothing runs on its own. You start it by hand, in one of two ways:
A markdown report comparing the last three quarters, added to your Google Doc
What you need before you start.
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
File storage
Opens each PDF from the link in its row.
NeedsA Google account to sign in with
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
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
The agent’s model
Runs the agent that decides what to search for and writes the report.
NeedsOpenAI API key
Report
Takes the finished report at the end of a document.
NeedsA Google account to sign in with, and a Google Doc
Checked by Mindket on 13 Nov 2026
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.
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.
| Industry | Who uses it | How they use it | Example |
|---|---|---|---|
| Investing | Private investors | Load the last three earnings PDFs of a stock they hold and ask for the trends | A retired engineer reads the draft before deciding whether to add to a holding. |
| Equity research | Junior analysts | Start from a structured draft of the quarter-on-quarter changes | An analyst gets revenue, costs and outliers laid out, then checks each figure against the filing. |
| Finance education | Students and teachers | Compare a generated report with the PDFs it came from | A class marks which claims the filings back up and which they do not. |
| Strategy | Product and strategy leads | Load a listed rival’s latest reports and ask what changed | A 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.
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.
Download saves a zip with workflow.json and Mindket’s setup notes in your downloads folder. Make the Pinecone index before you load anything.
| Need | Detail |
|---|---|
| n8n | On n8n Cloud or on a server of your own |
| One account for Sheets, Drive and Docs credentials, and a Gemini API key from Google AI Studio | |
| Pinecone | An account, an API key and an index named company-earnings with 3072 dimensions |
| OpenAI | An API key |
| Your files | The PDFs in Drive, a sheet with File URL and 10Q columns, and an empty Google Doc |
workflow.json.company-earnings with 3072 dimensions.File URL and 10Q, and add one row for each PDF: its Drive link and the name to save it under.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.Load earnings PDFs and wait for the loop to end.AI Agent for your company, then run When clicking ‘Test workflow’.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.
| To change | Where |
|---|---|
| Company and quarters | The sheet’s rows, and the prompt and system message in AI Agent |
| The report’s sections | The numbered list in the system message |
| Chunk size | Chunk Size in Recursive Character Text Splitter |
| Passages for each search | Limit in Vector Store Tool |
| The models | OpenAI Chat Model and Google Gemini Chat Model1 |
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.
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.
| Node | What it does | What to know |
|---|---|---|
Pinecone Vector Store | Inserts chunks into company-earnings | No namespace is set, so every load adds to the same space and repeats pile up |
Default Data Loader | Reads each downloaded file as a PDF | Version 1 uses the connected splitter, 1000 characters with no overlap |
Vector Store Tool | Answers the agent’s questions from the index | Its own Gemini model writes each answer from four chunks |
AI Agent | Runs the prompt with that one tool | The system message promises a Google Docs tool that is not attached |
The loading half had no start in the original, and two retired Gemini models are replaced.
Load earnings PDFs for the loading half. Press it once, not on every reporttext-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 namesgemini-embedding-2 returns 3072 numbers by default, so make the Pinecone index 3072 wideLoad earnings PDFs adds every chunk again, so empty the index before you reloadOpenAI 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 replacementAn 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.
workflow.json: the workflow as n8n exports it, nineteen nodes. Sixteen of them run and three are sticky notes. It holds noREADME.md: these notes.Load earnings PDFs, in front of List Of Files To Load (Google Sheets).models/text-embedding-004, which Google shut down on 14 January 2026. They now callmodels/gemini-embedding-2, the replacement on Google's deprecations page, read on 12 November 2026.models/gemini-2.0-flash-exp. The same page lists the 2.0 Flash models asgemini-3.6-flash as their replacement, so the node calls models/gemini-3.6-flash.workflow.json.company-earnings with 3072 dimensions. Google's embeddings pagegemini-embedding-2. An index made for the older model's 768 will refuse the vectors.File URL and 10Q. Under them, add one row for each PDF: its Google Drive link,List Of Files To Load (Google Sheets), Google Drive inDownload File From Google Drive, Google Docs in Save Report to Google Docs, Google Gemini(PaLM) inEmbeddings Google Gemini, Embeddings Google Gemini (retrieval) and Google Gemini Chat Model1, Pinecone in both PineconeOpenAI Chat Model.List Of Files To Load (Google Sheets), replace YOUR_SHEET_ID with the ID from the sheet's address, the part between /d//edit, and YOUR_SHEET_TAB with the tab's name.Save Report to Google Docs, replace YOUR_GOOGLE_DOC_ID with the ID of your document, found the same way.Load earnings PDFs and wait until the loop ends. Check in Pinecone that the index now holds vectors.AI Agent and rewrite its prompt and system message for your company. Both are written for Google.When clicking ‘Test workflow’, and open the Google Doc.Filling the index:
Load earnings PDFs starts List Of Files To Load (Google Sheets), which reads every row of the tab.Loop Over Items passes on one row at a time, since its batch size is left at 1.Download File From Google Drive opens the file at File URL and names it after the 10Q column.Default Data Loader reads the file as a PDF, one document for each page. Recursive Character Text Splitter cuts those intoEmbeddings Google Gemini turns each chunk into a vector.Pinecone Vector Store, set to insert, writes the vectors into the company-earnings index.Loop Over Items for the next row.Asking for the report:
When clicking ‘Test workflow’ starts AI Agent (version 1.7). Its prompt is typed in the node: a markdown report on Google'sOpenAI Chat Model. Its one tool, Vector Store Tool, is named company_financial_earnings_data_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.Save Report to Google Docs adds the agent's output to the end of your document.AI Agent.Chunk Size in Recursive Character Text Splitter. Load the PDFs again after a change.Limit in Vector Store Tool.OpenAI Chat Model and Google Gemini Chat Model1. Keep both embedding nodes on the same model.Load earnings PDFs adds every chunk again, and nothing checks for repeats. Empty the index before you reload.Save Report to Google Docs writes the text after the agentOpenAI Chat Model sets no model, so n8n's default for that node version applies, gpt-5-mini. OpenAI's list of retiring models, read thegpt-5.6-terra as the replacement. Pick a model in the node.gemini-2.5-pro and gemini-2.5-flash for 1 December 2026. Neither is used here.NOTICE.md 637 B README.md 7 KB workflow.json 14 KB
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…
Waqf-AI · Kit
Reads handwritten Arabic text from images and returns it as text. A fine-tuned PaddleOCR-VL model for people digitizing Arabic handwriting.
Wan-AI · Kit
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.
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…
An n8n workflow that sends a Hebrew WhatsApp reminder for an unpaid invoice 7, 14 and 30 days after its due date. It reads the open invoices from a Google Shee…
An n8n workflow that files invoices. It watches a Google Drive folder, has LlamaParse read each new file and an OpenAI model pick out the line items. Airtable…