ChinaAI: Qwen vs ChatGPT — complete collection record
22 September 2026 UTC. Four tasks; two fresh-chat requests per task per app.
16 submitted requests; 15 completed answers; two blank answer slots. Qwen C2 displayed two alternatives within one request.
Qwen: Qwen3.7-Plus visible label, Fast, Tools off, plan not displayed. ChatGPT: Free, temporary Unpersonalized chat, Think unpressed, serving version not exposed.
Most answers preserve the response Copy text. Qwen C2 alternative2 preserves rendered code lines: display NBSP spaces mapped one-for-one to ordinary spaces and a Python fence added for serialization. Original DOM lines/HTML retained in full records.
No blank slot is scored as an incorrect factual/code answer. No preference, regeneration or corrective follow-up was used.

======================================================================
TASK E
EXACT PROMPT
Write a concise, polite customer email using only this fictional support case. Do not search the web. Include every fact and option listed below, without adding promises, discounts, faster shipping or a tracking link.

Customer: Morgan.
Order: RB-2416.
Original expected delivery date: 8 December 2026.
Updated estimated delivery window: 10–12 December 2026. No particular day is guaranteed.
The customer may keep the order or cancel it for a full refund.
To cancel, the customer must reply by 18:00 UTC on 7 December 2026.
Refund processing takes 3–5 business days after cancellation is confirmed.

Return only the email in plain text. Put one nonempty subject line first, beginning "Subject:". Greet Morgan. Keep the body to at most 95 whitespace-separated words, counting the greeting and closing but excluding the subject line. End with these two lines:
Regards,
Brightdesk Support

--- qwen-E-1 ---
Capture: response Copy control, cross-checked rendered content
Notes: A transient generic “Request failed with status code 502” appeared after the full answer and response controls. Full answer retained; no regeneration. Cause not established.
Subject: Update on Order RB-2416

Hi Morgan,

Your order RB-2416 now has an estimated delivery window of 10–12 December 2026. The original date was 8 December 2026. No specific day is guaranteed. You may keep the order or cancel it for a full refund. To cancel, please reply by 18:00 UTC on 7 December 2026. Refund processing takes 3–5 business days after cancellation is confirmed. Please let us know your decision.

Regards,
Brightdesk Support

--- chatgpt-E-1 ---
Capture: response Copy control, cross-checked rendered content
Notes: Initial send-button click timed out before submission; composer still contained prompt and no response. Enter then submitted once.
Subject: Update on Order RB-2416

Dear Morgan,

Your order RB-2416, originally expected on 8 December 2026, is now estimated to arrive between 10–12 December 2026. No particular day is guaranteed.

You may keep the order or cancel it for a full refund. To cancel, please reply by 18:00 UTC on 7 December 2026. Refund processing takes 3–5 business days after cancellation is confirmed.

Regards,
Brightdesk Support


--- chatgpt-E-2 ---
Capture: response Copy control, cross-checked rendered content
Notes: 
Subject: Update on Order RB-2416

Dear Morgan,

We’re writing to let you know that the original expected delivery date of 8 December 2026 has been updated. The estimated delivery window is now 10–12 December 2026, with no particular day guaranteed.

You may keep your order or cancel it for a full refund. To cancel, please reply by 18:00 UTC on 7 December 2026. Refund processing takes 3–5 business days after cancellation is confirmed.

Regards,
Brightdesk Support


--- qwen-E-2 ---
Capture: response Copy control, cross-checked rendered content
Notes: 
Subject: Update on Order RB-2416 Delivery

Hi Morgan,

Your order RB-2416 now has an estimated delivery window of 10–12 December 2026, replacing the original 8 December date. No specific day is guaranteed. You may keep the order or cancel it for a full refund. To cancel, please reply by 18:00 UTC on 7 December 2026. Refund processing takes 3–5 business days after cancellation is confirmed. Please let us know your decision.

Regards,
Brightdesk Support

======================================================================
TASK R
EXACT PROMPT
Use only the fictional reservation records below. Do not search the web. Resolve each field separately: use the latest dated record that states that field, carrying earlier fields forward if later records do not update them. The date field means the reservation date; record issue dates determine priority only. Records with the same date have equal priority; their listing order does not break a tie. If equally latest records disagree on a field, set that field to null and list its name in conflicts. For an entirely missing field, use null without adding it to conflicts.

Record A, issued 2 November 2026: Reservation MT-482 is for 18 November 2026 at 14:00, in room Orion, for 12 attendees. Its budget is USD 180.
Record B, issued 4 November 2026: For reservation MT-482, change the start time to 14:30, the room to Lyra, and the attendee count to 16.
Record C, issued 4 November 2026: For reservation MT-482, the room is Vega.
No record provides a contact email.

Return one JSON object with exactly these keys: reservation_id, date, start_time, room, attendees, budget_usd, contact_email, conflicts. Use strings for reservation_id/date/start_time, a string or null for room, an integer for attendees, a number for budget_usd, a string or null for contact_email, and an array of field-name strings for conflicts. Format date as YYYY-MM-DD and start_time as HH:MM. No Markdown or other text.

--- chatgpt-R-1 ---
Capture: response Copy control, cross-checked rendered content
Notes: 
{"reservation_id":"MT-482","date":"2026-11-18","start_time":"14:30","room":null,"attendees":16,"budget_usd":180,"contact_email":null,"conflicts":["room"]}


--- qwen-R-1 ---
Capture: visible UI observation
Notes: Generic HTTP 502 notice appeared. No answer text appeared by 01:05:26 UTC (about 96 seconds after submission); Stop was clicked. This was a post-event operational decision, not a predeclared latency test. No retry or regeneration; exact cause unknown.
[No completed answer captured; see the service observation above.]

--- qwen-R-2 ---
Capture: response Copy control, cross-checked rendered content
Notes: 
{
  "reservation_id": "MT-482",
  "date": "2026-11-18",
  "start_time": "14:30",
  "room": null,
  "attendees": 16,
  "budget_usd": 180,
  "contact_email": null,
  "conflicts": [
    "room"
  ]
}

--- chatgpt-R-2 ---
Capture: response Copy control, cross-checked rendered content
Notes: 
{"reservation_id":"MT-482","date":"2026-11-18","start_time":"14:30","room":null,"attendees":16,"budget_usd":180,"contact_email":null,"conflicts":["room"]}


======================================================================
TASK A
EXACT PROMPT
Calculate this fictional parcel quote using only the rules below. Do not search the web.

The parcel weighs 5.3 kg and is going to the Outer zone.
The charge for the first 2 kg is USD 4.50. Above 2 kg, each started additional 1 kg costs USD 1.20: round the additional weight up to a whole number of kilograms. The base delivery price is the first-2-kg charge plus the additional-weight charge.
If the base delivery price before the zone surcharge is at least USD 8.00, apply a coupon discount of 20% to that base price. Otherwise, apply no coupon discount.
After any coupon discount, add the Outer-zone surcharge of USD 3.00. The surcharge is never discounted and does not count toward coupon eligibility. No taxes or other charges apply.

Show the additional weight, number of charged additional-kilogram blocks, additional-weight charge, base delivery price, coupon eligibility, discount amount, zone surcharge, and final amount due in USD. Round monetary results to two decimal places.

--- qwen-A-1 ---
Capture: response Copy control, cross-checked rendered content
Notes: 
Here is the step-by-step calculation based on the rules provided:

**1. Calculate Additional Weight and Charged Blocks**
*   Total weight: 5.3 kg
*   Base weight included: 2 kg
*   Additional weight: $5.3 \text{ kg} - 2 \text{ kg} = 3.3 \text{ kg}$
*   Rule: Round additional weight up to a whole number of kilograms.
*   Charged additional-kilogram blocks: $\lceil 3.3 \rceil = 4 \text{ kg}$

**2. Calculate Charges**
*   First 2 kg charge: USD 4.50
*   Additional weight charge: $4 \text{ blocks} \times \text{USD } 1.20/\text{block} = \text{USD } 4.80$
*   **Base delivery price** (before surcharge/discount): $\text{USD } 4.50 + \text{USD } 4.80 = \text{USD } 9.30$

**3. Determine Coupon Eligibility and Discount**
*   Condition: Is base delivery price ($\ge$ USD 8.00)?
*   Check: $9.30 \ge 8.00$ is **True**.
*   Coupon applies: Yes (20% discount).
*   **Discount amount**: $9.30 \times 0.20 = \text{USD } 1.86$
*   Price after discount: $9.30 - 1.86 = \text{USD } 7.44$

**4. Apply Zone Surcharge and Final Total**
*   Outer-zone surcharge: USD 3.00 (added after discount, not discounted).
*   **Final amount due**: $7.44 + 3.00 = \text{USD } 10.44$

***

**Summary of Results:**

*   **Additional weight:** 3.3 kg
*   **Number of charged additional-kilogram blocks:** 4
*   **Additional-weight charge:** USD 4.80
*   **Base delivery price:** USD 9.30
*   **Coupon eligibility:** Yes
*   **Discount amount:** USD 1.86
*   **Zone surcharge:** USD 3.00
*   **Final amount due:** USD 10.44

--- chatgpt-A-1 ---
Capture: response Copy control, cross-checked rendered content
Notes: 
| Item                         | Calculation           |       Amount |
| ---------------------------- | --------------------- | -----------: |
| Additional weight            | 5.3 − 2.0 kg          |   **3.3 kg** |
| Charged additional-kg blocks | Round 3.3 kg up       | **4 blocks** |
| Additional-weight charge     | 4 × $1.20             |    **$4.80** |
| Base delivery price          | $4.50 + $4.80         |    **$9.30** |
| Coupon eligibility           | Base ≥ $8.00          | **Eligible** |
| Coupon discount              | 20% × $9.30           |    **$1.86** |
| Outer-zone surcharge         | Fixed                 |    **$3.00** |
| **Final amount due**         | $9.30 − $1.86 + $3.00 |   **$10.44** |

**Final amount due: USD 10.44**


--- chatgpt-A-2 ---
Capture: response Copy control, cross-checked rendered content
Notes: After this answer the UI said files, images and data analysis were unavailable until a displayed reset time; it explicitly allowed continuing with text. No serving-model change was displayed. Remaining tasks use text only, without tools or upgrades.
* **Parcel weight:** 5.3 kg
* **Additional weight:** 5.3 − 2.0 = **3.3 kg**
* **Charged additional-kilogram blocks:** **4** (round 3.3 kg up)
* **Additional-weight charge:** 4 × $1.20 = **$4.80**
* **Base delivery price:** $4.50 + $4.80 = **$9.30**
* **Coupon eligibility:** **Yes**, because $9.30 ≥ $8.00
* **Coupon discount:** 20% × $9.30 = **$1.86**
* **Price after coupon:** $9.30 − $1.86 = **$7.44**
* **Outer-zone surcharge:** **$3.00**
* **Final amount due:** $7.44 + $3.00 = **$10.44 USD**


--- qwen-A-2 ---
Capture: response Copy control, cross-checked rendered content
Notes: 
Here is the step-by-step calculation based on the rules provided:

**1. Calculate Additional Weight and Charged Blocks**
*   **Total Weight:** 5.3 kg
*   **Included Weight:** 2 kg
*   **Additional Weight:** $5.3 \text{ kg} - 2 \text{ kg} = 3.3 \text{ kg}$
*   **Rounding Rule:** Round the additional weight up to a whole number of kilograms.
    *   $\lceil 3.3 \rceil = 4 \text{ kg}$
*   **Number of Charged Additional-Kilogram Blocks:** 4

**2. Calculate Additional-Weight Charge**
*   **Rate per Block:** USD 1.20
*   **Calculation:** $4 \times 1.20 = 4.80$
*   **Additional-Weight Charge:** USD 4.80

**3. Calculate Base Delivery Price**
*   **First 2 kg Charge:** USD 4.50
*   **Additional-Weight Charge:** USD 4.80
*   **Base Delivery Price:** $4.50 + 4.80 = 9.30$
*   **Base Delivery Price:** USD 9.30

**4. Determine Coupon Eligibility and Discount**
*   **Eligibility Rule:** If base delivery price $\ge$ USD 8.00, apply 20% discount.
*   **Check:** $9.30 \ge 8.00$ is **True**.
*   **Coupon Eligibility:** Yes
*   **Discount Amount:** $9.30 \times 0.20 = 1.86$
*   **Discount Amount:** USD 1.86

**5. Calculate Price After Discount**
*   **Price After Discount:** $9.30 - 1.86 = 7.44$
*   **Price After Discount:** USD 7.44

**6. Add Zone Surcharge**
*   **Surcharge Rule:** Add USD 3.00 for Outer zone (never discounted).
*   **Zone Surcharge:** USD 3.00
*   **Final Calculation:** $7.44 + 3.00 = 10.44$

***

**Final Summary**

*   **Additional weight:** 3.3 kg
*   **Number of charged additional-kilogram blocks:** 4
*   **Additional-weight charge:** USD 4.80
*   **Base delivery price:** USD 9.30
*   **Coupon eligibility:** Yes
*   **Discount amount:** USD 1.86
*   **Zone surcharge:** USD 3.00
*   **Final amount due:** **USD 10.44**

======================================================================
TASK C
EXACT PROMPT
Implement a pure Python function named clean_labels(labels). You may assume labels is a list of strings containing only ASCII characters.

For each string, remove leading and trailing whitespace, convert letters to lowercase, and discard the result if it is empty. Remove duplicates after normalization, keeping the first occurrence of each normalized label in its original order. Preserve whitespace inside a label. Return a list of strings and do not mutate the input list. Do not search the web.

For example, clean_labels(["  Blue", "RED", "blue", " ", " Green "]) must return ["blue", "red", "green"].

Return only the function in one Python code block. Do not add imports, tests, explanations or top-level executable code.

--- chatgpt-C-1 ---
Capture: response Copy control, cross-checked rendered content
Notes: 
```python
def clean_labels(labels):
    seen = set()
    result = []

    for label in labels:
        normalized = label.strip().lower()
        if normalized and normalized not in seen:
            seen.add(normalized)
            result.append(normalized)

    return result
```


--- qwen-C-1 ---
Capture: response Copy control, cross-checked rendered content
Notes: 
```python
def clean_labels(labels):
    seen = set()
    result = []
    for label in labels:
        normalized = label.strip().lower()
        if normalized and normalized not in seen:
            seen.add(normalized)
            result.append(normalized)
    return result
```

--- qwen-C-2-v1 ---
Capture: visible alternative panel
Notes: Qwen displayed two alternatives. Response 1 remained blank after at least106seconds; Stop clicked without selecting a preference. Post-event operational handling, not a timed benchmark. No502notice observed for this request.
[No completed answer captured; see the service observation above.]

--- qwen-C-2-v2 ---
Capture: rendered code DOM lines; NBSP display spaces mapped one-for-one to ordinary spaces; Python fence added for serialization
Notes: Response 2 contained exactly one Python block and no outside commentary. Captured from rendered code DOM at the preference screen after an editor-click timeout. Original DOM lines and HTML preserved separately; the code-header copy icon was not used. No preference selected; first alternative blank.
```python
def clean_labels(labels):
    seen = set()
    result = []
    for label in labels:
        normalized = label.strip().lower()
        if normalized and normalized not in seen:
            seen.add(normalized)
            result.append(normalized)
    return result
```

--- chatgpt-C-2 ---
Capture: response Copy control, cross-checked rendered content
Notes: Tool-limit notice remained; text reply completed.
```python
def clean_labels(labels):
    seen = set()
    result = []

    for label in labels:
        normalized = label.strip().lower()
        if normalized and normalized not in seen:
            seen.add(normalized)
            result.append(normalized)

    return result
```

