DApact app suite starter kit

Team write-up
Nov 14, 2018 · 10 min read

So you got your login credentials and want to try the apps. Here is what you need to know.

[And if you don’t have your login credentials, fill this form to become a tester.]

TLDR: Go to >>Test Scenario<< section below


What to expect from the DApact Suite

The apps available for testing are alpha versions featuring product core specs. We are releasing access to pre-MVP in order to help lenders and underwriters understand loan origination flow in the DApact network.

The app suite is therefore designed for Scenario Testing, consisting in a loan application (chatbot side), underwriting (PWA side) and disbursement (both).

Testers ought to be familiar with the basic mechanics of loaning through The DApact. If you’re not, here is a cheat video for you to catch up.


Geeky foreword

Tech stack consistency has been our mantra ever since we started this. All our apps are built in Javascript languages and we use exclusively popular and widespread libraries.

  • Borrower’s app is a chatbot. It currently is active on Messenger only: you can read more about why we chose Facebook’s platform in this dedicated Medium article. The chatbot is written in NodeJS, based on HowdyAI Botkit’s framework. Computer Vision is processed through OpenCV-based APIs (better run computing intensive CV stuff on cloud servers). We thank GoogleMaps for all geolocation-related work (includes Reverse Geocoding, Distance Matrix, Places, StreetViews) but these functions are deactivated in the test version of the chatbot as testers may be out our coverage area in Cambodia. Khmer language Speech-to-Text is also provided by Google and is at infancy stage to be honest.
  • Underwriter & Lender’s app is a Progressive Web App. If you don’t know about PWA, read why they will soon take over the world here. Our PWAs are built with React.js and this has turned out to be an inspired choice seeing how many DApp libraries and tools are optimized for React/Redux. We use GraphQL for our API and MongoDB for storage. The test suite only includes the underwriter app at the moment.
PWA are website you can add to a device home screen and use offline just like an app
  • Blockchain transactions run on Ethereum. The test suite uses Kovan public testnet through an Etherscan node. All transactions are in Dai Stablecoin, a reference crypto-backed stable coin with a 1:1 USD peg. The underwriter wallet displays USD values as we don’t want underwriters to deal with cryptocurrencies matters, so they stay focused on their job. While Ethereum gas is currently paid by the underwriters, we’re developing our smart contract to pay this gas on their behalf so they have a bank-like experience (gas fee is included in The DApact markup). Integration with Dharma is on our roadmap for running smart contract logics.

Now you know how it works under the hood, let’s dive into our testing guidelines.


>>Test Scenario<<

You starts the test in the shoes of a borrower applying for a loan (Messenger Chatbot). Imagine you hit the bot through a Facebook ads, or your friend shared it with you. After you completed your application as a borrower, you’ll take on the role of underwriter and log in the PWA, where you can mock the underwriting process and send over a loan application to the network lenders. You can then log in the PWA with the unique lender username/password (different from your other credentials) and fund the borrower’s wallet. Eventually, you’ll log in the PWA as an underwriter again and use your phone camera to scan the loan disbursement QR code received by the borrower’s chatbot.

You’ll need at least two devices in order to complete this test (because a QR code needs to be scan).

n.b.: all our apps are under active development — with the Messenger app being tested in the provided production environment. You may run into bugs while testing.

👨🏽‍🔧 Borrower’s Chatbot

A loan application consists in providing desired loan specs, a geolocation, supporting documents, and a contact number. The bot will guide you throughout the process. Nevertheless, we’ve listed what you’ll need to know throughout the test. This list is ordered following the conversation flow so we’ve numbered the steps:

  1. The bot is designed so that applicants never need to type in free-form text (prone to error), but the test suite starts with a login step where you’ll need to provide your tester credentials
  2. When asked if you want to read the lending terms, skip and start the application right away to speed up your test
  3. The chatbot then asks how much you want to borrow: ⚠️ select USD 10 because we have a limited supply of Dai ⚠️ (even if this test runs on a test Ethereum blockchain with “fake” money, it’s hard to get large quantity of any token).
  4. When asked for your home location, you’ll be shown a map. In this test version, you’ll be able to pin your location anywhere on the map. You must ⚠️ pin it in Phnom Penh, Cambodia ⚠️ or you’ll be deemed out of our coverage area
  5. You’ll then be asked for a list of personal documents, and they’ll go through a computer vision screening that’s optimized for Cambodian documents. Except if you have your own Cambodian documents, you should ⚠️ download this set of sample documents ⚠️ to be able to progress in the application process as the chatbot checks you’re sending the expected documents. Short version: you’ll need 1 id card, 1 utility bill, 1 family book and 1 reg card (download is possible from smartphones too). We’ve made the pack so you can test the reliability of the bot’s Computer Vision and OCR abilities with skewed, blurry and low resolution images.
  6. Next step is to send a voice mail to the bot explaining what is your purpose for getting a loan. Why audio? because local people struggle with typing khmer script and find it time consuming, and so we came up with a Speech-to-Text solution to handle complex information provided by borrowers. The bot uses Natural Language Processing (NLP) technics — mostly bags-of-words — to classify the loan in a model category (agriculture, mobility, education, connectivity, emergency, business, energy, life event). You’ll need khmer audio to complete this step, so if you can’t speak Khmer ⚠️ download these sample voice mail ⚠️.
  7. Now you will send your personal picture to the bot. Don’t try to cheat him, he’d know.
  8. You’ll eventually be asked for a phone number. After you complete this step, your application has status “completed” and will be available in the underwriter app.
  9. Once you complete an application, you can retry the process at anytime by sending a message to the bot. If your previous application was already approved by an underwriter (PWA side), restarting will create a new additional application. If your previous application was not yet approved, it will cancel the former application and replace it with a new one.

🤖 Use this chatbot decision tree while testing 🤖 It will provide you with a design flow overview and walk you through completing a loan application in a few minutes. Finally, note that you can order the bot to restart the application from scratch at any moment by sending him “reboot”.

👩🏾‍💻 Underwriter’s PWA

Now you have filled a loan application, it’s time to get in the shoes of an underwriter and log in the PWA.

We slice the loan origination process into 6 different stages, and each of the app category represents one stage (as numbered on the screenshot):

  1. Chatbot pre-screening stage
  2. Underwriter pre-screening stage
  3. Underwriting stage
  4. Funding stage
  5. Disbursement stage
  6. Live stage

Therefore you should consider these categories represent a loan lifecycle. It will move from stage 1 to 6 throughout the origination process.

  1. In Progress (chatbot pre-screening)

This page lets you check the application that are being screened by the chatbot. If you check this page while you talk to the chatbot, you should be able to check at which stage you are in the application.

2. New Application (Underwriter pre-screening stage)

All completed chatbot applications land on this page. Every underwriter have access to pre-screening information on every application in his own personal coverage area. They can check basic information about the applicant as well as provided personal documents. When an applicant fits an underwriter criteria, she can “book him” for effective underwriting. Think of a Grab driver accepting a ride.

3. Meeting (Underwriting stage)

Once an underwriter has accepted your application, she has access to your phone number, at which point she will call you to arrange a meeting. Now this is classic, legacy, time tested microfinance process entering the game. The underwriter will go herself (or she will send a staff if she represents an organization) for a “field check”. A field check consists in meeting the loan applicant, assess the reality of his claims, check the materiality of his documents. Given that the underwriter will be responsible for the repayment of the loan, it is his decision to trust the applicant (approve) or not (reject). However, in order to approve the application, she must upload her own copies (photo) of applicant’s id card, utility bill and motorcycle reg card (the loan collateral for the pilot). This is mandatory so that two parties sign a confirmation of the same set of documents (the borrower through the chatbot and the underwriter through the PWA). Therefore, if supporting documents have been tempered with, it means there was a collusion between the borrower and the underwriter. This requirement makes the KYC much more reliable. For the purpose of testing, an application can be approved without uploading an additional copy of the documents.

4. Funding Stage

This happens on lender side. Once an application is completed, it is made available to lenders for funding. After a lender has sent the loan principal amount into the borrower’s wallet, the loan is considered funded. A chatbot message notifies the funded applicant that he can go withdraw his loan at the underwriter’s.

>>More detail in the funding stage in the Lender’s PWA section below<<

5. Disbursement stage

Along with his notification, the applicant receives a QR code. As it is scanned, this QR code will generate a transaction from the newly funded borrower’s wallet towards the underwriter’s wallet.

In order to scan the QR code, you should use the scan QRCode option in the “Pending transaction” section of the app.

Note that the borrower does not know what’s happening under the hood or that he has a wallet: he just knows he has to produce his QR code to the underwriter. Once the underwriter scans it, the loan amount is credited to his wallet. This is when he provides the corresponding amount in cash to the borrower. The loan can be funded in any local currency (USD or KHR for the case of Cambodia) but it is always labelled in USD within the app, as the underwriter’s wallet manages Dai Stablecoins under the hood (with a 1:1 peg on USD)— so the loans are actually labelled in Dai.

6. Live Stage

After the disbursement QR code has been scanned, a confirmation message is sent to the applicant — who now becomes a borrower. From there on, the loan will follow its normal lifecycle, with installments occurring on a monthly basis (as is the case for our pilots). The installment process mirrors the disbursement as the cash flows from the borrower to the underwriter and the Dai coins flow from the underwriter to the lender.

👩🏼‍💼 Lender’s PWA

Once you’ve approved an application in the “meeting” pane in the Underwriter PWA (stage 3), you should now log in the PWA again with the unique lender login provided in the invitation email you’ve received. These unique credentials give you Lender access.

There are two steps in the lending process: project approval and contract funding.

1. Project approval

An underwritten project is made available to all lenders in the network, who are given the option to approve it. Once approved, an export file containing the project data (applicant profile, etc.) is made available to the lender’s information system through API, and the lender’s own business logics apply. For a retail lender, this logic would be to display the applicant profile on its crowdlending platform for example. For a bulk lender such as a development agency, the logic would be to automatically finance loans with a predetermined purpose (women empowerment, electrification in specific areas, schooling etc.).

2. Contract funding

Contract funding displays the borrower’s wallet address (random string of characters starting with 0x) and allows the lender to definitely approve the loan. Copy the borrower address in your clipboard so you can paste it later, and click “approve”. This triggers a redirection to Wyre’s testnet. You can use the same credentials to log into Wyre’s lender account.

Once logged in, you can choose to fund your Wyre account through wire transfer or another payment. Try this step to fund your Wyre account with dummy money in your local currency.

Add funds to Wyre

You should then convert your funds from your local currency to Dai stablecoin. 1 Dai costs 1 USD (+/- 0.25%), paste the borrower’s address and click “send”.

⚠️ Only fund your $10 loan as we (and Wyre!) have a limited supply of Dai on Kovan test net. Wyre won’t process large transactions.

That’s it! the borrower got funded! 🎉

You should now log in the PWA as an underwriter and scan the QR code received in the chatbot (see stage 5 in underwriting)

The DApact

True end-to-end microlending system

    Team write-up

    Written by

    True end-to-end microlending system

    The DApact

    True end-to-end microlending system

    Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
    Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
    Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade