---
id: ch4-jackdaw-architecture
type: spine
title: "JackDaw: inside the Beta GeoAI chat agent"
readingTime: 3
standalone: true
core: true
teaser: "Draw an area, ask a question: a router picks a handful of eighteen tools, and every tool receives your map area."
voice: universal
parent: null
diagram: diagram-jackdaw-architecture
recallQ: "How does JackDaw choose the data for a question, and what limits its answers in the Beta release?"
recallA: "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."
highlights:
  - "Area-first: the area you draw travels with every message as WKT (EPSG:4326)"
  - "A router picks up to five of 18 core tools per turn; the agent loops until no more tool calls are needed"
  - "Raven fills the catalogue; MCP lets administrators and users plug in their own tool servers"
  - "Beta status: the limits sit in metadata, connected services and evidence trails, not in the chat shell"
status: accepted
concept: jackdaw
conceptTitle: "JackDaw, the PoliRural+ GeoAI agent"
parents: geoai
lang: en
lens: generic
depth: standard..technical
formalism: none
visuality: balanced
lengthBand: deep
genre: explainer
state: core
carriers: prose|table|diagram
---

**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

| Area | What the tools reach |
|---|---|
| Catalogue | Any dataset registered in Raven |
| Climate | ERA5-Land, WorldClim, IPCC RCP 4.5 projections for the 2050s, Open-Meteo forecasts; 16 agroclimatic indicators |
| Land cover, terrain | OLU_EU classification statistics; elevation from a digital elevation model |
| Short food supply chains | Four tools: farm scale, agricultural block size, LPIS-based crop suitability for direct sales, local demand |
| Demography, business | Eurostat NUTS3 statistics; 2021 census population grid |
| Attractiveness | Smart POI category counts |
| Policy knowledge | RAG 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](#c/data-to-decisions).

**How-to:** [Asking JackDaw about a place, step by step](#ch4-guide-jackdaw).

**Sources:**
- D4.2 PoliRuralPlus platform Beta, §3.3 Jackdaw GeoAI chat agent (3.3.1 backend, 3.3.2 user interface, 3.3.3 Raven) — [PDF](https://www.poliruralplus.eu/docs/421/D4.2_PoliRuralPlus_Platform_Beta.pdf)
- D4.1 PoliRuralPlus platform design, §6.3 Jackdaw: A Spatial Enabled Chat Agent — [PDF](https://www.poliruralplus.eu/docs/162/D4.1_PoliRuralPlus_platform_design_v1.pdf)
