Tom Sailors
Custom Shopify work for stores that have outgrown the app store.

“Build something that…”

Describe what your store needs. A plan comes back, ready to review.

Speak, type, or drop a file anywhere.
Try: Shopify wholesale w/ subscriptions Migrate to Shopify Shipping rate bugs
T
Working on the sketch
0.0s
    Working on

    0 of 3 — building together
    Sketch
    Pieces
    Brief
    Your project
    forming…
    The problem

    The build
      Anything else worth knowing
      How to reach you
      Or refine and re-sketch →
      Case study · Built for pregame.team

      The Apple Wallet pass that updates itself

      Holds an order number, points balance, subscription, or gift card. Updates on the customer's phone when something changes. No app to open.

      How it works
      1. Parent adds the pass. One tap from the team page. Lives in Apple Wallet.
      2. Scorekeeper records a hit. Every parent's card updates in seconds. Average, hits, RBI, last result.
      3. Only the right parents get a notification. The other 200 stay quiet.
      4. No app to install. Apple Wallet ships on every iPhone.
      On a Shopify store
      Order tracking
      Pass added at checkout. Updates: Received → Shipped → Out for delivery → Delivered. Each change is a notification. Kills "where's my order?" emails.
      Loyalty / VIP
      Points, tier, perks. Updates when points change. Notification on tier-up.
      Subscription
      Next billing date, plan, skip-month link. Updates on charge or date move. Fewer chargebacks, fewer tickets.
      Gift card
      Balance, code, expiration. Updates after every purchase. No more digging through email for the code.
      More builds

      Five more pieces from the last few months. Tap one to read it.

      Loyalty

      Custom loyalty program

      Off-the-shelf loyalty apps charge per member and stop at "earn on purchase, redeem at checkout." This build does more: points that auto-apply on subscription renewals, a referral program with fraud checks, an Apple Wallet card, point expiration, and exclusions for staff accounts. All inside Shopify — no per-member fees, no second login for customers. The points balance lives on the customer record and follows them everywhere.

      11
      Shopify extensions — checkout UI, customer-account pages, 7 theme blocks
      Auto
      Subscription renewals apply points without a checkout via direct subscription-app API
      546
      commits in production. Webhook deduplication, advisory locks, 365-day FIFO expiration
      Subscriptions

      Subscription migration

      A B2B supplement brand was moving off a legacy subscription app and onto native Shopify Subscriptions, but couldn't ask hundreds of recurring customers to manually re-subscribe. This build is a staff wizard plus a signed-link bridge: support captures the existing subscription, emails a one-click link, and the customer lands in a checkout that prices, schedules, and bills natively from there.

      268
      commits in the custom Remix app — B2B wholesale storefront plus migration tooling
      1,082
      line Import Subscriptions wizard + bulk CSV importer handling up to 1,000 customers per upload
      Signed
      Shopify Discount Function with HMAC-verified guest-cart pricing
      Shipping

      Live shipping rates

      Most live-rate apps quote shipping for a guessed box. This one studies the store's real shipping history, builds a lookup of which box every SKU combination actually ships in, then asks the carrier for rates against that exact box. Checkout sees the price the warehouse will really pay. Settings include per-service filters, percent and flat-fee markups, and a custom ship-from address.

      91
      SKU catalog studied. 545 SKU-combo entries built from 8.5 MB of real shipment history
      8
      named box sizes — Small, Single Bottle, 4-Pack, 5-Pack, 8-Pack, Large, Wide Flat, Envelope
      Read-only
      All carrier calls locked to quote endpoints — no labels created by the app
      Monitoring

      Stack watchdog

      Most stores run on a stack of services — shipping APIs, chatbots, analytics, tax compliance — and any one of them can fail silently for days before anyone notices. This watchdog checks every connected app on a tight schedule, restarts crashed services on its own, and sends a push notification the second something goes wrong. A daily 7am email summarizes uptime, failed orders, and anything that drifted overnight.

      4
      tiers of checks — every 5 min, 30 min, 2h, and a daily digest at 7am
      Auto-restart
      Crashed Heroku dynos get restarted, with a 15-min cooldown to avoid loops
      Multi-channel
      Push notifications + email digest + structured logs
      Automation

      Urgent email watcher

      Most owners don't need another inbox app — they need silence until something actually matters. This watcher checks Gmail every minute, ignores newsletters, promotions, and routine order confirmations, and only fires a phone alert when a real customer issue, a payment problem, or a known VIP sender shows up. A small AI classifier sits behind a strict urgency rulebook, so the phone only buzzes when it should.

      60s
      poll interval. Two Gmail accounts watched in parallel, incremental history sync
      3 layers
      Hard-rule allowlist → client-domain check → AI urgency classifier
      iMessage
      Allowlist-enforced delivery, capped at 5 alerts per tick, full audit log
      Audio

      Walk-up PA announcer

      Every kid on a youth baseball team gets their own walk-up moment — a stadium announcer calling their name, followed by the song they picked, mixed together the way a real ballpark sounds. The announcer voice is generated for each player, then ducked under the music automatically so the call sits on top cleanly. Coaches manage the lineup from a phone. Players hear themselves announced when they step up to bat.

      TTS
      Per-player announcer voice generated once, reused on every at-bat
      Sidechain
      ffmpeg sidechain compressor ducks the music under the call with a 0.2s fade-out
      Streaming
      Postgres BYTEA storage, Range-supported audio route for instant playback