Dev.to
6/26/2026

How I built the OSS alternatives directory: GitHub ETL, Turso, and the UPSERT trap I hit
Short summary
The author built an OSS alternatives directory using GitHub ETL, Turso libSQL, and Claude Haiku for AI-generated content. A critical lesson: using ON CONFLICT DO NOTHING prevented content updates, so they switched to DO UPDATE for the content table. They optimized costs by using Claude prompt caching on batch operations.
- •ETL architecture: seed from JSON, fetch fresh GitHub data, generate content with Claude Haiku
- •Fixed UPSERT bug: DO NOTHING prevented overwriting stale generated content; switched to DO UPDATE
- •Reduced token costs using system-prompt caching for repetitive Claude calls
Generated with AI, which can make mistakes.
Is this a good recommendation for you?



