PoliRural+ — Bridging Rural and Urban Europe · knowledge baseInteractive book · llms.txt · For AI agents

JackDaw, the PoliRural+ GeoAI agent

Draw an area, ask a question: a router picks a handful of eighteen tools, and every tool receives your map area.

How does JackDaw choose the data for a question, and what limits its answers in the Beta release?

A routing call classifies the user's intent and selects up to five of its eighteen core tools (plus any connected MCP tools); every tool receives the drawn map area as WKT, and a GeoRAG subgraph finds datasets in the Raven catalogue. D4.2 places the limits in metadata completeness, service reliability and keeping evidence trails transparent across many tool calls.

Open in the interactive book · missions, mini-games and memory cards there

JackDaw architecture in the PoliRuralPlus Beta platform JackDaw has a two-panel front end (OpenLayers map and chat), a Python FastAPI backend where a LangGraph agent routes each request to at most five of eighteen core tools and loops through an LLM until no more tool calls are needed, and a GeoRAG subgraph that finds datasets in the Raven catalogue. Raven is the supply side: data providers upload and describe datasets, and the provenance record it keeps (source, processing, quality, licence) steers tool selection and should be shown with the answer. FRONT END · TWO PANELS Map · OpenLayers draw an area → WKT contextGeoNames place searchplain-language map commands Chat panel streamed answer, tables, chartsapproval card before key steps references to sources BACKEND · PYTHON FASTAPI · LANGGRAPH AGENT Router classifies intent,picks ≤ 5 tools LLM OpenAI-compatible,incl. PSNC-hosted Tool calls results fed backuntil none needed Skills YAML / MD playbooks GeoRAG subgraph match datasets in the Raven catalogue,then run spatial queries on them question + WKT area SSE 18 CORE TOOLS · EACH RECEIVES THE MAP AREA (WKT) Raven catalogue Land cover: OLU_EU Terrain: DEM Smart POI Climate: ERA5-Land, WorldClim, Open-Meteo SFSC (4 tools) Demography: Eurostat NUTS3 Policy RAG (vector DB) + MCP tool servers SUPPLY SIDE Data providers partners, pilot regions Raven ingest + metadata · upload, resumable chunks · describe: title, tags, time span, columns · draft → publish · PostGIS + pgvector · REST API + MCP endpoint Provenance record source, ingestion, processing, usage quality status licence, access level known limitations steers which data the agent selects; to be visible in answers Sources: D4.2 §3.1–3.3, §4.4 · D4.1 §6.3
JackDaw has a two-panel front end (OpenLayers map and chat), a Python FastAPI backend where a LangGraph agent routes each request to at most five of eighteen core tools and loops through an LLM until no more tool calls are needed, and a GeoRAG subgraph that finds datasets in the Raven catalogue. Raven is the supply side: data providers upload and describe datasets, and the provenance record it keeps (source, processing, quality, licence) steers tool selection and should be shown with the answer.

JackDaw: inside the Beta GeoAI chat agent

main tellingdepth: standard..technical3 min markdown

JackDaw is the spatially enabled chat agent of the PoliRural+ platform. D4.2, the Beta platform report, describes what is built today; D4.1 described the design it grew from.

Area first

The screen has two halves: an OpenLayers map and a chat panel. The user first defines an area, by drawing a rectangle or by searching a place name (GeoNames), then asks about it. The rectangle is encoded as WKT in EPSG:4326 and attached to every message, so each analysis is tied to a territory that can range from one farm plot to an administrative region. A small locally run model (Ollama) also lets users steer the map in words, such as “zoom in three steps” or “draw a 5 km square here”.

One turn of the agent

The backend is a Python FastAPI service with an agent built on LangGraph:

  1. A single routing call classifies the intent and selects up to five tools for the turn.
  2. A language model, configurable to any OpenAI-compatible endpoint including models hosted by partner PSNC, reasons over those tools and the conversation and calls them.
  3. Tool results flow back into the loop until the model needs no further calls.
  4. For dataset questions, a GeoRAG subgraph finds relevant datasets in the Raven catalogue by semantic matching and then queries them spatially.

Answers stream to the browser (server-sent events). Tables, indicators and time series appear as interactive tables and charts under the text. Tools flagged as sensitive or resource-heavy pause on an approval card until the user confirms or rejects them.

Eighteen core tools

AreaWhat the tools reach
CatalogueAny dataset registered in Raven
ClimateERA5-Land, WorldClim, IPCC RCP 4.5 projections for the 2050s, Open-Meteo forecasts; 16 agroclimatic indicators
Land cover, terrainOLU_EU classification statistics; elevation from a digital elevation model
Short food supply chainsFour tools: farm scale, agricultural block size, LPIS-based crop suitability for direct sales, local demand
Demography, businessEurostat NUTS3 statistics; 2021 census population grid
AttractivenessSmart POI category counts
Policy knowledgeRAG over PoliRuralPlus policy documents

Built to be extended

JackDaw speaks the Model Context Protocol (MCP). Administrators register MCP servers at startup, and users can connect their own at runtime. Skills, playbooks written in YAML and Markdown, inject preferred tools, steps and anti-patterns into the agent when a task matches. Raven covers the supply side: providers upload datasets, describe every column, and publish them to the catalogue that JackDaw searches.

What Beta means

D4.2 places today’s limits in the maturity of connected sources and tools rather than the chat interface: answers are sensitive to metadata completeness and service reliability, and evidence trails are hard to keep transparent across several tool calls. Planned next steps are better evidence grounding, clearer source provenance, generic tool instantiation through Raven, and mature GeoRAG. How one answer is traced is shown in From data to decisions.

How-to: Asking JackDaw about a place, step by step.

How to ask JackDaw about a place: draw, ask, approve, check

another tellingexample world: finlanddepth: intro..standard3 min markdown

When to use it: you have a question about a specific territory, from one farm plot to a region, that needs data about land, climate, people or businesses, not just text.

What you need

Steps

  1. Define the area. Draw a rectangle on the OpenLayers map or search a place name (GeoNames). You can also type into the navigation bar: “find Bratislava”, “zoom in three steps”, “draw a 5 km square here” (D4.2 §3.3.2).
  2. Ask in plain language. Start from a shipped sample query: characterise the area by land use, industry and climate, or assess its suitability for a crop.
  3. Watch the progress. A routing call picks up to five of the eighteen core tools; each one receives your area as WKT (D4.2 §3.3.1).
  4. Answer the approval card. For a significant data retrieval or a choice between analysis strategies, JackDaw pauses and lists the parameters; confirm or reject.
  5. Read the result. The text streams in; statistics, indicator tables and time series appear as interactive tables and charts below it.
  6. Check the evidence. Note which documents or datasets the answer refers to before you reuse a number.
  7. Refine. Ask a follow-up in the same thread, or restart from an earlier message with a different area or angle.
  8. Optional: opt in to the research survey (your role plus anonymous logs, revocable), or, as an advanced user, register your own MCP server in the configuration modal.

What you get

Source-grounded answers, references to documents or datasets, tool results as tables and charts, and sometimes geospatially informed follow-up suggestions (D4.2 §3.3).

Pilot use

In Mallusjoki, JackDaw ran together with Raven metadata services, the Advisor and the MAA tool. D4.2 reports municipal-level spatial analysis that combined open geospatial datasets with local planning needs for the rural events ecosystem (Table 7).

Watch out

Recordings of the JackDaw webinar series (November–December 2025) are at poliruralplus.eu/knowledge-transfer/…. How an answer is traced: From data to decisions.

Building on JackDaw: webinars, Code Camp and extension points

another tellingdepth: standard2 min markdown

JackDaw is designed so that people outside the core team can add data and tools without changing the core application. Two public formats teach how.

The JackDaw webinar series ran from November to December 2025. Its recordings are published on the project’s Education videos page.

The PoliRuralPlus JackDaw Code Camp 2026 was announced on the project website, with registration open until 6 January 2026. The announcement gives the details; this book does not repeat dates or venues that the public pages do not confirm.

Three ways in, as D4.2 documents them

The Enhance open call funded seven projects to improve PoliRural+ tools or add complementary ones (listed in D6.3). For outside developers, this was the funded route into the same ecosystem.

Not tied to one AI provider: JackDaw's mixed model strategy

another tellingdepth: technical3 min markdown

Whose model answers a farmer’s question, and on whose servers, is an architectural choice. D4.2 makes it deliberately, and without slogans.

Three model routes, in parallel

Commercial cloud, for now. The Beta relies in part on mainstream cloud APIs, most notably OpenAI’s GPT services, because they offer a practical and stable path to user-facing functions. For a Beta tested by pilots, D4.2 counts that stability as decisive.

Self-hosted, prepared. The platform also opens for self-hosted models through Ollama and Llama CPP, running on infrastructure of the partner CCSS. D4.2 lists the cases this serves: local deployment, lower operating cost, stronger data control, and experimental choice of models. The map’s natural-language navigation bar already runs on a local Ollama model.

European research infrastructure, experimental. Integrations with the LLM infrastructures of PSNC and CESNET are being pursued, and the agent can already be pointed at OpenAI-compatible endpoints, including models hosted at PSNC.

Why hedge

D4.2 gives two reasons. First, the future cost of commercial AI services is uncertain: many operate under pricing conditions that may shift. Second, smaller local models are improving quickly and already perform well on consumer hardware for many tasks, so edge and distributed processing are treated as credible future options rather than distant ideas. Preparing cloud, self-hosted and distributed routes in parallel keeps the AI layer adaptable and avoids complete reliance on one provider.

Data spaces: aligned, with eyes open

On data, D4.2 aligns the platform with European Data Spaces and EOSC principles: resources should be discoverable, interoperable, reusable and reachable through machine-readable interfaces, so that API workflows and AI agents can use them, not only map viewers. Interfaces are defined towards the Green Deal and Agricultural Data Spaces, and the project uses AIM as a data model for agricultural data exchange.

D4.2 also says what many reports leave out: there is a gap between policy ambition and operational availability. Much effort has gone into frameworks and governance while broad, usable data access remains hard, which can resemble “an effort made before the data itself has reached sufficient critical mass”. The platform positions itself to benefit as that ecosystem matures, without claiming maturity it does not have.

The human layer

The pilots’ policy brief (D7.3, Annex 10) adds that independence is not only about servers. It asks the Commission to fund the human layer of AI (a “data curation line” in AI project budgets) and to fund multilingual AI sandboxes for under-resourced languages such as Maltese and Latvian. A model you host yourself still answers badly in a language it was never tuned for.

The engineering consequence for JackDaw: keep the model swappable and the data well described, because both markets are still moving.

Play

Related

Sources