Automation & Internal Tools

Custom software for the way you already work.

If your business runs on a notes app, a stack of group texts and a spreadsheet only you understand, I build the Python tool that replaces them. It's shaped around your process, so you don't have to change how you work to fit someone else's app.

Case Study · Field Service Scheduling

Trip Scheduler for a traveling hoof trimmer

Built for traveling hoof care: trimmers, farriers and shearers who cover big rural areas and see each customer a few times a year. The work is easy to plan once you know who's in. Finding out is the hard part.

Before
  • Customer info scattered across phone contacts, old texts and memory
  • Runs planned on paper or in a notes app, with no easy history of past trips
  • Texting every customer one at a time to find out who's available
  • Chasing replies and rebuilding the day's route by hand
After
  • Customers sign up once with their zip and get grouped by area automatically
  • Plan a run by picking an area and dates, then send everyone there a heads-up in one click
  • Closer to the date, send firm dates. Customers tap a link to confirm and add notes
  • A ready-made route sheet of who's in, with animals, gate codes and notes. People who text get one tap: Confirm
1

Customers sign up once

A simple mobile page you can share anywhere: a text, social media, a business card. Customers enter their zip and animals, and the app files them into the right area using zip-prefix matching. “599” covers the whole Flathead, and a full zip can override it.

Customer sign-up page with name, email, zip and animal checkboxes
2

Plan a trip and send a heads-up

Pick an area and type the dates. Everyone signed up there gets a personal “we're planning to be in your area” email. Press send again later and it only reaches new sign-ups, so nobody gets emailed twice.

/admin · Trips
Owner dashboard: plan a trip by area and dates, list of trips with sent and confirmed counts
Heads-up email: we're planning to be in the Flathead Valley around these dates
3

Firm dates and one-tap confirm

Each customer gets their own private link, already filled in with their details. They tap Yes, count me in, update their animals, and leave notes for this visit, like how many head or a gate code.

Firm dates email with a personal confirm link
Pre-filled confirm page with Yes, count me in button
4

The route sheet builds itself

Confirmed customers land on the trip page with phone, zip, animals and visit notes, which is your route for the day. Anyone still waiting is listed underneath, and if they reply by text you tap Confirm. Every trip is saved, so “where did I go last fall?” is one click away.

/admin · Flathead Valley · Oct 27–29
Trip page: send buttons, confirmed list with animals and notes, everyone else with confirm buttons
/admin · Customers
Searchable customer list with CSV export

Searchable customer list. Your list is yours: Export → CSV any time.

/admin · Areas
Areas defined by zip prefix

You draw your own areas by zip. Change one and every customer is regrouped instantly.

Live Demo

Click around the real thing.

No login needed. It runs on fake Montana customers, emails are caught instead of sent, and everything resets every hour, so plan a trip, hit send and break whatever you like.

Under the Hood

Small app, built properly.

PythonFlaskSQLAlchemy Flask-AdminFlask-LoginSMTP / Gmail Docker ComposeGunicornCloudflare Tunnel pytest
  • Clean data model. Customers, Areas, Trips and Stops. A stop tracks each customer through projected → firm → confirmed or declined.
  • Safe to press twice. Sends are idempotent: re-sending only emails people who haven't had that step, never someone who already answered.
  • Private confirm links. Each stop gets a random URL-safe token, so customers confirm without accounts or passwords.
  • Real email, no extra service. Batched through the business's own Gmail with one SMTP connection per send, so failures are reported and can be retried.
  • Deployed with no open ports. Dockerized behind a Cloudflare Tunnel and HTTPS, with an automated test suite covering the full trip flow.
Case Study · Booking & Payments

Howe Ranch booking platform

The full registration and ticketing system for a Kalispell agritourism ranch, live and taking real bookings. Guests pick an experience, choose a date and time, pay online and get their confirmation and waiver automatically. Staff run it all from an admin dashboard.

  • Events & ticketing. Admin sets up events and ticket pricing, and manages every booking.
  • PayPal API payments, with webhooks confirming each booking.
  • Automated emails for confirmations and waiver requests via Flask-Mail.
  • Private events hidden from the public site and shared by exclusive link.
  • Android check-in app (Kotlin) scans guests' QR codes at the gate through a REST API.
Python / FlaskPostgreSQLFlask-Migrate PayPal APIDockerGunicorn AWS LightsailCloudflare CDNpytest
View Live Booking Site
thehoweranchregistration.com
Howe Ranch booking site home page

Production setup: separate app and PostgreSQL containers, with the database sealed off from the internet on an internal Docker network. Schema changes go through versioned migrations, and a deploy script runs health checks before going live.

What I Build

If you're doing it by hand every week, it can probably be automated.

Scheduling & route tools

For mobile businesses like farriers, groomers, plow routes and delivery runs. Group customers by area and fill each trip.

Booking & payments

Online booking with deposits or full payment, capacity limits, waivers and confirmations that send themselves.

Reminders & follow-ups

“You're due for a trim,” “your appointment is tomorrow,” “your order is ready.” Fewer no-shows and fewer phone calls.

Paper → online forms

Intake forms, cut sheets, rental agreements and estimates that land in a database you can search instead of a filing cabinet.

Internal dashboards

One admin page for jobs, customers and status, built for you and your crew, not your customers.

Spreadsheet replacements

When the spreadsheet has outgrown itself: a real database with the same columns you're used to, plus export.

01
Show me how you do it now

Your notes app, your texts, your paper forms. I start from the real thing, not a template.

02
I build around your process

Your areas, your wording, your steps. Often you'll see a working demo with your name on it before you commit.

03
You own your data

Export to CSV any time. I host it, maintain it and keep it running, and I'm local if something breaks.

Start a Project

What's the most annoying thing you do every week?

Tell me about it. If it can be automated, I'll show you how, with a clear scope and a flat price.

Get a Free Quote