[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-course-connect-ai-powered-academic-planner":3},{"id":4,"title":5,"slug":6,"excerpt":7,"contentType":8,"content":9,"metadata":10,"status":25,"createdAt":26,"updatedAt":27,"startDate":28,"endDate":29,"isOngoing":12,"featuredImage":30,"projectLinks":31,"contributors":35,"experienceCategory":24,"location":24,"locationType":24,"tags":36,"linkedSkills":56,"roles":94,"isPublished":14,"contentLinks":95,"body":-1,"markdown":-1,"html":-1},"bdf077ca-f246-474a-b2be-df726b5bea55","Course Connect: AI-Powered Academic Planner","course-connect-ai-powered-academic-planner","An intelligent platform that streamlines course planning for Penn State students by generating personalized schedules from transcripts using the Google Gemini API.","PROJECT","## Overview\n\nNavigating the academic journey at Penn State is a complex challenge\\, with students spending countless hours cross\\-referencing course requirements between the cumbersome LionPath interface\\, RateMyProfessor reviews\\, dense University Bulletins\\, and recommended major pathways\\. This fragmented process is stressful and often leads to suboptimal course selections that can impact GPA and graduation timelines\\. Course Connect was engineered to solve this problem by providing a unified\\, intelligent platform for academic planning\\.\n\nDeveloped for HackPSU Spring 2025\\, Course Connect streamlines course scheduling for Penn State students\\. By simply uploading a PDF transcript\\, the platform leverages Google\\'s Gemini API to extract academic history\\, understand complex degree requirements\\, and generate personalized semester schedules and a comprehensive four\\-year plan\\. This AI\\-powered approach transforms a multi\\-hour research grind into an effortless\\, data\\-driven decision\\-making process\\, empowering students to build the most effective path to graduation\\.\n\n## My Role\\: Back\\-End Developer\n\nAs the back\\-end developer on this project\\, I was responsible for the core architecture and AI integration\\. My key contributions included building the **Node\\.js RESTful API**\\, integrating the **Google Gemini API** for schedule generation\\, and performing the **prompt engineering** required to get accurate results\\. I also developed the **Python** and **Node\\.js** scraping scripts and deployed the data acquisition pipeline on a scalable **Kubernetes** cluster\\.\n\n## Key Features\n\n- **Transcript\\-Powered Planning\\:** Users can instantly bootstrap their academic profile by uploading their official or unofficial transcript\\. The system automatically parses completed courses\\, credits\\, and grades to establish a baseline for all future recommendations\\.\n\n- **AI\\-Generated Schedules\\:** At its core\\, Course Connect uses the Google Gemini API to analyze a student\\'s progress against scraped university data\\, generating optimal semester\\-by\\-semester schedules that satisfy prerequisites\\, major requirements\\, and general education credits\\.\n\n- **Multi\\-Source Data Integration\\:** The platform aggregates and synthesizes information from disparate sources\\, including the official Penn State course catalog\\, University Bulletins\\, and recommended major pathways\\, creating a single source of truth for academic planning\\.\n\n- **Personalized Recommendations\\:** The recommendation engine is designed to consider crucial factors beyond basic requirements\\, including course difficulty\\, professor quality metrics\\, and user\\-defined preferences like desired time of day or online\\\u002Fin\\-person class formats\\.\n\n## Technologies \\& Implementation\n\nCourse Connect is built on a modern\\, scalable stack designed for data\\-intensive AI operations\\. The backend is powered by **Node\\.js**\\, exposing a **RESTful API** for managing user data and serving recommendations\\. The core recommendation logic is handled by the **Google Gemini API**\\, which receives a curated context of the user\\'s academic profile and scraped course data\\.\n\nData acquisition is managed by a suite of scraping scripts written in **Python** \\(using BeautifulSoup\\\u002FScrapy\\) and **Node\\.js** \\(using Puppeteer\\)\\, which are containerized with **Docker** and orchestrated via **Kubernetes** to ensure consistent and reliable data collection from university sources\\. This data is stored in a relational **PostgreSQL** database\\, chosen for its robust querying capabilities and data integrity\\. The frontend is a clean\\, responsive web interface built with **React**\\.\n\n```mermaid\ngraph TD\n    subgraph \"Data Acquisition (Automated)\"\n        A1[\"Scraping Scripts (Python\u002FNode.js)\"] --> A2[\"Penn State Bulletins\"]\n        A1 --> A3[\"Course Scheduler\"]\n        A1 --> A4[\"Major Pathways\"]\n    end\n\n    subgraph \"User Interaction\"\n        B1[\"User Uploads Transcript\"] --> C[\"React Frontend\"]\n        C --> D[\"REST API (Node.js)\"]\n        B2[\"User Sets Preferences\"] --> C\n    end\n\n    subgraph \"Backend Processing\"\n        A1 --> E[\"PostgreSQL Database\"]\n        D --> F{\"Request Schedule\"}\n        F -- \"User Data & Preferences\" --> G[\"Gemini API Prompt Engine\"]\n        E -- \"Scraped University Data\" --> G\n        G -- \"Generates Plan\" --> F\n        F --> H[\"Return Optimized Schedule\"]\n    end\n\n    H --> C\n\n```\n\n## Challenges \\& Solutions\n\nOne of the primary technical hurdles was managing the context limitations of the Gemini API\\. Our initial approach of feeding all scraped university data into the model was inefficient and exceeded the context window\\. I solved this by implementing a data curation layer that pre\\-processes and selects only the most relevant information—such as the student\\'s specific major requirements and prerequisite chains for potential courses—before sending it to the API\\. This significantly improved both performance and the accuracy of the recommendations\\.\n\nAnother major challenge was scraping and maintaining up\\-to\\-date information from various Penn State web sources\\, which are prone to structural changes and anti\\-scraping measures\\. To overcome this\\, I architected resilient\\, modular scraping scripts with comprehensive error handling and logging\\. I also designed a flexible database schema that could accommodate variations in data structure\\, ensuring the system could adapt to website changes without complete failure\\. This approach emphasized resilience and maintainability\\, which are critical for a data\\-dependent application\\.\n\n## Results \\& Impact\n\nAs a hackathon project\\, Course Connect successfully demonstrated a powerful proof\\-of\\-concept for AI\\-driven academic planning\\. We successfully designed the core architecture\\, developed a functional API for user management and recommendation retrieval\\, and integrated the Google Gemini API to power the core logic\\. The project laid a solid foundation for a tool with the potential to save thousands of students hours of manual research and prevent costly scheduling mistakes\\.\n\nOur future plans involve a full feature implementation\\, including direct RateMyProfessor integration\\, visual calendar views for proposed schedules\\, and refining the recommendation algorithm based on user feedback\\. The ultimate vision is to create a scalable platform that could be adapted to support students at other universities\\, fundamentally changing how academic planning is done\\.\n\n\\{TODO\\: Add screenshot of the Course Connect schedule recommendation interface\\}\n\n## Links\n\n- [Live Demo](https:\u002F\u002Fcourseconnect.study)",{"endDate":11,"isOngoing":12,"startDate":13,"aiGenerated":14,"generatedAt":15,"contributors":16,"projectLinks":21},"2025-03-16",false,"2025-03-14",true,"2025-11-16T23:01:31.884Z",[17,18,19,20],"Aiden Johnson","Ryan Nair","Matthew Witmer","Jason Selsley",{"other":22,"github":24,"devpost":24},[23],"https:\u002F\u002Fcourseconnect.study",null,"PUBLISHED","2025-11-16T23:01:35.888Z","2026-01-23T23:41:39.600Z","2025-03-14T00:00:00.000Z","2025-03-16T00:00:00.000Z","https:\u002F\u002Fapi.foligo.tech\u002Fapi\u002Fmedia\u002F42233c68-7052-4c42-85f8-5837a4aa0b94\u002Ffile",{"other":32,"github":33,"devpost":34},[23],"https:\u002F\u002Fgithub.com\u002Ftgmstudios\u002Fcourse-connect","https:\u002F\u002Fdevpost.com\u002Fsoftware\u002Fcourse-connect-tymz8p",[17,18,19,20],[37,41,45,49,53],{"id":38,"name":39,"category":40},"e3896595-e166-4d3e-a2f3-0e1e24f57a41","Web Development","Domain",{"id":42,"name":43,"category":44},"f00bcfec-f5e4-4ddb-abf1-c3552bf3a1f5","AI\u002FML","Technical",{"id":46,"name":47,"category":48},"b57cc0ef-e435-4081-9f14-d33ed470f735","Hackathon Project","Achievement",{"id":50,"name":51,"category":52},"73c040cd-21a1-478b-bf6a-9777552d83ca","EdTech","Industry",{"id":54,"name":55,"category":44},"dcc92d45-fe23-40bc-9fdb-9ff140db01f6","API Design",[57,61,65,69,73,77,80,84,88,91],{"id":58,"name":59,"category":60},"153dbaa9-b2f5-4f68-9046-0957dde01a10","Node.js","Backend Framework",{"id":62,"name":63,"category":64},"09cbedc8-f56c-4935-8b1e-428a0b467a18","Docker","DevOps Tool",{"id":66,"name":67,"category":68},"43740fc6-547a-4bdf-8f98-754034899e02","Kubernetes","Container Orchestration",{"id":70,"name":71,"category":72},"4157bc43-f117-486d-b417-38c7f1ba7116","Python","Programming Language",{"id":74,"name":75,"category":76},"c2541394-7e2f-4326-96f3-89e895191e16","PostgreSQL","Database",{"id":78,"name":79,"category":43},"c515f710-05b5-49e9-8df9-109faf779261","Google Gemini",{"id":81,"name":82,"category":83},"041b9f24-31a9-4da2-9710-fc6216c1243c","React","Frontend Framework",{"id":85,"name":86,"category":87},"5d3bacda-f2ca-40ab-a6df-9540d4ff3c5e","REST API","API",{"id":89,"name":90,"category":44},"7d112187-0b17-473a-b65c-b39f6a3a12c6","Data Scraping",{"id":92,"name":93,"category":43},"895c4ec1-6e63-421f-a588-8406a33d4449","Prompt Engineering",[],[96,103,112,117,122],{"id":97,"sourceId":98,"targetId":4,"sourceType":8,"targetType":99,"linkType":100,"createdAt":101,"updatedAt":101,"linkedContent":102},"6ce74de0-e381-454d-80b6-5b78d10f76f2","81307bd8-e718-4b92-af34-5e79506781d0","content","prerequisite","2025-11-17T03:58:50.136Z",{"id":4,"title":5,"slug":6,"excerpt":7,"contentType":8},{"id":104,"sourceId":4,"targetId":105,"sourceType":99,"targetType":8,"linkType":106,"createdAt":107,"updatedAt":107,"linkedContent":108},"812a09fb-905d-4d41-b24e-69cfd73bba7c","f4ca37f6-c2c4-4b72-8932-3b90e38069f8","related","2025-11-17T03:58:50.113Z",{"id":105,"title":109,"slug":110,"excerpt":111,"contentType":8},"Foligo: AI-Powered Conversational Portfolio Generator","foligo-ai-powered-conversational-portfolio-generator","An award-winning platform that transforms verbal project descriptions into polished portfolio pieces, blog posts, and social media content using a conversational AI.",{"id":113,"sourceId":114,"targetId":4,"sourceType":8,"targetType":99,"linkType":106,"createdAt":115,"updatedAt":115,"linkedContent":116},"ad2cde33-a7c2-4005-ae0b-b8f9033f844c","aa536da8-8ae9-42db-b913-4458c8b32bea","2025-11-16T23:13:42.766Z",{"id":4,"title":5,"slug":6,"excerpt":7,"contentType":8},{"id":118,"sourceId":119,"targetId":4,"sourceType":8,"targetType":99,"linkType":106,"createdAt":120,"updatedAt":120,"linkedContent":121},"ea0350eb-d2eb-4546-bf31-31c4cb57f0f5","971e083c-0619-42ee-9c72-4c4c611b02ff","2025-11-16T23:13:42.678Z",{"id":4,"title":5,"slug":6,"excerpt":7,"contentType":8},{"id":123,"sourceId":124,"targetId":4,"sourceType":8,"targetType":99,"linkType":106,"createdAt":125,"updatedAt":125,"linkedContent":126},"8801d33f-5b90-4c2b-b7fa-3d991fca3578","4aec7a84-c781-4068-b2e7-8931f6e4f310","2025-11-16T23:13:42.642Z",{"id":4,"title":5,"slug":6,"excerpt":7,"contentType":8}]