↵
↵
Yes. It is me again :D↵
↵
I’m excited to share a project I've been working on at [Repovive](https://repovive.com), with the Great [user:Shayan,2025-12-19].↵
↵
We all know the struggle: you're stuck on a problem, the editorial is confusing (or non-existent), and you just need a *small hint* to nudge you in the right direction—not the full solution. That's exactly what this tool is built for.↵
↵
## What is it?↵
↵
The new addition to the Repovive Chorme Extension, an AI Agent, that embeds a context-aware AI chat directly into Codeforces (and AtCoder/LeetCode) problem pages.↵
↵
It isn't just a wrapper around ChatGPT, nor is it a proprietary "Black Box" model trained from scratch.↵
↵
* **Powered by Gemini**: It leverages the Google Gemini API (`gemini-pro`/`flash`) for reasoning.↵
↵
* **Your Own Keys**: You use your own free API key from Google AI Studio. This means no subscription fees and total control over your usage.↵
↵
* **Context Aware**: It specifically understands competitive programming contexts:↵
* It reads the problem statement, constraints, and test cases automatically.↵
* It fetches **Accepted solutions from top rankers** (Red Coders) to understand the *optimal* approach.↵
* It simulates a "Socratic Coach": it refuses to give you the code initially. Instead, it asks you guiding questions to help you derive the solution yourself.↵
↵
↵
↵
## Platform Deep Dive: Under the Hood↵
↵
Each platform requires a unique engineering approach. Here is how we handle the "Big Three":↵
↵
### 1. Codeforces ↵
↵
↵
* **How it works**:↵
* **Parsing**: We use the official `codeforces.com/api` to fetch problem metadata.↵
* **Solution Mining**: We identify the contest "Winners" via the API, find their submission IDs, and then get their source code.↵
* **Anti-Cheat**: We detect the specific `.countdown` timer element used in active rounds.↵
* **Tradeoffs & Limitations**:↵
* **API Rate Limits**: Codeforces has a strict 5 req/sec limit. If the site is under load (e.g., right after a contest), the "Solution Mining" might fail or be slow.↵
* **Old Contests**: Some very old problems ($< 2015$) might have missing metadata or different DOM structures that break parsing.↵
↵
### 2. AtCoder ↵
 ↵
↵
* **How it works**:↵
* **Parsing**: Since AtCoder has no official API, we built a robust HTML parser that reads the DOM directly to extract inputs/outputs.↵
* **Solution Mining**: The agent navigates to the submissions page, filters for "Accepted" + "C++" + "Fastest", and gets the code from the top result.↵
* **Tradeoffs & Limitations**:↵
* **Login Wall**: For some contests, you *must* be logged in to view submissions. The agent might show a "Cookie Error" if it can't access the submission page (it tries to inherit your session, but browser security can block this).↵
* **Fragility**: If AtCoder changes their website UI (class names), the geter will break until we update the extension.↵
↵
### 3. LeetCode ↵
↵
↵
* **How it works**:↵
* **Parsing**: We reverse-engineered LeetCode's GraphQL API to fetch clean problem questions without parsing messy HTML.↵
* **Knowledge Source**:↵
* **Old Problems (ID < 3200)**: Since these are in the LLM's training data, we rely on the model's internal knowledge for faster responses.↵
* **New Problems**: We fetch the top-voted "Community Solution" via GraphQL to give the model context on brand new questions.↵
* **Anti-Cheat**: We strictly disable the agent on any URL containing `/contest/`.↵
* **Tradeoffs & Limitations**:↵
* **SPA Navigation**: LeetCode is a Single Page Application (React). Sometimes the button might disappear when navigating between problems; a page refresh fixes this.↵
* **Community Quality**: For new problems, (ID > 3200), it is unlikely to get a solution, because the only way is to use leetcode GraphQL API, there is no official documentation, so we are still working on the best way to get a solution to feed the AI.↵
↵
#### Customizing Your Experience↵
↵
↵
↵
The extension also includes deep theming support to match your system style!↵
↵
## Legal & Ethical Notices (Anti-Cheat)↵
↵
**Crucial Point**: We take fair play seriously.↵
↵
* **Strict Anti-Cheat**: The agent is programmed to **automatically disable itself** during live contests.↵
* **Codeforces**: It detects the server-side countdown timer for active rounds.↵
* **AtCoder**: It checks the contest timer element.↵
* **LeetCode**: It hard-blocks any URL containing `/contest/`.↵
* **Purpose**: This tool is strictly for **upsolving** and **practice**. Using AI assistance during a rated contest is cheating and will get you banned. Don't do it.↵
↵
### Privacy & Security↵
* **No Data Collection**: Repovive **DOES NOT** collect, store, or transmit your data to its servers. We do not access your cookies or personal information.↵
* **Local Storage Only**: Your API keys, settings, and chat history are stored exclusively in your browser's local storage. Nothing leaves your machine except the API request to Gemini.↵
↵
## How to Get Started↵
↵
1. **Install Repovive**: [Repovive Competitive Programming](https://chromewebstore.google.com/detail/Repovive%20Competitive%20Programming/dgpbaoocbmidlfchoplgcjeelbihjeoi)↵
2. **Get a Gemini API Key**:↵
* Go to **[Google AI Studio](https://aistudio.google.com/app/apikey)** and sign in with your Google account.↵
* Click on the blue **"Get API key"** button in the top-left sidebar.↵
* Click **"Create API key"**. You might need to select "Create API key in new project" if you don't have one.↵
↵
↵
↵
* Copy the key that starts with `AIza...`.↵
↵
↵
3. **Open a Problem**: Navigate to any Codeforces problem.↵
4. **Click the Sparkle**: You'll see the floating AI button. Click it, paste your API key once, and start upsolving!↵
↵
## Known Issues & Roadmap↵
↵
Since this is an early beta, you might encounter:↵
↵
* **Rate Limits**: If too many people use it at once, Codeforces API might slow down context fetching.↵
↵
* **Parsing Errors**: Extremely old contests (10+ years ago) might have broken HTML structures.↵
↵
* **LeetCode Spa**: On LeetCode, if the button disappears after navigating, just refresh the page.↵
↵
* **Gemini Free Limits**: The Google Gemini Free Tier has usage limits (RPM/TPM). ↵
↵
* If you see `ResourceExhausted` or `429` errors, it means you've hit the limit.↵
↵
* **Auto-Downgrade Feature**: To keep you coding, the agent will **automatically downgrade** from `Gemini Pro` to `Gemini Flash`, then downgrade to `Gemini Flash-Light` if it detects quota issues. It automatically tries to upgrade back after 6 hours.↵
↵
**What's Next?** ↵
↵
* Better support for LeetCode new problems (ID > 3200).↵
* More robust cookie handling for AtCoder login walls.↵
* Integrating a "Hint Mode" that blurs the code mining output initially.↵
↵
## Feedback & Support↵
↵
We need your help to make this better!↵
↵
* **Found a bug?** Please report it to me on Codeforces: [user:Hmzaawy,2025-12-19].↵
↵
* **Have a suggestion?** Message me directly on Codeforces: [user:Hmzaawy,2025-12-19].↵
↵
* **Wanna contribute?** Message me directly on Codeforces: [user:Hmzaawy,2025-12-19]. with your idea you want to contribute!↵
↵
___↵
↵
We built this to make upsolving less frustrating and more educational. We'd love to hear your feedback!



