The problem#

Running a photography business looks like cameras. It isn't. It's enquiries arriving at all hours, each one needing the same questions answered fast: what kind of event, when, and which photographer is free and right for it. Then the quote, the deposit, the emails, the follow-up.

Do that by hand and two things happen. Good leads go cold while you're shooting, and you pay for a stack of separate tools to hold each slice — money out every month, with the business's data scattered across all of them.

I wanted one system: the whole enquiry-to-booking flow in one place, with the repetitive decisions made automatically and a human still holding the pen on anything that leaves the business.

How does it work?#

The chain, in one line: new enquiry → classification → photographer priority list → suggested action → human checkpoint → timeline update. In full:

input
A new enquiry lands — name, event, date, the details people actually send.
classify
The system reads the full email, not a keyword match, and puts the enquiry in a category: the type of event, what the client needs, what should happen next.
route
A photographer priority list is generated — who to offer this work to — instead of someone remembering who's free.
draft
The outreach is prepared: what to send back and the message workflow (including SMS) to move it along.
checkpoint
Nothing goes out unapproved. A human reviews before any outreach is sent.
timeline
Every step lands on one timeline per enquiry — the audit trail of what happened and when.

Classification quality is the whole ballgame: it decides which photographer gets offered the work, what the client hears back, and whether the enquiry turns into a booking. Read the enquiry wrong and the wrong follow-up goes out fast.

Drop screenshot The enquiry timeline and the photographer priority list.

What did I build?#

  1. The enquiry pipeline. Intake through classification to a suggested action, with the full email content used as context.
  2. Priority routing. Photographer priority lists generated per enquiry, so the offer goes to the right people in the right order.
  3. Outreach prep. The message workflow — including SMS — drafted and queued for approval rather than written from scratch.
  4. The record. One timeline per enquiry: what came in, how it was classified, what was suggested, what a human approved.
  5. The consolidation. Payments, Gmail, bookings and automations unified into one in-house system instead of several subscriptions — PostgreSQL underneath, Gmail API for email, Stripe for payments, a workflow engine running the automations.

I find expensive repetitive work → build AI systems → test them until they're reliable → ship them → measure the business result.

Ferdi

Before and after#

AreaBeforeAfter
EnquiriesManual inbox triage, decisions from memoryClassified on arrival with a suggested action and a photographer priority list
OutreachWritten by handDrafted by the system, sent only after human approval
RecordsScattered across separate toolsOne timeline per enquiry (audit trail)
CostSeveral paid subscriptions, every month$5,000+/yr of subscription spend eliminated
Scale3,000+ events, 30+ photographers, coordinated by handThe same business, run day to day on the system

Technical depth#

  • PostgreSQL
  • Gmail API
  • Stripe
  • workflow engine
  • SMS outreach
  • human-in-the-loop

There's no exotic architecture here — just the right parts, connected properly. PostgreSQL holds the business's data: enquiries, events, people and state. The Gmail API puts email in and out of the same pipeline. Stripe handles payments. A workflow engine runs the automations that connect the steps, so the process is a defined sequence rather than a pile of scripts.

The interesting part is the seam between automation and judgment. Classification can be automatic. Outreach can be prepared automatically. The send stays a human decision — a product decision as much as a technical one.

Production readiness#

This isn't a demo — it's the system running a real business day to day. The safeguards are what make that possible.

  1. Human approval before outreach. The system prepares; a person approves before anything reaches a client.
  2. Audit trail. Every enquiry keeps a timeline — classification, suggestions, actions — so any decision can be traced.
  3. Failure paths. Error handling and retries sit on the integration steps (email, payments, messaging) so a failed call doesn't silently drop a lead.
  4. Access and observability. The system runs under controlled permissions, with logs of what it did — so problems get found by the system, not by a client.

The result#

The clearest proof is that ferdi.photography doesn't run on the old stack any more. Bookings, payments, outreach and follow-up all live in the one system, and the business is public: 3,000+ events delivered, a 30+ photographer network, 4.9★ across 120+ reviews.

$5,000+/yrsubscriptions eliminated
3,000+events delivered
30+photographers
4.9★120+ reviews

30-second walkthrough#

Drop video 30-second before/during/after. Before (0–7s): the manual inbox and the decisions made from memory. During (7–22s): an enquiry entering the CRM, the full email being read, a category selected, the photographer order generated, the outreach draft prepared. After (22–30s): the organised pipeline and the human approval step.

Why this matters to an employer#

Reading a messy process

A manual, undocumented workflow walked in; a modelled, automated system walked out.

Connecting real systems

Email, payments, messaging and a database, integrated and kept in sync.

Keeping humans in control

Automation prepares; people approve. That's how a business comes to trust it.

Running production

Not a prototype — it operates a live business, with the safeguards to match.

FAQ#

Is the CRM a product I can buy?
No — it's an internal system that runs a real photography business. You can see the business it operates at ferdi.com.au; the engineering is the portfolio piece.
What did it replace?
Several paid subscriptions across payments, email and workflow tools — $5,000+/yr of subscription spend eliminated.
What scale does it operate at?
3,000+ events delivered, a 30+ photographer network, and 4.9★ across 120+ reviews.
Where does the AI fit?
It reads and classifies enquiries using the full email as context, then prepares the outreach. A human approves what actually goes out.
What is it built on?
PostgreSQL for data, the Gmail API for email, Stripe for payments, and a workflow engine running the automations.
How do you know it works?
Because the business runs on it, day to day — ferdi.com.au and 120+ reviews at 4.9★ are the receipts.