Most database designs have two ugly options:
Manually seed thousands of rows (impossible for niche data like Japanese wholesale suppliers)
Force users to enter everything (terrible UX, dead-on-arrival)
Last week I shipped a third option in 30 minutes with Lovable: let the database grow itself .
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.
Here's the exact pattern.
The pattern in 4 lines
async function search ( query ) { if ( await db . has ( query )) return db . get ( query ); const entry = await aiGenerate ( query ); await db . save ( entry ); return entry ; }
Enter fullscreen mode
Exit fullscreen mode
That's the whole thing. The magic is in what happens to the database over time.
Why this beats alternatives
Seed-only DBs require domain expertise upfront.…