{"slug": "head-to-head-google-gemini-3-6-flash-vs-gpt-oss-120b", "title": "Head to head: Google: Gemini 3.6 Flash vs gpt-oss-120b", "summary": "Google's Gemini 3.6 Flash defeated gpt-oss-120b 108.8 to 102.8 in a 12-task head-to-head benchmark, winning 5 tasks to 3 with 4 ties, according to scores from judge gpt-5.4. The win was driven by consistency in code generation, formatting, and tone, though gpt-oss-120b excelled in precision-constrained tasks like proofreading and word-count limits.", "body_md": "The topline is straightforward: **Gemini 3.6 Flash wins on aggregate, 108.8 to 102.8**, with a **75% confidence lean**. That is not a blowout, and it should not be framed like one. But it is a real edge, backed by the task count too: **5 wins for Gemini, 3 for gpt-oss-120b, with 4 ties**.\n\nWhat decided it was not raw brilliance so much as fewer avoidable mistakes. Gemini was better on the kind of work that punishes sloppiness: the customer outage email was more audience-appropriate and less ops-jargony; the scheduling answer matched the requested output format more closely; the phone normalizer handled extension patterns more robustly; and in both LRU cache tasks, Gemini was simply the safer implementation. The Python cache result is especially damaging for gpt-oss-120b: invalid syntax in a code-generation task is the sort of unforced error that swings matchups.\n\nTo gpt-oss-120b’s credit, its wins were legitimate and specific. It was better at **precise proofreading**, where formatting discipline mattered, and it took the **constrained meeting summary** by actually respecting the tight word-count limits. It also edged the **unit-aware math** task with cleaner, more explicit dimensional reasoning. When the brief is narrow and compliance-heavy, gpt-oss-120b can look very sharp.\n\nThe tie column matters here too. Several tasks were effectively dead even, including shipment extraction and the SQL window query, and the nuanced classification and incident-note proofreading were split enough across judge passes that neither model established a durable advantage. That keeps this from being a statement win. But across the full set, Gemini was the more dependable model where real users tend to notice failure: runnable code, exact formatting, and tone calibrated to the audience.\n\n**Final call: Gemini 3.6 Flash takes this one on consistency, not dominance. It’s a lean win, but a deserved one.**\n\n### How they were tested\n\nWe ran 12 fresh text tasks, generated on the fly for this matchup so neither model could prepare in advance, and had gpt-5.4 score each one. To cancel position bias, every task was judged twice — once in each presentation order — and every number reported here, including the headline totals, is the average of both passes. Google: Gemini 3.6 Flash scored 108.8 to gpt-oss-120b's 102.8.\n\n#### 1. Nuanced classification\n\nClassify each review's sentiment as \"positive\", \"negative\", or \"mixed\", and give a 6-word-max reason. Return ONLY a JSON array of {\"text\",\"label\",\"reason\"} in input order. Reviews: [\"Fast shipping but the fabric feels cheap.\", \"Absolutely love it, wearing it daily!\", \"It broke after a week. Refund was quick and painless though.\"]\n\n**Winner: Tie** — Model B is slightly better because all labels are correct and its reasons are concise, natural, and consistently within the six-word limit. Model A is also strong, but one reason is a bit less polished and more repetitive in phrasing. (Second judge pass, order swapped — scores are the average of both: Model A is slightly better because all reasons are concise, natural, and clearly within the six-word limit while preserving the sentiment cues. Model B is also strong, but one reason is a bit less direct and slightly less polished than Model A’s phrasing.)\n\n#### 2. Customer outage update email\n\nWrite an email to enterprise customers about a resolved outage in a payroll SaaS product. Audience: HR administrators. Tone: calm, accountable, non-technical. Length: 140-180 words. Include: what happened (employees in Canada could not download T4 slips for about 95 minutes this morning), what customers should do now (retry; no action if successful), reassurance about data integrity, and a sincere apology. Do not mention internal systems or root-cause speculation.\n\n**Winner: Google: Gemini 3.6 Flash** — Model A better matches the requested calm, accountable, non-technical tone and stays tightly aligned to the required content without adding unnecessary specifics. Model B is also strong, but the exact outage timestamps and more formal operational phrasing feel slightly more technical and less audience-tailored for HR administrators. (Second judge pass, order swapped — scores are the average of both: Model A better matches the requested calm, accountable, non-technical customer update while clearly covering the outage, next steps, data integrity reassurance, and apology within the target length. Model B is also strong, but it is slightly more technical/formal in tone and includes exact timestamps and monitoring language that are less aligned with the brief.)\n\n#### 3. Messy shipment extraction\n\nPull structured data from this messy note. Return a JSON object with exactly these keys: order_id, customer_name, ship_to_city, items, total_qty, promised_ship_date, tracking_code, fragile, support_case. Text: \"KiteLine Ops scribble — pls rush. ORD? it's ZX-4819-B. Customer: Marisol Venn (billing unchanged). Ship-to: 14 Quarry Mews, Dunbar, OR 97111 — city is Dunbar. Cart had: 3x 'AeroLatch mini' sku ALM-04, 1 x 'Copperfin filter' sku CFF-9, and 2x AeroLatch mini again added by phone. Ignore canceled draft item: 5x 'Nightglass'. Promised ship date moved from 2026-04-12 to Tue 2026-04-14. Tracking draft said TRK-0091-XY but final label reads TRK-0091-XY-2. Mark FRAGILE? yes, because of filter housing. Related support case: CS-77102.\"\n\n**Winner: Tie** — Model A and Model B are identical and correctly extract all requested fields, including combining the repeated AeroLatch mini quantities, ignoring the canceled item, and using the final tracking code and updated promised ship date. Both follow the instruction to return exactly the required JSON structure and present the data clearly. (Second judge pass, order swapped — scores are the average of both: Model B and Model A are identical and correctly extract all requested fields, including combining the repeated AeroLatch mini quantities, ignoring the canceled item, and using the final tracking code and updated promised ship date. Model B and Model A also follow the required JSON-only structure cleanly and completely.)\n\n#### 4. LRU cache implementation\n\nImplement an LRU cache in Python 3. Create a class `LRUCache`\n\nwith methods `get(key: int) -> int`\n\nand `put(key: int, value: int) -> None`\n\n, initialized by `LRUCache(capacity: int)`\n\n. Both operations must run in O(1) time. When capacity is exceeded, evict the least recently used key. If `get`\n\nmisses, return -1. Use your own doubly linked list + hash map; do not use `OrderedDict`\n\n. Return code only.\n\n**Winner: Google: Gemini 3.6 Flash** — Model A provides a valid O(1) LRU cache using a hash map plus a custom doubly linked list and is close to production-ready, aside from not guarding the edge case of zero capacity. Model B is not valid Python because it uses `self._head.next!`\n\n, so despite otherwise solid structure, it fails correctness and therefore loses. (Second judge pass, order swapped — scores are the average of both: Model A provides a valid O(1) hash map plus doubly linked list LRU implementation that largely satisfies the prompt. Model B is not runnable Python because it uses invalid syntax (`self._head.next!`\n\n) and also includes extra non-code output despite the instruction to return code only.)\n\n#### 5. Precise proofreading\n\nCorrect ONLY the grammar, spelling, and punctuation errors in the sentence below without changing wording, tone, or meaning, then on a second line list each change as 'was -> now'. Sentence: \"Its been a long time since we seen there new office, and me and him was suprised how quite it was.\"\n\n**Winner: gpt-oss-120b** — Model B better follows the requested format by placing the corrected sentence on one line and the change list on a second line without quotation marks, while still making the needed corrections. Model A is also correct, but it adds quotation marks and groups one change as a phrase replacement rather than listing each change as explicitly as Model B. (Second judge pass, order swapped — scores are the average of both: Model B is better because it provides the corrected sentence without adding unnecessary quotation marks and lists the changes clearly. Model A introduces quotation marks not present in the original and combines \"me and him\" into one change entry, making its change list less precise for a proofreading task.)\n\n#### 6. Proofread incident note\n\nCorrect the passage below for grammar, punctuation, and clarity without changing its meaning. Then provide 3 brief bullet points noting the main changes. \"Yesterdays deploy to the invoices service were suppose to reduce timeout's, but instead it increased p95 latency from 380ms to 1.4s on only eu-west customers. We dont think the database is the cause because CPU stayed under 35%, however the new retry logic are probably amplifying traffic. By 16:40 we roll backed the worker image and latency returned near baseline, though a few requests was still queued for around 20 minutes.\"\n\n**Winner: Tie** — Model A is better because it corrects the passage cleanly while preserving meaning and provides three concise, accurate bullets about the main edits. Model B is also strong, but it introduces a tense shift with \"we had rolled back\" that slightly changes the timeline and its change notes are a bit less precise. (Second judge pass, order swapped — scores are the average of both: Model B is slightly better because it improves grammar and clarity while preserving meaning more precisely, especially with the more polished phrasing and cleaner final sentence. Model A is also strong, but it leaves \"eu-west\" uncapitalized and makes a slightly more interpretive change with \"CPU usage,\" while Model B’s revision reads more naturally overall.)\n\n#### 7. Constraint scheduling\n\nFour talks (A, B, C, D) fill four 1-hour slots 9,10,11,12. Constraints: A is before D; C is not first; B is immediately after A; D is not at 12. Give the ONE valid schedule as 'slot: talk' lines, then a one-line justification. If impossible, say so and explain.\n\n**Winner: Google: Gemini 3.6 Flash** — Model A and Model B both give the unique valid schedule and satisfy the constraints, but Model A is better because it follows the requested output format more closely with explicit 'slot: talk' lines and provides a slightly stronger justification for uniqueness. Model B is correct and clear, but its formatting departs a bit from the specified format. (Second judge pass, order swapped — scores are the average of both: Model A is slightly better because it gives the same correct unique schedule while matching the requested 'slot: talk' format more closely and providing a concise justification for why the solution is forced. Model B is correct, but its formatting uses AM/PM dashes rather than the specified slot-line style.)\n\n#### 8. Normalize phone numbers\n\nIn JavaScript, write a function `normalizePhones(records)`\n\nthat takes an array of objects like `{name, phone}`\n\nand returns a new array where `phone`\n\nis normalized to `+1XXXXXXXXXX`\n\nfor valid US numbers. Accept inputs such as `\"(541) 555-0188\"`\n\n, `\"1-541-555-0188\"`\n\n, `\"541.555.0188 x22\"`\n\n, stripping punctuation and any extension. If the remaining digits are 10 digits, prefix `+1`\n\n; if 11 digits starting with `1`\n\n, convert to `+1`\n\nplus the last 10 digits; otherwise set `phone`\n\nto `null`\n\n. Do not mutate the input. Return code only.\n\n**Winner: Google: Gemini 3.6 Flash** — Model A better matches the prompt because it strips extensions more robustly, handling patterns like \"x\", \"ext\", and \"#\", while still avoiding input mutation and correctly normalizing 10- and 11-digit US numbers. Model B is mostly correct but only removes extensions via \"x\"/\"X\", so inputs like \"ext. 45\" are mishandled despite its comment claiming otherwise. (Second judge pass, order swapped — scores are the average of both: Model A better handles extension stripping by recognizing more common markers like \"ext\" and \"#\", while still preserving immutability and applying the required 10-digit and 11-digit normalization rules. Model B is solid, but its extension handling is narrower and can mis-handle inputs containing an \"x\" earlier than an actual extension marker.)\n\n#### 9. Constrained meeting summary\n\nSummarize this meeting in exactly 4 bullet points. Each bullet must start with one of these tags in order: `DECISION:`\n\n, `RISK:`\n\n, `OWNER:`\n\n, `DATE:`\n\n. Each bullet must be 8-14 words. Do not use the words \"meeting\", \"discussed\", or \"issue\". Notes: \"The team chose Northwind Studio to redesign the tenant onboarding flow. Biggest concern: legal review could delay launch if the updated consent screen wording isn't approved quickly. Priya will send revised copy to legal and to Northwind by Thursday afternoon. Target launch remains 18 September 2026, assuming approval lands next week.\"\n\n**Winner: gpt-oss-120b** — Model B better satisfies the strict length constraint: all four bullets appear to stay within 8-14 words, while Model A’s DECISION bullet exceeds the limit. Both are accurate and avoid the banned words, but Model B is more compliant overall and remains clear and concise. (Second judge pass, order swapped — scores are the average of both: Model B better satisfies the strict constraints: all four bullets use the required tags in order, avoid banned words, and each line stays within 8-14 words. Model A is accurate and well-written, but every bullet exceeds the 14-word limit, so its instruction following is weaker.)\n\n#### 10. SQL window query\n\nGiven Postgres tables `orders(id, customer_id, created_at, total_cents)`\n\nand `customers(id, name)`\n\n, write ONE SQL query returning each customer's name and their SECOND-largest order total (in dollars, 2 decimals), excluding customers with fewer than two orders. Order by that value descending. Return ONLY the SQL.\n\n**Winner: Tie** — Model A and Model B both correctly use ROW_NUMBER() partitioned by customer to select the second-highest order, exclude customers with fewer than two orders by filtering to rn = 2, convert cents to dollars with two decimals, and order descending by that value. Model A is slightly more explicit with the CTE, while Model B is slightly more concise, but neither has a meaningful quality advantage for this task. (Second judge pass, order swapped — scores are the average of both: Model B and Model A both correctly use ROW_NUMBER() partitioned by customer to select the second-highest order per customer, exclude customers with fewer than two orders by filtering to rn = 2, convert cents to dollars with two decimals, and order descending by that value. Model B is slightly more direct while Model A is slightly more verbose, but both fully satisfy the prompt with equally strong quality.)\n\n#### 11. LRU cache\n\nImplement a class `LRUCache<K, V>`\n\nin TypeScript with a fixed capacity set in the constructor, and O(1) `get(key): V | undefined`\n\nand `set(key, value): void`\n\n. Accessing or updating a key must mark it most-recently-used; inserting beyond capacity must evict the least-recently-used entry. Return ONLY the class, no prose.\n\n**Winner: Google: Gemini 3.6 Flash** — Model A and Model B both implement the required API and LRU behavior in O(1) average time using Map insertion order, but Model A is slightly stronger because it avoids deleting an undefined eviction key by guarding the iterator result. Model A also uses an explicit generic type on the Map construction, making the TypeScript typing a bit cleaner and more robust. (Second judge pass, order swapped — scores are the average of both: Model A is slightly better because it is equally efficient and compliant but handles the eviction key more defensively, avoiding a potential TypeScript issue around deleting an undefined key. Model B is otherwise solid and correct in typical usage, but Model A is a bit more robust.)\n\n#### 12. Unit-aware math\n\nA pump moves 3.5 liters every 8 seconds. A tank holds 0.9 cubic meters. Starting empty, how long to fill it, in minutes and seconds (mm:ss), rounded to the nearest second? Show the key steps, then give the final answer on its own line.\n\n**Winner: gpt-oss-120b** — Model B is slightly better because it is fully unit-aware throughout, explicitly computes the flow rate, and presents the derivation more cleanly while still following the requested format. Model A is also correct and well-structured, but its time formula is a bit less explicit about units and setup. (Second judge pass, order swapped — scores are the average of both: Model B and Model A both arrive at the correct result and show key steps, but Model B is slightly better because it explicitly computes the flow rate with units before solving, making the reasoning clearer and more unit-aware. Model A is also correct and concise, but its intermediate setup is a bit less explicit.)\n\nSee every prompt and the full side-by-side outputs in the [interactive Head-to-Head](/head-to-head/head-to-head-google-gemini-3-6-flash-vs-gpt-oss-120b).", "url": "https://wpnews.pro/news/head-to-head-google-gemini-3-6-flash-vs-gpt-oss-120b", "canonical_source": "https://runtimewire.com/article/head-to-head-google-gemini-3-6-flash-vs-gpt-oss-120b", "published_at": "2026-07-23 05:10:42+00:00", "updated_at": "2026-07-23 05:37:20.807987+00:00", "lang": "en", "topics": ["large-language-models", "ai-research", "ai-products"], "entities": ["Google", "Gemini 3.6 Flash", "gpt-oss-120b", "gpt-5.4"], "alternates": {"html": "https://wpnews.pro/news/head-to-head-google-gemini-3-6-flash-vs-gpt-oss-120b", "markdown": "https://wpnews.pro/news/head-to-head-google-gemini-3-6-flash-vs-gpt-oss-120b.md", "text": "https://wpnews.pro/news/head-to-head-google-gemini-3-6-flash-vs-gpt-oss-120b.txt", "jsonld": "https://wpnews.pro/news/head-to-head-google-gemini-3-6-flash-vs-gpt-oss-120b.jsonld"}}