<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Solo Maker Notes]]></title><description><![CDATA[Solo Maker Notes]]></description><link>https://solomakerhashnodedev.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 00:30:35 GMT</lastBuildDate><atom:link href="https://solomakerhashnodedev.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[I Built an AI-Powered Search Engine for Japan's National Diet Library]]></title><description><![CDATA[Japan's National Diet Library (NDL) holds over 2.7 million digitized documents — historical books, government records, and rare manuscripts dating back centuries. Most of them are OCR-scanned Japanese]]></description><link>https://solomakerhashnodedev.hashnode.dev/i-built-an-ai-powered-search-engine-for-japan-s-national-diet-library</link><guid isPermaLink="true">https://solomakerhashnodedev.hashnode.dev/i-built-an-ai-powered-search-engine-for-japan-s-national-diet-library</guid><category><![CDATA[Next.js]]></category><category><![CDATA[claude.ai]]></category><category><![CDATA[Japanese,]]></category><category><![CDATA[Japan]]></category><dc:creator><![CDATA[Piman]]></dc:creator><pubDate>Sat, 28 Mar 2026 12:15:30 GMT</pubDate><content:encoded><![CDATA[<p>Japan's National Diet Library (NDL) holds over 2.7 million digitized documents — historical books, government records, and rare manuscripts dating back centuries. Most of them are OCR-scanned Japanese text. Searching them is painful.</p>
<p>So I built <a href="https://kobunsho-search.vercel.app"><strong>Kobunsho Search</strong></a> — an AI-powered search engine that lets you ask questions in plain language (English or Japanese) and get sourced answers directly from these historical documents.</p>
<h2>The Problem</h2>
<p>NDL's digital collection is a treasure trove, but the search experience is stuck in the early 2000s. You need to know exact keywords in Japanese. OCR quality varies wildly. There's no way to ask "What did GHQ say about land reform in 1946?" and get a meaningful answer.</p>
<p>Researchers, students, and history enthusiasts hit the same wall: <strong>the data is there, but it's nearly impossible to find what you need.</strong></p>
<h2>How It Works</h2>
<p>The architecture is simple:</p>
<ol>
<li><strong>User asks a question</strong> in natural language (English or Japanese)</li>
<li><strong>Claude extracts search keywords</strong> — even English questions get translated to Japanese keywords, since the source documents are in Japanese</li>
<li><strong>NDL Labs API</strong> returns matching digitized books with full-text OCR data</li>
<li><strong>Claude reads the actual pages</strong> and generates a sourced answer with citations (document PID + page number)</li>
</ol>
<p>The entire flow streams the response in real-time, so you see the answer being written as Claude analyzes the documents.</p>
<h2>Tech Stack</h2>
<ul>
<li><strong>Next.js</strong> — frontend and API routes</li>
<li><strong>Claude API</strong> — keyword extraction + document analysis with streaming</li>
<li><strong>NDL Labs API</strong> — book search and full-text OCR retrieval</li>
<li><strong>Supabase</strong> — auth and usage tracking</li>
<li><strong>Vercel</strong> — deployment</li>
</ul>
<h2>The Interesting Parts</h2>
<h3>Bridging the Language Gap</h3>
<p>One thing I'm proud of: you can ask questions in English and get answers from Japanese historical documents. Claude handles the translation seamlessly — extracting Japanese keywords for search, reading Japanese OCR text, and responding in your preferred language.</p>
<h3>Dealing with OCR Noise</h3>
<p>Historical documents + OCR = messy text. Old Japanese typography, damaged pages, and unusual layouts all create noise. The prompt explicitly tells Claude to consider OCR misreadings and interpret from context. This works surprisingly well — LLMs are naturally good at fuzzy text interpretation.</p>
<h3>Keeping Costs Down</h3>
<p>Each query hits the Claude API twice (keyword extraction + answer generation) and the NDL API multiple times. To keep it sustainable as a solo dev:</p>
<ul>
<li>Only the first 5 pages of each matching book are fetched</li>
<li>Rate limiting per user via Supabase</li>
<li>Streaming responses so users aren't waiting for a complete generation</li>
</ul>
<h2>Try It</h2>
<p>👉 <a href="https://kobunsho-search.vercel.app"><strong>kobunsho-search.vercel.app</strong></a></p>
<p>Ask anything about Japanese history — try "What were the food rationing policies in postwar Japan?" or "明治時代の鉄道建設について教えて".</p>
<h2>What's Next</h2>
<ul>
<li>Adding more document collections beyond books</li>
<li>Improving citation formatting with direct page links</li>
<li>Exploring local embedding search for faster results</li>
</ul>
<hr />
<p><em>Built with Next.js, Claude API, and NDL Labs API. The source documents are provided by the National Diet Library of Japan.</em></p>
]]></content:encoded></item><item><title><![CDATA[Why I Build Apps for 1,000 Users, Not 1,000,000]]></title><description><![CDATA[Most indie developers dream of building the next big thing. I stopped doing that — and started making money.
I'm a solo developer focused on niche apps — small tools for specific audiences that big co]]></description><link>https://solomakerhashnodedev.hashnode.dev/why-i-build-apps-for-1-000-users-not-1-000-000</link><guid isPermaLink="true">https://solomakerhashnodedev.hashnode.dev/why-i-build-apps-for-1-000-users-not-1-000-000</guid><category><![CDATA[indiedev]]></category><category><![CDATA[niche]]></category><category><![CDATA[Solo Developer]]></category><dc:creator><![CDATA[Piman]]></dc:creator><pubDate>Sat, 28 Mar 2026 12:11:07 GMT</pubDate><content:encoded><![CDATA[<p>Most indie developers dream of building the next big thing. I stopped doing that — and started making money.</p>
<p>I'm a solo developer focused on <strong>niche apps</strong> — small tools for specific audiences that big companies will never bother building. Fishing logs, hiking utilities, specialized tools for professionals who are still stuck with spreadsheets.</p>
<p>My stack is <strong>Unity</strong> and <strong>TypeScript</strong>, and I use <strong>AI-driven development</strong> (Claude Code, LLMs) to ship faster than ever.</p>
<p>This blog is about the process:</p>
<ul>
<li><strong>Finding niches</strong> that are small enough to own but big enough to pay the bills</li>
<li><strong>Shipping fast</strong> as a solo developer with AI tools</li>
<li><strong>Monetization strategies</strong> that work at small scale — no VC, no ads, no growth hacking</li>
<li><strong>Technical deep dives</strong> into Unity, TypeScript, and mobile development</li>
</ul>
<h2>Why Niche?</h2>
<p>The math is simple. A mass-market app needs millions of downloads to matter. A niche app needs 1,000 paying users at \(5/month — that's \)60K/year from a single app.</p>
<p>The competition is lower. The users are more loyal. And you can actually talk to your customers.</p>
<h2>What to Expect</h2>
<p>I'll be sharing:</p>
<ol>
<li><strong>Case studies</strong> of niche apps I build (what worked, what flopped)</li>
<li><strong>AI workflow breakdowns</strong> — how I use Claude Code and LLMs in my daily development</li>
<li><strong>Market research methods</strong> for finding underserved niches</li>
<li><strong>Technical tutorials</strong> in Unity and TypeScript</li>
</ol>
<p>If you're a solo developer tired of competing with Big Tech, follow along. Let's build small and profit.</p>
]]></content:encoded></item></channel></rss>