/PROJECT · complete

FinWise AI

Retirement planning for Indian users, with a calculator, a chat agent and monthly email reminders.

On this page

Overview

Retirement planning in India involves local products (EPF, NPS, SIPs, FDs) and a long horizon, and most people have no simple way to check whether they are saving enough. The README says the project set out to make retirement planning more accessible.

How it works

The front end is a single-page React app built with Vite. The page has a hero section, a Basic/Advanced mode explainer, a feature list and a calculator. The chat is a Botpress Webchat widget loaded from CDN scripts in index.html and opened from a floating bubble. The chat flows themselves live in Botpress, not in this repo. The chat panel in the hero section is a static mock-up.

Landing page hero with the static chat mock-up and the Basic and Advanced mode cards

Landing page with the Botpress chat widget open and empty

The calculator is plain JavaScript in src/utils/retirementCalculator.js. It grows today’s expenses by inflation to retirement, finds the corpus needed to fund retirement using a real rate of return, compares that with the projected value of existing savings and monthly SIPs, and solves for the monthly SIP needed to close the gap.

Retirement calculator with default inputs showing a corpus shortfall and the monthly investment needed

server.js is a separate Express app. It has one endpoint, POST /api/reminders/subscribe, which stores a name and email in memory. A node-cron job runs daily at 09:00 and sends a reminder email through SMTP only when the date is the 1st.

project.config
frontend: React 19, Vite 7
chat: Botpress Webchat (chat flows live in Botpress, not in the repo)
calculator: src/utils/retirementCalculator.js
reminders: node-cron, daily at 09:00, sends on the 1st of the month

Where it could break

[TODO: no risks written for this project yet]

Key features

  • Retirement calculator with inputs for ages, expenses, inflation, pre- and post-retirement returns, existing corpus and current SIP
  • Results shown in rupees with Indian digit grouping, plus crore values
  • Embedded Botpress chat agent, opened from a floating bubble
  • Basic and Advanced mode descriptions on the landing page
  • Monthly reminder emails via a Node server

Highlights

  • Implemented the retirement maths in retirementCalculator.js: inflation adjustment, future value of a lump sum and of a monthly SIP, and a closed-form required-SIP calculation.
  • Built a retirement calculator UI in React that recomputes results on every input change and flags a shortfall or surplus.
  • Integrated a Botpress Webchat agent into a React/Vite site through CDN embed scripts.
  • Wrote an Express and node-cron service that emails subscribers on the 1st of each month through Nodemailer.
  • Designed a dark glass-style interface with Tailwind CSS custom colours and Framer Motion entrance animations.

Tech stack

  • Language: JavaScript (ES modules), JSX
  • Frontend framework: React 19, Vite 7
  • Styling and animation: Tailwind CSS 3, PostCSS, Framer Motion
  • Backend: Node.js, Express 4, node-cron, Nodemailer, dotenv, cors
  • AI chat: Botpress Webchat v3.3 (hosted, loaded from CDN)
  • Tooling: ESLint 9, npm

/Stack

  • React
  • Vite
  • Tailwind CSS
  • Framer Motion
  • Botpress Webchat
  • Node.js
  • Express
  • node-cron
  • Nodemailer
  • ESLint