Enrich a company list in Google Sheets

Paste a spreadsheet link, get LinkedIn pages, employee counts, and revenue filled in for every unenriched company in one batch.

Agentic Task
Google SheetsInternet SearchSalesOperationsLead EnrichmentResearch & MonitoringData Sync
PromptCreate

Build an agent workflow that enriches a company list inside a Google Sheet.

Trigger: manual launch. The workflow has one required text input called "Spreadsheet URL" where the user pastes a full Google Sheets link (https://docs.google.com/spreadsheets/d/<spreadsheetId>/edit#gid=<gid>).

What the agent should do when launched:

1. Parse the spreadsheet URL from the input to extract the Spreadsheet ID and the Sheet ID (the gid in the hash).

2. Call Google Sheets to fetch the spreadsheet metadata, find the tab whose sheetId matches the gid, and use that tab's title for all subsequent reads and writes.

3. Read all rows and the header row of that tab. Locate these columns by header name: "Company Name", "LinkedIn Page", "Employee Count", "Annual Revenue (Est)", and "Enrichment Status". If any of LinkedIn Page, Employee Count, Annual Revenue (Est), or Enrichment Status are missing, append them as new columns to the right of the existing data and re-read so the column indexes are correct.

4. Identify rows to enrich: any row where Company Name is non-empty and Enrichment Status is not exactly "Enriched". Skip everything else.

5. For each row to enrich, use Internet Search to find: the official LinkedIn company page URL, the most recent publicly reported employee count, and the most recent annual revenue estimate. Run separate targeted searches per field and prefer authoritative sources (LinkedIn, the company website, Wikipedia, Crunchbase, major business press).

6. Standardize the values before writing them back:

- LinkedIn Page: full HTTPS URL to the company page (e.g. https://www.linkedin.com/company/acme).

- Employee Count: comma-separated integer such as 12,500. Use the latest single number; if only a range is available, use the midpoint.

- Annual Revenue (Est): formatted string like "$86.4 Billion" or "$378.1 Million". One decimal place, currency symbol, magnitude spelled out.

- Enrichment Status: set to "Enriched" only when all three fields have confident values.

7. Submit all cell updates in a single Batch Update Values request to Google Sheets so the spreadsheet is written once at the end, not row by row.

8. Output a summary table of the rows that were enriched (Company Name, LinkedIn Page, Employee Count, Annual Revenue) and a direct link back to the spreadsheet so the user can review the results.

Rules: never overwrite existing non-empty cells; if a field cannot be confidently found for a company, leave that cell blank and do not mark the row Enriched; rerunning the workflow on the same sheet should be safe and only process rows that are still missing data.

Additional information

What does this prompt do?
  • Reads a Google Sheet you paste in and finds the rows where the company name has not been enriched yet.
  • Researches each company on the open web to pull the LinkedIn page, latest employee count, and most recent annual revenue.
  • Writes everything back into your spreadsheet in a single batch update and marks each row as Enriched.
  • Returns a summary table of the rows it touched plus a direct link to the updated sheet.
What do I need to use this?
  • A Google account with edit access to the spreadsheet you want enriched.
  • A sheet that includes a 'Company Name' column. Missing columns for LinkedIn Page, Employee Count, Annual Revenue, and Enrichment Status will be added for you.
How can I customize it?
  • Change which fields get enriched (add industry, HQ city, founded year, funding stage, and more).
  • Adjust how revenue and headcount are formatted, for example round numbers, use ranges, or change the currency.
  • Filter which rows get processed each run, for example only a specific segment, region, or row range.

Frequently asked questions

Will it overwrite rows I have already filled in?
No. The workflow only touches rows where Enrichment Status is empty or not set to Enriched. Anything you have already filled in stays untouched.
What if my sheet does not have the right columns?
If LinkedIn Page, Employee Count, Annual Revenue, or Enrichment Status are missing, they are added as new columns to the right of your existing data before the enrichment starts.
How accurate is the data?
Numbers come from public web sources, so they are best-effort estimates rather than verified figures. Treat them like research notes a teammate would gather, not financial filings.
Can I run this on a specific tab in my spreadsheet?
Yes. Paste the spreadsheet URL with the tab open (the link already includes the tab id) and the workflow resolves the correct tab before reading and writing.
Does it work on very large company lists?
Yes, but longer lists take longer to finish because each company requires its own web research. You can also rerun the workflow and it will pick up where it left off, skipping rows already marked Enriched.

Related templates

Auto-refresh a Google Sheet from Databricks every night

Every night we run your saved Databricks query and refresh a Google Sheet with the results, so your team reads the latest numbers without a login.

Databricks
Google Sheets
Deterministic Code
Log daily football results and league standings to Sheets

Every morning, automatically record yesterday's match results and each league's latest table into a spreadsheet you can chart or pivot.

API-Sports
Google Sheets
Deterministic Code
Daily IP reputation screening with Slack threat alerts

Every morning we check your list of IP addresses for abusive activity, update your spreadsheet, and alert your team only about the risky ones.

AbuseIPDB
Google Sheets
Slack
Agentic Task
Log every new Azure DevOps work item to Google Sheets

Automatically add every new Azure DevOps work item to a Google Sheets tracker so your team can filter, sort, and report without opening Azure DevOps.

Azure DevOps
Google Sheets
Deterministic Code
Daily data breach monitoring for key email accounts

Check key email accounts against known data breaches every weekday, log every exposure to a spreadsheet, and get a Slack alert when a new breach shows up.

Have I Been Pwned
Google Sheets
Slack Bot
Deterministic Code
Morning team travel briefing with live flight alerts

Every weekday morning, your team gets one Slack briefing on who's flying today, their live flight status, and any delays or cancellations to act on.

AviationStack
Google Sheets
Slack
Agentic Task

Stop pasting company data into spreadsheets by hand.

Paste a Google Sheet link and Geni fills in LinkedIn, headcount, and revenue for every company on the list, then writes it all back in one go.