Above Lending
April 2022
Software Design

I joined the Above Lending engineering team as they were starting preparations to rebuild their loan origination platform. While the existing system confirmed the viability of the product, it had become clear that it would not support the long-term growth and maintainability objectives for the organization. Alongside key members of the Above Lending engineering and product leadership team, two other engineers and I were tasked to design and build a new version of this system. The core features of this application would need to include everything from the importing of leads from another system, through the entire application, verification, and underwriting processes, through to onboarding of the loan into LoanPro, a loan servicing platform.

Above Lending had previously decided to leverage an off-the-shelf CRM platform as the foundation for this system, to offload many of the core responsibilities for this application (e.g. agent task management, email marketing, workflow automation, etc) and expedite the initial implementation of this rebuild. An evaluation of CRM systems had been done and Quickbase was selected as the CRM system to proceed with. However, a more detailed evaluation and prototype of this integration revealed numerous discrepancies between the capabilities of Quickbase and the needs of this application, including very low API rate limits, limited development/deployment management tools, and general API complexity. Based on these findings, we decided to reevaluate the CRM systems selected for this project.

After further review, Freshsales was identified as a better fit for this project. Over the course of the next four months as a team of around four engineers, we implemented the Above Lending origination process within a new Ruby on Rails backend service. I was personally responsible for the following areas of this project:

  • Architecture Proposal: The initial scope of this project was to replicate the existing functionality of the legacy originations platform. Unfortunately, there was little documentation covering how this system worked. Despite the poor quality/readability of the existing codebase, as indicated by the fact that it was being rebuilt from scratch, I extracted and documented an overview of the architecture of this system, including the roles and responsibilities of each internal component and third-party system integration, a definition of the internal data models, and a workflow diagram outlining the operations involved in the origination of a new loan within the Above Lending platform. From this I constructed a proposal for the new implementation of this system, identifying how the CRM system would be leveraged and integrated into this platform.

  • Decision Engine API Design: An third-party platform was used to manage the decision engine for the Above Lending platform, producing offers for a prospective borrower and identifying the set of underwriting activities required to approve the application. I worked collaboratively with this third-party engineering team to design a JSON-based API that they would expose to provide the necessary information for this functionality.

  • Lead Ingestion: All prospective borrowers to be processed by this system are received daily within a large CSV file delivered via an SFTP server. I designed and developed the process for retrieving this file, parsing and validating it's contents, extracting the necessary information, and creating or updating the necessary set of records within the backend service's internal database and within the Freshsales application. Fault tolerance, observability, and performance were key considerations throughout the implementation of this daily job.

  • Contract Management: After evaluating the out of the box integration with DocuSign and finding several blocking limitations, we determined that we would need to build a custom integration with DocuSign to manage the borrower's contract signing process. I designed and developed this integration, including a set of calls made into DocuSign's API, an internal API endpoint to receive and process webhook subscriptions related to our contracts, and the integration of an embedded signing workflow into the Above Lending frontend application.

  • Loan Onboarding: Once a loan has been approved, it must be handed off to the existing servicing systems used by Above Lending to ensure all servicing operations for the loan is properly handled (e.g. initial funding, notifications, payment collection, etc). Unfortunately, the process for this "hand-off" was not clearly understood or documented. The best definition we had was to "do it the same way as the legacy system". Through a detailed investigation of the behavior of the legacy system, I identified and documented the necessary sequence of steps for onboarding an approved application. I then translated these into a design for how this functionality would be implemented within the new platform and helped to decompose this work into a set of implementation tasks.

We have since deployed the new originations platform alongside the existing one and are slowly migrating traffic over to the new system. This approach reduced the risk involved in this migration and has allowed us to catch any gaps and/or incorrect assumptions in the initial implementation early, correcting them before they impact additional borrowers. We're excited to ramp up utilization of the new originations platform, leveraging more of the capabilities it provides and having the flexibility to efficiently add new features to it as opportunities arise within the business.