
The situation
BirdReel makes smart bird feeders with a camera, AI bird identification and live streaming. It sells direct to consumers online and wholesale to specialty retailers, and the two channels have different prices, terms, shipping rules and accounting.
Off-the-shelf store platforms handle one channel well and the other with plugins and workarounds. The brand needed one catalog, one order pipeline and one set of books.
What we built
- Consumer store at birdreel.com: catalog, cart, Stripe checkout, customer accounts and order history, product demo videos.
- Retailer portal at retailer.birdreel.com: retailer applications, wholesale price lists, net terms, bulk ordering, order status.
- Fulfilment: orders flow to ShipStation, tracking flows back, customers are notified.
- Accounting: orders and invoices posted to QuickBooks Online, payments matched to Stripe payouts, an audit that lists every mismatch.
- Monitoring of the integrations themselves: a daily check that flags stuck orders, failed syncs and unmatched payments.
- Marketing: email campaigns and a cookie banner that only measures what the brand can justify.


How it is built
One application serves both sites, with the channel decided by the host name and the account type. Stripe handles payment and payouts, ShipStation handles the warehouse, QuickBooks holds the books, and BirdReel reconciles the three so that a shipped order, a paid invoice and a bank deposit always point at each other.
For the engineer reading along: Python and FastAPI, MySQL, Stripe Checkout and webhooks, ShipStation API, QuickBooks Online API with a token-bucket rate limiter and terminal states for retries (the reconcile job once burned a month of QuickBooks quota in days by retrying the same orders forever; it cannot now). gunicorn under systemd behind nginx, on the same server as Axis. 1,643 commits.
What it does today
Counts from the production database and repository, 2026-11-03.
Running it
Hosted alongside Axis with its own process, deployed with the same rolling pattern, monitored by Watchdog. A daily integration check reports stuck orders and failed syncs before a customer asks where their feeder is.
Have something that needs building, or running?
Tell us what you are trying to do. We reply within one business day, and the first conversation is free.