Uçan Hamsiler

1st place, KKB Hackathon 2026

A data agent for Turkish finance

Kredi Kayıt Bürosu, Turkey's credit bureau, and Coderspace asked teams to turn data into value with agentic AI. With Ahmet Selim Özel and Alihan Esen, I built an agent that answers questions about the Turkish economy from central bank and banking data, and we took 1st place.

Scroll to walk along the line, from raw data to a checked answer →

  • 1st place at KKB Hackathon: Agentic Data Analytics, 2026
  • 13 million rows of TCMB EVDS and BDDK data in a lakehouse
  • 45 tools the agent calls to find, compute and chart
  • 45 of 45 checks on questions it had never seen

The brief

KKB wanted agents that turn data into value for its business, its products or society. The kick-off named six kinds of tools an agent should have: a lakehouse, web search, reading web pages, finding anomalies, finding change points, and testing causality. Everything had to run on open-weight models served through MIA, and the questions came in Turkish.

Mines: the data

Two ore fields

TCMB EVDS, the central bank's data service: a catalog of 53,842 series and 6.1 million observations. BDDK, the banking regulator: monthly, weekly and FinTürk bulletins, 6.9 million rows. Both from January 2021 to June 2026.

Furnaces: the lakehouse

Bronze, silver, gold

Raw files land in bronze unchanged, become clean series in silver and coverage tables in gold, and are published read-only as DuckDB.

The vault: snapshots

Every dataset is stored as an immutable snapshot, one chest for each version. That makes the lakehouse work like git: a name such as latest is only a pointer you can move to any snapshot, so going back to an earlier version is easy. Each chat is pinned to one snapshot, so new data never changes an answer halfway through.

The assembly line: the agent

One PydanticAI agent with 45 typed tools. The model decides which tool to call; the server does the arithmetic, the statistics and the charts, so every number in an answer comes from a tool. Asked to compare real mortgage rates with house prices since 2021, it runs:

resolve_series → build_table → deflate_column → index_columns → plot_table → analyze_causality

Trains from outside

When the data isn't in the lakehouse, the agent reads web pages, PDFs, Excel, JSON and images, with OCR for scanned pages. For pages that load their data with JavaScript it has discover_api, a tool that investigates the site's API: it reads the page's own scripts, finds the endpoints behind them and learns how they are called.

Turrets and walls: trust

Small models make up numbers, mix up dates and drift into English. Guards in the harness catch each of these and send the answer back to be rewritten, along the red belts; in testing they pulled back 13 answers. Code the agent writes runs in a rootless Podman container with no network.

The rocket: the result

On questions it had never seen it passed 12 of 12 steps and 45 of 45 checks. After the online rounds we presented to the jury in person, and Uçan Hamsiler took 1st place.

What rides the belt