Generate site feasibility and risk reports with Google Gemini and Slack

Go to Workflow
0 views
Built by iamvaar iamvaar
Created on September 27, 2026

Description

Quick overview
Youtube Video: https://youtu.be/Ry6lMULSsF4

This workflow collects a site location via an n8n form, checks whether the coordinates are on land, pulls elevation, protected-species occurrences, and US Census demographics, then uses Google Gemini to generate a structured feasibility and risk report and posts it to Slack.

How it works
Receives a site submission (name, latitude, longitude, radius) from an n8n Form trigger.
Checks the coordinates with isitwater.com and posts a rejection message to Slack if the location is water.
If the location is land, retrieves elevation from Open Topo Data and searches GBIF for nearby occurrences of IUCN-listed threatened species within the specified radius.
Geocodes the point to a US Census block group and fetches ACS 5-year estimates (median household income and population) from the US Census API.
Aggregates the site, elevation, species, and census data into a single structured record, including simple flags like low-elevation flood risk and protected species counts.
Sends the structured data to Google Gemini (via an n8n LangChain chain) to produce a JSON-formatted risk score, verdict, summaries, and recommendation.
Formats the AI output into a Slack-friendly report and posts it to the configured Slack channel.

Setup
Add credentials for isitwater.com (HTTP Bearer token), Google Gemini/PaLM API, and Slack.
Update the Slack channel selection in both Slack posting steps to your target channel (and ensure the channel exists).
(Optional) Add a US Census API key to the Census ACS request, or remove the empty key parameter if you do not use a key.

Nodes Used (6)

Basic LLM Chain
@n8n/n8n-nodes-langchain.chainLlm
Code
n8n-nodes-base.code
Google Gemini Chat Model
@n8n/n8n-nodes-langchain.lmChatGoogleGemini
HTTP Request
n8n-nodes-base.httpRequest
Slack
n8n-nodes-base.slack
Structured Output Parser
@n8n/n8n-nodes-langchain.outputParserStructured