Jistik CRE 
January 22nd, 2008
Nitobi designs and builds a lot of projects that are featured on Ajaxian or getting some spotlight attention like Robot Replay or Jiibe, however thats not always the case.
Jistik, a subsidiary of Blackline Technologies Inc., had contacted Nitobi to developer a comprehensive Chargeback Recovery Environment CRE. This full featured web 2 application includes standard Nitobi components like Grid, Calendar and Call Out, however almost all are heavily modified. Before I explain how this system works, let break down what a chargeback is.
Chargebacks occur when a retailer sends an item back from the store to the manufacture or wherever it came. This could happen for a number of reasons, the items arrived damaged or in the wrong color, or the customer returns it for whatever reason.
Chargeback data is imported into the CRE though a variety of formats, XML, CIT or GMAC and once the data arrives it is filtered down by the customer that sent it, and allocated to a collector or admin within the CRE to act on it. Chargebacks are ordered by recovery weight, this is a algorithm that determines the most likely to recover based on a series of configurable variables like recover amount, age, and reason and floats them up to the top of the grid. A collector can process a single chargeback or group several together and process the entire batch.
Each chargeback reason has a separate workbook and process outlined to complete it. A chargeback or batch is complete when it is determined valid and a settlement amount is negotiated or invalid and written off.
The system supports various types of filtering and sorting along with a comprehensive reporting system for tracking just about everything.
From a design standpoint some of the challenges we faced were over engineering the the data structure based on some assumptions about the input data format. These assumptions turned out to be false and broke our rigid data model.
Another neat design feature we implemented is almost all of the xhr requests are funneled though a client side caching engine and routed though to a rendering template which draws or renders the markup, this application truly gets faster over time as once all of the data is fetched only updates sent back to the server.
The application is developed using PHP on top of the Codeigniter MVC engine with MySQL as the primary storage engine.
