Inspiration

As a student navigating the overwhelming world of tech careers, I constantly heard advice like "learn to code" or "build projects," but nobody showed me HOW. There are thousands of resources scattered across the internet—YouTube tutorials, blog posts, online courses—but no clear, structured path forward.

I watched my peers struggle with the same problem: paralysis by analysis. We spent more time researching "the best way to learn" than actually learning. The tech industry felt like a maze with no map, and beginners like us were left wandering aimlessly, jumping from tutorial to tutorial without a cohesive strategy.

I realized what we needed wasn't more resources—we needed a personalized roadmap and the tools to stay consistent. Breaking into tech requires not just knowledge of what to learn, but also the discipline to show up every single day. That's when Ascent was born: an AI-powered platform that doesn't just tell you what to learn but helps you climb to your career peak through gamification and proven productivity techniques.

What it does

Ascent is your complete learning companion that transforms career confusion into clear, actionable steps:

🤖 AI Roadmap Generator

  • Input any career goal (Data Analyst, Web Developer, UI/UX Designer, etc.)
  • Powered by Google's Gemini AI
  • Generates detailed 6-month learning plans with monthly breakdowns, weekly tasks, and project ideas
  • Download roadmaps for offline reference

🔥 Streak Tracking System

  • GitHub-style contribution graph visualizing your daily consistency
  • Track current streak, total submissions, and longest streak
  • Year and month view options for detailed progress analysis
  • Color-coded activity levels showing intensity of learning

📝 Daily Submission System

  • Document what you learned or built each day
  • Submit project updates and achievements
  • Build a comprehensive portfolio of your learning journey
  • View complete submission history with dates and descriptions

⏱️ Pomodoro Timer

  • 25-minute focused work sessions for deep learning
  • 5-minute short breaks to prevent burnout
  • 15-minute long breaks for extended rest
  • Audio notifications when time's up

✅ Task Management

  • Create daily to-do lists aligned with your roadmap
  • Visual progress bar showing completion percentage
  • Check off completed tasks
  • Delete or modify tasks as priorities change

🔐 Secure Authentication

  • Personal user accounts with login/signup system
  • Individual dashboards for each user
  • Data persistence—pick up exactly where you left off
  • Separate user data isolation for privacy

How I built it

Technology Stack:

  • Backend: Flask (Python) for server logic and routing
  • AI Integration: Google Gemini API for intelligent roadmap generation
  • Authentication: Flask sessions for user login/logout
  • Database: JSON file storage for rapid development and easy data management
  • Frontend: HTML5, CSS3, and vanilla JavaScript
  • Markdown Rendering: Marked.js library for formatting AI-generated content
  • Design: Custom CSS with gradient themes and responsive layouts

Architecture & Implementation:

I started by designing the authentication system with Flask sessions, creating protected routes using Python decorators. The user data is stored in a JSON file with a structure that includes submissions, to-dos, and streak information for each user.

For the AI integration, I implemented API calls to Google's Gemini model with custom prompt engineering:

prompt = f"""
Create a 6-month beginner-friendly roadmap to become a {career_goal}.
Include month-wise plan, weekly tasks, and 2 project ideas.
Format it clearly with bullets.
"""

model = genai.GenerativeModel('gemini-pro')
response = model.generate_content(prompt)
roadmap = response.text

The contribution graph algorithm calculates date offsets to align weeks properly:

const startDate = new Date(today);
startDate.setDate(today.getDate() - 364);
const dayOfWeek = startDate.getDay();
startDate.setDate(startDate.getDate() - dayOfWeek); // Align to Sunday

The frontend uses async/await patterns for smooth API communication:

const response = await fetch('/generate', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ career: careerGoal })
});

Challenges I ran into

1. Contribution Graph Algorithm Complexity

Creating a GitHub-style contribution graph was far more challenging than I anticipated. I had to:

  • Calculate which day of the week the start date fell on
  • Properly align the grid to always start on Sunday
  • Handle 53 weeks of data (365 days doesn't divide evenly into weeks)
  • Dynamically position month labels above their corresponding weeks
  • Account for months that span multiple columns

The date arithmetic and edge cases took significant debugging time. I ultimately solved it by working backwards from today's date, finding the Sunday of 364 days ago, and building the grid week by week.

2. API Rate Limiting

Google's Gemini API free tier limits requests to 5 per minute. During testing, I kept hitting this limit, causing errors when generating multiple roadmaps. I had to implement proper error handling, display user-friendly messages explaining the wait time (around 25 seconds), and plan for future features like request queuing or upgrading to a paid tier.

3. Session Management Without a Real Database

Working with JSON file storage instead of a proper database introduced challenges:

  • Ensuring atomic read/write operations to prevent data corruption
  • Managing concurrent user access (what if two users save at the same time?)
  • Maintaining data integrity without database constraints
  • Planning a schema that would be easy to migrate to PostgreSQL later

I solved this by implementing careful file handling with proper error catching and structuring the JSON in a way that mirrors how a relational database would store the data.

4. Streak Calculation Logic

Calculating streaks correctly required handling multiple edge cases:

  • What if someone submits multiple times in one day? (Count as one day)
  • How do I detect when a streak is broken? (Compare consecutive dates)
  • Should today count if they haven't submitted yet? (No, only completed days)
  • How do I calculate the longest streak vs. current streak? (Separate algorithms)

I iterated through several versions before landing on a solution that properly handles all edge cases by normalizing dates to midnight and comparing day differences.

5. Balancing Features vs. Polish

With only one month for the hackathon, I had to constantly make decisions about scope:

  • Should I add more features or polish existing ones?
  • Is this feature core to the user experience or nice-to-have?
  • Can I cut corners here to spend more time on something more important?

I learned to prioritize ruthlessly, focusing on getting five core features working well rather than ten features working poorly.

Accomplishments that I'm proud of

Built a Fully Functional Multi-Feature Platform - Successfully integrated five distinct features (roadmap generation, streaks, submissions, Pomodoro, to-dos) that work seamlessly together in one cohesive application.

🎨 Created a Professional, Polished UI - Designed an intuitive interface with smooth animations, consistent styling, and responsive layouts that work beautifully on any device. The gradient theme and clean navigation make it feel like a real product, not just a hackathon project.

🤖 Successfully Integrated AI - This was my first time working with Large Language Model APIs. I learned prompt engineering, API error handling, and how to process AI-generated content for display in a web application.

📊 Implemented Complex Algorithms - The contribution graph algorithm, streak calculation logic, and date/time handling pushed my problem-solving skills. I'm proud that I debugged and optimized these features to work reliably.

Delivered Within Hackathon Timeline - Managed my time effectively to deliver a complete, working application with all planned features, thorough testing, and a polished demo—all within the one-month deadline.

🔐 Built Secure Authentication - Implemented a complete user authentication system with login, signup, session management, and protected routes—all from scratch without using pre-built auth libraries.

What I learned

Technical Skills:

  • Flask Framework: Deep understanding of routing, sessions, decorators, Jinja2 templating, and request handling
  • API Integration: How to work with external APIs, handle rate limits, implement error recovery, and process API responses
  • Frontend-Backend Communication: Async/await patterns, fetch API, JSON serialization, and RESTful endpoint design
  • Authentication Patterns: Session-based auth, password handling (and why hashing is critical!), protected routes, and user data isolation
  • Data Structures: Designing efficient schemas for storing user submissions, calculating streaks, and organizing relational data in JSON
  • Date/Time Programming: Complex calendar calculations, timezone handling, and date arithmetic for the contribution graph
  • JavaScript ES6+: Modern JavaScript features including async/await, arrow functions, template literals, and destructuring

Soft Skills:

  • Scope Management: Learning to say "not now" to features that would derail the timeline
  • User-Centric Design: Constantly asking "would this confuse a new user?" and simplifying accordingly
  • Problem Decomposition: Breaking overwhelming features (like the contribution graph) into small, testable pieces
  • Debugging Strategies: Systematic approaches to finding and fixing bugs in both frontend and backend code
  • Time Management: Balancing feature development, testing, documentation, and demo preparation

AI & Prompt Engineering:

  • How to craft prompts that generate consistent, well-formatted outputs
  • Understanding LLM limitations (hallucinations, inconsistent formatting, context windows)
  • Managing AI-generated content for reliable user experiences
  • Balancing API costs and request limits

Design Principles:

  • Less is more—clean interfaces beat feature-packed clutter
  • Consistency matters—users notice when buttons, spacing, or colors are inconsistent
  • Feedback is essential—users need to know when something is loading, succeeded, or failed
  • Mobile-first thinking—if it doesn't work on mobile, many users won't use it

What's next for Ascent - A Career Crafting Tool

Immediate Technical Improvements:

  • Database Migration: Move from JSON to PostgreSQL or MongoDB for scalability, concurrent user support, and data integrity
  • Password Security: Implement bcrypt hashing for passwords (currently stored in plain text for demo purposes only)
  • OAuth Integration: Add Google and GitHub login options for easier onboarding
  • Email System: Send streak reminders, weekly progress reports, and motivational emails

Feature Enhancements:

  • Social Features: Share roadmaps with friends, follow other learners, community leaderboards, study groups, and accountability partnerships
  • Advanced Analytics: Progress graphs over time, learning velocity metrics, skill gap analysis, and AI-powered recommendations
  • Multiple AI Models: Let users choose between Claude, GPT-4, and Gemini for roadmap generation and compare outputs
  • AI Coaching: Interactive AI chatbot that answers questions about your roadmap and provides personalized guidance
  • Export Options: PDF export with beautiful formatting, calendar integration (Google Calendar, Outlook), and Notion/Obsidian exports
  • Resource Library: Curated learning resources, course recommendations, and project inspiration linked to roadmap tasks
  • Interview Prep: Mock interview questions, coding challenges, and behavioral question practice tied to your career goal

Mobile Experience:

  • React Native App: Native mobile applications for iOS and Android
  • Push Notifications: Daily streak reminders and motivational messages
  • Offline Mode: Download roadmaps and work offline, sync when connected
  • Quick Check-ins: One-tap daily submissions for busy days

Long-term Vision:

Transform Ascent into the go-to platform for career transitions in tech, helping thousands of students and professionals successfully navigate their learning journeys. I want Ascent to become the tool I wish I had when I started learning to code—a single platform that eliminates confusion, provides structure, and keeps you accountable every step of the way.


🏔️ The journey to your dream career starts with a single step. Start climbing with Ascent today.

Built With

Share this project:

Updates