about

Hi, I'm AJ.

Product @ Cloudflare · Turbo Photo Film Lab

For work, I build things that impact people. 7+ years at Cloudflare taking a brand new product area to market — SASE (secure access service edge) security. I was the global GTM and technical sales expert in the space for 4+ years, and sold and deployed to some of the world's largest companies. Now, I run Product for our SASE user experience and our entire Zero Trust firewall product set.

For fun, I'm a big horror movie nerd — follow me on Letterboxd. I aspire to do well enough in the tech sector that I can one day produce films. I spend a majority of my free time with my wife and high school sweetheart (Holly), our dog (Turbo), and our cat (Florence). We're all big homebodies. We've also started two successful businesses together — more on that further down.

[ IMG ]
[ IMG ]
[ IMG ]
work history

work history

Cloudflare — Product Management

Role dates · Team

Placeholder — what you worked on in Product Management, the products, the impact. Replace this.

Cloudflare — Sales

Role dates · Team

Placeholder — your time in Sales, the motion, accounts, wins. Replace this.

the film lab

the film lab

In 2023, after winding down my wife and I's 8+ year wedding photography business, we had the wild idea to start a film development lab in our house. We both enjoyed shooting film, Holly learned to develop while getting her BFA, and we saw a gap in the market — in overall sentiment, accessibility, and price. After doing a little prospective math, the margin looked good, so we went for it.

21,919
rolls developed
9,638
drop-offs
3,258
unique customers

since 1/1/25, live updating!

We bought minilab equipment made in the mid-1990s on eBay (i.e., what drugstores and one-hour photo labs use), built a website, and put a dropbox on a concrete slab right outside our house. The first week, four people dropped off their film to be processed. About three years later, Holly processes 300–350 rolls of film per week, entirely by herself, and we've had people mail in film from over 150 Texas towns and 30 different states. I maintain that we are the most efficient per-person film lab in the world.

We reached that self-proclaimed milestone with a fanatical commitment to automation. In the past three years, I have built hundreds of internal and external tools to support the needs of a business which are almost completely novel. Most film development labs are not contactless. Most do not exist in a home (we've since built a backhouse to accommodate the growth), and most processing and delivery are not handled by just one person. In order to do this, everything must run flawlessly all of the time.

We started with a whole host of SaaS vendors — Stripe, Zapier, Retool, Google, Cloudflare, Mailchimp, SendGrid, and so on. Few fit our high-volume and/or user-friendly requirements. Over time, we've slowly whittled down to just Stripe, Google, and Cloudflare. Every surface a customer touches is now a completely in-house, purpose-built application. Every tool Holly uses to process orders is the same.

In 2026 we built out a monthly subscription service with a core gallery application and have grown to 200+ paid monthly active users, and won Best Analog Subscription from the Austin Chronicle's Best of Austin series while continuing to drive our growth.

The current production infrastructure of the lab is made up of 24 external API endpoints, 98 internal endpoints, and 88 MCP tool calls. Almost 100% of this is run entirely serverless with Cloudflare Workers, D1, R2, KV, Queues, Email Routing, Email Sending, Workflows, and other functionality I'm probably forgetting.

Customer The lab / Holly Worker / app R2 Step / count
  ────────────────────────────────────────────────────────────────
  surface  24 external API · 98 internal API · 88 MCP tools · 2 autonomous agents

  ┌─►  ① INTAKEcustomer   drops in the dropbox / mails in · fills the drop form
  │
  │      the lab    return label printed if requested · draft invoice created
  │           │
  │           ▼
  │    ② PROCESSthe lab    manages the queue in all-orders · scans the film
  │                 one-click prep + upload — zip + thumbnails → R2
  │                 via the order_up scripts
  │           │
  │           ▼
  │    ③ IN PROGRESScustomer   checks status @ turnaround.atxfilmlab.com
  │           │
  │           ▼
  │    ④ READY → PAYthe lab    one-click finalize in invoices → payment email (email-dispatcher)
  │
  │      customer   pays @ pay.atxfilmlab.com
  │           │
  │           ▼
  │    ⑤ DELIVERcustomer   redirect → downloads.atxfilmlab.com
  │                 files served from R2 — one-off gallery,
  │                 or club-member gallery (negativ)
  │           │
  │           ▼
  │    ⑥ PICKUPcustomer   books a pickup @ unified-pickup
  │
  │      the lab    confirms the pickup · hands over the negatives
  │           │
  ▲           ▼      the loop isn't automatic — it's the customer
  ┊           ┊      choosing to come back and drop off more film:
  └───────────┘   ↺  40% of all-time customers return at least 3 times
  ────────────────────────────────────────────────────────────────
  contactless, end to end — run on 88 MCP tools + 2 autonomous agents

↳ underlined services are live — click one to open the real app, in a sandbox loaded with dummy data. Nothing you do is real.

other projects

other projects

Does Pupper Suffer
doespuppersuffer.com

doesthedogdie.com is great for catching triggers but it's also lousy with spoilers. Since they're nice enough to make a public API available, this service just wraps that public API and is explicit about exactly which triggers it filters for — namely just the things that we care about.

letterboxd

letterboxd

what am I watching lately? Letterboxd (annoyingly) doesn't allow public API access, so this is my own data, curated and enriched by TMDB (who does allow API access). Feel free to poke through my reviews here, but it probably makes more sense to go check out Letterboxd.

films watched
reviews written
average rating
watched this year
lists

recent reviews

loading recent reviews…