Machine learning · Sports analytics
CourtSense AI
A tennis match prediction and tournament simulation system.
CourtSense AI is a machine learning project for ATP tennis match prediction.
It combines an XGBoost model with Elo ratings, historical match retrieval, and contextual agent analysis.
The system predicts match win probabilities, explains the result using contextual signals,
and simulates a Roland-Garros tournament path from the official draw.
- XGBoost model trained on historical ATP matches
- Overall and surface-specific Elo ratings
- Historical match retrieval using cosine similarity
- Contextual agents for head-to-head, fatigue, matchup, news, and uncertainty analysis
- Interactive Streamlit app with match prediction and tournament simulation
Computer vision · Interactive AI
Guess What AI Thinks
A small game built on top of an image classification model.
This project turns an image classification model into a small interactive game, where the player tries to guess what the model will predict for a given image.
The goal was to take a standard image classification setup and turn it into something interactive.
Under the hood, the game uses SigLIP (google/siglip2-base-patch16-224). Instead of fixed classes,
I define a custom set of labels for each image pack. The model scores each label against the image,
the scores are converted into probabilities, and the game shows the top predictions.
- Image classification using SigLIP
- Custom label sets instead of fixed classes
- Scores converted to probabilities for ranking
- Interactive Streamlit app
Imitation learning · Planning
Tiny Robot Playground
A robot navigation playground to compare different decision strategies.
This project is about a small idea: put a robot in a grid and see how different approaches get it to the goal.
The task is straightforward, but the behavior of the policies is very different.
The robot moves in a 2D grid with randomly generated obstacles, and the target is always reachable.
You can control the difficulty by changing the grid size, obstacle density, or how far the target is.
- Smart Random: moves randomly but avoids going back immediately
- Optimal Path (BFS): sees the full grid and follows the shortest path
- Neural Policy: only sees locally and is trained via imitation learning (PyTorch)
All policies run on the same grid, so it is easy to compare them using success rate, number of steps,
collisions, and reward. The differences become very clear when you watch them side by side.
Reinforcement learning · Optimization
RL Dynamic Pricing
A reinforcement learning project for sequential pricing under uncertain demand.
This project simulates a simple e-commerce setting where a seller needs to set prices over time.
At each step, customers arrive randomly, decide whether to buy depending on the price, and the goal
is to maximize total revenue before inventory runs out.
The environment includes time-varying demand (Poisson arrivals), price-dependent conversion
(modeled with a sigmoid), and stochastic sales. This makes the problem sequential and uncertain,
which is where reinforcement learning becomes useful.
- Custom simulator with stochastic demand and limited inventory
- Deep Q-Network (DQN) for learning pricing policies
- Discrete action space (price grid)
- Comparison with fixed-price and heuristic baselines
About 8.5% higher mean revenue than the fixed-price baseline.
In the simulator, the DQN achieved around 678 mean revenue versus 625 for a fixed-price baseline over 50 evaluation episodes. These results describe this simulated setting.