How I Automated an Entire Customer Lifecycle with AI
A deep dive into Flo-bot, how I connected 9 different services to automate everything from first enquiry to shipping confirmation, and what I learned along the way.

The Manual Nightmare
Imagine running a custom sportswear company. You've got 40+ projects on the go at any time, each one moving through a lifecycle that looks something like: enquiry, design brief, design proof, client approval, webshop build, order collection, production, shipping, and follow-up. Every single stage transition needs a specific email. Some need follow-ups if the client goes quiet. Some need data pulled from spreadsheets. Some need entirely new web pages built.
Now multiply that by 40 projects, each at a different stage, and you start to see the problem. The team was spending hours every day on communications that followed predictable patterns. The emails weren't difficult to write, they were just relentless. And when things got busy, follow-ups slipped, webshops got built late, and the admin ate into the time that should have been spent on creative work and client relationships.
That was the situation at Stolen Goat, and it's the problem that led me to build Flo-bot.
What I Built
Flo-bot is a Node.js Slack bot that connects 9 different services into a single automation engine. It's not a chatbot and it's not a simple Zapier-style integration. It's a full business operating system that orchestrates the entire customer lifecycle, from the moment an enquiry lands to the day the product ships.
The connected services: FLO (my custom project management tool), Slack, Gmail, Mailchimp, WooCommerce, Supabase, the Claude API, a .NET business database, and an Obsidian vault that serves as the configuration layer.
How the Core Loop Works
The fundamental mechanism is deceptively simple: status changes trigger email drafts.
When a team member moves a project to a new status in FLO, say, from "Design Proof Ready" to "Awaiting Client Approval", Flo-bot detects that change within 15 minutes. It looks up the corresponding email template in the Obsidian vault, pulls in the relevant project data from the database (client name, project details, any specific notes), and sends all of that to the Claude API.
Claude drafts the email in the right tone, with the right context, following the template structure. That draft gets posted to a Slack channel for the team to review, and simultaneously created as a Gmail draft. The team reads it, makes any tweaks they want, and hits send. If it looks perfect, which it usually does after the first few weeks of refining templates, they just send it straight away.
The system supports 12+ trigger statuses covering the full lifecycle: enquiry acknowledgement, design brief request, proof delivery, approval confirmation, webshop launch notification, production order confirmation, shipping updates, and several types of follow-up.
Beyond Email: The Full Feature Set
Email drafting is the core, but the automation goes much further:
- Automated webshop creation: When a project reaches the right stage, Flo-bot builds a complete WooCommerce webshop, products, size variants, images, pricing, and a Mailchimp signup form. What used to be a half-day manual job happens automatically.
- Supplier order sheets: Production orders are generated by pulling live data from the business database and formatting it into the sheets that suppliers expect. No more copying figures from one system to another.
- Inbox scanning: Flo-bot monitors Gmail inboxes and drafts contextual replies to incoming messages, using project data to ensure the response is relevant and informed.
- Follow-up system: A configurable nudge/flag mechanism tracks how long it's been since a client responded. After the configured interval, it drafts a follow-up. After a longer interval, it flags the project for attention.
- Prospect enrichment: For new leads, the bot researches the company online and uses Claude to produce structured analysis reports, company size, industry, potential fit, and recommended approach.
- Sales pitch generator: Give it a company URL, and it scrapes the website, generates custom jersey design concepts based on the company's branding, and creates a tailored sales proposal. All from a single Slack command.
The One Rule That Makes It All Work
Nothing sends automatically. This is the single most important design principle in the entire system.
Every email is a draft. Every action is posted to Slack for review. The team stays in control at all times. This isn't just a safety net, it's what makes the system trustworthy enough to use aggressively. Because nothing goes out without a human approving it, I can automate confidently. The bot can draft emails for every status change, scan every inbox, and generate proposals for every prospect, because there's always a human in the loop before anything reaches a customer.
This principle also meant the team adopted the system quickly. There was no fear of the bot sending something embarrassing. It's a drafting assistant, not an autonomous agent.
The Vault-as-Config Pattern
One of the architectural decisions I'm most pleased with is using an Obsidian vault as the configuration layer. Email templates, tone guides, SOPs, and trigger mappings all live as Markdown files in a shared vault. The team can edit these documents without touching any code.
Want to change the tone of follow-up emails? Edit the tone guide. Need to add a new lifecycle stage? Create a new template file. Want to adjust how long before a follow-up gets triggered? Update the timing configuration. All of this happens in plain text, in a tool the team already knows how to use, with no deployments required.
This separation of business logic from engineering means the system gets smarter over time without requiring developer involvement for every tweak.
Results
The impact was immediate and significant. Email drafting that took 30–45 minutes per project stage now takes seconds. Webshop creation went from a half-day job to fully automated. Follow-ups that used to fall through the cracks during busy periods now happen consistently and on time.
But the real win isn't time saved, it's attention freed. The team now spends their energy on relationships, creative work, and strategic decisions rather than repetitive admin. The bot handles the predictable work, and the humans handle everything that requires judgement, creativity, and care.
What I Learned
A few lessons from building and running Flo-bot that apply to any automation project:
- Start with the highest-volume manual task. For us, that was status-triggered emails. Automating the thing that happens most often gives you the biggest immediate return and builds confidence in the system.
- Always keep humans in the loop. The draft-first, send-never principle isn't just about safety, it's about trust. If your team doesn't trust the automation, they won't use it.
- Use existing tools where possible. I didn't build a new email client or a new project management tool from scratch (well, I did build FLO, but that's another story). I connected the tools the team already used and automated the gaps between them.
- Make configuration accessible. The Obsidian vault approach means non-technical team members can adjust the system's behaviour. If only developers can change how the automation works, it'll never keep up with the business.
- Automate the boring bits, not the interesting bits. Nobody misses writing the fifteenth "your design proof is ready" email of the week. But the creative work, the relationship building, the strategic thinking, those should stay human.
If your team is spending hours on predictable, repetitive communications, there's a very good chance a system like this could give them that time back.
Pixelshed
Building websites, internal tools, dashboards and automations for small teams.