{
  "id": 693918,
  "title": "GPT-OSS Browser Tool for Math Reasoning",
  "content": "<p>The GPT-OSS <code>browser</code> tool doesn't have to point at the web — it can point at the model's own parallel attempts.</p>\n<p><strong>TL;DR</strong></p>\n<ul>\n<li><strong>Stage 1:</strong> generate N solutions independently with the <code>python</code> tool.</li>\n<li><strong>Stage 2:</strong> index them as web pages and let a new solver query them via <code>browser</code>.</li>\n<li><strong>Result on Hard-50:</strong> maj@8 66.0% → 73.7% (pass@8 drops 92.0% → 84.0%).</li>\n</ul>\n<h2>Motivation</h2>\n<p>Last year, during AIMO 2, I was lucky to join the NVIDIA NeMo-Skills team and spent most of my work time on the competition. I focused on reward models and on how to decrease the gap between maj@k and pass@k. Eventually, we developed the <a href=\"https://arxiv.org/pdf/2507.17797\" target=\"_blank\">GenSelect</a> method, which picks the best solution from multiple attempts. However, we didn't use this method in the final submission because of time constraints.</p>\n<p>This year, I worked on Deep Research <a href=\"https://huggingface.co/blog/nvidia/how-nvidia-won-deepresearch-bench\" target=\"_blank\">project</a>. We built a multi-agent system capable of performing multi-step web search with hundreds of queries, synthesizing the search results, and producing a final report for a single \"research\" question. During this project, I noticed how powerful the GPT-OSS model with the <code>browser</code> tool can be. Eventually, we distilled this knowledge into a fine-tuned NVIDIA Nemotron 3 Super model.</p>\n<p>Still, at the end of this competition, I decided to combine these two ideas — to use the <code>browser</code> tool for correct math solution search.</p>\n<h2>Method</h2>\n<p>The GPT-OSS model has two built-in tools: <code>python</code> and <code>browser</code>. The <code>browser</code> tool has three methods: <code>search</code>, <code>open</code>, and <code>find</code>. The LLM starts with a search query, then uses the <code>open</code> method to open a link from the search results, and can also find information on the page using the <code>find</code> method when the page content is too long.</p>\n<p>The obvious way to use the <code>browser</code> tool is to combine it with Retrieval-Augmented Generation (RAG). But it seems that RAG is not very effective for math reasoning. Instead, I decided to use the <code>browser</code> tool for multi-stage solution search.</p>\n<p>My pipeline consists of two distinct stages: (1) parallel solution generation, and (2) generating new solutions based on the previous ones. In the first stage, I generate solutions independently and in parallel, using the <code>python</code> tool only. In the second stage, I index the solutions generated in the first stage, add the <code>browser</code> tool and prompt the LLM to search correct solution. Here is the developer prompt for the second stage:</p>\n<blockquote>\n  <p>You are a world-class mathematical olympiad solver. Your task is to solve the given competition problem. You can use the browser tools (browser.search, browser.open) to explore solutions from AoPS forum. Search for solutions first, then critically compare different approaches against each other — check whether they agree, identify contradictions, and verify the most promising solution step-by-step with the python tool before producing your final answer. Use only https://artofproblemsolving.com/community/ URL, do NOT open external URLs (Wikipedia, WolframAlpha, GitHub, OEIS, mathjs.org, etc.). Remember, browser results show solutions from other people — some may be wrong, so always verify claims independently using the python tool before trusting them. Put your final answer within \\boxed{}. The final answer must be a non-negative integer between 0 and 99999.</p>\n</blockquote>\n<p>You can see that I present the generated solutions as if they retrieved from the AoPS forum.</p>\n<p>As an alternative solution, I also tried concatenating the summaries directly into the prompt instead of exposing them through the <code>browser</code> tool:</p>\n<blockquote>\n  <p>You are a world-class mathematical olympiad solver. Your task is to solve the given competition problem.</p>\n  <p>Below are several solution approaches proposed by other solvers. Each approach explains a method and its reasoning. Critically compare the approaches against each other — identify where they agree or contradict, note which ideas look promising and which ones may be flawed, and verify the most promising approach step-by-step with the python tool before committing to an answer. Some approaches may be wrong, so always double-check claims with python before trusting them.</p>\n  <p>## Candidate approaches</p>\n  <p>{approaches}</p>\n  <p>Put your final answer within \\boxed{}. The final answer must be a non-negative integer between 0 and 99999.</p>\n</blockquote>\n<p>This variant uses no <code>browser</code> tool at all — the solver just sees all candidate approaches up-front in its context.</p>\n<h2>Results</h2>\n<p>I tested this idea on 50 problems from <a href=\"https://www.kaggle.com/datasets/zfturbo/hard-math-problems-for-aimo-3\" target=\"_blank\">Hard Math Problems for AIMO 3</a> dataset.</p>\n<table>\n<thead>\n<tr>\n<th>Metric</th>\n<th>stage 1 (1 run)</th>\n<th>stage 2 concatenate (avg of 4 runs)</th>\n<th>stage 2 browser (avg of 6 runs)</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>pass@1</td>\n<td>48.5%</td>\n<td><strong>73.1%</strong></td>\n<td>67.1%</td>\n</tr>\n<tr>\n<td>pass@2</td>\n<td>69.2%</td>\n<td><strong>78.8%</strong></td>\n<td>76.5%</td>\n</tr>\n<tr>\n<td>pass@4</td>\n<td><strong>85.1%</strong></td>\n<td>81.7%</td>\n<td>81.6%</td>\n</tr>\n<tr>\n<td>pass@8</td>\n<td><strong>92.0%</strong></td>\n<td>83.5%</td>\n<td>84.0%</td>\n</tr>\n<tr>\n<td>maj@4</td>\n<td>52.0%</td>\n<td><strong>75.0%</strong></td>\n<td>71.0%</td>\n</tr>\n<tr>\n<td>maj@8</td>\n<td>66.0%</td>\n<td><strong>78.0%</strong></td>\n<td>73.7%</td>\n</tr>\n</tbody>\n</table>\n<p>You can see that the second stage improves the maj@k scores but decreases the pass@8 score. The concatenate version actually matches or beats the browser-based approach — just showing all candidate approaches up-front in the prompt is enough to get most of the gain. However, the <code>browser</code> approach should scale better to many more parallel attempts. It could also extend naturally to RAG-style settings, or used in the scenario where the pool of summaries keeps growing over time.</p>\n<p>Unfortunately, I didn't manage to make it work within the competition constraints. My final submission <a href=\"https://www.kaggle.com/code/sorokin/gpt-oss-math-search\" target=\"_blank\">gpt-oss-math-search</a> only scored 36, where I applied the second stage only to tied cases.</p>\n<h2>Takeaways</h2>\n<ul>\n<li>Sharing context between parallel attempts beats independent sampling on maj@k.</li>\n<li>A <code>browser</code>-style tool can be considered as one alternative interface for that sharing.</li>\n</ul>",
  "comments": [
    {
      "id": 3447145,
      "author_name": "xz",
      "author_url": "",
      "post_date": "2026-04-22T19:02:05.843000",
      "content": "<p>Is using browser tool different than manually having the model to summarise each solution and then use another instance to compare them?</p>",
      "votes": 2,
      "replies": [
        {
          "id": 3447153,
          "author_name": "ivan",
          "author_url": "",
          "post_date": "2026-04-22T19:15:57.423000",
          "content": "<p>Good question. It should be similar, I guess. However, the browser tool has few benefits, you can control how search results formatted, cropped etc. and model know how to use it without additional prompting. But agree, I should have baseline with simple prompting as you suggested.</p>",
          "votes": 1,
          "replies": [
            {
              "id": 3447726,
              "author_name": "ivan",
              "author_url": "",
              "post_date": "2026-04-23T19:48:26.650000",
              "content": "<p>damn, i was too obsessed with browser tool, the concatenation baseline looks very good. I updated table with results.</p>",
              "votes": 1,
              "replies": []
            }
          ]
        },
        {
          "id": 3447386,
          "author_name": "Chan Kha Vu",
          "author_url": "",
          "post_date": "2026-04-23T03:48:57.127000",
          "content": "<p>Summarization will take too much precious time I suppose. As opposed to a chunked search index that you can manage &amp; query on CPU in real time. Every generated token should go to reasoning, not summarization. Even verification has questionable ROI in this competition.</p>",
          "votes": 0,
          "replies": [
            {
              "id": 3447491,
              "author_name": "ivan",
              "author_url": "",
              "post_date": "2026-04-23T08:33:05.577000",
              "content": "<p>Yeah, intermediate summarization takes so time, but not much. I insert fake assistant instruction to use the same KV cache. You can check few logs from my notebook. For example, it takes about 30 seconds to generate short and long summaries for 6 attempts.</p>",
              "votes": 2,
              "replies": []
            },
            {
              "id": 3447535,
              "author_name": "Nguyen",
              "author_url": "",
              "post_date": "2026-04-23T09:34:42.147000",
              "content": "<blockquote>\n  <p>I insert fake assistant instruction to use the same KV cache.</p>\n</blockquote>\n<p>That's a smart approach. I used to try creating an additional parallel summary request if the conversation was &gt;30k tokens but gave up when it required too much kv cache.</p>",
              "votes": 0,
              "replies": []
            },
            {
              "id": 3447551,
              "author_name": "ivan",
              "author_url": "",
              "post_date": "2026-04-23T10:03:23.463000",
              "content": "<p><a href=\"https://www.kaggle.com/davidacad10\" target=\"_blank\">@davidacad10</a> used the same trick <a href=\"https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3/writeups/amo-agentic-math-orchestrator-for-olympiad-mathem\" target=\"_blank\">here</a></p>",
              "votes": 0,
              "replies": []
            }
          ]
        }
      ]
    },
    {
      "id": 3447766,
      "author_name": "Durga Kumari",
      "author_url": "",
      "post_date": "2026-04-23T21:07:38.163000",
      "content": "<p>Really interesting approach using the browser tool for internal solution search is a clever twist </p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3447418,
      "author_name": "Navneet",
      "author_url": "",
      "post_date": "2026-04-23T05:12:16.890000",
      "content": "<p>Thanks for the Math Reasoning Tool <a href=\"https://www.kaggle.com/sorokin\" target=\"_blank\">@sorokin</a> </p>",
      "votes": 0,
      "replies": []
    },
    {
      "id": 3447371,
      "author_name": "@kaggleqrdl",
      "author_url": "",
      "post_date": "2026-04-23T03:02:33.700000",
      "content": "<p>I didn't look at Hard Math Problems for AIMO 3 dataset. .. How did you verify all of the misses that they are well posed questions with correct answers?   I have found that gpt-oss will guess the wrong answers sometimes.</p>\n<p>There is a really good benchmark on math arena called \"Broken Arxiv\".  The best model has like 38% accuracy.  Worth checking out.   </p>\n<p>I think this was a huge gap in this contest that people didn't talk about enough, which I found particularly frustrating.  All these castles built on very fragile foundations..</p>",
      "votes": 0,
      "replies": [
        {
          "id": 3447498,
          "author_name": "Ayaka Kirima",
          "author_url": "",
          "post_date": "2026-04-23T08:48:16.280000",
          "content": "<p>I've looked them over. IMHO, the <a href=\"https://www.kaggle.com/datasets/nguyennguyen599/astral-bench\" target=\"_blank\">AstralBench</a> is more reliable and suitable for questions at the IMO level. Gemini 3 Pro and ChatGPT have given consistent answers with benchmark after a few tries in my experiments.</p>",
          "votes": 0,
          "replies": [
            {
              "id": 3447611,
              "author_name": "@kaggleqrdl",
              "author_url": "",
              "post_date": "2026-04-23T14:49:39.453000",
              "content": "<p><a href=\"https://www.kaggle.com/ayakakirima\" target=\"_blank\">@ayakakirima</a> tbh, unless they had links to proofs done by multiple people on artofproblemsolving or official competitions, I am pretty skeptical.   Unless of course, you're IMO level math person and you manually verified them all.  :D  Than I'll take your word for it..</p>",
              "votes": 0,
              "replies": []
            }
          ]
        },
        {
          "id": 3447523,
          "author_name": "ivan",
          "author_url": "",
          "post_date": "2026-04-23T09:23:36.420000",
          "content": "<p>I didn't check \"Broken Arxiv\". But indeed in <a href=\"https://www.kaggle.com/datasets/zfturbo/hard-math-problems-for-aimo-3\" target=\"_blank\">Hard Math Problems for AIMO 3</a> there are few problems with ambiguous wording, e.g. IMO1477 about pirate net cash.</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 3447236,
      "author_name": "David Babu",
      "author_url": "",
      "post_date": "2026-04-22T21:11:25.300000",
      "content": "<p>Interesting..That's a clever effiecient way of adding resolvers.</p>\n<p>I had a similar but not as efficient idea where I had created a local RAG with each traces coming from the solvers and added the rag_search as python modules solvers can call. But the phase 1 solvers querying each others traces lead to context posioning in some cases adn I had to drop it.  However this idea of using search to build on from initial solvers is different since initial solvers are had independent solution.</p>\n<p>I had a async summarizer-verifier system built in to pass this info the phase 2 solvers. This method probably can do the same and without wasting time and compute. Kudos on this!! </p>",
      "votes": 0,
      "replies": [
        {
          "id": 3447499,
          "author_name": "ivan",
          "author_url": "",
          "post_date": "2026-04-23T08:49:56.610000",
          "content": "<p>I read your <a href=\"https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3/writeups/amo-agentic-math-orchestrator-for-olympiad-mathem\" target=\"_blank\">writeup</a> too. Many interesting ideas, like \"beam self-eval\" or verification. I hope your team will survive lb shakeup!</p>",
          "votes": 0,
          "replies": []
        }
      ]
    },
    {
      "id": 3447214,
      "author_name": "Chan Kha Vu",
      "author_url": "",
      "post_date": "2026-04-22T20:53:59.010000",
      "content": "<p>Wow, this is actually so clean! I was playing around with summarization / aggregation to \"blend\" knowledge between reasoning rollouts in real time, but letting the model decide when it needs help is much cleaner!</p>",
      "votes": 0,
      "replies": []
    }
  ],
  "comment_count": 16,
  "messages": [
    {
      "id": 3447136,
      "postDate": "2026-04-22T18:46:51.990Z",
      "content": "<p>The GPT-OSS <code>browser</code> tool doesn't have to point at the web — it can point at the model's own parallel attempts.</p>\n<p><strong>TL;DR</strong></p>\n<ul>\n<li><strong>Stage 1:</strong> generate N solutions independently with the <code>python</code> tool.</li>\n<li><strong>Stage 2:</strong> index them as web pages and let a new solver query them via <code>browser</code>.</li>\n<li><strong>Result on Hard-50:</strong> maj@8 66.0% → 73.7% (pass@8 drops 92.0% → 84.0%).</li>\n</ul>\n<h2>Motivation</h2>\n<p>Last year, during AIMO 2, I was lucky to join the NVIDIA NeMo-Skills team and spent most of my work time on the competition. I focused on reward models and on how to decrease the gap between maj@k and pass@k. Eventually, we developed the <a href=\"https://arxiv.org/pdf/2507.17797\" target=\"_blank\">GenSelect</a> method, which picks the best solution from multiple attempts. However, we didn't use this method in the final submission because of time constraints.</p>\n<p>This year, I worked on Deep Research <a href=\"https://huggingface.co/blog/nvidia/how-nvidia-won-deepresearch-bench\" target=\"_blank\">project</a>. We built a multi-agent system capable of performing multi-step web search with hundreds of queries, synthesizing the search results, and producing a final report for a single \"research\" question. During this project, I noticed how powerful the GPT-OSS model with the <code>browser</code> tool can be. Eventually, we distilled this knowledge into a fine-tuned NVIDIA Nemotron 3 Super model.</p>\n<p>Still, at the end of this competition, I decided to combine these two ideas — to use the <code>browser</code> tool for correct math solution search.</p>\n<h2>Method</h2>\n<p>The GPT-OSS model has two built-in tools: <code>python</code> and <code>browser</code>. The <code>browser</code> tool has three methods: <code>search</code>, <code>open</code>, and <code>find</code>. The LLM starts with a search query, then uses the <code>open</code> method to open a link from the search results, and can also find information on the page using the <code>find</code> method when the page content is too long.</p>\n<p>The obvious way to use the <code>browser</code> tool is to combine it with Retrieval-Augmented Generation (RAG). But it seems that RAG is not very effective for math reasoning. Instead, I decided to use the <code>browser</code> tool for multi-stage solution search.</p>\n<p>My pipeline consists of two distinct stages: (1) parallel solution generation, and (2) generating new solutions based on the previous ones. In the first stage, I generate solutions independently and in parallel, using the <code>python</code> tool only. In the second stage, I index the solutions generated in the first stage, add the <code>browser</code> tool and prompt the LLM to search correct solution. Here is the developer prompt for the second stage:</p>\n<blockquote>\n  <p>You are a world-class mathematical olympiad solver. Your task is to solve the given competition problem. You can use the browser tools (browser.search, browser.open) to explore solutions from AoPS forum. Search for solutions first, then critically compare different approaches against each other — check whether they agree, identify contradictions, and verify the most promising solution step-by-step with the python tool before producing your final answer. Use only https://artofproblemsolving.com/community/ URL, do NOT open external URLs (Wikipedia, WolframAlpha, GitHub, OEIS, mathjs.org, etc.). Remember, browser results show solutions from other people — some may be wrong, so always verify claims independently using the python tool before trusting them. Put your final answer within \\boxed{}. The final answer must be a non-negative integer between 0 and 99999.</p>\n</blockquote>\n<p>You can see that I present the generated solutions as if they retrieved from the AoPS forum.</p>\n<p>As an alternative solution, I also tried concatenating the summaries directly into the prompt instead of exposing them through the <code>browser</code> tool:</p>\n<blockquote>\n  <p>You are a world-class mathematical olympiad solver. Your task is to solve the given competition problem.</p>\n  <p>Below are several solution approaches proposed by other solvers. Each approach explains a method and its reasoning. Critically compare the approaches against each other — identify where they agree or contradict, note which ideas look promising and which ones may be flawed, and verify the most promising approach step-by-step with the python tool before committing to an answer. Some approaches may be wrong, so always double-check claims with python before trusting them.</p>\n  <p>## Candidate approaches</p>\n  <p>{approaches}</p>\n  <p>Put your final answer within \\boxed{}. The final answer must be a non-negative integer between 0 and 99999.</p>\n</blockquote>\n<p>This variant uses no <code>browser</code> tool at all — the solver just sees all candidate approaches up-front in its context.</p>\n<h2>Results</h2>\n<p>I tested this idea on 50 problems from <a href=\"https://www.kaggle.com/datasets/zfturbo/hard-math-problems-for-aimo-3\" target=\"_blank\">Hard Math Problems for AIMO 3</a> dataset.</p>\n<table>\n<thead>\n<tr>\n<th>Metric</th>\n<th>stage 1 (1 run)</th>\n<th>stage 2 concatenate (avg of 4 runs)</th>\n<th>stage 2 browser (avg of 6 runs)</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>pass@1</td>\n<td>48.5%</td>\n<td><strong>73.1%</strong></td>\n<td>67.1%</td>\n</tr>\n<tr>\n<td>pass@2</td>\n<td>69.2%</td>\n<td><strong>78.8%</strong></td>\n<td>76.5%</td>\n</tr>\n<tr>\n<td>pass@4</td>\n<td><strong>85.1%</strong></td>\n<td>81.7%</td>\n<td>81.6%</td>\n</tr>\n<tr>\n<td>pass@8</td>\n<td><strong>92.0%</strong></td>\n<td>83.5%</td>\n<td>84.0%</td>\n</tr>\n<tr>\n<td>maj@4</td>\n<td>52.0%</td>\n<td><strong>75.0%</strong></td>\n<td>71.0%</td>\n</tr>\n<tr>\n<td>maj@8</td>\n<td>66.0%</td>\n<td><strong>78.0%</strong></td>\n<td>73.7%</td>\n</tr>\n</tbody>\n</table>\n<p>You can see that the second stage improves the maj@k scores but decreases the pass@8 score. The concatenate version actually matches or beats the browser-based approach — just showing all candidate approaches up-front in the prompt is enough to get most of the gain. However, the <code>browser</code> approach should scale better to many more parallel attempts. It could also extend naturally to RAG-style settings, or used in the scenario where the pool of summaries keeps growing over time.</p>\n<p>Unfortunately, I didn't manage to make it work within the competition constraints. My final submission <a href=\"https://www.kaggle.com/code/sorokin/gpt-oss-math-search\" target=\"_blank\">gpt-oss-math-search</a> only scored 36, where I applied the second stage only to tied cases.</p>\n<h2>Takeaways</h2>\n<ul>\n<li>Sharing context between parallel attempts beats independent sampling on maj@k.</li>\n<li>A <code>browser</code>-style tool can be considered as one alternative interface for that sharing.</li>\n</ul>",
      "rawMarkdown": "The GPT-OSS `browser` tool doesn't have to point at the web — it can point at the model's own parallel attempts.\n\n**TL;DR**\n- **Stage 1:** generate N solutions independently with the `python` tool.\n- **Stage 2:** index them as web pages and let a new solver query them via `browser`.\n- **Result on Hard-50:** maj@8 66.0% → 73.7% (pass@8 drops 92.0% → 84.0%).\n\n## Motivation\n\nLast year, during AIMO 2, I was lucky to join the NVIDIA NeMo-Skills team and spent most of my work time on the competition. I focused on reward models and on how to decrease the gap between maj@k and pass@k. Eventually, we developed the [GenSelect](https://arxiv.org/pdf/2507.17797) method, which picks the best solution from multiple attempts. However, we didn't use this method in the final submission because of time constraints.\n\nThis year, I worked on Deep Research [project](https://huggingface.co/blog/nvidia/how-nvidia-won-deepresearch-bench). We built a multi-agent system capable of performing multi-step web search with hundreds of queries, synthesizing the search results, and producing a final report for a single \"research\" question. During this project, I noticed how powerful the GPT-OSS model with the `browser` tool can be. Eventually, we distilled this knowledge into a fine-tuned NVIDIA Nemotron 3 Super model.\n\nStill, at the end of this competition, I decided to combine these two ideas — to use the `browser` tool for correct math solution search.\n\n## Method\n\nThe GPT-OSS model has two built-in tools: `python` and `browser`. The `browser` tool has three methods: `search`, `open`, and `find`. The LLM starts with a search query, then uses the `open` method to open a link from the search results, and can also find information on the page using the `find` method when the page content is too long.\n\nThe obvious way to use the `browser` tool is to combine it with Retrieval-Augmented Generation (RAG). But it seems that RAG is not very effective for math reasoning. Instead, I decided to use the `browser` tool for multi-stage solution search.\n\nMy pipeline consists of two distinct stages: (1) parallel solution generation, and (2) generating new solutions based on the previous ones. In the first stage, I generate solutions independently and in parallel, using the `python` tool only. In the second stage, I index the solutions generated in the first stage, add the `browser` tool and prompt the LLM to search correct solution. Here is the developer prompt for the second stage:\n\n>You are a world-class mathematical olympiad solver. Your task is to solve the given competition problem. You can use the browser tools (browser.search, browser.open) to explore solutions from AoPS forum. Search for solutions first, then critically compare different approaches against each other — check whether they agree, identify contradictions, and verify the most promising solution step-by-step with the python tool before producing your final answer. Use only https://artofproblemsolving.com/community/<solution> URL, do NOT open external URLs (Wikipedia, WolframAlpha, GitHub, OEIS, mathjs.org, etc.). Remember, browser results show solutions from other people — some may be wrong, so always verify claims independently using the python tool before trusting them. Put your final answer within \\\\boxed{}. The final answer must be a non-negative integer between 0 and 99999.\n\nYou can see that I present the generated solutions as if they retrieved from the AoPS forum.\n\nAs an alternative solution, I also tried concatenating the summaries directly into the prompt instead of exposing them through the `browser` tool:\n\n>You are a world-class mathematical olympiad solver. Your task is to solve the given competition problem.\n>\n>Below are several solution approaches proposed by other solvers. Each approach explains a method and its reasoning. Critically compare the approaches against each other — identify where they agree or contradict, note which ideas look promising and which ones may be flawed, and verify the most promising approach step-by-step with the python tool before committing to an answer. Some approaches may be wrong, so always double-check claims with python before trusting them.\n>\n>\\## Candidate approaches\n>\n>{approaches}\n>\n>Put your final answer within \\\\boxed{}. The final answer must be a non-negative integer between 0 and 99999.\n\nThis variant uses no `browser` tool at all — the solver just sees all candidate approaches up-front in its context.\n\n## Results\n\nI tested this idea on 50 problems from [Hard Math Problems for AIMO 3](https://www.kaggle.com/datasets/zfturbo/hard-math-problems-for-aimo-3) dataset.\n\n| Metric | stage 1 (1 run) | stage 2 concatenate (avg of 4 runs) | stage 2 browser (avg of 6 runs) |\n|---|---|---|---|\n| pass@1 | 48.5% | **73.1%** | 67.1% |\n| pass@2 | 69.2% | **78.8%** | 76.5% |\n| pass@4 | **85.1%** | 81.7% | 81.6% |\n| pass@8 | **92.0%** | 83.5% | 84.0% |\n| maj@4 | 52.0% | **75.0%** | 71.0% |\n| maj@8 | 66.0% | **78.0%** | 73.7% |\n\nYou can see that the second stage improves the maj@k scores but decreases the pass@8 score. The concatenate version actually matches or beats the browser-based approach — just showing all candidate approaches up-front in the prompt is enough to get most of the gain. However, the `browser` approach should scale better to many more parallel attempts. It could also extend naturally to RAG-style settings, or used in the scenario where the pool of summaries keeps growing over time.\n\nUnfortunately, I didn't manage to make it work within the competition constraints. My final submission [gpt-oss-math-search](https://www.kaggle.com/code/sorokin/gpt-oss-math-search) only scored 36, where I applied the second stage only to tied cases.\n\n## Takeaways\n\n- Sharing context between parallel attempts beats independent sampling on maj@k.\n- A `browser`-style tool can be considered as one alternative interface for that sharing.",
      "votes": 24
    },
    {
      "id": 3447145,
      "postDate": "2026-04-22T19:02:05.843Z",
      "content": "<p>Is using browser tool different than manually having the model to summarise each solution and then use another instance to compare them?</p>",
      "rawMarkdown": "Is using browser tool different than manually having the model to summarise each solution and then use another instance to compare them?",
      "votes": 2,
      "replies": [
        {
          "id": 3447153,
          "postDate": "2026-04-22T19:15:57.423Z",
          "content": "<p>Good question. It should be similar, I guess. However, the browser tool has few benefits, you can control how search results formatted, cropped etc. and model know how to use it without additional prompting. But agree, I should have baseline with simple prompting as you suggested.</p>",
          "rawMarkdown": "Good question. It should be similar, I guess. However, the browser tool has few benefits, you can control how search results formatted, cropped etc. and model know how to use it without additional prompting. But agree, I should have baseline with simple prompting as you suggested.",
          "votes": 1,
          "replies": [
            {
              "id": 3447726,
              "postDate": "2026-04-23T19:48:26.650Z",
              "content": "<p>damn, i was too obsessed with browser tool, the concatenation baseline looks very good. I updated table with results.</p>",
              "rawMarkdown": "damn, i was too obsessed with browser tool, the concatenation baseline looks very good. I updated table with results.",
              "votes": 1
            }
          ]
        },
        {
          "id": 3447386,
          "postDate": "2026-04-23T03:48:57.127Z",
          "content": "<p>Summarization will take too much precious time I suppose. As opposed to a chunked search index that you can manage &amp; query on CPU in real time. Every generated token should go to reasoning, not summarization. Even verification has questionable ROI in this competition.</p>",
          "rawMarkdown": "Summarization will take too much precious time I suppose. As opposed to a chunked search index that you can manage & query on CPU in real time. Every generated token should go to reasoning, not summarization. Even verification has questionable ROI in this competition.",
          "replies": [
            {
              "id": 3447491,
              "postDate": "2026-04-23T08:33:05.577Z",
              "content": "<p>Yeah, intermediate summarization takes so time, but not much. I insert fake assistant instruction to use the same KV cache. You can check few logs from my notebook. For example, it takes about 30 seconds to generate short and long summaries for 6 attempts.</p>",
              "rawMarkdown": "Yeah, intermediate summarization takes so time, but not much. I insert fake assistant instruction to use the same KV cache. You can check few logs from my notebook. For example, it takes about 30 seconds to generate short and long summaries for 6 attempts.",
              "votes": 2
            },
            {
              "id": 3447535,
              "postDate": "2026-04-23T09:34:42.147Z",
              "content": "<blockquote>\n  <p>I insert fake assistant instruction to use the same KV cache.</p>\n</blockquote>\n<p>That's a smart approach. I used to try creating an additional parallel summary request if the conversation was &gt;30k tokens but gave up when it required too much kv cache.</p>",
              "rawMarkdown": "> I insert fake assistant instruction to use the same KV cache.\n\nThat's a smart approach. I used to try creating an additional parallel summary request if the conversation was >30k tokens but gave up when it required too much kv cache."
            },
            {
              "id": 3447551,
              "postDate": "2026-04-23T10:03:23.463Z",
              "content": "<p><a href=\"https://www.kaggle.com/davidacad10\" target=\"_blank\">@davidacad10</a> used the same trick <a href=\"https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3/writeups/amo-agentic-math-orchestrator-for-olympiad-mathem\" target=\"_blank\">here</a></p>",
              "rawMarkdown": "@davidacad10 used the same trick [here](https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3/writeups/amo-agentic-math-orchestrator-for-olympiad-mathem)"
            }
          ]
        }
      ]
    },
    {
      "id": 3447766,
      "postDate": "2026-04-23T21:07:38.163Z",
      "content": "<p>Really interesting approach using the browser tool for internal solution search is a clever twist </p>",
      "rawMarkdown": "Really interesting approach using the browser tool for internal solution search is a clever twist "
    },
    {
      "id": 3447418,
      "postDate": "2026-04-23T05:12:16.890Z",
      "content": "<p>Thanks for the Math Reasoning Tool <a href=\"https://www.kaggle.com/sorokin\" target=\"_blank\">@sorokin</a> </p>",
      "rawMarkdown": "Thanks for the Math Reasoning Tool @sorokin "
    },
    {
      "id": 3447371,
      "postDate": "2026-04-23T03:02:33.700Z",
      "content": "<p>I didn't look at Hard Math Problems for AIMO 3 dataset. .. How did you verify all of the misses that they are well posed questions with correct answers?   I have found that gpt-oss will guess the wrong answers sometimes.</p>\n<p>There is a really good benchmark on math arena called \"Broken Arxiv\".  The best model has like 38% accuracy.  Worth checking out.   </p>\n<p>I think this was a huge gap in this contest that people didn't talk about enough, which I found particularly frustrating.  All these castles built on very fragile foundations..</p>",
      "rawMarkdown": "I didn't look at Hard Math Problems for AIMO 3 dataset. .. How did you verify all of the misses that they are well posed questions with correct answers?   I have found that gpt-oss will guess the wrong answers sometimes.\n\nThere is a really good benchmark on math arena called \"Broken Arxiv\".  The best model has like 38% accuracy.  Worth checking out.   \n\nI think this was a huge gap in this contest that people didn't talk about enough, which I found particularly frustrating.  All these castles built on very fragile foundations..",
      "replies": [
        {
          "id": 3447498,
          "postDate": "2026-04-23T08:48:16.280Z",
          "content": "<p>I've looked them over. IMHO, the <a href=\"https://www.kaggle.com/datasets/nguyennguyen599/astral-bench\" target=\"_blank\">AstralBench</a> is more reliable and suitable for questions at the IMO level. Gemini 3 Pro and ChatGPT have given consistent answers with benchmark after a few tries in my experiments.</p>",
          "rawMarkdown": "I've looked them over. IMHO, the [AstralBench](https://www.kaggle.com/datasets/nguyennguyen599/astral-bench) is more reliable and suitable for questions at the IMO level. Gemini 3 Pro and ChatGPT have given consistent answers with benchmark after a few tries in my experiments.",
          "replies": [
            {
              "id": 3447611,
              "postDate": "2026-04-23T14:49:39.453Z",
              "content": "<p><a href=\"https://www.kaggle.com/ayakakirima\" target=\"_blank\">@ayakakirima</a> tbh, unless they had links to proofs done by multiple people on artofproblemsolving or official competitions, I am pretty skeptical.   Unless of course, you're IMO level math person and you manually verified them all.  :D  Than I'll take your word for it..</p>",
              "rawMarkdown": "@ayakakirima tbh, unless they had links to proofs done by multiple people on artofproblemsolving or official competitions, I am pretty skeptical.   Unless of course, you're IMO level math person and you manually verified them all.  :D  Than I'll take your word for it.."
            }
          ]
        },
        {
          "id": 3447523,
          "postDate": "2026-04-23T09:23:36.420Z",
          "content": "<p>I didn't check \"Broken Arxiv\". But indeed in <a href=\"https://www.kaggle.com/datasets/zfturbo/hard-math-problems-for-aimo-3\" target=\"_blank\">Hard Math Problems for AIMO 3</a> there are few problems with ambiguous wording, e.g. IMO1477 about pirate net cash.</p>",
          "rawMarkdown": "I didn't check \"Broken Arxiv\". But indeed in [Hard Math Problems for AIMO 3](https://www.kaggle.com/datasets/zfturbo/hard-math-problems-for-aimo-3) there are few problems with ambiguous wording, e.g. IMO1477 about pirate net cash."
        }
      ]
    },
    {
      "id": 3447236,
      "postDate": "2026-04-22T21:11:25.300Z",
      "content": "<p>Interesting..That's a clever effiecient way of adding resolvers.</p>\n<p>I had a similar but not as efficient idea where I had created a local RAG with each traces coming from the solvers and added the rag_search as python modules solvers can call. But the phase 1 solvers querying each others traces lead to context posioning in some cases adn I had to drop it.  However this idea of using search to build on from initial solvers is different since initial solvers are had independent solution.</p>\n<p>I had a async summarizer-verifier system built in to pass this info the phase 2 solvers. This method probably can do the same and without wasting time and compute. Kudos on this!! </p>",
      "rawMarkdown": "Interesting..That's a clever effiecient way of adding resolvers.\n\nI had a similar but not as efficient idea where I had created a local RAG with each traces coming from the solvers and added the rag_search as python modules solvers can call. But the phase 1 solvers querying each others traces lead to context posioning in some cases adn I had to drop it.  However this idea of using search to build on from initial solvers is different since initial solvers are had independent solution.\n\nI had a async summarizer-verifier system built in to pass this info the phase 2 solvers. This method probably can do the same and without wasting time and compute. Kudos on this!! ",
      "replies": [
        {
          "id": 3447499,
          "postDate": "2026-04-23T08:49:56.610Z",
          "content": "<p>I read your <a href=\"https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3/writeups/amo-agentic-math-orchestrator-for-olympiad-mathem\" target=\"_blank\">writeup</a> too. Many interesting ideas, like \"beam self-eval\" or verification. I hope your team will survive lb shakeup!</p>",
          "rawMarkdown": "I read your [writeup](https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3/writeups/amo-agentic-math-orchestrator-for-olympiad-mathem) too. Many interesting ideas, like \"beam self-eval\" or verification. I hope your team will survive lb shakeup!"
        }
      ]
    },
    {
      "id": 3447214,
      "postDate": "2026-04-22T20:53:59.010Z",
      "content": "<p>Wow, this is actually so clean! I was playing around with summarization / aggregation to \"blend\" knowledge between reasoning rollouts in real time, but letting the model decide when it needs help is much cleaner!</p>",
      "rawMarkdown": "Wow, this is actually so clean! I was playing around with summarization / aggregation to \"blend\" knowledge between reasoning rollouts in real time, but letting the model decide when it needs help is much cleaner!"
    }
  ],
  "complete": true,
  "source": "live",
  "fetched_at": "2026-10-20T04:24:27Z",
  "competition_id": 118448,
  "competition_slug": "ai-mathematical-olympiad-progress-prize-3",
  "team_id": 15415034,
  "solution_url": "/competitions/ai-mathematical-olympiad-progress-prize-3/writeups/gpt-oss-browser-tool-for-math-reasoning"
}