Inspiration We've all been there—staring at a coding problem for hours, frustrated and stuck. Traditional practice platforms offer binary feedback: right or wrong. But learning doesn't work that way. We were inspired by the idea of a mentor who knows exactly when you need help, what kind of guidance would be most useful, and which problems will challenge you without crushing your confidence. We wanted to build an AI that could be that mentor for every aspiring programmer. What it does KoBoom is an intelligent competitive programming platform that adapts to each user's skill level. It uses machine learning to:

Predict problem difficulty for individual users based on their solving history and patterns Deliver contextual hints at the optimal moment—when you've struggled enough to learn but before frustration sets in Recommend personalized problems that target your specific weak areas using semantic similarity Analyze code failures in detail, distinguishing between syntax errors, logic mistakes, time complexity issues, and runtime errors Track your progress and continuously update predictions as you improve

The system doesn't just tell you if your code is correct—it understands why it failed and guides you toward better solutions without spoiling the learning experience. How we built it Backend Architecture:

Built on FastAPI for high-performance API endpoints SQLAlchemy ORM managing a SQLite database with users, problems, submissions, and predictions Two TensorFlow/Keras neural networks: one for personalized difficulty prediction, one for hint timing optimization Sentence Transformers (all-MiniLM-L6-v2) for generating problem embeddings and semantic matching Anthropic's Claude API for generating natural, educational hints and explanations

Machine Learning Pipeline:

Created a synthetic data generator to simulate 100+ users solving 50+ problems with realistic patterns Engineered features combining problem characteristics (tags, difficulty) with user statistics (success rates, solving time, edit patterns) Trained a difficulty prediction model (15-dimensional input) that outputs pass probability for each user-problem pair Built a hint timing model using contextual features (time spent, number of edits) to determine optimal intervention points Implemented automatic model retraining as users submit solutions

Frontend:

Clean, modern interface built with vanilla JavaScript and custom CSS Dark/light theme support with gradient backgrounds and glassmorphism effects Real-time problem filtering by difficulty, tags, and search queries Interactive code editor with syntax highlighting and multi-language templates Animated verdict modals showing results, hints, and recommendations

Code Execution & Analysis:

Sandboxed Python code execution using subprocess with timeout protection Automated test case validation comparing expected vs actual outputs Intelligent failure classification (syntax, runtime, TLE, wrong answer) Solution comparison using difflib to identify missing logic or algorithmic differences

Challenges we ran into Model Training Convergence: Our initial difficulty prediction model struggled with overfitting on synthetic data. We solved this by adding dropout layers, expanding the feature set to include user-specific statistics, and generating more diverse training scenarios. Hint Quality Control: Early versions of our hint system either gave away too much or were too vague. We refined the prompt engineering for Claude to ensure hints point toward concepts and approaches without revealing code or complete solutions. Real-time Predictions: Computing predictions for all problems after each submission was slow. We optimized by batching predictions, caching embeddings, and only recomputing when user profiles significantly change. Feature Engineering: Determining which features actually predict success was tricky. We experimented with various combinations and found that tag-specific success rates were more predictive than overall statistics. Balancing Simplicity and Power: We wanted sophisticated ML but also a usable system. We spent considerable time on the CLI to make model training, data generation, and initialization straightforward. Accomplishments that we're proud of ✅ Built a complete ML pipeline from synthetic data generation to model training to real-time inference ✅ Achieved meaningful personalization—the difficulty predictions visibly adapt as users solve problems ✅ Created an elegant UX—the verdict modal seamlessly presents hints, probabilities, and recommendations without overwhelming users ✅ Integrated multiple AI systems—combining our custom TensorFlow models with Claude API for comprehensive mentorship ✅ Made it production-ready—comprehensive CLI, error handling, database schema, and clean architecture ✅ Maintained learning integrity—hints guide without spoiling, preserving the educational value of struggle What we learned Machine Learning in Practice: We gained hands-on experience with feature engineering, model architecture selection, handling imbalanced data, and deploying models in a web application. We learned that simple models with good features often outperform complex architectures. Prompt Engineering: Crafting effective prompts for Claude taught us about balancing specificity with creativity, constraining outputs to JSON while maintaining natural language quality, and error handling when LLMs produce unexpected formats. User Experience Design: We discovered that showing probability percentages and explanations significantly increases user trust and engagement compared to black-box recommendations. Full-Stack Integration: Connecting ML models, databases, APIs, and frontend interfaces taught us about managing state, handling asynchronous operations, and gracefully degrading when services fail. Educational Technology: We learned that effective learning tools need to balance challenge with support—too much help prevents growth, too little causes frustration.

Built With

Share this project:

Updates

Submission history