Summary
- What Is It? – REST API for gathering statistics about Investment Portfolio Recommendation System
- Technologies Used – TypeScript, Vue.js, GraphQL, Swagger
-
My Accomplishments
- My microservice was used in production to improve the Smart Advisory System, providing value to customers and increasing subscription sign-ups and renewals
- Gained hands-on experience with the Agile methodology
- Created customer facing documentation for new API
Background
FactSet has a subscription based feature that provides Intelligent Notifications about a user’s portfolio. For example, an alert might say that stock A has an earnings report coming up, and this stock typically drops around earning, so the investor might want to sell. Another alert might be that stock B is outperforming its sector, so the investor might want to look into why and capitalize on that. This is very useful information. The problem is that not all alerts were useful. The purpose was to filter out useless information. When an alert is sent too often and is not important enough, it is not filtering out the useless information. My project was designed to fix the problem with these alerts.
Purpose
The purpose of my project was to help improve the value of these alerts and ensure that investors know that they are useful. I created an analytics microservice to gather statistics about our Intelligent Notification System. These statistics allowed us to tune the system, ensuring that the notifications were always high quality and relevant to the investor. This ultimately provided a greater value to investors using the system, increasing subscription sign-ups and renewals.
How I Did It
I created a REST API microservice that was built with TypeScript. Unfortunately, I cannot share many of the details of this project because it is in a production system, but I can give a high level overview. My microservice was designed to gather statistics about the Intelligent Notification System and its usage. It would gather stats such as the rate that an alert fires in a particular sector, or how often an investor clicks on an alert. Many of these statistics were stored in other microservices. Others were derived statistics that required complex calculations. In the end, my microservice gathered all of these statistics and presented them in one consolidated location. These statistics were then used to tune the Intelligent Notification System to get closer to our target stats. This increased the value of the alerts and made investors less likely to ignore them.
The schema for my service was defined using GraphQL. This allowed me to define the structure and types of the data that would be returned. It also helped when it came time to document my microservice, which I used Swagger to do. These two technologies allowed my API to be extensible and easily used; two things that are important in a corporate environment.
What I Learned
This project taught me a lot. It was my first time writing software in an enterprise setting, which brought lots of learning experiences. First, I learned how to integrate into a team and pick up all of the technologies and standards already being used. This was made even more challenging by the fact that the internship was completely remote, but it was a valuable experience that has already proven to be helpful. Second, I learned how to drive a project and deliver results in a short period of time. This is something that school did not prepare me for, since everything is already planned out and assigned. Getting the work done and making an impact on the team is something I am very proud of. I am also proud that my work helps the customers who use it, and helps the company by increasing value to its customers. Lastly, I learned how to work independently. I struggled at the beginning with asking too many questions and having trouble making progress. It was challenging, but I made big improvements by the end of the project which allowed me to work faster, more efficiently, and more independently.