Build-Learn-Refactor: Leverage of Simplicity


Hey this is Isaac,

Welcome to my new weekly newsletter. Each week, we explore one build, one lesson, and one refactor. Only practical ideas to help you build better.

This week I jumped from untangling a messy Stripe integration to light creativity generating an AI promo video. The mental whiplash is real.

Let's start with the AI Promo Video.

The Build: Directing an AI to Make a Promo Video

I created a 74-second promo video draft in about 30 minutes. AI wrote the code, but I was the creative director. Retaining control of AI is everything; You can't just vibe-code it. Context, taste, vision, and critical feedback can't be manufactured.

Here’s what I did:

  1. Provide Good Context. Bad input equals bad output. I gave AI tools to retrieve the real documentation and source code to help with factual correctness.
  2. Add Your Vision. AI can't know what you want people to feel. I voice-transcribed my vision, goals, and feelings to get my intuition into context.
  3. Iterate with Taste. The text was small and key features were missing. I used my domain knowledge to fix errors, add animated callouts, and mold it to my taste.
  4. Sync with Audio. AI can't "feel" music. I found a song with a major phrase change at ~ 30 seconds in and instructed AI to time a key visual to that exact moment.

AI is powerful if wielded by someone with expertise and a clear vision.

For a full breakdown of the prompts and process, read the full article here.

The Learn: A Pattern for Personal Automation

Here’s a powerful pattern for building your own tools (both for you and your agent): combine a justfile for simple commands with uv scripts for isolated logic.

  1. The justfile is your simple interface. A justfile file is a command runner (like Make but simpler). uv run fastapi dev app/main.py becomes just app. It’s your personal, simplified command-line menu.
  2. uv scripts are your disposable tools. Each tool is a self-contained Python script. uv lets you declare dependencies in the header with dependencies = ["yt-dlp"]. uv installs them for you, eliminating the need to manage virtual environments for small scripts.

This lets you build powerful workflows. I have a `just yt-pipeline` command that runs a sequence of these AI-generated scripts: download —> transcribe —> content plan —> blog post —> description + chapters. They worked so well, i'm now building a product around this workflow.

Each script is independent, and the justfile orchestrates them. Add instructions in your AGENT.md or CLAUDE.md file about the justfile and get them all as agent tools as well.

Why build your own tools? Because with AI, the creation cost is very low. I created a custom GitHub issue reader script in less than 10 seconds. It was faster than finding, installing, and learning a pre-built tool. And the github MCP has over 90 tools and takes tens of thousands of tokens of context - better to write your own in a few seconds.

To see the full workflow and get the scripts, read the full article here.

The Refactor: Trading API Calls for Simplicity

The classic approach to Stripe webhooks is a complex state machine. You write separate handlers for every event:

`customer.subscription.created`, `updated`, `deleted`, `invoice.payment_succeeded`, and so on. This means complex routing logic and helper functions just to figure out the current state.

We threw that out for a radically simpler approach for a SaaS I am building.

The old way: Listen for a specific event, interpret its payload, and update our database accordingly.

The new way: After any subscription-related webhook arrives, we ignore the payload and make one API call to fetch_stripe_subscription_details. We ask Stripe for the latest, authoritative state of the subscription and sync it to our database.

The result? We replaced over 200 lines of complex event-handling logic with a single, idempotent function call. It's a 90% reduction in code in our webhooks file and completely eliminates ambiguity. It might cost an extra API call, but it buys us absolute certainty and drastically simpler code.


Until next week,

Isaac

https://isaacflath.com

Isaac Flath

Every post comes from something I've done on a real project. AI tools, development approaches, how I actually build things. You're getting a curation of my taste, not takes on stuff I don't use. Subscribers also get extras: things that went wrong, how my thinking about AI is changing, hacky workflows I use every day, and the occasional personal update. Stuff I share with subscribers because it's a little too personal or unpolished to blast across the internet.

Read more from Isaac Flath

Today's post is about a project that I will take concepts from to improve my own work. So I studied the OSS prototype of it to understand how it works. Point and Talk: How Clicky’s AI Interface Works Clicky is an AI buddy made by Farza that lives on your Mac. You press a key, talk, and a glowing blue triangle flies across your screen, points at whatever you asked about, and talks you through the answer. Most apps with an agent should have something like this. Point and talk is closer to how...

Last week I shared my knowledge base tool, agentkb. This week I am OSSing my pi harness that uses it, Harpy. The most interesting part of the harness is that knowledge base <-> harness integration so that's what this week post dives into. It covers what RLM is, how it drives a python loop with state, how Pi (typscript) extension talks to python, and how that allows for smart delegation and fan-out to smaller models to give more accurate search results. How My RLM Tool Works An LLM writes...

Hey, This was a week of context switching 😅. Product release weeks are always odd. The goal is super specific, and yet the work is scattered small tasks (testing, polish, docs, marketing copy, etc.). We shipped the stoa beta, and I kept wishing my agents could remember more. That's why I'm open sourcing `agentkb`, my work-in-progress knowledge base framework today. The Pi harness built around it will be open sourced next. AgentKB: A Local Knowledge Base for Agents My agent should learn from...