<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jichitai Watch</title>
    <description>The latest articles on DEV Community by Jichitai Watch (@jichitaiwatch).</description>
    <link>https://dev.to/jichitaiwatch</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4084946%2F6266f08e-533b-42cb-953a-da3b438ccb45.png</url>
      <title>DEV Community: Jichitai Watch</title>
      <link>https://dev.to/jichitaiwatch</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jichitaiwatch"/>
    <language>en</language>
    <item>
      <title>Never Trust an AI That Says “I’ve Checked”</title>
      <dc:creator>Jichitai Watch</dc:creator>
      <pubDate>Tue, 27 Oct 2026 12:05:01 +0000</pubDate>
      <link>https://dev.to/jichitaiwatch/never-trust-an-ai-that-says-ive-checked-28bl</link>
      <guid>https://dev.to/jichitaiwatch/never-trust-an-ai-that-says-ive-checked-28bl</guid>
      <description>&lt;p&gt;A solo builder in Japan on designing for the day updates stop: static hosting, honest missing-data labels, and two AIs researching independently&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Treating “the day I stop” as a starting assumption
&lt;/h3&gt;

&lt;p&gt;Have you ever tried to compare two towns’ finances before an election? In Japan, local government data is not easy for citizens to read. Every municipality structures its website differently, and much of what is published comes as PDFs or tables saved as images. Before an election, I wanted to look up my own town’s policies and finances. As someone with a full-time job, though, I found it hard even to find a basis for comparison.&lt;/p&gt;

&lt;p&gt;Others have tackled this problem before. “Where Does My Money Go?”, a project born in the UK, had a Japanese edition, spending.jp. It started with Yokohama in 2013 and spread to other cities through volunteers. Later, the people involved looked back and wrote that activity had died down once the boom passed, and that keeping it going would need people to support it.&lt;/p&gt;

&lt;p&gt;What I took from this was simple: money and motivation run out.&lt;/p&gt;

&lt;p&gt;So I set out to build Jichitai Watch on my own. It is a free website that brings together, for ordinary residents, a picture of Japan’s local governments: their towns, finances, councils, and the local systems that shape daily life. Before starting, I set myself one rule:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“Don’t make continuing the goal. Treat the day it stops as a design assumption. Even if I stop working on it, aim for a site that doesn’t keep presenting old information as if it were current.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh78tzo5mz1benjv0vvn6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh78tzo5mz1benjv0vvn6.png" width="800" height="392"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Jichitai Watch: &lt;a href="https://jichitaiwatch.jp" rel="noopener noreferrer"&gt;https://jichitaiwatch.jp&lt;/a&gt; / English: &lt;a href="https://jichitaiwatch.jp/en" rel="noopener noreferrer"&gt;https://jichitaiwatch.jp/en&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Almost building a worse copy of the government’s dashboard
&lt;/h3&gt;

&lt;p&gt;I had experience in IT infrastructure and project management (PMO), but I was an amateur at web development and design. Still, watching generative AI improve, I wondered whether one person, by directing AI, could organise local government data. So I started building.&lt;/p&gt;

&lt;p&gt;Then, just as my first prototype was finished and I was about to publish it, the project ran aground. Japan’s Digital Agency and the Ministry of Internal Affairs and Communications had already released a dashboard of municipal finances. Comparisons with similar municipalities, per-capita figures: the features I had been building were already there.&lt;/p&gt;

&lt;p&gt;“If I publish this as it is, it’ll just be a worse version of the government’s site.”&lt;/p&gt;

&lt;p&gt;I scrapped the screens I had built and refocused on information the finance dashboard doesn’t carry.&lt;/p&gt;

&lt;p&gt;My starting point was a public survey: the Association for Promoting Fair Elections’ 20th Nationwide Survey on the Unified Local Elections (2023). Asked which policy issues they had considered when voting, respondents most often named:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;healthcare and elderly care (52.6%)&lt;/li&gt;
&lt;li&gt;the economy (44.7%)&lt;/li&gt;
&lt;li&gt;measures for an ageing population (42.3%)&lt;/li&gt;
&lt;li&gt;childcare and education (40.5%)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Administrative and fiscal reform came in at 8.8%.&lt;/p&gt;

&lt;p&gt;The finance dashboard shows year-end accounts in detail. But it doesn’t cover the differences in the systems each municipality has chosen. Examples are the age up to which children’s medical costs are subsidised, and the standard premium for long-term care insurance. These are set locally in Japan, so they can differ even between neighbouring towns.&lt;/p&gt;

&lt;p&gt;So I moved the finance data down to a deeper layer and rebuilt the site around four entry points: the town, the administration, the council, and daily life. From each one, residents can compare systems and data with neighbouring municipalities on the same basis.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Four design choices so a one-person site won’t mislead when it stops
&lt;/h3&gt;

&lt;h4&gt;
  
  
  ① Keep fixed costs low: a static site with no database
&lt;/h4&gt;

&lt;p&gt;To keep the cost of continuing low, there is no database. Python turns the source data into JSON, Next.js turns that into static HTML, and Cloudflare’s free hosting serves it.&lt;/p&gt;

&lt;h4&gt;
  
  
  ② Never fill gaps by guessing, and say why data is missing
&lt;/h4&gt;

&lt;p&gt;Municipal data is often unpublished, or sits in PDFs whose layout breaks so machines can’t read them. If you fill gaps by guessing, or keep searching in pursuit of perfection, the project stalls.&lt;/p&gt;

&lt;p&gt;So values are used exactly as written in the source documents, and gaps are never filled by guessing. When something can’t be found or read, the result of the machine search and the reason are recorded internally, and the same check isn’t repeated.&lt;/p&gt;

&lt;p&gt;On screen, missing data is shown in three separate ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Could not be confirmed:&lt;/strong&gt; we looked, but couldn’t confirm it from published information. It does not mean the information is not public.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not stated in the published material:&lt;/strong&gt; the source itself does not give the figure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;In preparation:&lt;/strong&gt; Jichitai Watch hasn’t prepared this part yet.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The last label was chosen deliberately. It reads as the state of our work, not as the municipality lacking data, so a failure on our side is never mistaken for “this municipality has no data”.&lt;/p&gt;

&lt;h4&gt;
  
  
  ③ Show old data as old
&lt;/h4&gt;

&lt;p&gt;Each indicator has an expiry date based on its update cycle. When the site is built, cards for indicators past their expiry show a warning. Once an indicator is well past its expiry, comparisons with national and prefectural averages and the trend charts are switched off, leaving only the value itself and its source.&lt;/p&gt;

&lt;p&gt;The catch: this check runs only at build time. If I stop updating and rebuilding, the pages stay exactly as they were at the last build. Fully keeping the promise “even if I stop” is still an open problem.&lt;/p&gt;

&lt;h4&gt;
  
  
  ④ Neutral colours and words: no traffic-light colours
&lt;/h4&gt;

&lt;p&gt;Colouring municipalities with heavy debt red (“danger”) and those with little debt green (“safe”) pushes the maker’s value judgement onto readers. So the rules are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;never assign red or green to higher or lower values of the same indicator&lt;/li&gt;
&lt;li&gt;never use evaluative words such as “good” or “bad”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Colours that simply tell series apart, such as men and women or spending categories, are used freely.&lt;/p&gt;

&lt;p&gt;A script scans every file for possible rule violations, and a person makes the final call by looking at the screens. A machine can’t judge neutrality itself, so I made a checklist and review each screen against it.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Not trusting an AI that says “I’ve checked”
&lt;/h3&gt;

&lt;p&gt;I had no web development experience, yet I published the first region in about three months: Gifu Prefecture and its 42 municipalities, 349 pages in the Japanese version. I think that was possible because I split the work across several AIs.&lt;/p&gt;

&lt;p&gt;It wasn’t set up this way from the start. Not knowing which AI suited which task, I experimented, and their strengths and weaknesses gradually showed. On top of that, I was using every AI on its cheapest plan, so I kept hitting usage limits and work would stall. This is the division of labour I settled on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Claude:&lt;/strong&gt; the coordinator. Design, managing specifications, writing code, and reconciling and ruling on research results&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ChatGPT:&lt;/strong&gt; screen mock-ups (HTML)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Grok and Composer (AIs available in the coding tool Cursor):&lt;/strong&gt; researching each municipality’s website, such as council chairs, council groups, and whether minutes are published&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemini:&lt;/strong&gt; communications and outreach strategy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The biggest lesson: an AI saying “I’ve checked”, or several AIs agreeing, is not proof of correctness. Once, Claude reported that the implementation was “consistent” with ChatGPT’s mock-up, when the mock-up hadn’t been reflected at all. Another time, four AIs unanimously recommended a setting that isn’t available on GitHub’s free plan.&lt;/p&gt;

&lt;p&gt;So for research on each municipality, the process works like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Grok and Composer investigate the same municipality separately, without seeing each other’s results.&lt;/li&gt;
&lt;li&gt;Claude compares the two sets of results.&lt;/li&gt;
&lt;li&gt;Where they disagree, Claude opens the municipality’s official pages and documents and rules on the answer.&lt;/li&gt;
&lt;li&gt;Some items where the two agree are also checked against official sources, but not all of them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If both AIs read the same wrong page, they can agree on the same mistake. This method reduces errors; it doesn’t eliminate them. That’s why the site has a channel for correction requests, and a set procedure: check each report against the source, then fix it.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Three months the first time, about two days after that
&lt;/h3&gt;

&lt;p&gt;Publishing the first region took about three months, including two rebuilds. That time also covered planning and design.&lt;/p&gt;

&lt;p&gt;After that, I turned the work into shared, reusable steps, from collecting data and checking for personal information to extracting what can be published. With those steps, I prototyped the next two prefectures (83 municipalities) in about two days. The three after that (69 municipalities) also took about two days. The prototypes aren’t public yet.&lt;/p&gt;

&lt;p&gt;Because this work built on an existing foundation, it isn’t a like-for-like comparison with the first round. Still, it feels like a big reduction.&lt;/p&gt;

&lt;p&gt;For the English version, I built a glossary grounded in two sources: the official English names used by Japanese government bodies, and the UK government’s GOV.UK style guide. The AI looked terms up in that glossary, and the English version took about four days.&lt;/p&gt;

&lt;p&gt;How much effort updates take after publication is something I’m still measuring as the work continues. Building quickly and being able to keep going are, I think, two different problems.&lt;/p&gt;

&lt;p&gt;The code is on GitHub under the MIT License. Alongside it are the data specifications, the neutrality checklist, the neutrality-check script, and notes on where I stumbled. The data itself remains subject to each provider’s terms of use.&lt;/p&gt;

&lt;p&gt;These documents, too, are written by AI, to cut down on manual work. I don’t think civic tech can last if it depends on one volunteer pulling all-nighters. What’s needed is to use AI under fixed rules, and to build imperfection and the risk of updates stopping into the design from the start.&lt;/p&gt;

&lt;p&gt;I hope the design of this small personal project from Japan gives a useful idea to someone, somewhere in the world, who is working to make public data visible.&lt;/p&gt;

&lt;p&gt;Please take a look at the site (available in English) and the design documents on GitHub. Feedback from civic tech practitioners and developers around the world is very welcome, as are Stars and discussion on GitHub.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Jichitai Watch:&lt;/strong&gt; &lt;a href="https://jichitaiwatch.jp" rel="noopener noreferrer"&gt;https://jichitaiwatch.jp&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;English:&lt;/strong&gt; &lt;a href="https://jichitaiwatch.jp/en" rel="noopener noreferrer"&gt;https://jichitaiwatch.jp/en&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;GitHub (code under the MIT License):&lt;/strong&gt;&lt;a href="https://github.com/jichitaiwatch/jichitai-watch" rel="noopener noreferrer"&gt;https://github.com/jichitaiwatch/jichitai-watch&lt;/a&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>ai</category>
      <category>opensource</category>
      <category>nextjs</category>
    </item>
  </channel>
</rss>
