Skip to content

This repository is for a web application that aims to provide users with information about the consumer-friendliness of financial institutions, products, and services.

Notifications You must be signed in to change notification settings

Camoen/Financial-Protection-Advisor

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Financial Protection Advisor

This repository is for a web application that aims to provide users with information about the consumer-friendliness of financial institutions, products, and services. The application was built with Ruby on Rails, Bootstrap, HTML/CSS, Oracle Database, and a hefty amount of SQL.

Table of Contents

Setup

Oracle Setup

  1. The database.yml file (located at setup/database.yml) must include valid credentials for an Oracle database. Drop this file in Sites/complaintapp/config.
  2. The data required for the database is provided on Data.gov by the Consumer Financial Protection Bureau. After pre-processing the data, and then importing it into the Oracle database, the following table was obtained. Note that, within the app's code, the table is referred to as camoen.complaint, so that all Oracle users with permissions can appropriately access the data.
    Complaint Table with 18 Attributes
  3. For easier querying, product and service types in the database are grouped into views. The setup/oracle_setup.sql file contains the setup of these views, as well as the commands required to create and grant permissions for other Oracle users.
    Product and Service Views

Ruby on Rails Setup

  1. Download Oracle Instant Client (32 bit) and add it to the system PATH variables.
  2. Install Ruby on Rails. Ruby 2.3 Installer worked well at the time of development.
  3. Node.js may also be required.
  4. Once all setup is complete, the server can be started via using the rails s command from Command Prompt or Git Bash (while inside the local directory).

Application Features

Landing Page

Financial Protection Advisor - Landing Page

Search Directory

This page includes descriptions and links to the results of six predefined queries. Additionally, the custom search feature, which provides users with the ability to filter for specific data, is located at the bottom of the page.

Financial Protection Advisor - Search Directory Page

Company Rankings

This page is reached by clicking the "Company Rankings" button. An SQL query is ran to determine the 5 least consumer-friendly companies for each year, as measured by their average monthly number of complaints. Then, data for all years is gathered for each company that ever appears in this top 5. Data is returned both as a line graph, allowing for easy visualization of the data, and as a table. To reduce clutter, every line or bar in the returned graphs can be toggled on or off by clicking its related label.

Financial Protection Advisor - Company Ranking Results

Product Rankings

This page is reached by clicking the "Product Rankings" button. The average monthly number of complaints is computed and returned for each of the financial products and services in the database.

Financial Protection Advisor - Product Ranking Results

Timeliness Rankings

This page is reached by clicking the "Timeliness Rankings" button. There are two sections on this page, both of which return the five worst-performing companies from each year. The first section ranks companies by their yearly number of untimely responses, and the second section ranks companies by the percentage of their responses that were untimely.

Financial Protection Advisor - Timeliness Ranking Results

Dispute Rankings

This page is reached by clicking the "Dispute Rankings" button. There are two sections on this page, both of which return the five worst-performing companies from each year. The first section ranks companies by their yearly number of disputed responses, and the second section ranks companies by the percentage of their responses that were disputed.

Financial Protection Advisor - Dispute Ranking Results

Company Deep Dive

This page is reached by selecting a company (in this case, EQUIFAX, INC.) and clicking the "Company Deep Dive" button. Note that the dropdown list allows the selection of any company that exists in the database—on the initial page load, this list is dynamically generated from the results of an SQL query. Monthly counts of complaints received by the selected company are charted for each year of data available in the database. This feature allows the user to look for trends in an institution's performance over time.

Financial Protection Advisor - Company Deep Dive Results

Product Deep Dive

This page is reached by selecting a product or service (in this case, Credit Reporting) and clicking the "Product Deep Dive" button. Monthly counts of complaints received about a particular product are charted for each year of data available in the database. This feature allows the user to look for trends in a product's performance over time.

Financial Protection Advisor - Product Deep Dive Results

Custom Search

This feature, located at the bottom of the search directory page, aims to provide users with the ability to filter for results that interest them. Results may be returned in one of eight different ways, depending on the user's selected categories:

1) Only company selections: All data, for all selected companies, will be used in the generation of results.

2) Only product/service selections: All data, for all selected products or services, will be used in the generation of results.

3) No selections: All data will be used in the generation of results, but only the five least consumer-friendly companies for any given year will be returned. If a company only appears in the "top 5 worst performers" for one year, all of its data (for every year) will still be returned.

4) Both company and product selections: For every selected company, only complaints about the selected products or services will be used to generate results. For instance, assume that "Banking", "American Express Company", and "Discover Bank" have all been selected. When results are generated, the only complaints about American Express and Discover that will be utilized are those related to Banking. All other complaints that have been lodged about the selected companies (for example, those about credit cards) will be ignored.

Date Range: Each of these four options can return "dated" or "undated" results, based on the user's selection of a date range—this effectively doubles the number of ways that results may be returned. Undated results utilize all data in the database, and the returned results include an average monthly complaint number for every year. Dated results return explicit monthly complaint counts for every month and year represented in the database.

Filters: The "Complaint Submission Method", "Demographic", and "State Selection" filters narrow down the data used when generating results, but don't lead to any further variation in the way results are returned. For example, if "E-mail" and "Fax" are selected, only those complaints received via e-mail or fax will be considered. Note that the "Older American" and "Service Member" demographics overlap, so the "Not Older American" and "Not Service Member" filters are provided in case the user wishes to completely ignore the complaints of either demographic. The default behavior (when all filters are unselected) is to utilize all data in the database. This also applies if, for example, submission method and demographic filters are chosen, but a state filter is not selected. In this scenario, only complaints matching the submission method and demographic filters will be utilized, but data from all states will still be considered.

Custom Search Form

Similar to the Company Deep Dive dropdown list, the "Company Selection" category is dynamically populated when the page loads, to ensure that every company in the database is represented. The list is in alphabetical order but, due to the list's size, it's recommended to use Ctrl+F to locate a particular company.

Financial Protection Advisor - Custom Search Form

Custom Search Results

For all "dated" results, the full range of dates has been selected. This range can be narrowed in accordance with the user's specific interests.

1a) Only company selections (undated):

The selected companies are "American Express Company", "Bank of America, National Association", "Discover Bank", "Equifax, Inc.", "Experian Information Solutions Inc.", and "Transunion Intermediate Holdings, Inc."

Custom Search Results - Only Company Selections (undated)

1b) Only company selections (dated):

The same companies are selected as in the previous results.

Custom Search Results - Only Company Selections (dated)

2a) Only product selections (undated):

This is the same as the Product Rankings results, but it includes only the selected products.

2b) Only product selections (dated):

In this example, all products and services have been selected.

Custom Search Results - Product Only (dated)

3a) No selections (undated):

This is the same as the Company Rankings results.

3b) No selections (dated):

Custom Search Results - No Selections (dated)

4a) Both company and product selections (undated):

The selected companies are "American Express Company", "Bank of America, National Association", "Discover Bank", "Equifax, Inc.", "Experian Information Solutions Inc.", and "Transunion Intermediate Holdings, Inc." The selected products are "Credit Card" and "Credit Reporting"—only complaints about these two products will be considered in the results.

Custom Search Results - Company and Product Selections (undated)

4b) Both company and product selections (dated):

The same companies and products have been chosen as in the previous results.

Custom Search Results - Company and Product Selections (dated)

About

This repository is for a web application that aims to provide users with information about the consumer-friendliness of financial institutions, products, and services.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 54.7%
  • HTML 37.0%
  • CSS 6.3%
  • Other 2.0%