Back to the Carter-Cash experience

Carter-Cash

Returns & Customer Service

01 / 5

REQUIREMENTS & SOLUTION DESIGN

From an open need to a workable solution

Turning an open-ended request into concrete rules and a workflow that could be delivered

Carter-Cash wanted to let customers initiate returns online. The initial request defined the goal and considered using a logistics platform, but the workflow, its rules, and its technical feasibility still needed to be worked out.

Working with the Carter-Cash project manager, who represented the business and customer service teams, I explored the Woop API and tested the initial ideas against the site’s constraints. I identified what was feasible, proposed the necessary adjustments, filled in the remaining business rules, and then designed and built the web workflow.

  • Requirements analysis
  • Solution design
  • API

02 / 5

CUSTOMER JOURNEY & LOGISTICS

Making complex returns feel simple

Showing each customer only the options that fit their order, even when the delivery was split

A return did not always map to a single delivery. Products could ship separately, arrive on different dates, or be divided across several packages. The rules also changed depending on whether the customer wanted to return the items remotely or at a store.

I translated these situations into a workflow that identifies eligible products, groups them by their original delivery, and creates as many returns and shipping labels as needed. Each step adapts to the customer’s choice: store selection appears only for in-store returns, while split deliveries and multi-package orders are handled by the system.

  • Business rules
  • Customer journey
  • Logistics

03 / 5

TECHNICAL IMPLEMENTATION

Orchestrating a reliable returns workflow with Symfony

The returns workflow had to coordinate complex business rules, several interfaces, an external API, and documents that were not always available immediately. I split these responsibilities across focused Symfony components so each step could be controlled and evolved independently

  • Symfony
  • Messenger
  • Twig

Backend with Symfony

Controllers, forms, custom validators, domain services, and Doctrine entities handle return creation, validate the selected products, and group them by their original delivery.

API and asynchronous processing

Dedicated HTTP services manage communication with Woop, including authentication, error handling, and logging. When a shipping label was not immediately available, Symfony Messenger continued retrieving it without blocking the customer’s journey.

Interfaces and documents

Twig screens, supported by JavaScript, jQuery, and SCSS, dynamically adjust the available choices. Return slips and shipping labels are generated from templates, converted to PDF, and then made available to the customer or attached to the relevant communications.

Testing and reliability

PHPUnit tests cover domain services, grouping rules, and the objects exchanged with the APIs. They complement detailed test plans, functional acceptance testing, and error monitoring after release.

  • Symfony
  • Doctrine
  • Messenger
  • HttpClient
  • Twig
  • JavaScript
  • jQuery
  • SCSS
  • PDF
  • PHPUnit

04 / 5

CUSTOMER JOURNEY & API

One service, regardless of the entry point

Letting customers complete a return on their own or enabling customer service to step in

The online returns workflow could not cover every situation. A customer might encounter an issue on the site or need direct assistance from customer service to create a return.

In a later iteration, I designed APIs for the internal tool used by customer service agents. They can retrieve the required information and create a return from their own interface while reusing the same services and business rules as the web workflow. Customers and agents therefore follow the same rules, even when the return starts from a different interface.

  • Symfony
  • Internal API
  • Customer service

05 / 5

DELIVERY & OWNERSHIP

Owning the solution through production

Remaining accountable for the solution after development, from acceptance testing to ongoing production changes

I supported each evolution of the returns workflow through release: preparing test data and test plans, running acceptance testing with Carter-Cash and its customer service team, verifying exchanges with the connected systems, and monitoring the production deployment.

Once the solution was live, incidents and change requests related to returns were consistently assigned to me. I investigated their causes, implemented the required fixes, and adjusted the rules in collaboration with Carter-Cash project management. I remained the technical point person for this area until I left the project.

  • Acceptance testing
  • Production release
  • Maintenance