CEO Works

Rehabilitating former inmates into the workforce is difficult. Building an API to facilitate that process was the easy part.

The Challenge

The Center of Employment Opportunities excels at providing workforce reintegration assistance to those previously-incarcerated through a comprehensive program that teaches a myriad of skills. But they were doing it the old-fashioned way, with lots of paper floating around, with all the problems that arise from lost evaluations and logs. My job, along with a several others on my team, was to streamline the process and make it completely digital.

Through the development of both a mobile Android application and a server-side API that integrated with Saleforce's API, we made the dream a reality.


  • I worked very closely with both a team from IDEO (who provided the design for the application) and an internal Android developer for the extent of the project, and accomplished the project in two phases: phase 1 was an initial, standalone API and database for the mobile application; phase 2 included synchronizing that database to a client-controlled Salesforce account.
  • Although not absolutely necessary, the API supported standard OAuth2 authentication with the mobile application.
  • Keeping data in sync with the Salesforce data proved to be challenging because of the complexity of the client's data and schema on the Salesforce side. It required substantial collaboration with CEO's Salesforce administrator to make the magic happen.
  • Utilizing Apigility for the API layer was a great learning experience. It provided much of what we needed, although in a pretty verbose manner. However, it proved to be very straightforward to maintain over the duration of the project. It also demonstrated that keeping API documentation up-to-date takes some effort!

Source code is not currently available.


  • PHP 5.x/7.x
  • Zend Framework 1/2
  • Apigility
  • Git
  • OOP
  • Data Patterns
  • Apache 2
  • php-fpm
  • Amazon Web Services
  • SQL
  • MySQL 4/5.x
  • TDD
  • Salesforce API


About 13 months
(2015 to 2016)