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

Hi! I'm Isaac Flath, a Tech Generalist passionate about creating beautiful, functional, useful things. While this often means AI it often means Web App Development, Dev Ops, System Administration, and other things. AI is only a component (sometimes a relatively small one) of a successful AI application.

Read more from Isaac Flath

Hey this is Isaac, This week has been about closing loops. I'm releasing the DevRelifier (product for helping share and promote tech stuff), which means dealing with the unsexy parts of software development: tax setup and final testing. It’s less about coding creative features and more about ensuring the business actually works without breaking the law or the user experience. If you want to try the product, reply to this email for more info and free credits. The Build: The Unsexy Last Mile...

Hey this is Isaac, I met with some dear friends, Danny and Audrey Roy Greenfeld, in Baltimore for a mini-sprint on the air web-dev framework. Walking around a science museum while brainstorming and cafe-hopping while hacking together was a blast. During the sprint I created a new testing example (unit, integration, and end-to-end playwright tests) and began extracting features from private codebases into small, public libraries. I also learned that a late evening espresso martini is not the...

Hey this is Isaac, This week I was fixing some basic and classic async problems: a "processing" pill that never updated to "complete." Blech. The goal is to prevent long-running tasks from freezing the user interface. If something takes a second, it’s fine to expect the user to stay on the page until it completes. But if it takes 5 minutes? Users will want to be able to do other things while it’s processing. So we have background tasks that run independently of the UI the user sees. But the...