Inspiration
Finding funding for social initiatives, especially those supporting an aging population, is often a fragmented and overwhelming process. Organizations and individuals frequently miss out on critical resources because grant information is scattered across dozens of government and foundation websites, each with different formats and eligibility criteria. We wanted to bridge this gap by creating a "one-stop shop" that simplifies grant discovery, ensuring that impactful projects for seniors get the funding they deserve.
What it does
FindGrant is an intelligent grant discovery platform that automates the tedious work of searching for funding.
Automated Aggregation: It scrapes live data from multiple sources (like OurSG and various foundation portals).
AI-Powered Analysis: It processes raw, messy grant descriptions into structured data, extracting key information like funding caps, KPIs, and eligibility.
Intuitive Discovery: Users can browse a clean, centralized dashboard built with Mantine UI, visualize funding trends with interactive charts, and quickly identify which grants match their specific project needs.
How we built it
We developed FindGrant as a modular full-stack application:
The Scraper: Built with Node.js and Playwright, it performs browser automation to navigate complex, JavaScript-heavy government sites to extract raw data.
The Backend: A high-performance Go server handles the business logic and serves the processed data via a REST API. We opted for Go’s standard library to keep the service lightweight and fast.
The Frontend: A responsive React 18 application using TypeScript. We utilized Mantine UI for a professional design system and ApexCharts to provide users with visual insights into grant distributions.
Challenges we ran into
Data Heterogeneity: Every grant portal uses a different layout. Building a scraper that could reliably extract "Who Can Apply" or "Deadline" information from unstructured HTML required significant trial and error with Playwright.
Concurrency in Go: Ensuring the Go backend efficiently handled the parsed JSON data while maintaining type safety between the frontend and the Go models.
Parsing "Human" Dates: Converting vague deadline hints (e.g., "Rolling basis" or "End of Q3") into a format that the frontend could sort and display logically.
Accomplishments that we're proud of
Seamless Integration: Successfully connecting three different tech stacks (Go, Node.js, and React) into a unified, functional pipeline.
User-Centric Design: Creating an interface that feels accessible even to non-technical users in the social sector, moving away from the "spreadsheet-heavy" look of typical grant databases.
End-to-End Automation: Seeing a grant go from a live website to a structured UI card automatically without manual data entry.
What we learned
The Power of Go: We learned how efficient Go is for building simple, robust APIs without the bloat of heavy frameworks.
Web Scraping Nuances: We gained deep experience in handling anti-scraping measures and dynamic content rendering using Playwright.
What's next for FindGrant
Personalized Matching: Implementing a "Project Profile" feature where users input their project details, and an AI model provides a "Match Score" for each grant.
Email Alerts: A notification system to alert users the moment a new grant matching their criteria is scraped.
LLM Integration: Using Large Language Models to summarize long "Terms & Conditions" documents into 3-4 bullet points for faster reading.
Built With
- express.js
- go
- node.js
- playwright
- react
- typescript
Log in or sign up for Devpost to join the conversation.