An intelligent platform built for California community college students to navigate their transfer journey from community college to 4-year universities. Created by Gabriel, Eli, Angelo, and Tim for the HackCC hackathon (IEEE HackCC 2025).
- 4-Step Guided Flow: Intuitive card-based interface with progress tracking
- Select your current community college
- Choose target universities (multiple selections supported)
- Pick your major
- Review and confirm your transfer profile
- Smart Search: Real-time search with relevance sorting and debouncing for smooth UX
- Multi-School Selection: Select and compare multiple target universities simultaneously
- Profile Persistence: Your selections are saved and used throughout the chat experience
- Context-Aware Chat: TransferReady Assistant with knowledge of your profile (community college, target schools, major)
- Natural Language Queries: Ask questions in plain English about your transfer journey
- Streaming Responses: Real-time AI responses with markdown formatting support
- Quick Actions: One-click access to common queries
- "What are the transfer requirements?"
- "Find internships in my field"
- "Mentorship programs available?"
- "Free resources and programs"
- Transfer Agreement Lookup: Check articulation agreements between your CC and target universities
- assist.org Integration: Direct access to official California transfer data
- Multi-School Comparison: See transfer agreements for all your selected universities at once
- Major-Specific Search: Find internships tailored to your field of study
- STEM Opportunities: Dedicated STEM internship database with 2026 opportunities
- Company & Location Filters: Browse by company, location, season, and category
- API Integration: Real-time access to curated internship database
- Community College Focus: Programs specifically designed for CC transfer students
- Free Resources: Dedicated filtering for no-cost mentorship opportunities
- Organization Directory: Browse programs by major, organization, and format
- Instant Recommendations: AI provides personalized mentorship suggestions
- Custom Cursor: Elegant custom cursor with hover effects and click ripples
- Smooth Animations: Card-based transitions with Swiper.js
- Responsive Design: Mobile-optimized interface that works on all devices
- Center-Stage Chat: Full-width chat interface that slides in from the center
- Back Navigation: Easy navigation between form and chat with preserved state
├── apis/
│ ├── api.py # Unified Flask REST API (transfers, internships, mentorships)
│ ├── example_api_test.py # Comprehensive API testing script
│ ├── test_api_and_generate_colleges.py # Test API and generate colleges.json
│ ├── generate_comprehensive_colleges.py # Generate comprehensive colleges.json
│ ├── TESTING_AND_DATA_GENERATION.md # Testing documentation
│ ├── combined_api/ # Transfer & internship modules
│ │ ├── api.py # Transfer & internship endpoints
│ │ ├── scraper.py # assist.org scraper
│ │ ├── fetch_and_clone_internships.py
│ │ ├── internship_scraper.py
│ │ ├── colleges.json
│ │ ├── QUICK_REFERENCE.md # Quick reference guide
│ │ └── API_DOCUMENTATION.md # Detailed API documentation
│ ├── mentorship_api/ # Mentorship module
│ │ └── mentorship_api.py
│ ├── mentorship_scraper.py # Mentorship data scraper
│ ├── API.md # Complete API documentation
│ └── scraper.py # Transfer scraper utility
├── llm-chat-app-template/ # Frontend web application
│ ├── public/ # Static frontend assets
│ │ ├── index.html # Main application UI (TransferReady interface)
│ │ ├── colleges.json # California colleges database
│ │ └── chat.js # Chat interface utilities
│ ├── src/ # TypeScript source code
│ │ ├── index.ts # Cloudflare Worker entry point
│ │ └── types.ts # TypeScript type definitions
│ ├── test/ # Test files
│ ├── package.json # Node dependencies
│ ├── tsconfig.json # TypeScript configuration
│ ├── wrangler.jsonc # Cloudflare Workers config
│ └── README.md # Frontend documentation
├── README.md # This file
├── 2026_internships.json # Internship data
├── stem_internships.json # STEM-specific internships
├── mentorship_opportunities.json # Mentorship data
├── colleges.json # College data
├── venv/ # Python virtual environment
├── requirements.txt # Python dependencies
└── .gitignore # Git ignore patterns
- Python 3.8+
- Node.js 16+ (for frontend development)
- Virtual environment (recommended)
- Clone and navigate to the project:
cd HackCC---IEEE---SWC- Set up Python virtual environment:
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt- Copy data files to API directory:
cp colleges.json apis/
cp 2026_internships.json apis/
cp stem_internships.json apis/
cp mentorship_opportunities.json apis/cd apis
python3 api.pyServer runs on http://localhost:5000
API documentation available at: http://localhost:5000/
Option 1: Simple HTTP Server
cd llm-chat-app-template/public
python3 -m http.server 8000Open http://localhost:8000 in your browser
Option 2: Cloudflare Workers (Local Development)
cd llm-chat-app-template
npm install
npm run dev-
Terminal 1 - Backend API:
cd apis && python3 api.py
-
Terminal 2 - Frontend:
cd llm-chat-app-template/public python3 -m http.server 8000 -
Open Browser: Navigate to
http://localhost:8000
- Landing Page: Click "Get Started →" to begin
- Step 1 - Community College: Search and select your current CC
- Step 2 - Target Universities: Select one or more target schools
- Step 3 - Major: Choose your intended major
- Step 4 - Summary: Review your selections
- Chat Assistant: Click "Chat with TransferReady Assistant →" to start getting personalized help
The AI assistant will use your profile to provide tailored advice on:
- Transfer requirements and articulation agreements
- Relevant internship opportunities in your field
- Mentorship programs for your major
- Free resources available to CC transfer students
cd apis
python3 generate_comprehensive_colleges.pyThis script generates a complete colleges.json with all California transfer institutions (community colleges, CSU, UC, and private universities).
# Terminal 1: Start the API
python3 api.py
# Terminal 2: Run comprehensive tests
python3 test_api_and_generate_colleges.pyThis tests all endpoints and validates data across transfers, internships, and mentorships modules.
See apis/TESTING_AND_DATA_GENERATION.md for detailed documentation on testing and data generation scripts.
POST /api/transfer/check- Check transfer agreement between schools- Used by Quick Action: "What are the transfer requirements?"
- Returns agreement details, years supported, and assist.org URL
GET /api/transfer/schools- Search/list all collegesGET /health- Health check
GET /api/internships- Get all internships with filtersGET /api/internships/<id>- Get specific internshipGET /api/internships/stats- Internship statisticsGET /api/internships/companies- List all companiesGET /api/internships/locations- List all locationsGET /api/internships/categories- List all categoriesGET /api/stem-internships- STEM-specific internships (filtered by major)- Used by Quick Action: "Find internships in my field"
- Returns internships matching user's major
POST /api/internships/refresh- Refresh internship data
GET /api/mentorships- Get all mentorship programs with filtersGET /api/mentorships/<id>- Get specific mentorship programGET /api/mentorships/stats- Mentorship statisticsGET /api/mentorships/organizations- List all organizationsGET /api/mentorships/majors- List all supported majorsGET /api/mentorships/free- Free mentorship programs- Used by Quick Action: "Free resources and programs"
- Returns no-cost opportunities for students
GET /api/mentorships/community-college- Community college friendly programs- Used by Quick Action: "Mentorship programs available?"
- Returns CC-specific mentorship opportunities
POST /api/mentorships/refresh- Refresh mentorship data
POST /api/chat- AI-powered chat endpoint- Accepts:
{ messages: [...], userProfile: {...} } - Returns: Streaming response with AI-generated answers
- Context-aware using user's CC, target schools, and major
- Accepts:
See apis/API.md for complete endpoint documentation.
cd apis
python3 example_api_test.pyThis tests all endpoints across transfers, internships, and mentorships.
# Health check
curl http://localhost:5000/health
# Get API documentation
curl http://localhost:5000/
# Search schools
curl 'http://localhost:5000/api/transfer/schools?q=berkeley'
# Check transfer agreement (requires POST)
curl -X POST http://localhost:5000/api/transfer/check \
-H "Content-Type: application/json" \
-d '{
"from_school": "Southwestern College",
"to_school": "University of California, Berkeley"
}'
# Get free mentorships
curl 'http://localhost:5000/api/mentorships/free?limit=5'
# Get STEM internships
curl 'http://localhost:5000/api/stem-internships?major=computer%20science&limit=5'
# Get internship statistics
curl http://localhost:5000/api/internships/statsfrom apis.combined_api.scraper import get_degree_information
result = get_degree_information(
"Southwestern College",
"University of California, Berkeley"
)
if not result.get('error'):
agreement = result['agreement']
print(f"Transfer: {agreement['from_school']} → {agreement['to_school']}")
print(f"Pathway: {agreement['institution_name']}")
print(f"Years: {agreement['years_supported']}")
print(f"View details: {result['assist_url']}")import requests
# Check transfer agreement
response = requests.post('http://localhost:5000/api/transfer/check', json={
'from_school': 'Southwestern College',
'to_school': 'University of California, Berkeley'
})
print(response.json())
# Get free mentorships
response = requests.get('http://localhost:5000/api/mentorships/free')
print(response.json())
# Get STEM internships
response = requests.get('http://localhost:5000/api/stem-internships?major=computer science')
print(response.json())- Vanilla JavaScript: No framework dependencies for maximum performance
- Swiper.js: Card-based UI with smooth transitions
- Marked.js: Markdown rendering for AI chat responses
- CSS3: Modern gradients, animations, and responsive design
- Cloudflare Workers: Serverless deployment option for AI chat API
- Hero section with "Get Started" CTA
- Smooth slide transition to main app
- Card 1: Community College selection with live search
- Card 2: Target Universities multi-select with tag display
- Card 3: Major selection with live search
- Card 4: Summary and confirmation
- Progress bar with 4 segments tracking user journey
- Swiper.js cards effect for layered appearance
- Debounced Input: 200ms delay for smooth performance
- Relevance Sorting: Results starting with search term appear first
- Live Filtering: Real-time results as you type
- Result Limiting: Max 8 results displayed
- Selected State: Visual feedback for chosen items
- Full-Screen Modal: Centers on screen with backdrop
- Streaming Responses: Real-time AI response display
- Message History: Persistent conversation state
- Quick Actions: 4 one-click shortcuts for common queries
- Profile Integration: Automatically includes user's transfer profile
- Back Navigation: Return to form with preserved state
- Custom Cursor: Dot and outline with smooth following animation
- Click Ripples: Visual feedback on all interactions
- Hover Effects: Interactive elements respond to cursor
- Mobile Optimized: Touch-friendly with standard cursor on mobile
- Smooth Transitions: 350ms cubic-bezier animations
- Accessibility: Keyboard navigation and semantic HTML
User Profile Form → localStorage → Chat Assistant → API Calls
↓
Context-Aware Responses
- User completes 4-step form
- Profile saved to
window.userProfileandlocalStorage - Chat assistant accesses profile for personalized queries
- Quick actions trigger API calls with user context
- AI responses stream back in real-time
llm-chat-app-template/
├── public/
│ ├── index.html (2,263 lines)
│ │ ├── HTML structure
│ │ ├── Embedded CSS (~1,200 lines)
│ │ └── Embedded JavaScript (~1,000 lines)
│ └── colleges.json
│ └── Combined list of CA community colleges and universities
- Unified REST API: Single Flask entry point for all services (transfers, internships, mentorships)
- assist.org Integration: Uses public REST API for real-time transfer agreement data
- Local JSON Storage: Internship and mentorship data cached locally for fast queries
- Flask Framework: Lightweight, scalable HTTP server with CORS enabled
- Cloudflare Workers AI: Serverless AI chat API with streaming responses
cd apis
python3 -m flake8 api.py --max-line-length=100Local Testing:
cd llm-chat-app-template/public
python3 -m http.server 8000Cloudflare Workers (with AI chat):
cd llm-chat-app-template
npm install
npm run devSee llm-chat-app-template/README.md for deployment instructions.
┌─────────────────────────────────────────────────────────────────┐
│ TransferReady │
│ (Frontend - index.html) │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Landing │→│ Card Stack │→│ AI Chat │ │
│ │ Page │ │ (4 Steps) │ │ Assistant │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ ↓ ↓ │
│ User Profile API Requests │
│ (localStorage) ↓ │
└─────────────────────────────────────────────────────────────────┘
↓
┌──────────────────────────────────────┐
│ Cloudflare Workers AI │
│ /api/chat (Streaming) │
└──────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ Flask REST API (localhost:5000) │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Transfer │ │ Internships │ │ Mentorships │ │
│ │ API │ │ API │ │ API │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ ↓ ↓ ↓ │
│ assist.org API JSON Files JSON Files │
└─────────────────────────────────────────────────────────────────┘
- Welcome → User lands on TransferReady homepage
- Profile Setup → 4-step guided form:
- Current community college
- Target universities (1+)
- Intended major
- Confirmation summary
- AI Chat → Context-aware assistant with Quick Actions:
- Transfer requirements (fetches from assist.org)
- Internship opportunities (filtered by major)
- Mentorship programs (CC-focused)
- Free resources
- Natural Queries → User can ask follow-up questions in plain English
- Streaming Responses → AI provides detailed, personalized guidance
- Frontend Load: <1s (single HTML file, minimal dependencies)
- Card Transitions: 600ms smooth animations
- Search Debouncing: 200ms delay for optimal UX
- Transfer Agreement Lookup: ~1-2 seconds (live assist.org API)
- School/Internship/Mentorship Search: <100ms (local JSON)
- AI Chat Response: Streaming (starts in <1s, completes based on query)
- ✅ 4-Step Profile Builder with live search and multi-select
- ✅ Transfer Agreement Lookup between CA community colleges and universities
- ✅ AI Chat Assistant with streaming responses and markdown support
- ✅ Quick Actions for instant access to common queries
- ✅ Internship Discovery with major-based filtering (2026 opportunities)
- ✅ Mentorship Programs with CC-specific and free options
- ✅ Profile Persistence via localStorage
- ✅ Back Navigation between form and chat with state preservation
- ✅ Custom Cursor with smooth animations and click ripples
- ✅ Card Stack Interface with Swiper.js
- ✅ Responsive Design optimized for mobile and desktop
- ✅ Real-time Search with debouncing and relevance sorting
- ✅ Progress Tracking with 4-segment progress bar
- ✅ Smooth Transitions throughout the application
- ✅ assist.org Integration for official CA transfer data
- ✅ Context-Aware AI using user profile in queries
- ✅ Multiple Target Schools support in single request
- ✅ STEM Internship Database with company and location data
- ✅ Free Resource Identification across all categories
-
Transfer Planning: "I'm at Southwestern College and want to transfer to UC Berkeley for Computer Science. What courses do I need?"
-
Internship Search: "Find me summer 2026 CS internships in San Diego"
-
Mentorship Discovery: "Are there any free mentorship programs for community college students in STEM?"
-
Multi-School Comparison: "Compare transfer requirements for UCSD, UCLA, and UC Berkeley"
-
Deadline Tracking: "When are the transfer application deadlines for UC schools?"
-
GPA Requirements: "What GPA do I need to transfer to San Diego State?"
# Install production WSGI server
pip install gunicorn
# Run with Gunicorn
cd apis
gunicorn -w 4 -b 0.0.0.0:5000 api:app
# Or use with reverse proxy (Nginx)
# Configure upstream server to http://localhost:5000cd llm-chat-app-template
npm install
wrangler login
wrangler deployThe frontend can be deployed to:
- Cloudflare Workers: Serverless with built-in AI chat
- Static Hosting: Any CDN (Vercel, Netlify, GitHub Pages)
- Traditional Server: Nginx, Apache, etc.
Created for IEEE HackCC 2025 Hackathon
- Gabriel - Frontend & UX Design
- Eli - Backend API & assist.org Integration
- Angelo - Data Collection & Testing
- Tim - AI Integration & Documentation
- Follow PEP 8 style guidelines for Python code
- Use ESLint for JavaScript (if adding external JS files)
- Run linting before commits
- Add tests for new API endpoints
- Update API.md for endpoint changes
- Test on both desktop and mobile devices
- HTML5, CSS3, JavaScript (ES6+)
- Swiper.js 11.x (Card UI)
- Marked.js 11.x (Markdown rendering)
- Web APIs (localStorage, Fetch, Streams)
- Python 3.8+
- Flask (REST API)
- Requests (HTTP client)
- assist.org REST API
- Cloudflare Workers AI
- Llama models (text generation)
- Streaming responses
- Cloudflare Workers (Frontend + AI)
- Gunicorn (Backend production)
- Any cloud platform (AWS, GCP, Azure, etc.)
IEEE SWC 2025
TransferReady - Making college transfer journeys smoother, one student at a time. 🎓✨