The Last Mile of Shipping


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

Shipping a SaaS isn't just git push and a prayer.

If you sell software, you may be subject to sales tax based on where your customers are located. In many jurisdictions, if you cross a threshold (often ~$100k revenue or 200 transactions), you legally have a "nexus" there and must file taxes. Tracking and managing the filing timing based on volume is not something I have the expertise to do or the desire to learn.

So here’s what I did:

  1. Calculation & Collection: I configured Stripe to automatically calculate and collect the correct tax percentage at checkout based on the customer's location. It charges 0.5% per transaction, but I'm happy to pay that…for now.
  2. Filing & Monitoring: I use a service called Numeral. They monitor my transaction volume via a stripe integration and alert me when I hit a nexus threshold in a specific state. Once I hit it, they handle the state filings. Stripe also has a service for this, but Numeral seemed much better.

It was great to glue Stripe and Numeral together and get to contacting potential customers.


The Learn: Ship Before You Are Ready

Another product I've been working on is called Plot Builders, designed to help new authors write novels as hobbyists. We had a vision, we built a slick linear process, and we thought it was really great.

We shipped it quickly to some free users, and we found we had the wrong idea about how users would use it.

The Assumption: We assumed authors would come with a title and a clear idea, moving linearly from Outline → Draft.

The Reality: Users struggled to name their projects. They felt restricted by the linear flow. It felt too high stakes to enter information. They wanted to jump around and explore.

The Pivot: We rebuilt the app.

  • Brainstorming First: We added a brainstorming flow with some "cycling random questions" feature to help make the on-ramp easier.
  • AI Titles: We made titles auto-generated to move naming to the end.
  • Non-Linear View: We simplified the project into a single view where the outline slowly expands, rather than forcing users through more opinionated steps.

This is why early shipping matters. The original app had bugs and wasn’t fully tested. But if we had waited to perfect the code, we would have polished a product nobody wanted. Ship early to validate the workflow.


The Refactor: Sleeping Better with E2E Tests

I have unit and integration tests for DevRelifier, but nothing gives me confidence like End-to-End tests that simulate a user.

I created a suite using Playwright that simulates a full user journey: logging in via Clerk, creating a bundle, uploading files, generating a blog, and deleting the project.

The best part? Running them in "headed" mode with a slow-motion setting. A browser pops up and you actually watch the ghost user click through your app.

`pytest tests/test_e2e.py::test_complete_generation_journey --headed --slowmo=400`

A couple weeks ago I added a minimal example of the basic setup in the air web dev framework. Then I created a +clerk_test user (which Clerk recognizes to accept the hardcoded OTP 424242), handle the redirects, and verifies the UI elements exist.

These tests are too slow for the inner dev loop, but they are the ultimate final check. Watching the test suite verify the entire bundle creation flow is satisfying, and knowing I can deploy without manually clicking through every screen is fantastic.


Until next week,

Isaac


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, 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...

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...