Back to Case Studies

LALA SaaS Platform

End-to-end design and evolution of a large-scale loyalty SaaS platform used by multiple enterprise programs. Built from scratch and continuously scaled to support complex business rules, high concurrency, and long-term growth through modularization, DDD, and microservices.

Team Lead2020 - 2026
NestJSPostgreSQLRabbitMQRedisGCPBigQuery

99.99%

Uptime

60%

Cost Reduction

+66

Clients

01.

Context & Problem

Context

101 Grados operates enterprise loyalty programs for sales teams across different companies and industries. Each program defines its own business rules, reward mechanics, catalogs, and logistics workflows.

The company required a centralized platform capable of managing:

  • Thousands of participants across multiple programs
  • Custom point systems and incentive mechanics
  • Reward catalogs and redemption flows
  • End-to-end logistics and fulfillment tracking

Problem

The existing platform (LALA2) was difficult to evolve, tightly coupled, and unable to support the growing complexity and scale of new programs.

Feature delivery slowed down, and architectural limitations started to impact maintainability and long-term growth.

02.

Business Domain Complexity

LALA is not a simple CRUD system. It models a complex business domain involving:

  • Multi-tenant programs with isolated rules and configurations
  • Dynamic scoring and incentive mechanics per client
  • Reward lifecycle management (availability, redemption, fulfillment)
  • Logistics workflows integrated into the core domain
  • Multiple access channels: Admin Web, Participant Web, Mobile App

Each program behaves like its own product while sharing a common SaaS core.

03.

Initial Architecture — LALA3 (Built from Scratch)

When I took full ownership of the platform, I led the complete rebuild of LALA from scratch.

Responsibilities

  • System architecture and domain modeling
  • Backend and frontend implementation
  • Database design
  • Infrastructure setup and production deployments

Technical Stack

  • Backend: NestJS
  • Database: PostgreSQL
  • Frontend: React
  • Cloud: GCP

Outcome

LALA3 delivered a functional, production-ready SaaS platform that replaced the previous system and supported real business operations.

This phase established a solid foundation but revealed new scalability and evolution challenges as usage grew.

04.

Evolution to LALA4 — Scaling the Platform

As platform usage expanded, new requirements emerged:

  • Higher concurrency
  • More complex incentive mechanics
  • Faster iteration for client-specific features

During this phase, I focused primarily on backend architecture and system evolution.

Key Milestones

  • Introduction of advanced mechanics such as Skuul, a learning-based incentive system where participants earn points by completing training and assessments
  • Collaboration with a frontend developer while retaining backend and architectural ownership
  • Improved modularization of core domains
05.

Scaling Decisions — DDD, Messaging & Microservices

To address growing complexity, I gradually introduced:

Domain-Driven Design (DDD)

  • Clear bounded contexts for core domains
  • Explicit domain rules and invariants
  • Reduced coupling between features

Asynchronous Communication

  • RabbitMQ for event-driven workflows
  • Decoupled long-running processes (points calculation, notifications, logistics updates)

Microservices (Selective)

  • Gradual extraction of high-impact services
  • Avoided premature fragmentation
  • Focused on maintainability and operational clarity

This allowed the platform to scale without sacrificing development velocity.

06.

Current Direction — Hexagonal Architecture & Platform Separation

The platform is currently evolving toward:

  • Hexagonal (Clean) Architecture for core services
  • Clear separation between domain logic and infrastructure concerns
  • Program-specific services connected to shared, generic core services
  • Improved testability and long-term maintainability

Cloud & Data

  • GCP as primary cloud provider
  • BigQuery for analytics and reporting
  • Redis for caching and performance optimization
07.

AI-Assisted Development & Delivery Speed

In the latest stage, I've incorporated AI-assisted development (Claude Code) into the workflow.

Rather than focusing on raw implementation speed, I invest time in:

  • Clarifying architectural intent
  • Writing precise prompts
  • Validating system behavior and edge cases

This approach has significantly improved feature delivery speed while maintaining architectural quality.

08.

Key Learnings

  • Real-world SaaS systems evolve continuously; architecture must evolve with them
  • Not every system should be fully microservice-based
  • Clear domain boundaries matter more than frameworks
  • Technical ownership is as much about decision-making as it is about code
  • AI is most effective when guided by strong architectural thinking