<?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: mamoru kubokawa</title>
    <description>The latest articles on DEV Community by mamoru kubokawa (@tokidigital).</description>
    <link>https://dev.to/tokidigital</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%2F3921212%2Fac1a4f94-bac8-49bc-b397-cf32a83ddae6.png</url>
      <title>DEV Community: mamoru kubokawa</title>
      <link>https://dev.to/tokidigital</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tokidigital"/>
    <language>en</language>
    <item>
      <title>Three agent-memory threads this week, one missing field</title>
      <dc:creator>mamoru kubokawa</dc:creator>
      <pubDate>Sun, 31 May 2026 05:06:53 +0000</pubDate>
      <link>https://dev.to/tokidigital/three-agent-memory-threads-this-week-one-missing-field-310e</link>
      <guid>https://dev.to/tokidigital/three-agent-memory-threads-this-week-one-missing-field-310e</guid>
      <description>&lt;p&gt;I'm 21 days into building in public on dev.to. Three different threads I joined this week started in completely different places — one was a Welcome Thread first-comment about agent design, one was an X-driven side conversation about memory and sycophancy, one was a same-day launch post from a solo dev in Accra shipping his own memory API.&lt;/p&gt;

&lt;p&gt;All three converged on the same gap. Every agent memory API I touched this week — including the one I build against in my own stack — is missing the same field: a lifecycle state.&lt;/p&gt;

&lt;h2&gt;
  
  
  The default model
&lt;/h2&gt;

&lt;p&gt;Store → retrieve → delete. That's the entire API surface for most agent memory services. Mem0, Zep, Letta, OpenAI's Assistants memory, the new AgentRAM, the userMemories layer I work with directly. Three verbs, plus search, plus tenancy.&lt;/p&gt;

&lt;p&gt;The model handles "this fact exists" beautifully. It handles "remove this fact" beautifully.&lt;/p&gt;

&lt;p&gt;What it doesn't handle — and what every agent eventually faceplants on — is &lt;em&gt;"this fact used to be true but isn't anymore."&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The failure mode in production
&lt;/h2&gt;

&lt;p&gt;Concrete example from my own builds. Two months ago a user told the agent "I prefer X." The agent dutifully stored it. Today the same user is operating under different constraints, but the memory entry is still in the store, still load-bearing, and the agent obediently re-applies the old preference because it has no signal that the entry is stale.&lt;/p&gt;

&lt;p&gt;The behavioral result looks identical to a sycophancy failure: the agent confidently asserts an outdated belief because the memory said so.&lt;/p&gt;

&lt;p&gt;But it isn't a sycophancy problem. The model isn't wrong about what's in memory. &lt;strong&gt;The memory itself is wrong about what's still active.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a temporal concern, not a semantic one. You can't fix it with better embeddings or richer chunking. You fix it with state.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "state" actually means
&lt;/h2&gt;

&lt;p&gt;The shape I keep landing on:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;key:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"user_pref:layout"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;value:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"compact"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;state:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"live"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"superseded"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"retired"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;superseded_by:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;lt;ref&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;set_at:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;lt;timestamp&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important part is that &lt;strong&gt;delete is the wrong primitive for most stale facts.&lt;/strong&gt; Deleting "user prefers compact layout" throws away the fact that the user once preferred it — which is itself useful context when reasoning about why a current preference looks the way it does. Marking it &lt;code&gt;superseded&lt;/code&gt; keeps the history, marks it inactive for retrieval-by-default, and lets the agent answer "what changed?" instead of just "what is?"&lt;/p&gt;

&lt;p&gt;That's the difference between an agent with memory and an agent with a fact archive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why nobody ships this
&lt;/h2&gt;

&lt;p&gt;I've been guessing for a few days about why the gap exists across so many products at once. Three guesses, in order of how much I believe them:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Nobody asks for it.&lt;/strong&gt; Users don't notice silent staleness — they notice loud wrongness. A stale preference is invisible until it embarrasses the agent in front of someone, at which point it gets blamed on "AI hallucination."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State management is harder than CRUD.&lt;/strong&gt; Adding &lt;code&gt;superseded_by&lt;/code&gt; means the agent has to reason about its own memory rather than just look things up. That's a different control loop.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The default benchmarks reward recall, not honesty.&lt;/strong&gt; Most memory benchmarks measure "did the agent remember the right thing?" Few measure "did the agent correctly &lt;em&gt;not&lt;/em&gt; apply something that's no longer true?"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I'm least sure about (3) — it might be that I just haven't seen those benchmarks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where this goes for me
&lt;/h2&gt;

&lt;p&gt;I'm running it as a constraint on my own next iteration: any memory write goes in with a &lt;code&gt;state&lt;/code&gt; field defaulting to &lt;code&gt;live&lt;/code&gt;, and the agent gets a tool that can mark entries as &lt;code&gt;superseded&lt;/code&gt; (with a reason and a successor reference) instead of deleting them. I'll know in a few weeks whether the extra surface area is worth the storage cost.&lt;/p&gt;

&lt;p&gt;If you're building something similar — or if you're at one of the memory-API products that ships this kind of API — I'd love to hear if you've already tried this and it didn't work. I'd rather find out from someone who hit the wall first than rediscover it the slow way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest numbers, since this is dev.to
&lt;/h2&gt;

&lt;p&gt;Day 21 of build-in-public for me. Follower count is still low but compounding. dev.to article views per post trending up modestly. The fastest-growing thing isn't the audience size — it's the cohort of other builders who've started replying to my comments before I publish anything, and that has been the actual ROI of being here.&lt;/p&gt;

&lt;p&gt;Comments I left this week became typed fields in one builder's next release, two shipped README/CTA nudges in another's repo, and (today) one design conversation on a memory API that hadn't existed yesterday. None of those are mine to ship, but they're how the work compounds when you give first.&lt;/p&gt;

&lt;p&gt;Comments welcome here — especially from anyone who's tried to ship &lt;code&gt;superseded_by&lt;/code&gt; as a real field and watched it eat a weekend.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>buildinpublic</category>
      <category>ai</category>
      <category>agents</category>
    </item>
    <item>
      <title>Why I'm building a tool for English-speaking sellers who source from Japan</title>
      <dc:creator>mamoru kubokawa</dc:creator>
      <pubDate>Thu, 21 May 2026 03:11:19 +0000</pubDate>
      <link>https://dev.to/tokidigital/why-im-building-a-tool-for-english-speaking-sellers-who-source-from-japan-56ho</link>
      <guid>https://dev.to/tokidigital/why-im-building-a-tool-for-english-speaking-sellers-who-source-from-japan-56ho</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Build-in-public, week 2. Last week was the technical guts (AI cache-miss enrichment). This week is the &lt;em&gt;why&lt;/em&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you sell on Amazon and you've ever thought "I should source from Japan," you already know the wall. You can &lt;em&gt;feel&lt;/em&gt; there's good product over there — the quality reputation is real — but the moment you try to act on it, you hit a fog.&lt;/p&gt;

&lt;p&gt;I run a Japanese e-commerce business from Osaka. I'm on the &lt;em&gt;inside&lt;/em&gt; of that fog. And after watching enough English-speaking sellers bounce off it, I started building &lt;a href="https://japanbrandfinder.lovable.app" rel="noopener noreferrer"&gt;Japan Brand Finder&lt;/a&gt; to hand them the map I already have.&lt;/p&gt;

&lt;p&gt;Here's the actual problem, and why it's harder than "just use Google Translate."&lt;/p&gt;

&lt;h2&gt;
  
  
  The fog isn't language. It's &lt;em&gt;context.&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;When an overseas seller researches a Japanese brand, three things break at once:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Discovery is gated by language you can't search in.&lt;/strong&gt;&lt;br&gt;
The brands worth sourcing often have the thinnest English footprint. The maker with 40 years of craft and zero English SEO is exactly the one with no Amazon competition — and exactly the one you'll never find from an English search box.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Translation quietly mangles the things that matter most.&lt;/strong&gt;&lt;br&gt;
This is the part people underestimate. Generic prose translates fine. But product listings live and die on &lt;em&gt;culturally-specific proper nouns&lt;/em&gt; — and those are the model's blind spot.&lt;/p&gt;

&lt;p&gt;I spent part of this week stress-testing this (with another build-in-public dev, &lt;a href="https://dev.to/vickylee"&gt;@vickylee&lt;/a&gt;, on her translation API — cross-pollination is half the point of building in public). Real outputs from real Japanese product copy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A bento box made of &lt;strong&gt;秋田杉&lt;/strong&gt; (&lt;em&gt;Akita cedar&lt;/em&gt;) came back as "Akita &lt;strong&gt;shrubs&lt;/strong&gt;."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;生八つ橋&lt;/strong&gt;, a famous Kyoto confection, became "&lt;strong&gt;the eight bridges&lt;/strong&gt;" — literal kanji, character by character.&lt;/li&gt;
&lt;li&gt;The cosmetics brand &lt;strong&gt;アネッサ&lt;/strong&gt; (&lt;em&gt;ANESSA&lt;/em&gt;) turned into "&lt;strong&gt;Anesthesia&lt;/strong&gt;."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now imagine that on your live listing. You're not just losing nuance — you're publishing copy that says your skincare is "anesthesia" and your snack is a bridge.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The supplier reality is invisible from the outside.&lt;/strong&gt;&lt;br&gt;
Is this a maker or a reseller? Will they even talk to an overseas account? Is the brand already locked up by a distributor? From abroad, you can't tell. From Osaka, that context is just... ambient.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Japan Brand Finder actually does
&lt;/h2&gt;

&lt;p&gt;It's deliberately small. You search a brand or product, and it returns a structured read on it — built from a shared database that &lt;em&gt;auto-enriches itself&lt;/em&gt; via the Claude API the first time anyone asks about a brand it hasn't seen (that's the cache-miss trick from last week's post). The longer it runs, the less it has to think.&lt;/p&gt;

&lt;p&gt;The positioning I keep coming back to: &lt;strong&gt;Japan's insider, your unfair advantage.&lt;/strong&gt; Not "an AI tool." A shortcut through fog I happen to live in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it honestly is right now
&lt;/h2&gt;

&lt;p&gt;Early. Shipped, free tier, build-in-public from day one. I'm not going to dress up numbers — there's a separate honest-stats post coming next week for that. Today is just the &lt;em&gt;why&lt;/em&gt;, written down so I stop hand-waving it in DMs.&lt;/p&gt;

&lt;p&gt;The translation findings above became real eval data I'm handing back to Vicky, and they sharpened my own roadmap: the hard, defensible part of this isn't search — it's getting the culturally-specific terms &lt;em&gt;right&lt;/em&gt;, every time.&lt;/p&gt;

&lt;p&gt;If you source from Japan (or want to): &lt;strong&gt;what's the single thing that's blocked you most — finding brands, talking to suppliers, or trusting the translation?&lt;/strong&gt; That answer literally decides what I build next. 🇯🇵&lt;/p&gt;

&lt;h1&gt;
  
  
  buildinpublic
&lt;/h1&gt;

</description>
      <category>showdev</category>
      <category>buildinpublic</category>
      <category>ecommerce</category>
      <category>ai</category>
    </item>
    <item>
      <title>I Used Claude to Generate 37 Amazon JP Product Listings in a Day (Here's My Actual Workflow)</title>
      <dc:creator>mamoru kubokawa</dc:creator>
      <pubDate>Sat, 16 May 2026 09:31:11 +0000</pubDate>
      <link>https://dev.to/tokidigital/i-used-claude-to-generate-100-amazon-jp-product-listings-in-a-day-heres-my-actual-workflow-10bd</link>
      <guid>https://dev.to/tokidigital/i-used-claude-to-generate-100-amazon-jp-product-listings-in-a-day-heres-my-actual-workflow-10bd</guid>
      <description>&lt;p&gt;I run e-commerce across Amazon JP, Rakuten, Yahoo, Qoo10, and TikTok Shop Japan. The single biggest bottleneck has always been &lt;strong&gt;listings&lt;/strong&gt; — not products, not logistics, not ads. Writing decent product copy for each SKU, in Japanese, at scale, kills momentum.&lt;/p&gt;

&lt;p&gt;Last month I rewired the entire workflow using Claude. This post is the actual playbook, including the prompt I use, where Claude gets Japan wrong, and what the numbers look like.&lt;/p&gt;




&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Old way: 30–60 minutes per SKU for a usable listing&lt;/li&gt;
&lt;li&gt;New way: ~5 minutes per SKU after a light human edit pass&lt;/li&gt;
&lt;li&gt;Result: roughly &lt;strong&gt;[X] SKUs processed in a single day&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;The trick is &lt;strong&gt;not&lt;/strong&gt; "ask Claude to write a listing." It's structured inputs + Japan-specific guardrails + a category-level batch pattern.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Why bulk Amazon JP listings are uniquely painful
&lt;/h2&gt;

&lt;p&gt;Anyone who has sold on amazon.co.jp knows the problem isn't translation. It's that Japanese product copy has its own conventions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Honorifics shift depending on whether you're describing a gift, a daily-use item, or a luxury product.&lt;/li&gt;
&lt;li&gt;Seasonal vocabulary matters more than in English markets (春限定, 季節の変わり目, etc.).&lt;/li&gt;
&lt;li&gt;Bullet points read very differently — Japanese shoppers expect &lt;em&gt;spec-dense&lt;/em&gt; bullets, not the benefit-first style that wins on amazon.com.&lt;/li&gt;
&lt;li&gt;Brand-safe phrasing is narrower. A casual "perfect for everyone" reads cheap in Japanese.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you machine-translate an English listing, you get something that technically makes sense and emotionally feels off. Conversion drops. You don't see it in keyword tools — you see it in CVR three weeks later.&lt;/p&gt;




&lt;h2&gt;
  
  
  The new workflow (5 steps)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Build a structured input form
&lt;/h3&gt;

&lt;p&gt;Before Claude touches anything, every SKU needs to be reduced to clean inputs. I use a Google Sheet with one row per SKU and these columns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product name (JP and EN if available)&lt;/li&gt;
&lt;li&gt;Category and subcategory&lt;/li&gt;
&lt;li&gt;3–5 key features (bullet-list style)&lt;/li&gt;
&lt;li&gt;Target keywords (from Cerebro or Helium 10)&lt;/li&gt;
&lt;li&gt;1–2 competitor ASINs to mirror in tone&lt;/li&gt;
&lt;li&gt;Tone hint: &lt;em&gt;gift / daily / luxury / utility&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the single highest-leverage step. Garbage in, garbage out is a cliché because it's true. Claude can't recover from a vague spec.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Master prompt with Japan-specific guardrails
&lt;/h3&gt;

&lt;p&gt;Here's the prompt structure I land on after about 20 iterations. Adjust the tone block based on the SKU category.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You are writing an Amazon Japan product listing in natural Japanese.

CONTEXT:
- Product: {product_name}
- Category: {category}
- Tone: {tone_hint}  // gift / daily / luxury / utility
- Key features: {features}
- Target keywords: {keywords}
- Competitor reference (for tone only, do not copy): {asin}

WRITE:
1. Title (max 200 chars, keyword-front-loaded, Amazon JP conventions)
2. 5 bullet points (spec-dense, not benefit-first)
3. Product description (300-400 chars, neutral-formal tone)
4. 5 backend search terms (no duplicates with title)

JAPAN-SPECIFIC RULES:
- Do NOT use overly polite honorifics (です・ます is fine; avoid いただきます constructions)
- Do NOT translate brand promises literally ("perfect for everyone" → cut)
- Use full-width punctuation (。、)
- Bullets should lead with spec, not adjective
- Avoid katakana-English when a native Japanese word exists, EXCEPT for established
  category terms (e.g. "ステンレス" is fine, "クオリティ" usually isn't)

OUTPUT FORMAT:
Plain text. No markdown. No commentary. Just the four sections labeled
TITLE / BULLETS / DESCRIPTION / SEARCH TERMS.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The guardrail block is the part that took the longest to develop, and it's where most teams get this wrong. Without it, Claude produces grammatically perfect Japanese that screams &lt;em&gt;foreign-operated brand&lt;/em&gt; to native shoppers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Batch by category, not by SKU
&lt;/h3&gt;

&lt;p&gt;This is counterintuitive. The instinct is to process SKU by SKU, finishing one before starting the next. Don't.&lt;/p&gt;

&lt;p&gt;Instead, &lt;strong&gt;group all SKUs in the same category&lt;/strong&gt; and process them in one Claude conversation. Reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Context carries. After 3 listings in the same category, Claude has internalized the tonal conventions and the rest go faster and more consistently.&lt;/li&gt;
&lt;li&gt;You catch your own input inconsistencies. By the 5th SKU, you notice that your tone hint "daily" produced very different outputs across SKUs — usually because &lt;em&gt;your inputs&lt;/em&gt; varied, not Claude's outputs.&lt;/li&gt;
&lt;li&gt;Cheaper. Fewer system prompt reloads.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 4: Human edit pass focused on Japan-specific failure modes
&lt;/h3&gt;

&lt;p&gt;I don't edit for grammar. Claude's Japanese grammar is essentially flawless. I edit for these three things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Honorific creep.&lt;/strong&gt; Claude sometimes drifts into 〜していただけます forms that feel salesy in a listing context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generic adjectives.&lt;/strong&gt; 高品質, 便利, 安心 — these are placeholder words. I replace each with a concrete spec.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keyword stuffing artifacts.&lt;/strong&gt; When the keyword list is long, Claude occasionally repeats a keyword three times in the title. One pass to clean.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This pass takes me about 3–5 minutes per SKU. Compared to writing from scratch, it's a 6–10x speedup.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Upload, then iterate based on CVR
&lt;/h3&gt;

&lt;p&gt;Don't try to perfect the listing pre-upload. The data on Amazon JP is the only feedback that matters. I rerun the prompt on underperformers after 30 days using the actual session search terms from the report, fed back into the keyword field.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Claude Gets Wrong (and Why It's a Feature, Not a Bug)
&lt;/h2&gt;

&lt;p&gt;A few specific failure modes you should expect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Over-formal closings.&lt;/strong&gt; Listings shouldn't end with 「ぜひお試しください」 — sounds like an ad. Strip it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mixing 漢字 and ひらがな inconsistently&lt;/strong&gt; for the same word across a listing. Quick find-and-replace fixes it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Inventing technical specs.&lt;/strong&gt; If your input is vague, Claude will fill the gap with plausible-sounding nonsense. Always sanity-check numbers, materials, dimensions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The reason these aren't dealbreakers: they're all &lt;strong&gt;catchable in a fast review pass&lt;/strong&gt;. The hard part — natural Japanese prose at scale — Claude handles. You're left to do the work that requires judgment, not typing.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this matters more for Japan than for US/EU
&lt;/h2&gt;

&lt;p&gt;US and EU markets have a deep pool of bilingual copywriters. Japan does not. The supply of professionals who can write &lt;em&gt;good&lt;/em&gt; product copy in Japanese — not just correct Japanese — is a real constraint for international sellers.&lt;/p&gt;

&lt;p&gt;Tools like Claude meaningfully close that gap, &lt;em&gt;if you guardrail them properly&lt;/em&gt;. Without guardrails you get Google Translate with extra steps. With them, you get something that competes with mid-tier human output at 10x speed.&lt;/p&gt;

&lt;p&gt;This is the entire premise behind a project I'm building called &lt;strong&gt;TOKI Digital Services&lt;/strong&gt; — productizing this workflow for sellers who want to enter the Japan market without hiring a full-time Japanese copywriter. More on that in a future post.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I'd Do Differently Next Time
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Build the input sheet template first.&lt;/strong&gt; I wasted two days iterating prompts when the real bottleneck was input quality.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Run a 5-SKU pilot per category before committing to batch.&lt;/strong&gt; Tonal conventions vary more between Amazon JP categories than I expected.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Save the edited human-finished listings as few-shot examples&lt;/strong&gt; for future runs. Claude pattern-matches to good examples better than to instructions.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  If you're trying something similar
&lt;/h2&gt;

&lt;p&gt;Happy to compare notes. Drop a comment with what category you're working in and what's breaking — I'll respond with what worked or didn't in my version.&lt;/p&gt;

&lt;p&gt;— Posting from Osaka. Currently running multi-marketplace EC in Japan and building tooling around it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>ecommerce</category>
      <category>productivity</category>
      <category>claude</category>
    </item>
    <item>
      <title>How I auto-enrich a brand database with AI on cache miss (Lovable + Claude API)</title>
      <dc:creator>mamoru kubokawa</dc:creator>
      <pubDate>Sat, 16 May 2026 00:44:22 +0000</pubDate>
      <link>https://dev.to/tokidigital/how-i-auto-enrich-a-brand-database-with-ai-on-cache-miss-lovable-claude-api-1kfd</link>
      <guid>https://dev.to/tokidigital/how-i-auto-enrich-a-brand-database-with-ai-on-cache-miss-lovable-claude-api-1kfd</guid>
      <description>&lt;p&gt;Most database designs have two ugly options:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Manually seed thousands of rows (impossible for niche data like Japanese wholesale suppliers)&lt;/li&gt;
&lt;li&gt;Force users to enter everything (terrible UX, dead-on-arrival)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Last week I shipped a third option in 30 minutes with Lovable: &lt;strong&gt;let the database grow itself&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Every search that misses the cache triggers Claude API to generate a real, structured entry — and saves it. The next user gets an instant hit.&lt;/p&gt;

&lt;p&gt;Here's the exact pattern.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pattern in 4 lines
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;has&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;entry&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;aiGenerate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the whole thing. The magic is in what happens to the database over time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this beats alternatives
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Seed-only DBs&lt;/strong&gt; require domain expertise upfront. For my Japan Brand Finder, that meant cold-calling Tsubame-Sanjo metalworkers — months of effort before launching.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User-fed DBs&lt;/strong&gt; have chicken-and-egg. Empty DB → no value → no users → no entries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cache-miss enrichment&lt;/strong&gt; sidesteps both:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Launch with 20 seed entries (1 hour)&lt;/li&gt;
&lt;li&gt;AI fills the long tail as users search&lt;/li&gt;
&lt;li&gt;Every miss makes the DB better for the next user&lt;/li&gt;
&lt;li&gt;Cost grows linearly with usage (predictable)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The prompt that actually worked
&lt;/h2&gt;

&lt;p&gt;The hard part isn't the pattern. It's getting AI to produce structured, useful entries instead of generic Wikipedia summaries.&lt;/p&gt;

&lt;p&gt;What worked for me (Japan Brand Finder context):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;You&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;are&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;filling&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;database&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;row&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Japanese&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;manufacturer.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;The&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;user&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;searched:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"[QUERY]"&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;Generate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;JSON&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;object:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;name_en:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;English&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;brand&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;name&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;name_jp:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Japanese&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(kanji&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;kana)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;category:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;this&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;list&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;hq_location:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;city,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;prefecture&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;english_support:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"good"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"limited"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"none"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;business_culture_notes:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1-2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;sentences&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;If&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;brand&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;doesn't&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;exist,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Don't&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;invent.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two key tricks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;JSON schema&lt;/strong&gt; forces structure (no rambling output)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Return null if doesn't exist"&lt;/strong&gt; gives AI permission to refuse&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The second one cut hallucination by ~80% in my testing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Economics
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Per search: ~$0.005 with Claude Sonnet&lt;/li&gt;
&lt;li&gt;Per 1,000 searches: ~$5&lt;/li&gt;
&lt;li&gt;DB grows: ~700 unique entries (cache hit ratio improves over time)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After Month 2, ~70% of searches hit cache → AI cost drops while DB value compounds.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd improve
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Verification batch job&lt;/strong&gt; — weekly re-check generated entries against external sources&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User flagging&lt;/strong&gt; — one-click report for wrong entries&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality tiers&lt;/strong&gt; — mark "AI-generated" vs "human-verified"&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Try it yourself
&lt;/h2&gt;

&lt;p&gt;If you have any niche directory idea (suppliers, restaurants, courses), this pattern unlocks it.&lt;/p&gt;

&lt;p&gt;Demo: &lt;a href="https://japanbrandfinder.lovable.app/" rel="noopener noreferrer"&gt;https://japanbrandfinder.lovable.app/&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Twitter: &lt;a href="https://twitter.com/tokidigitaljp" rel="noopener noreferrer"&gt;@tokidigitaljp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What would you use the cache-miss enrichment pattern for?&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>buildinpublic</category>
      <category>ai</category>
      <category>lovable</category>
    </item>
    <item>
      <title>How I auto-enrich a brand database with AI on cache miss (Lovable + Claude API)</title>
      <dc:creator>mamoru kubokawa</dc:creator>
      <pubDate>Thu, 14 May 2026 23:47:20 +0000</pubDate>
      <link>https://dev.to/tokidigital/how-i-auto-enrich-a-brand-database-with-ai-on-cache-miss-lovable-claude-api-1m86</link>
      <guid>https://dev.to/tokidigital/how-i-auto-enrich-a-brand-database-with-ai-on-cache-miss-lovable-claude-api-1m86</guid>
      <description>&lt;p&gt;Most database designs have two ugly options:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Manually seed thousands of rows (impossible for niche data like Japanese wholesale suppliers)&lt;/li&gt;
&lt;li&gt;Force users to enter everything (terrible UX, dead-on-arrival)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Last week I shipped a third option in 30 minutes with Lovable: &lt;strong&gt;let the database grow itself&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Every search that misses the cache triggers Claude API to generate a real, structured entry — and saves it. The next user gets an instant hit.&lt;/p&gt;

&lt;p&gt;Here's the exact pattern.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pattern in 4 lines
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;has&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;entry&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;aiGenerate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;query&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;db&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;entry&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's the whole thing. The magic is in what happens to the database over time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this beats alternatives
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Seed-only DBs&lt;/strong&gt; require domain expertise upfront. For my Japan Brand Finder, that meant cold-calling Tsubame-Sanjo metalworkers — months of effort before launching.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User-fed DBs&lt;/strong&gt; have chicken-and-egg. Empty DB → no value → no users → no entries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cache-miss enrichment&lt;/strong&gt; sidesteps both:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Launch with 20 seed entries (1 hour)&lt;/li&gt;
&lt;li&gt;AI fills the long tail as users search&lt;/li&gt;
&lt;li&gt;Every miss makes the DB better for the next user&lt;/li&gt;
&lt;li&gt;Cost grows linearly with usage (predictable)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The prompt that actually worked
&lt;/h2&gt;

&lt;p&gt;The hard part isn't the pattern. It's getting AI to produce structured, useful entries instead of generic Wikipedia summaries.&lt;/p&gt;

&lt;p&gt;What worked for me (Japan Brand Finder context):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;You&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;are&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;filling&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;database&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;row&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Japanese&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;manufacturer.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;The&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;user&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;searched:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"[QUERY]"&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;Generate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;JSON&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;object:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;name_en:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;English&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;brand&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;name&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;name_jp:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Japanese&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;(kanji&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;kana)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;category:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;this&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;list&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="err"&gt;...&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;hq_location:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;city,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;prefecture&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;english_support:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"good"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"limited"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"none"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;business_culture_notes:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1-2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;sentences&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="err"&gt;If&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;brand&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;doesn't&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;exist,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;return&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Don't&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;invent.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Two key tricks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;JSON schema&lt;/strong&gt; forces structure (no rambling output)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Return null if doesn't exist"&lt;/strong&gt; gives AI permission to refuse&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The second one cut hallucination by ~80% in my testing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Economics
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Per search: ~$0.005 with Claude Sonnet&lt;/li&gt;
&lt;li&gt;Per 1,000 searches: ~$5&lt;/li&gt;
&lt;li&gt;DB grows: ~700 unique entries (cache hit ratio improves over time)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After Month 2, ~70% of searches hit cache → AI cost drops while DB value compounds.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'd improve
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Verification batch job&lt;/strong&gt; — weekly re-check generated entries against external sources&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User flagging&lt;/strong&gt; — one-click report for wrong entries&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Quality tiers&lt;/strong&gt; — mark "AI-generated" vs "human-verified"&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Try it yourself
&lt;/h2&gt;

&lt;p&gt;If you have any niche directory idea (suppliers, restaurants, courses), this pattern unlocks it.&lt;/p&gt;

&lt;p&gt;Demo: &lt;a href="https://japanbrandfinder.lovable.app/" rel="noopener noreferrer"&gt;https://japanbrandfinder.lovable.app/&lt;/a&gt;&lt;br&gt;&lt;br&gt;
Twitter: &lt;a href="https://twitter.com/tokidigitaljp" rel="noopener noreferrer"&gt;@tokidigitaljp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What would you use the cache-miss enrichment pattern for?&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>buildinpublic</category>
      <category>ai</category>
      <category>lovable</category>
    </item>
    <item>
      <title>How I auto-enrich a brand database with AI on cache miss (Lovable + Claude API)</title>
      <dc:creator>mamoru kubokawa</dc:creator>
      <pubDate>Wed, 13 May 2026 11:11:36 +0000</pubDate>
      <link>https://dev.to/tokidigital/how-i-auto-enrich-a-brand-database-with-ai-on-cache-miss-lovable-claude-api-31m0</link>
      <guid>https://dev.to/tokidigital/how-i-auto-enrich-a-brand-database-with-ai-on-cache-miss-lovable-claude-api-31m0</guid>
      <description>&lt;p&gt;Most database designs have two ugly options:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Manually seed thousands of rows (impossible for niche data)&lt;/li&gt;
&lt;li&gt;Force users to enter everything (terrible UX)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Last week I shipped a third option in 30 minutes with Lovable: &lt;br&gt;
let the database grow itself.&lt;/p&gt;

&lt;p&gt;Every search that misses the cache triggers Claude API to generate &lt;br&gt;
a real, structured entry — and saves it. The next user gets an &lt;br&gt;
instant hit.&lt;/p&gt;

&lt;p&gt;Here's the exact pattern.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>claude</category>
      <category>database</category>
    </item>
    <item>
      <title>My first dev.to post got &lt;25 views: 3 things I'm changing</title>
      <dc:creator>mamoru kubokawa</dc:creator>
      <pubDate>Mon, 11 May 2026 07:51:20 +0000</pubDate>
      <link>https://dev.to/tokidigital/my-first-devto-post-got-25-views-3-things-im-changing-3jg2</link>
      <guid>https://dev.to/tokidigital/my-first-devto-post-got-25-views-3-things-im-changing-3jg2</guid>
      <description>&lt;p&gt;3 days ago I published my first dev.to post: "I built a self-growing Japanese brand database in 1 hour with Lovable (0 customers, 0 followers)."&lt;/p&gt;

&lt;p&gt;The stats today:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Views: &amp;lt;25&lt;/li&gt;
&lt;li&gt;Reactions: 0&lt;/li&gt;
&lt;li&gt;Comments: 0&lt;/li&gt;
&lt;li&gt;Followers: 0&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's the honest breakdown of what didn't work, and 3 things I'm changing.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Passive doesn't work
&lt;/h2&gt;

&lt;p&gt;I published and waited. No X share, no Reddit, no Indie Hackers (got blocked there anyway as a new account).&lt;/p&gt;

&lt;p&gt;The lesson: &lt;strong&gt;dev.to alone doesn't distribute itself&lt;/strong&gt;. It rewards momentum signals — comments, reactions, external traffic. New accounts with no signal stay invisible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I'm changing&lt;/strong&gt;: Today I shared the post on X with a question to indie builders. Tomorrow I'll add genuine comments to 5 #showdev posts I actually find interesting.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The title was about me, not them
&lt;/h2&gt;

&lt;p&gt;My old title: &lt;em&gt;"I built a self-growing Japanese brand database in 1 hour with Lovable (0 customers, 0 followers)."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Self-centric. About my journey, my tool, my emptiness.&lt;/p&gt;

&lt;p&gt;What works on dev.to: titles framed as &lt;strong&gt;the reader's problem or technique&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I'd write today&lt;/strong&gt;: &lt;em&gt;"How I auto-enrich a brand database with AI on cache miss (Lovable + Claude API)"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The reader benefit is clearer. The technique is upfront. Use case comes second.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. I forgot the audience
&lt;/h2&gt;

&lt;p&gt;dev.to is developers. My customers (Amazon sellers) are not.&lt;/p&gt;

&lt;p&gt;I wrote about my product like a product person, not a developer. Devs scrolling the feed don't care about Japan sourcing — they care about &lt;strong&gt;the pattern I used to build it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I'm changing&lt;/strong&gt;: For my next post, I'll lead with the &lt;strong&gt;technical pattern&lt;/strong&gt; (AI-powered DB enrichment on cache miss) and let the use case come second.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Comment on 5 #showdev posts genuinely&lt;/li&gt;
&lt;li&gt;Engage with any replies on the original post&lt;/li&gt;
&lt;li&gt;Write next post with a developer-first angle&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Currently still 0 customers, 0 followers — but learning faster.&lt;/p&gt;




&lt;p&gt;Demo: &lt;a href="https://japanbrandfinder.lovable.app/" rel="noopener noreferrer"&gt;https://japanbrandfinder.lovable.app/&lt;/a&gt;&lt;br&gt;
Twitter: &lt;a href="https://twitter.com/tokidigitaljp" rel="noopener noreferrer"&gt;@tokidigitaljp&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What's the most valuable thing you've learned from a post that didn't take off?&lt;/p&gt;

</description>
      <category>buildinpublic</category>
      <category>showdev</category>
      <category>beginners</category>
      <category>saas</category>
    </item>
    <item>
      <title>I built a self-growing Japanese brand database in 1 hour with Lovable (0 customers, 0 followers)</title>
      <dc:creator>mamoru kubokawa</dc:creator>
      <pubDate>Sat, 09 May 2026 07:06:22 +0000</pubDate>
      <link>https://dev.to/tokidigital/i-built-a-self-growing-japanese-brand-database-in-1-hour-with-lovable-0-customers-0-followers-4co5</link>
      <guid>https://dev.to/tokidigital/i-built-a-self-growing-japanese-brand-database-in-1-hour-with-lovable-0-customers-0-followers-4co5</guid>
      <description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: Japanese Amazon seller from Osaka. Yesterday I built Japan Brand Finder in 1 hour with Lovable — a tool helping English-speaking Amazon sellers source from Japan. Currently 0 customers, 0 followers. Building in public. &lt;a href="https://japanbrandfinder.lovable.app/" rel="noopener noreferrer"&gt;Demo&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Why I built this
&lt;/h2&gt;

&lt;p&gt;I'm based in Osaka and I run an Amazon Japan business. For years I've watched English-speaking sellers struggle to source from Japan — language barriers, FAX-only wholesalers, and the silent fear of writing emails that accidentally sound rude.&lt;/p&gt;

&lt;p&gt;So I sat down with Lovable and built the thing I wish existed when I started.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it looks like
&lt;/h2&gt;

&lt;p&gt;The pitch on the landing page: &lt;em&gt;"Search a growing database of Japanese makers — from Tsubame-Sanjo metalworkers to Kyoto matcha houses. Get wholesale contacts, MOQs, English-support level, and culture notes. Then let AI write the polite outreach email for you."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I didn't write that copy. Lovable did. I never mentioned Tsubame-Sanjo (a famous Japanese metalworking region) in my prompt — yet the AI surfaced exactly the kind of specific, credibility-building example that resonates with Amazon sellers who source from Japan.&lt;/p&gt;

&lt;h2&gt;
  
  
  The database that grows itself
&lt;/h2&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.amazonaws.com%2Fuploads%2Farticles%2Fmgnajzjt4a3gdgd84jq6.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.amazonaws.com%2Fuploads%2Farticles%2Fmgnajzjt4a3gdgd84jq6.png" alt=" " width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's the thing I'm most proud of.&lt;/p&gt;

&lt;p&gt;Look at this screenshot. &lt;strong&gt;Kyocera, Zojirushi, Tiger Corporation, Daikin, Sharp, Suntory, Nissin Foods, House Foods, IRIS Ohyama. 9 Japanese brands. All marked "AI" — meaning I didn't seed any of them.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When a user searches and the brand isn't in the DB, the AI generates a real entry — name in English and Japanese, category, HQ location, English support level — and saves it to the shared database. The next user who searches that brand gets an instant hit.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Day 1: 20 seed brands&lt;/li&gt;
&lt;li&gt;Day 2: 30+ brands and growing&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Every user makes the product more valuable for everyone&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the moat. Not the UI. Not the features. The DB.&lt;/p&gt;

&lt;h2&gt;
  
  
  How good is the AI-generated outreach email?
&lt;/h2&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.amazonaws.com%2Fuploads%2Farticles%2F4bxumqxi69cmum5xohwe.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.amazonaws.com%2Fuploads%2Farticles%2F4bxumqxi69cmum5xohwe.png" alt=" " width="800" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is one click away. Hit "Generate" → AI writes a polite Japanese business email like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;件名：御社製品の卸販売に関するお問い合わせ（海外Amazon販売店より）&lt;br&gt;&lt;br&gt;
池永鉄工株式会社 御担当者様&lt;br&gt;&lt;br&gt;
突然のご連絡失礼いたします。&lt;br&gt;&lt;br&gt;
海外にてAmazonストアを運営しております、久保川護と申します...&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Three things to notice:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Subject line auto-generated&lt;/strong&gt; — most AI tools forget this&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Native keigo&lt;/strong&gt; — "突然のご連絡失礼いたします" is the textbook polite opener&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real product knowledge&lt;/strong&gt; — the email mentions "鉄なべ" (iron pot), Ikenaga's actual product line. The AI pulled this from the brand's business culture metadata&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For an English-speaking Amazon seller trying to source from Japan, this single feature replaces a $200/hour translator.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 1-hour journey
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Time&lt;/th&gt;
&lt;th&gt;What happened&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0:00&lt;/td&gt;
&lt;td&gt;Wrote a 200-word spec&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0:01&lt;/td&gt;
&lt;td&gt;Pasted into Lovable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0:08&lt;/td&gt;
&lt;td&gt;First MVP shipped (search, details, favorites, AI email)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0:30&lt;/td&gt;
&lt;td&gt;Multi-language search bug fix prompt&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;0:55&lt;/td&gt;
&lt;td&gt;3-mode email feature added with before/after diff&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1:00&lt;/td&gt;
&lt;td&gt;Free credits ran out at exactly the right moment&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. The "Both" option is gold.&lt;/strong&gt; When Lovable asked how to populate the brand database, the answer was "seed sample brands + AI enrichment on misses." This single decision is what turns the tool into a growing asset.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Security scan saved me.&lt;/strong&gt; Before publishing, Lovable's automated security scan flagged a critical issue (RLS missing — wholesale contacts would have been publicly readable). One click fixed it. Without that scan, I would have shipped a privacy violation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Honest copywriting from AI surprised me.&lt;/strong&gt; The Tsubame-Sanjo example. The 鉄なべ reference. These weren't in my prompts. The AI just knew what would resonate.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Beta launch this month — aiming for 10–20 users&lt;/li&gt;
&lt;li&gt;Stripe Lifetime Deal ($99) for first 50 buyers&lt;/li&gt;
&lt;li&gt;Bug cleanup (some AI entries still have typos)&lt;/li&gt;
&lt;li&gt;Better sign-up flow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Currently 0 customers, 0 followers, building entirely in public.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you're an Amazon seller (or just curious about Japanese sourcing), I'd love your feedback.&lt;/p&gt;




&lt;p&gt;🔗 &lt;strong&gt;Demo&lt;/strong&gt;: &lt;a href="https://japanbrandfinder.lovable.app/" rel="noopener noreferrer"&gt;https://japanbrandfinder.lovable.app/&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🐦 &lt;strong&gt;Twitter&lt;/strong&gt;: &lt;a href="https://twitter.com/tokidigitaljp" rel="noopener noreferrer"&gt;@tokidigitaljp&lt;/a&gt;&lt;br&gt;&lt;br&gt;
🛠️ &lt;strong&gt;Built with&lt;/strong&gt;: Lovable + Supabase + Anthropic Claude API  &lt;/p&gt;

&lt;p&gt;What feature would you want to see in v2?&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fuzlfpam0nk771cp84wpo.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.amazonaws.com%2Fuploads%2Farticles%2Fuzlfpam0nk771cp84wpo.png" alt=" " width="800" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>buildinpublic</category>
      <category>lovable</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
