Inspiration
Engaging in financial discussions often feels like navigating a thorny thicket, especially for those unacquainted with the finance space. Our aim with InvestingYellow is to transform these discussions into an enjoyable experience by intertwining the process with beloved characters. We aspire to inject a dose of fun and familiarity into the serious business of saving and investment planning. This fusion, we believe, will not only make financial deliberations less intimidating but also more engaging and achievable. Through InvestingYellow, we're striving to demystify the financial world, making saving and investing an exciting and attainable goal for all.
What it does
InvestingYellow enhances personal finance management by intertwining AI-driven insights with user-friendly interfaces. By connecting their Wells Fargo or Robinhood accounts, users unlock a visual portrayal of their financial landscape. Our AI solution dives into this data, generating a tailored report with ratings on savings and investing metrics, actionable investment recommendations, and a fun categorization, such as Balanced Budgeter or Big Spender. Alongside, users can interact with familiar characters in a chat client for a whimsical take on financial discussions. A public leaderboard ranks users based on the AI-generated star ratings from their reports. Through InvestingYellow, finance is not just analyzed, it's experienced.
How We Built It
We crafted InvestingYellow utilizing a modern tech stack to ensure a robust and user-friendly experience. On the frontend, we employed React, TypeScript, and Tailwind CSS to create a sleek and interactive user interface. The backend was structured using Node.js and Express.js to handle various server-side operations efficiently. We deployed a Lambda function on Node.js to manage the addition of user AI reports to the leaderboard table in the NeonDB PostgreSQL Database and to fetch a paginated list of leaderboard users upon load.
Express.js was used for hosting the endpoints that interface with the Plaid API, facilitating transactions, authentication, and balance inquiries for our users. This backend setup resides on an EC2 instance nestled within a Virtual Private Cloud (VPC), orchestrated with an Application Load Balancer (ALB). This ALB, accessible via a subdomain (loadbalancer.investingyellow.com), enables secure communication to the Express.js server on port 8000 through HTTPS.
Our AI report generation is particularly intricate. We parameterize requests to the GPT-4 API, ensuring a structured object type as the return. This process involves splicing the data from four separate requests, which are then amalgamated into a coherent object to populate the AI report so as to reduce the request time.
The infrastructure is meticulously set up for scalability and security. Our domain resides in a hosted zone on AWS Route 53, linking to a CloudFront distribution that's tied to the SSL certificate for investingyellow.com. This setup references an S3 bucket housing the website files, ensuring a secure and speedy delivery of our application to users worldwide.
Challenges we ran into
Transitioning from a local to a global environment posed its own set of hurdles, particularly with the Plaid API integration. The extensive dependencies required by Plaid exceeded the maximum upload size for Lambda Layer zip files, thwarting our initial plan for a serverless solution for the Plaid endpoints. As a workaround, we deployed a virtual server on an EC2 instance, running it as a daemon, and set up a proxy to facilitate HTTPS access through a memorable subdomain (loadbalancer.investingyellow.com).
However, the journey wasn't smooth sailing. The Network Access Control List (ACL) configurations of the subnets, where the Load Balancer and EC2 instance were stationed, alongside the instance's security groups, hindered proper communication between them. This mishap led to the Load Balancer health checks marking the Target Group as unhealthy, throwing us in a loop for over two hours. After identifying and rectifying the issue, we managed to fully deploy our application on investingyellow.com without further ado. This transition not only tested our troubleshooting skills but also underscored the importance of meticulous network configuration in a cloud-based setup.
Accomplishments that we're proud of
Within a span of 36 hours, our cohesive team of four adeptly divided responsibilities and orchestrated a seamless collaboration to bring our vision to life. Our diligent efforts culminated in a robust product, showcasing proficiency in cloud architecture, AI integration, front-end and back-end development, along with seamless bank integration. Moreover, we're excited to have achieved a global deployment within this tight timeframe. Our journey from ideation to execution, overcoming hurdles along the way, has not only yielded a product we're proud of but has also significantly enriched our collective expertise.
What we learned
Embarking on this project broadened our horizons, especially as we navigated through unfamiliar terrains of working with load balancers and virtual servers, transitioning from our comfort zone of serverless solutions. The necessity of proxying HTTP to HTTPS acquainted us with configuring load balancer health checks, linking a domain to access the load balancer, and employing the load balancer for secure HTTP redirection.
Diving into the Plaid API was an enlightening expedition, unearthing the nuanced offerings of various banks. Our current support for Wells Fargo and Robinhood stems from their unique provision of investments, authorization, and transactional access within the Plaid's ecosystem. This venture has not only fortified our technical prowess but also provided a nuanced understanding of banking integrations, setting a solid foundation for expanding our support to a wider array of financial institutions in future iterations.
What's next for InvestingYellow
Firstly, we aim to extend our banking support by embracing more Plaid products catered by various banks, thus broadening our user base and financial data spectrum. Simultaneously, we plan to enrich the GPT-4 API model by introducing additional training layers, ensuring more precise and consistent responses without overloading the prompt. Our vision also encompasses a more extensive analytics suite, including insightful subscription analytics.
Beyond this hackathon, we're committed to advancing this project, with a significant shift from plain React to Next.js on the horizon. This transition will markedly boost performance, especially on less performant devices, by leveraging server-side rendering, pre-rendering HTML, thereby reducing the rendering load on the user's device.
Built With
- amazon-ec2
- amazon-web-services
- aws-acm
- aws-application-load-balancer
- aws-cloudfront
- aws-lambda
- aws-route53
- gpt-4-api
- node.js
- plaid
- postgresql
- react
- tailwind.css
- typescript
Log in or sign up for Devpost to join the conversation.