IC

Iheb Chatti

Full-stack product engineering, scalable APIs, async workflows, and cloud delivery

Back to case studies

Marketplace and travel operations

Lokafy

Travel marketplace booking platform where reliability, integrations, and flow consistency affected conversion.

Worked on a booking platform serving 10k+ monthly users, where backend state consistency and partner reliability shaped user journeys.

Problem

Booking depended on partner APIs that were slow, inconsistent, and outside the team’s control, creating real risk of broken multi-step flows, duplicate partner actions, and inconsistent booking state.

My Role

Designed booking state transitions and backend validation for multi-step flows
Owned partner-facing API integrations and recovery behavior
Introduced async partner-sync flows to protect the booking path from unreliable dependencies
Supported AWS/GCP deployment workflows and Jenkins-based delivery changes

Approach

I treated booking as an explicit workflow, moved fragile partner synchronization into recoverable jobs, and tightened the boundary between frontend state and backend truth.

Impact

Stabilized booking flows under unreliable partner APIs.
Reduced inconsistent state across multi-step reservation journeys.
Turned partner-sync failures into recoverable flows instead of blocking booking progress.
Supported safer release behavior across API, integration, and delivery changes.

Key Decisions

Modeled booking as explicit state transitions -> prevented inconsistent multi-step reservation flows.
Wrapped partner variability behind backend contracts -> kept product logic from drifting around third-party behavior.
Moved partner sync into recoverable background jobs -> protected the booking path from slow or unstable APIs.
Aligned backend validation with critical frontend flows -> reduced state mismatch across product steps.

Booking workflow and partner boundary design

How a user action becomes durable booking state before partner synchronization and recovery continue outside the request path.

flowchart LR
    A[User Booking Flow] --> B[Frontend Client]
    B --> C[Booking API]
    C --> D[Validation & Pricing Rules]
    D --> E[(Booking Data)]
    C -. retry jobs .-> F[Background Workers]
    F --> G[Partner API Connectors]
    G --> H[Partner Systems]
    F --> I[Status Sync & Recovery]
Solid arrows: primary booking pathDashed arrows: partner sync and retriesRounded nodes: user-facing steps

My Ownership

Designed booking state transitions and backend validation for multi-step flows
Owned partner-facing API integrations and recovery behavior
Introduced async partner-sync flows to protect the booking path from unreliable dependencies
Supported AWS/GCP deployment workflows and Jenkins-based delivery changes

Tradeoffs

Added stricter backend validation to keep booking state consistent.
Introduced async recovery paths, which required clearer monitoring and replay handling.

What I’d Improve

Add clearer idempotency controls around partner callback and resync flows.
Introduce distributed tracing across booking API, workers, and partner sync flows.
Expand automated contract checks around third-party integration responses.