Inspiration for TRUScore

Affordable credit for all!

Micro and small enterprises play a critical role in sustaining economic development and providing employment in developing countries. They constitute a majority of all firms, account on average for ~60% of total employment, and ~25-50% of GDP. They employ individuals from poorer households and are the predominant providers of work in rural areas.

Despite their key role in sustaining and fueling economies in low-income countries, they face sustained challenges, one of which is inadequate access to affordable credit. The estimated unmet demand is over $5 trillion. This is often driven by a lack of credit history or collateral, and a lack of consistent or any record keeping – all preventing financial institutions from determining an enterprise’s credit worthiness. Digital credit fintechs have filled this void somewhat, but most charge exorbitant interest rates at around 15% per month.

TRUScore utilizes alternative data to free micro-enterprises and small merchants from the curse of being “thin-file,” i.e. not having a data- or digital-footprint. It does so by generating credit assessments using data sources that does not have the constraints of more traditional approaches, such as paperwork, collateral, and historic records. The goal of leveraging self-generated data is the inspiration behind The Real You Score, or TRUScore.

In doing so, it addresses SDG 8.3: "Promote development-oriented policies that support productive activities, decent job creation, entrepreneurship, creativity and innovation, and encourage the formalization and growth of micro-, small- and medium-sized enterprises, including through access to financial services."

TRUScore will particularly benefit young entrepreneurs. Nearly half of the world’s population and about 40% of the world’s unemployed are under 25 years of age, and more than 350 million of them are neither in some form of employment or in school (RTI). The incoming wave of youth entering working-age is largest in Sub-Saharan Africa – the current median age is 18 years, and will increase to 24 years in 2050, compared to 35 years old for the rest of the world (WB). Many of them are potential entrepreneurs, generating employment for themselves, and others.

Yet, the short track record that follows a typical young man or woman compounds the issues noted above, limiting the opportunity for those with an entrepreneurial drive. By assisting in setting them up for success as economically productive entrepreneurs, TRUScore also addresses SDG 8.6: "By 2020, substantially reduce the proportion of youth (aged 15-24 years) not in employment, education or training."

The Facebook Difference: Facebook is a natural choice to reach a significant portion of the world’s population - FB has 2.1 B users, up 15% from 2017, and Messenger is the most popular messaging app in 72 countries, with usage up 30% from 2017 (source). This reach deeper amongst the youth of today who belong to the “mobile generation” – many own a smartphone, surf the internet for information and entertainment, are prodigious users of social media, and more comfortable with digital money compared to earlier generations.

Much of the content is replicated verbatim from F8 Hackathon problem statements here and here.

What it does

TRUScore creates a composite score from four different types of sources:

  • Entrepreneurial Score, E: Generated from asking seven questions informed by entrepreneurial psychology
  • Demographic Score, D: Ideally obtained from existing studies that detail impact of demographic characteristics in a particular jurisdiction, but substituted with stylized figures in this case
  • Freeform Response Score, R: Calculated by considering sentiment analysis and topic analysis of qualitative responses by the user
  • Facebook Page Score, P: Calculated by analyzing existing Facebook page content and interactions, if such a page exists

Data to calculate E, D and R are obtained through interactions through Messenger, while data for P is obtained through FB's APIs.

The composite score, C, is calculated with a weighted average as such:

C = Average(w1*E, D, R, w2*P)


  • E, D, R and P take values between 0 and 1
  • (w1, w2) > 1, as E and P are weighed more toward score than D and R

Three possible recommendations are provided:

  • Strongly recommend, if C > 0.9
  • Recommend with reservation, if 0.5 ≤ C ≤ 0.9
  • Not able to recommend yet, if C < 0.5

How we built it

High-level Structure

Potential borrowers access our service entirely through the messenger interface, making interactions simple and streamlined. After greeting the user, we launch directly into questions, the answers of which we use to calculate the aforementioned score. Many of the questions prompt simple, numeric responses, which we store temporarily for later use. Other questions require the potential borrower to write in greater detail. This text is then sent to our sentiment analysis algorithm (see below), which returns a sentiment score back to the Messenger webhook. For one of our questions (again, see below), we also run topic analysis on the user's response. After the user has answered every question, we use all of this data to calculate the borrower's credit score with the method described above. We grade the Type E questions with an answer key, yielding an accuracy score. Type D questions currently undergo some heuristic methods to generate a score. With a proper dataset, we plan on replacing this with some simple machine learning. Type R responses are passed through the sentiment analysis algorithm, which yields 0-1 scaled scores (see below for greater detail) and in some cases the topic analysis algorithm, too. Penultimately, our Type P analysis involves calculating the sentiment of customer reviews on the borrower's Facebook business page (more on this... you guessed it). Finally, we compute a weighted average of these four scores to yield our final credit number. Ideally, this weighted average would also be replaced with some simple ML, but we do not have access to an appropriate dataset with which to train such an algorithm.

Natural Language Analysis

Using Fasttext, Facebook's text analysis toolkit built on top of PyTorch, we trained a sentiment classifier on 3.6 million Amazon reviews which achieved an f1 score of 0.918 on a validation set of 0.1 million articles. We apply this algorithm in two ways. Firstly, when analyzing the Facebook business page of a potential borrower, we calculate the sentiment of all customer reviews on the site. This way, we are able to ascertain the borrower's clients' opinions on the quality of his or her product. The other application of the sentiment algorithm is to gauge the borrower's hopes of success when answering questions about his or her business. Ideally, we would combine this sentiment score with topic analysis to make determinations such as, "the borrower feels positive about finance but negative about the product." We did not have time to implement this step, but it would be a simple extension of our existing topic analysis and sentiment classification algorithms.

This brings me to our other method of Natural Language Analysis. One of the questions we ask the potential borrower reads, "Could you please tell me what you would use the loan for?" Some answers to this question are certainly better than others. One of the key traits of a superior response is that it addresses certain topics, such as growth, financial security, or inventory expansion. This is why we built an algorithm which detects the degree to which the responder's answer relates to our handcrafted list of topics that we believe are important to address. The algorithm uses custom trained word vectors (trained on the Amazon corpus mentioned above) and K-means clustering to identify the most important topics in the text. Next, we compute the distances from each centroid (topic) to the topics we want to see in the respondent's answer. We use these distances to calculate a score [0,1] representing the degree to which the answer addresses the necessary topics. Note that while we only implement this strategy with one question, it is possible to do so with many more, assuming there are associated topics the potential borrower should address in his or her response.

Challenges we ran into

Hosting ML Hosting the ML models was a rather tricky affair. Both rely heavily on word vectors, which can very easily take up large amounts of space on a machine, making it infeasible to create a docker image. As a result, we had to perform multiple trains of both the sentiment and topic analysis algorithms to ensure their final form was under ~100 MB. This did require the sacrifice of some accuracy, but it was necessary to get both the models running smoothly on a server.

Accomplishments that I'm proud of

The idea of valuating someone's Facebook Page data and using AI ( Pytorch) for credit scoring is something we are proud of. Evaluating the sentiments from the answers of the user and translating it into a credit score is worth noting.

What we learned

Learned about the problems faced by the people in need of financial help, who does not have formal credit history. Understood the ground level situations of lending system for various parts of the works thanks to our subject matter experts. Learned about Page API, Pytorch integration of components. Importance of a well maintained business page on Facebook can be used for various aspects to promote and sustain the business. Injecting digital process into business process can reduce the administrative cost effectively.

It doesn't matter how much time is given in the hackathon, it will be last hour to finish the project.

What's next for TRUScore


One of our most important plans which we, unfortunately, did not have time to implement is the idea of boosting borrower's credit scores via recommendations. During the initial questionnaire, we could prompt the user to provide the contacts of his or her friends and business relations. We could then ask them a new suite of questions, enabling us to compare the recommender's responses with the borrower to ensure veracity. We could even perform NLP analysis on statements of recommendation to determine the good and bad qualities of the borrower. Ultimately, once our user base grows, we will be able to crowdsource more of our information, using recommendations from users who have successfully repaid multiple loans to calculate the initial credit score of new borrowers.

Share this project: