Overview
GrantAI is an end-to-end AI grant and scholarship intelligence platform engineered to eliminate hundreds of hours of manual research, eligibility checks, and proposal drafting for academic researchers, startup founders, and nonprofit directors.
Built as a modular monorepo spanning a Next.js 14 frontend, a Spring Boot 3 enterprise service layer, and a FastAPI/LangChain AI vector engine with PostgreSQL pgvector, the platform delivers sub-second semantic matching across thousands of funding opportunities, live Server-Sent Events (SSE) proposal streaming, and an AI mock defense interview simulator.
Context
Millions of dollars in research and nonprofit grants go unclaimed each year due to fragmented databases, complex eligibility criteria, and tedious multi-page proposal requirements. Researchers spend up to 40% of their working hours drafting repetitive applications and guessing how committees will score their proposals. Existing grant portals only offer keyword search without semantic relevance or automated drafting capabilities.
Engineering
A high-performance tri-tier monorepo architecture. The Next.js 14 client communicates with the Spring Boot backend via REST and receives streaming AI completions via Server-Sent Events (SSE). The Spring Boot core handles authentication, session persistence, and scheduling, delegating semantic search and LLM synthesis to a specialized FastAPI service powered by LangChain, PostgreSQL pgvector, and Google Gemini API.
graph TD
Client["Browser Client\n(Next.js 14 + Zustand)"]
API["Core Backend\n(Spring Boot 3 + Java 21)"]
AI["AI Vector Engine\n(FastAPI + LangChain)"]
PG[("PostgreSQL 16\n+ pgvector")]
Redis[("Redis 7 Cache")]
LLM["Google Gemini API\n(Flash / Pro)"]
Demo["Guided Demo Interceptor\n(Client-side In-Memory DB)"]
Client -->|"REST / JWT"| API
Client -->|"SSE Stream"| AI
Client -.->|"Demo Mode"| Demo
API -->|"RPC / HTTP"| AI
API --> PG
API --> Redis
AI --> PG
AI --> LLMStack Breakdown
| Layer | Technology | Purpose |
|---|---|---|
| Frontend | Next.js 14 + TypeScript | App Router, Tailwind CSS, Framer Motion, react-window virtualization |
| Core Backend | Spring Boot 3 + Java 21 | Spring Security, Spring Data JPA, JWT authentication |
| AI Vector Engine | FastAPI + Python 3.12 | LangChain, pgvector embeddings, streaming completions |
| Database | PostgreSQL 16 + pgvector | Relational schemas alongside vectorized grant embeddings |
| Cache | Redis 7 | High-performance key-value caching and session management |
| LLM | Google Gemini API | Semantic vector synthesis and proposal drafting |
| Evaluation | Guided Demo Mode | Zero-dependency browser database for instant evaluation |
Features
Engineering depth
The Problem
Streaming multi-paragraph proposal drafts token-by-token required uninterrupted HTTP streaming without blocking thread pools or losing client connection state.
The Solution
Configured FastAPI asynchronous generator streams with chunked transfer encoding, paired with client-side optimistic UI buffering in Zustand for buttery smooth rendering.
The Problem
Hackathon evaluators needed instant access to test features without enduring database seeds, container warmups, or third-party credential setup.
The Solution
Engineered a zero-dependency Guided Demo Mode that intercepts API calls entirely in the browser, pre-seeding realistic Stanford bio-computation researcher personas.
Reflection
Client-side demo modes dramatically improve evaluation conversion for judges and visitors who cannot configure local environments.
Decoupling heavy LLM vector workloads into a dedicated FastAPI microservice keeps the core enterprise Spring Boot service layer fast and responsive.
Virtualized lists (react-window) are mandatory when rendering hundreds of dynamic match cards with rich metadata.
Continue Reading

Web App
Unified Agile sprint planning, Kanban workflow, and delivery tracking workspace.

AI/ML
AI-driven cross-platform mood and stress tracking ecosystem supporting UN SDG 3 (Good Health & Well-being).

Web App
Unified hospital management ecosystem for clinical and administrative workflows.