Welldoing.org is a leading UK therapist directory and mental health content platform. The challenge was to merge two fractured systems—a basic directory and a separate WordPress blog—into a single, cohesive SaaS platform.
01. The Exceptions
The business faced critical technical debt and UX barriers that hindered growth. Operating on disconnected systems created friction for users trying to find help:
- Fragmented Architecture: Users reading articles had no direct path to book a therapist. The two databases did not talk to each other.
- Matching Friction: Finding the “right” therapist was a manual, trial-and-error process for vulnerable users.
- Booking Disconnect: Therapists managed their own separate booking systems, leading to lost appointments and revenue.
02. The Architecture
1. Platform Unification (October CMS)
I architected a complete migration, merging the blog and directory into a single, unified platform using October CMS (Laravel). This allowed us to build custom “Therapist” models that linked directly to content tags, creating a seamless user journey from reading to booking.
class Therapist extends Model {
public $belongsToMany = [
'specialties' => ['Welldoing\Directory\Models\Specialty']
];
}
2. The Matching Algorithm
I developed a bespoke “Therapist Match” system. This wizard guides users through a series of diagnostic questions and uses their location to filter results. The logic scores therapists based on relevance to the user’s specific needs (e.g., CBT, Psychoanalysis) and proximity, returning the best matches instantly.
3. Diary & Stripe Integration
To close the loop, I built a custom Diary System integrated directly into the platform.
- Real-time Availability: Therapists manage their slots in a custom dashboard.
- Seamless Booking: Users can book a slot directly from the search results.
- Stripe Payments: I integrated the Stripe API to handle secure payments, automating payouts to therapists.
// Booking Logic Simplified
public function bookSlot($user, $therapist, $slot) {
Stripe::charge($user->token, $slot->price);
$this->diary->reserve($therapist->id, $slot->time);
return "Appointment Confirmed";
}
03. System Output
The unification transformed Welldoing.org from a blog into a functional SaaS platform.
- Unified User Journey: Users can go from reading an article to booking a confirmed appointment in under 2 minutes.
- Revenue Generation: The automated booking and payment system created a new revenue stream for the platform.
- Scalability: The October/Laravel stack provided a robust foundation for years of growth.