Han's Generative AI Quest

Pepper & Carrot AI-powered flipbook · Part 5 — Claude Skills as a Vision Provider: Ingesting a Comic by Reading It

Post 5 of the Pepper & Carrot AI flipbook series. The comic is images, not text — so before any RAG can happen, every page needs a description. This post is about who writes those descriptions: a tour of the three vision-provider options (local VLM, hosted API, Claude Code itself), why the Claude Code path wins for a portfolio project, and a section-by-section walk through the `ingest-from-images` skill that produces a JSON description per page. The right vision provider is context-specific, and the post includes a decision matrix mapping each constraint to the right choice — plus an appendix on how a VLM actually sees an image.

Pepper & Carrot AI-powered flipbook · Part 4 — LLM Provider Abstractions: Why Every External Service Hides Behind an Interface

Post 4 of the Pepper & Carrot AI flipbook series. Build three typed Protocol interfaces — Storage, EmbeddingClient, ChatClient — and the factory that picks the right implementation from a .env file. By the end you have LocalStorage serving images end-to-end and a working embedding client producing real 1024-dim vectors against the local Ollama you set up in Post 2.

Pepper & Carrot AI-powered flipbook · Part 3 — Designing the Postgres Data Model: Ten Tables, One Migration, Zero Surprises

Post 3 of the Pepper & Carrot AI flipbook series. Post 2 stood up Postgres and applied the first migration; this post explains what that migration created and why. How Alembic works, why not Base.metadata.create_all(), how ten tables map one-to-one onto product features, four design decisions that pay off later, and a column-by-column tour of the SQLAlchemy 2.0 models.