When I started working with South Korean local council records, I expected to spend most of my time reading them.
I did not expect finding the right entry points to take so much work.
I’m building JALHANA, a project that connects public records about the same issue over time. To trace an issue, I need to revisit meeting minutes, find related bills, and check what was discussed afterward.
Before any of that can happen, I need to know where each council publishes its records—and how to find that location again.

Finding the Records Before Reading Them
A council’s records are not always accessible through a single system.
Meeting minutes may live on a separate website. Bills may have their own search interface. Information about council members may appear elsewhere on the main site.
For someone looking up one issue, a few clicks might be enough. Working across multiple councils creates a different problem: I need repeatable starting points rather than a route I happen to remember.
I began keeping a directory with four entry points for each council:
- Official council website
- Meeting minutes
- Bills and motions
- Council member directory

These links serve different purposes. Meeting minutes show questions and responses. Bills provide another part of the legislative record. Member directories help identify the people involved.
Eventually, I decided to publish the directory so other people would not have to repeat the same search.
The list began with five local councils and later expanded to 24. The October 5, 2026 release covers 56 local councils and 224 links.
Those figures describe the directory’s coverage. They do not mean JALHANA has collected every record from all 56 councils.
What Does “Checked” Actually Mean?
Publishing the directory raised another question: what could I reasonably claim about each link?
An HTTP response provides evidence that a server responded. It does not, by itself, establish that the URL leads to the intended meeting archive or bill search page.
Following a link from an official council menu provides a different kind of evidence. A person opening the destination and confirming its purpose provides another.
Rather than placing all of these under one “verified” label, I recorded the checking methods separately:
navigation_observed: the link was observed in official navigation.http_response_checked: an HTTP response was checked.user_confirmed: a user directly accessed and confirmed the destination.
The directory also records source URLs, check dates, and the intended scope of each link.

This makes the files more useful than a bookmark list. Users can assess what was checked and decide whether they need to check anything further.
Dates matter, too. A council can redesign its website or move its archive. A recorded check describes an observation at a particular time, rather than a guarantee that a URL will keep working.

A Small Dataset Other People Can Use
The directory is available as CSV and JSON on GitHub.
The October 5 release contains 56 rows and 31 fields. I wanted people to be able to use the directory independently of JALHANA’s interface.
For example, after downloading the repository, this Python code prints each council’s name and meeting-minutes URL:
import json with open("data/councils.json", encoding="utf-8") as source: councils = json.load(source) for council in councils: print(council["council_name"], council["minutes_url"]) 
The files provide starting points for finding records. You still need to examine each council’s system and the records relevant to your question.
The CSV includes a UTF-8 BOM so Korean text can be opened in Excel. When reading it with pandas, use encoding="utf-8-sig":
import pandas as pd councils = pd.read_csv( "data/councils.csv", encoding="utf-8-sig", ) print(councils[["council_name", "minutes_url"]].head()) 
For people who simply want to find an official page, there is also a web directory.
Keeping the Original Records Within Reach
The directory contains links and metadata. It does not redistribute the underlying meeting minutes, bill documents, or attachments.
That distinction reflects the larger project.
At JALHANA, I use AI to help read and connect records about an issue. Readers should also be able to return to the official source and examine the basis for an explanation.

Finding the source is only an early step. It does not resolve the harder questions: whether two records concern the same issue, whether a later response addresses an earlier question, or what remains unknown.
But it gives that work a repeatable starting point.
I originally built this directory because I needed it. Publishing it made me more explicit about what I had checked, how I had checked it, and what the dataset could actually support.
The directory is still growing. If you find a broken link or an incorrect destination, corrections are welcome through the GitHub repository.