Head to head: grok-4.3 vs mistral-medium-3-5

grok-4.3 vs mistral-medium-3-5

This was a close matchup, but the split tells a clear story: one model was more dependable on instruction-following in practical business tasks, while the other won on tighter formatting discipline and a more spec-faithful redaction edge case. The final margin reflects that difference in priorities, not a blowout.

The score says **34.0 to 31.0 for grok-4.3**, and that result tracks the most important misses. grok-4.3 took **vendor-delay-email** and **messy-orders-to-json**, while mistral-medium-3-5 won **python-log-redactor** and **meeting-summary-actions**. That is an even split on paper, but not an even split in impact: grok-4.3 was better where brittle instruction-following would actually break the deliverable. The clearest example is **messy-orders-to-json**. grok-4.3 did the simple but essential thing: output **valid JSON only**, parsed the valid rows, and skipped the line missing `order_id`. mistral-medium-3-5 wrapped otherwise correct content in Markdown code fences, which is exactly the kind of avoidable formatting error that turns a usable answer into a failed one. In structured-output work, that matters more than polish. grok-4.3 also had the stronger showing on **vendor-delay-email**. It hit the brief with a proper subject line, the right accountable tone, correct treatment of the delayed portion of the order, and stayed within the **140–180 word** target. mistral-medium-3-5 wrote a decent note, but it came in short and inserted an unsupported year for **May 28**. That is not a stylistic quibble; it is a factual and instruction-level miss in a routine workplace task. mistral-medium-3-5 absolutely earned its wins. On **python-log-redactor**, it was closer to spec because it preserved trailing punctuation for `token` and `api_key` values, whereas grok-4.3 dropped punctuation and used a narrower secret pattern. On **meeting-summary-actions**, both models were accurate, but mistral-medium-3-5 better matched the requested structure with **exactly three concise summary bullets** and cleaner separation of extracted details. Those are real advantages, especially for users who care about formatting precision. Still, the verdict is straightforward: **grok-4.3 is the better model here**. mistral-medium-3-5 was sharper on a redaction edge case and cleaner on summary formatting, but grok-4.3 was more reliable on the tasks where following the output contract and the business brief was non-negotiable.

python-log-redactor

Language: Python 3.11. Write a function `redact_log(line: str) -> str` that masks sensitive values in application log lines before they are stored. Rules: - Replace any IPv4 address with `[IP]`. - Replace any email address with `[EMAIL]`. - Replace any value of `token=...` or `api_key=...` with `token=[SECRET]` / `api_key=[SECRET]` and preserve trailing punctuation. - Do not change timestamps, paths, or non-sensitive numbers. Examples: `2026-02-03T07:11:04Z login ok user=mina@farside.tools ip=198.51.100.24 token=abC123-XY9` -> `2026-02-03T07:11:04Z login ok user=[EMAIL] ip=[IP] token=[SECRET]` `warn api_key=z9_z9_z9, path=/v1/export client_ip=203.0.113.7` -> `warn api_key=[SECRET], path=/v1/export client_ip=[IP]` Return code only.

grok-4.3: ```python import re def redact_log(line: str) -> str: line = re.sub(r'(token|api_key)=[\w-]+', r'\1=[SECRET]', line) line = re.sub(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b', '[EMAIL]', line) line = re.sub(r'\b(?:\d{1,3}\.){3}\d{1,3}\b', '[IP]', line) return line ```
mistral-medium-3-5: ```python import re def redact_log(line: str) -> str: # Replace IPv4 addresses line = re.sub(r'\b(?:\d{1,3}\.){3}\d{1,3}\b', '[IP]', line) # Replace email addresses line = re.sub(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', '[EMAIL]', line) # Replace token=... or api_key=... with [SECRET], preserving trailing punctuation line = re.sub(r'\b(token|api_key)=([^\s,;]+)([\s,;]?)', lambda m: f"{m.group(1)}=[SECRET]{m.group(3)}", line) return line ```

B better follows the requirement to preserve trailing punctuation for token/api_key values, while A drops punctuation and only matches a narrower secret character set. Both use a permissive IPv4 regex and are otherwise reasonable, but B is closer to the spec overall.

vendor-delay-email

Draft an email to a procurement manager at Northline Biologics. Context: our company, Alder Peak Instruments, will deliver 420 cryogenic vial racks 9 days late because a powder-coating batch failed inspection. We can ship 180 racks on the original date, the remaining 240 on May 28. Offer either a 6% discount on the delayed portion or free expedited freight. Tone: accountable, calm, professional. Length: 140–180 words. Include a clear subject line.

grok-4.3: Subject: Delivery Update for Cryogenic Vial Racks Order Dear Procurement Manager, I am contacting you regarding your recent order of 420 cryogenic vial racks. Unfortunately, a powder-coating batch did not pass our final inspection, which will result in the complete order arriving nine days later than originally scheduled. We take full accountability for this quality shortfall and sincerely apologize for any inconvenience it may cause to your operations and timelines. To mitigate the impact, we are prepared to ship 180 racks on the original delivery date. The remaining 240 racks will be shipped on May 28. As compensation for the delay on this portion, we can apply a 6% discount or provide free expedited freight at no additional cost. Kindly let us know your preference so we can proceed accordingly and update our records. We are committed to maintaining the high standards you expect from Alder Peak Instruments. We have already initiated steps to prevent similar issues moving forward and appreciate your patience as we address this matter. Please reach out if you have any concerns or require additional information. Best regards, [Your Name] Alder Peak Instruments
mistral-medium-3-5: **Subject:** Delivery Update: Partial Shipment of Cryogenic Vial Racks – proposal Dear [Procurement Manager's Name], At Alder Peak Instruments, we deeply regret that a powder-coating batch failed inspection, delaying your order of 420 cryogenic vial racks by nine days. To minimize disruption, we will ship 180 racks on the original date, with the remaining 240 to follow on May 28, 2026. We understand the inconvenience this causes. To address it, we are offering your choice of either a 6% discount on the delayed 240 racks or free expedited freight to accelerate their arrival. We are committed to ensuring the quality and timely resolution of this issue and appreciate your partnership. Please let us know which option you prefer or if you would like to discuss alternatives. We are here to assist and will keep you updated. Thank you for your understanding. Best regards, [Your Name] Alder Peak Instruments

A better satisfies the brief with a clear subject line, accountable and professional tone, correct handling of the delayed portion, and a length that fits the 140–180 word requirement. B is concise and polished, but it appears under the requested length and introduces an unsupported year for May 28.

meeting-summary-actions

Summarize the meeting notes below in 3 bullet points, then extract: (a) decision, (b) owner for each action item, (c) next meeting date. Notes: - 9:00 standup for the Bristlecone mobile app. - Nia said Android crash rate rose after v4.8.1; mostly on Samsung A52 when users open saved route maps offline. - Pavel found the issue likely tied to the new tile cache. Hotfix candidate ready by Thursday afternoon. - Irene from support said 19 tickets mention blank maps; 7 of those are from paid field teams. - Team agreed not to roll back 4.8.1 because the battery drain fix is too important. - Action: Pavel to ship hotfix build to QA by Thu 3 PM. - Action: Nia to post an in-app status notice draft by noon today. - Action: Irene to tag all related support tickets with `offline-map-blank`. - Next sync: Friday, April 17 at 10:30 AM.

grok-4.3: - The Bristlecone mobile app standup reviewed rising Android crashes and blank maps after v4.8.1, mainly on Samsung A52 devices using offline saved routes, traced to the new tile cache. - The team chose not to roll back the release to preserve the important battery-drain fix, while a hotfix is prepared and support tickets are being tracked. - Three action items were assigned and a follow-up sync was scheduled for the following week. (a) Decision: Do not roll back v4.8.1 (b) Owners: Pavel (hotfix build to QA by Thu 3 PM), Nia (in-app status notice draft by noon), Irene (tag tickets with `offline-map-blank`) (c) Next meeting: Friday, April 17 at 10:30 AM
mistral-medium-3-5: ### Summary - Android crash rate increased on Samsung A52 after v4.8.1, likely due to new tile cache. - Team prioritized battery drain fix in 4.8.1 over rollback. - Support tickets show 19 reports of blank maps, 7 from paid field teams. --- ### Extracted Details **(a) Decisions:** - Do **not** roll back v4.8.1 (battery drain fix is critical). **(b) Action Items & Owners:** - **Pavel**: Ship hotfix build to QA by Thu 3 PM. - **Nia**: Post in-app status notice draft by noon today. - **Irene**: Tag related support tickets with `offline-map-blank`. **(c) Next Meeting Date:** - **Friday, April 17 at 10:30 AM**.

Both are accurate, but B adheres more closely to the requested format with exactly 3 concise summary bullets and clearly separated extracted details. A is also correct, but its third bullet is vague and less informative than B’s summary.

messy-orders-to-json

Convert the messy order lines below into valid JSON only. Output schema: { "orders": [ {"order_id": string, "customer": string, "sku": string, "qty": integer, "unit_price": number, "rush": boolean} ] } Rules: - One object per valid line. - Trim spaces. - `qty` is an integer. - `unit_price` is a number without currency symbols. - `rush` is true only for yes/y. - Skip the line with a missing order_id. Data: ORD-771 | customer: Leeward Studio | sku=PX-14 | qty 3 | unit $19.50 | rush yes ORD-772|customer:Mariner Vale|sku=Q-9|qty 12|unit $4|rush no | customer: Hollow Ember | sku=LM-2 | qty 5 | unit $11.00 | rush yes ORD-774 | customer: Ilex Foods | sku=AA-88 | qty 1 | unit $250.00 | rush y

grok-4.3: { "orders": [ {"order_id": "ORD-771", "customer": "Leeward Studio", "sku": "PX-14", "qty": 3, "unit_price": 19.5, "rush": true}, {"order_id": "ORD-772", "customer": "Mariner Vale", "sku": "Q-9", "qty": 12, "unit_price": 4, "rush": false}, {"order_id": "ORD-774", "customer": "Ilex Foods", "sku": "AA-88", "qty": 1, "unit_price": 250, "rush": true} ] }
mistral-medium-3-5: ```json { "orders": [ { "order_id": "ORD-771", "customer": "Leeward Studio", "sku": "PX-14", "qty": 3, "unit_price": 19.50, "rush": true }, { "order_id": "ORD-772", "customer": "Mariner Vale", "sku": "Q-9", "qty": 12, "unit_price": 4, "rush": false }, { "order_id": "ORD-774", "customer": "Ilex Foods", "sku": "AA-88", "qty": 1, "unit_price": 250.00, "rush": true } ] } ```

Model A follows the instruction to output valid JSON only and correctly parses all valid lines while skipping the missing order_id. Model B's content is otherwise correct, but the surrounding Markdown code fences violate the 'JSON only' requirement.

Matchup powered by OpenRouter.