
Fund Frolic: AI-Powered Grant Discovery
AI-powered platform connecting startups and nonprofits with grant opportunities - helping founders secure funding without giving up equity
Overview
Client
Co-Founded with Guenevere Blanchard
Role
Founding Developer & Designer
Tech Stack
React, OpenAI API, TypeScript, Custom Design System
Fund Frolic is an AI-powered grant finding platform that helps startups and nonprofits discover funding opportunities without giving up equity. I built the entire platform from the ground up - from the React application and OpenAI integration to the complete design system and brand identity. The platform has helped 500+ founders find relevant grants in under a minute.
Platform Experience
AI-powered grant matching with instant results and personalized recommendations
AI Grant Finder
Instant grant matching based on revenue status, organization type, and project description

Personalized Grant Recommendations
Custom funding blueprint with curated grant opportunities and application guidance

The Challenge
Founders and nonprofit leaders face a critical dilemma: they need funding to grow, but traditional VC funding means giving up equity and control. Meanwhile, billions in grant funding goes unclaimed every year because the discovery process is fragmented, time-consuming, and overwhelming.
Founder Pain Points:
- Grant databases are scattered across federal, state, local, and private sources
- Searching for relevant grants takes days or weeks of manual research
- Eligibility requirements are complex and difficult to parse
- No way to know which grants are the best fit for their specific situation
- Grant writing is intimidating without professional expertise
Existing Solutions Were Inadequate:
- Grants.gov: Comprehensive but overwhelming - thousands of grants with no intelligent filtering
- Grant Writing Firms: Expensive ($5K-$50K per application) and slow turnaround
- Generic Search Engines: Miss grant-specific eligibility nuances and context
- Manual Research: Founders spend weeks researching instead of building their companies
Technical Challenges:
- Building an intelligent AI system that understands grant eligibility requirements and matches them with founder profiles
- Integrating OpenAI API for natural language processing of grant descriptions and project proposals
- Creating a seamless, non-intimidating user experience that guides founders through the process
- Designing a complete brand identity and design system from scratch
- Building a scalable React application that delivers instant results
The Solution
I built Fund Frolic as a complete end-to-end solution - from the technical architecture to the visual identity. The platform uses AI to instantly match founders with relevant grants, eliminating weeks of manual research.
Complete End-to-End Development
As the sole technical founder and designer, I was responsible for every aspect of the platform:
- React Application: Built a responsive, performant web application from scratch with TypeScript
- OpenAI Integration: Designed and implemented AI wrapper for intelligent grant matching and natural language processing
- Custom Design System: Created a complete design system with reusable components, typography, colors, and spacing
- Brand Identity: Designed the entire brand from logo to color palette to voice and tone
- User Experience: Crafted an intuitive flow that gets founders from question to grant matches in under 60 seconds
Core Platform Features
- AI Grant Finder: Instant matching based on revenue status, organization type, and project description
- Custom Funding Blueprint: Personalized grant recommendations with eligibility analysis
- Full-Service Grant Writing: Professional research, writing, and submission support
- Ongoing Grant Tracking: Monitors new opportunities and maintains eligibility status
- One-Minute Results: Founders get actionable grant matches in under 60 seconds
Technical Approach
OpenAI Wrapper Architecture
Built a sophisticated AI wrapper around OpenAI's API to handle grant matching, eligibility analysis, and natural language processing:
// Grant matching with OpenAI
async function matchGrants(profile: FounderProfile) {
const prompt = buildGrantMatchingPrompt(profile);
const completion = await openai.chat.completions.create({
model: "gpt-4",
messages: [
{
role: "system",
content: "You are a grant expert that matches startups with relevant grant opportunities based on eligibility criteria, organization type, revenue status, and project description."
},
{
role: "user",
content: prompt
}
],
temperature: 0.3, // Lower temperature for more consistent matching
max_tokens: 2000,
});
const matches = parseGrantMatches(completion.choices[0].message.content);
return rankByRelevance(matches, profile);
}
// Eligibility analysis
async function analyzeEligibility(grant: Grant, profile: FounderProfile) {
const analysis = await openai.chat.completions.create({
model: "gpt-4",
messages: [
{
role: "system",
content: "Analyze grant eligibility requirements and determine if the applicant qualifies. Provide specific reasons for qualification or disqualification."
},
{
role: "user",
content: `Grant: ${JSON.stringify(grant)}\n\nApplicant: ${JSON.stringify(profile)}`
}
],
});
return {
isEligible: determineEligibility(analysis),
reasoning: analysis.choices[0].message.content,
confidence: calculateConfidenceScore(analysis),
};
}Custom Design System
Built a comprehensive design system with reusable components, consistent theming, and accessible patterns:
// Design system theme configuration
export const theme = {
colors: {
primary: {
50: '#f0f9ff',
100: '#e0f2fe',
500: '#0ea5e9',
600: '#0284c7',
700: '#0369a1',
},
accent: {
50: '#fdf4ff',
500: '#d946ef',
600: '#c026d3',
},
neutral: {
50: '#fafafa',
100: '#f5f5f5',
500: '#737373',
900: '#171717',
}
},
typography: {
fontFamily: {
sans: ['Inter', 'system-ui', 'sans-serif'],
display: ['Clash Display', 'Inter', 'sans-serif'],
},
fontSize: {
xs: '0.75rem',
sm: '0.875rem',
base: '1rem',
lg: '1.125rem',
xl: '1.25rem',
'2xl': '1.5rem',
'4xl': '2.25rem',
'6xl': '3.75rem',
}
},
spacing: {
xs: '0.5rem',
sm: '1rem',
md: '1.5rem',
lg: '2rem',
xl: '3rem',
'2xl': '4rem',
},
borderRadius: {
sm: '0.375rem',
md: '0.5rem',
lg: '0.75rem',
xl: '1rem',
full: '9999px',
}
};
// Reusable component with design system
export function Button({
variant = 'primary',
size = 'md',
children
}: ButtonProps) {
const baseStyles = 'font-semibold rounded-lg transition-all';
const variantStyles = {
primary: 'bg-primary-600 text-white hover:bg-primary-700',
secondary: 'bg-neutral-100 text-neutral-900 hover:bg-neutral-200',
accent: 'bg-accent-600 text-white hover:bg-accent-700',
};
const sizeStyles = {
sm: 'px-3 py-1.5 text-sm',
md: 'px-4 py-2 text-base',
lg: 'px-6 py-3 text-lg',
};
return (
<button
className={`${baseStyles} ${variantStyles[variant]} ${sizeStyles[size]}`}
>
{children}
</button>
);
}Instant Grant Matching Flow
Designed a streamlined user experience that collects just enough information to deliver accurate matches in under 60 seconds:
// Multi-step form with progressive disclosure
function GrantFinder() {
const [step, setStep] = useState(1);
const [profile, setProfile] = useState<FounderProfile>({});
const [matches, setMatches] = useState<Grant[]>([]);
const [loading, setLoading] = useState(false);
async function handleSubmit() {
setLoading(true);
// Call AI matching engine
const results = await matchGrants(profile);
// Analyze eligibility for each match
const analyzed = await Promise.all(
results.map(grant => analyzeEligibility(grant, profile))
);
setMatches(analyzed);
setLoading(false);
}
return (
<div className="max-w-2xl mx-auto">
{step === 1 && (
<StepOne
data={profile}
onChange={setProfile}
onNext={() => setStep(2)}
/>
)}
{step === 2 && (
<StepTwo
data={profile}
onChange={setProfile}
onNext={() => setStep(3)}
onBack={() => setStep(1)}
/>
)}
{step === 3 && (
<StepThree
data={profile}
onChange={setProfile}
onSubmit={handleSubmit}
onBack={() => setStep(2)}
/>
)}
{loading && <LoadingSpinner />}
{matches.length > 0 && (
<GrantResults matches={matches} profile={profile} />
)}
</div>
);
}Results
Platform Impact:
- 500+ founders have used the platform to find relevant grants in under a minute
- Instant results vs. days or weeks of manual research
- AI-powered matching delivers personalized grant recommendations with eligibility analysis
- Full-service support available for grant writing and submission
- Alternative to VC funding - helping founders secure capital without giving up equity
Technical Achievements:
- Built entire platform solo - React application, OpenAI integration, design system, and brand
- Created sophisticated AI wrapper for intelligent grant matching and eligibility analysis
- Designed and implemented complete design system with reusable components and consistent theming
- Crafted brand identity from scratch including logo, color palette, typography, and voice
- Delivered seamless user experience with 60-second grant matching flow
- Integrated OpenAI API for natural language processing and intelligent recommendations
Key Learnings
What Worked Well:
- Building Everything In-House: Having complete control over the tech stack, design system, and brand allowed for rapid iteration and cohesive experience
- OpenAI for Complex Matching: Using GPT-4's natural language understanding made grant eligibility analysis far more accurate than rule-based systems
- Design System First: Building the design system early accelerated feature development and ensured visual consistency
- Progressive Disclosure UX: Multi-step form prevented overwhelming users while collecting enough data for accurate matching
- Co-Founder with Domain Expertise: Partnering with a grant strategist (Guenevere) ensured the AI matching logic was grounded in real-world grant expertise
What I'd Do Differently:
- Earlier User Testing: Could have validated the grant matching accuracy with more founders before launch
- Grant Database Integration: Building direct integrations with Grants.gov API would reduce manual grant data entry
- More Granular Tracking: Adding analytics earlier would have shown which grant types and founder profiles convert best
- Prompt Engineering Documentation: Should have documented prompt templates and tuning decisions for future iteration
- A/B Testing Infrastructure: Would have helped optimize the matching algorithm and UX flow faster