Best AI apps, tested by us

These are the best AI apps we have actually tested. Each one got the same standard prompts for its job (images, video, coding or chat), and an app only counts here once its price is checked and at least 5 prompts are graded. Pick a row to see the real outputs.

Updated October 25, 2026

Short answer

Tested on October 25, 2026: we ran the same standard prompts through 23 AI apps. ChatGPT (GPT Image), Claude, Claude Code, DeepSeek, FLUX (Black Forest Labs), Gemini Code Assist, Grok, Hailuo AI, Kimi, Meta AI, Mistral Vibe (formerly Le Chat), OpenAI Codex, Qwen Image (Alibaba), Recraft, Seedance, and Wan passed every prompt; ChatGPT 4 of 5, Perplexity 4 of 5, Qwen Chat 4 of 5, Seedream (ByteDance) 4 of 5, Google Gemini (Nano Banana) 3 of 5, and Krea 3 of 5. Prices were checked on the official pages on October 25, 2026.

Comparison

Swipe the table sideways to see more columns

Price = cheapest paid plan on the official pricing page. Click a source link to see the page we checked. Test results are dated results of the route named on each card, not a judgement of the company.
ToolStarting priceFree planIndonesianOur test
IDR 75,000/moGosourcechecked October 25, 2026YesIndonesian interfacesource5 of 5 passed
$20/moProsourcechecked October 25, 2026YesUnderstands Indonesiansource5 of 5 passed
$17/moPro (annual)sourcechecked October 25, 2026NoUnderstands Indonesiansource5 of 5 passed
Usage-based or on request, see sourcesourcechecked October 25, 2026YesIndonesian interfacesource5 of 5 passed
$0.01 usage-basedFLUX 3 Image Klein (1K)sourcechecked October 25, 2026Not confirmedNot confirmed5 of 5 passed
$19/moStandard (annual)sourcechecked October 25, 2026NoNot confirmed5 of 5 passed
IDR 139,000/moPlussourcechecked October 25, 2026YesNot confirmed5 of 5 passed
$100.80/yrStandardsourcechecked October 25, 2026YesNot confirmed5 of 5 passed
$180/yrPlussourcechecked October 25, 2026YesNot confirmed5 of 5 passed
No paid plan listedsourcechecked October 25, 2026YesNot confirmed5 of 5 passed
$5.99/moPro (Education)sourcechecked October 25, 2026YesNot confirmed5 of 5 passed
IDR 337,000/moBusinesssourcechecked October 25, 2026YesNot confirmed5 of 5 passed
$0.02 usage-basedqwen-image-2.1-turbosourcechecked October 25, 2026YesNot confirmed5 of 5 passed
$12/moBasicsourcechecked October 25, 2026YesNot confirmed5 of 5 passed
$5.60 usage-baseddreamina-seedance-2-0-fast (online inference, input without video)sourcechecked October 25, 2026Not confirmedNot confirmed5 of 5 passed
$5/moProsourcechecked October 25, 2026YesNot confirmed5 of 5 passed
IDR 75,000/moGosourcechecked October 25, 2026YesUnderstands Indonesiansource4 of 5 passed
$17/moPro (annual)sourcechecked October 25, 2026YesNot confirmed4 of 5 passed
No paid plan listedsourcechecked October 25, 2026YesUnderstands Indonesiansource4 of 5 passed
$0.02 usage-basedSeedream 5.0 flashsourcechecked October 25, 2026Not confirmedNot confirmed4 of 5 passed
IDR 75,000/moGoogle AI Plussourcechecked October 25, 2026YesUnderstands Indonesiansource3 of 5 passed
$9/moBasicsourcechecked October 25, 2026YesNot confirmed3 of 5 passed
$8.80/moStandardsourcechecked October 25, 2026YesNot confirmed1 of 5 prompts

Every output below is the real, unedited result of one run (in text answers only long dashes are normalized to a plain dash). Pass means every required checklist item was met.

ChatGPT (GPT Image)

5 of 5 passed

Model: openai/gpt-image-2 · Run through: OpenRouter API (openai/gpt-image-2), served by the model vendor · Tested October 25, 2026

ChatGPT (GPT Image): Sage green matte mug on a light oak table, window light from the left
Product shotPass

Light from left window, clean

Prompt

Studio product photo of a matte sage green ceramic coffee mug standing on a light oak wooden table, soft window light from the left, shallow depth of field, plain neutral background. No text, no logos.

Checklist

  • A single mug is the clear subject
  • Mug is sage green (muted grey-green)
  • Mug stands on a light wooden surface
  • Looks like a photograph, not an illustration
  • No text or logo anywhere
  • Mug geometry intact (one handle, no melted rim)
  • Light visibly comes from the left (nice to have)

openai/gpt-image-2 · Tested October 25, 2026

ChatGPT (GPT Image): Poster reading FRESH MARKET and Saturday 8 AM above carrots, tomatoes and leafy greens
Poster with short English textPass

Both lines exact

Prompt

Minimalist event poster for a weekend farmers market. Large headline text that reads exactly "FRESH MARKET" and a smaller line below it that reads exactly "Saturday 8 AM". Flat illustration of carrots, tomatoes and leafy greens at the bottom. Warm orange and cream color palette.

Checklist

  • Headline spelled exactly FRESH MARKET
  • Second line spelled exactly Saturday 8 AM (case may differ)
  • No extra garbled or invented words
  • Vegetables illustrated (at least two of carrot, tomato, greens)
  • Reads as a poster layout (portrait or square, clear hierarchy) (nice to have)
  • Warm orange palette (nice to have)

openai/gpt-image-2 · Tested October 25, 2026

ChatGPT (GPT Image): Watercolor orange kitten in a small shirt reading a book under a banyan tree at sunset
IllustrationPass

Cat wears a small shirt (not asked)

Prompt

Children's book illustration of a small orange cat sitting and reading an open book under a large banyan tree at sunset, soft watercolor textures, warm colors.

Checklist

  • Exactly one orange cat
  • An open book in front of or held by the cat
  • A large tree is present
  • Illustration style (not a photo)
  • Cat anatomy plausible (no extra limbs or heads)
  • Sunset light (nice to have)
  • Tree reads as a banyan (aerial roots) (nice to have)

openai/gpt-image-2 · Tested October 25, 2026

See all results

Claude

5 of 5 passed

Model: claude-sonnet-5-5 · Run through: API model anthropic:claude-sonnet-5-5 · Tested October 25, 2026

Claude: Card with the prompt and the full API answer from claude-sonnet-5-5
Email draftPass
Prompt

Write a short email to my landlord asking him to fix the leaking kitchen faucet. Propose two possible time slots this week for the repair. Keep it polite and under 150 words, and include a subject line.

Checklist

  • ✓ Has a subject line
  • ✓ Mentions the faucet/tap and the leak
  • ✓ Proposes at least two time slots (two weekday names or two clock times)
  • ✓ At most 170 words in total (150 body plus subject allowance)
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
**Subject:** Kitchen Faucet Repair Request

Hi [Landlord's Name],

I hope you're doing well. I'm writing to let you know that the kitchen faucet in my apartment has started leaking. It's a steady drip, and I'd like to have it fixed before it wastes more water or causes any damage to the sink area.

Would it be possible to schedule a repair this week? I'm available at the following times:

- **Wednesday, [date], between 10:00 a.m. and 12:00 p.m.**
- **Friday, [date], between 2:00 p.m. and 4:00 p.m.**

Please let me know which works best for you or if you'd prefer to send someone else. I'm happy to adjust if needed.

Thank you for your help!

Best regards,
[Your Name]
[Apartment Number]
[Phone Number]

claude-sonnet-5-5 · Tested October 25, 2026

Claude: Card with the prompt and the full API answer from claude-sonnet-5-5
Summary of a given textPass
Prompt

Summarize the following text in exactly 3 bullet points, 60 words maximum in total. Use only information from the text. Text: Borobudur, also transcribed Barabudur (Indonesian: Candi Borobudur, Javanese: ꦕꦤ꧀ꦝꦶꦧꦫꦧꦸꦝꦸꦂ, romanized: Candhi Barabudhur), is a 9th-century Mahayana Buddhist temple in Magelang Regency, near the town of Muntilan, northwest of the city of Yogyakarta, in Central Java, Indonesia. Constructed of gray andesite-like stone, the temple consists of nine stacked platforms, six square and three circular, topped by a central dome. It is decorated with 2,672 relief panels and originally 504 Buddha statues. The central dome is surrounded by 72 Buddha statues, each seated inside a perforated stupa. The monument guides pilgrims through an extensive system of stairways and corridors with 1,460 narrative relief panels on the walls and the balustrades. Borobudur has one of the world's most extensive collections of Buddhist reliefs. Built during the reign of the Sailendra dynasty, the temple design follows Javanese Buddhist architecture, which blends the Indonesian indigenous tradition of ancestor worship and the Buddhist concept of attaining nirvāṇa. The monument is a shrine to the Buddha and a place for Buddhist pilgrimage. Evidence suggests that Borobudur was constructed in the 8th century and subsequently abandoned following the 14th-century decline of Hindu kingdoms in Java and the Javanese conversion to Islam. Worldwide knowledge of its existence was sparked in 1814 by Thomas Stamford Raffles, then the British administrator of Java, who was advised of its location by native Indonesians. Borobudur has since been preserved through several restorations. The largest restoration project was completed in 1983 by the Indonesian government and UNESCO, followed by the monument's listing as a UNESCO World Heritage Site. Borobudur is the largest Buddhist temple in the world, and ranks with Bagan in Myanmar and Angkor Wat in Cambodia as one of the great archeological sites of Southeast Asia. Borobudur remains popular for pilgrimage, with Buddhists in Indonesia celebrating Vesak Day at the monument. Among Indonesia's tourist attractions, Borobudur is the most-visited monument.

Checklist

  • ✓ Exactly 3 bullet lines
  • ✓ At most 60 words
  • ✓ Mentions at least 2 of: 9th century, Buddhist, Central Java
  • ✓ Every number in the answer appears in the source text (no invented figures)
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
- Borobudur is a 9th-century Mahayana Buddhist temple in Central Java, Indonesia, featuring nine platforms, a central dome, 2,672 relief panels, and originally 504 Buddha statues.
- Abandoned after the 14th-century decline of Hindu kingdoms, it gained attention in 1814 and was restored, in 1983 with UNESCO.
- It is the world's largest Buddhist temple, a pilgrimage site, and Indonesia's most-visited monument.

claude-sonnet-5-5 · Tested October 25, 2026

Claude: Card with the prompt and the full API answer from claude-sonnet-5-5
Trip planPass
Prompt

Plan a 3-day trip to Yogyakarta, Indonesia for a first-time visitor on a moderate budget. Give a day-by-day plan with morning, afternoon and evening for each day. Include Borobudur and Prambanan, and give one practical tip about getting around. Keep it under 350 words.

Checklist

  • ✓ Has Day 1, Day 2 and Day 3
  • ✓ Mentions Borobudur and Prambanan
  • ✓ Uses morning, afternoon and evening
  • ✓ Gives a transport tip (Grab, Gojek, taxi, bus, Trans Jogja, car, scooter, train, driver)
  • ✓ At most 380 words
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
# 3-Day Yogyakarta Itinerary (Moderate Budget)

## Day 1: Royal Yogyakarta
- **Morning:** Tour the Kraton (Sultan's Palace), then walk to Taman Sari Water Castle, the former royal bathing complex.
- **Afternoon:** Eat gudeg (jackfruit stew), the local specialty, at a classic warung. Then browse batik at Beringharjo Market.
- **Evening:** Stroll Malioboro Street and have dinner at a *lesehan* (sit-on-the-mat) stall. Try grilled fish or nasi kucing.

## Day 2: Borobudur
- **Morning:** Arrive at Borobudur right when it opens (around 7–8 am) to beat crowds and heat. Book tickets in advance on the official site, since the upper levels have a limited daily quota.
- **Afternoon:** Visit nearby Mendut and Pawon temples, then have lunch in a Borobudur village warung. A countryside cycling or village tour is a good optional add-on.
- **Evening:** Return to town and watch a wayang kulit (shadow puppet) show at Sonobudoyo Museum. Have a relaxed dinner afterward.

## Day 3: Prambanan and Local Life
- **Morning:** Explore Prambanan, the magnificent 9th-century Hindu temple complex. Go early, as it gets hot and busy.
- **Afternoon:** Head to Kotagede, the old silver-working quarter, for workshops, historic lanes, and traditional snacks like *kipo*.
- **Evening:** Visit Alun-Alun Kidul, the southern square, for wedang ronde (hot ginger dessert), colorful pedal-cars, and local atmosphere. If your dates allow, check whether the Ramayana Ballet is showing at Prambanan as an alternative.

## Practical Tip: Getting Around
Use **Grab or Gojek** apps for cars, motorbike taxis, and food delivery. Prices are fixed upfront, so there's no haggling. For the Borobudur and Prambanan days, either book a Grab car for each trip or hire a car with driver for the day (roughly IDR 600,000–800,000), which is cost-effective if you split it between travelers.

## Budget Notes
Stay in a well-reviewed guesthouse or boutique hotel near Malioboro or Prawirotaman (about USD 25–50 per night). Meals at warungs are very cheap, and temple entry is the biggest single expense.

claude-sonnet-5-5 · Tested October 25, 2026

Claude Code

5 of 5 passed

Model: claude-opus-5-5 · Run through: API model anthropic:claude-opus-5-5 · Tested October 25, 2026

Claude Code: Card with the prompt and the full API answer from claude-opus-5-5
Fix a buggy JavaScript function (median)Pass
Prompt

The following JavaScript function should return the median of an array of numbers, but it has bugs. Fix it. Requirements: return null for an empty array; do not modify the input array; work for negative numbers and decimals; for an even number of elements return the average of the two middle values. Reply with the complete fixed function in a single ```js code block (function name `median`, no exports, nothing else in the block), then at most 3 sentences explaining the bugs. ```js function median(arr) { arr.sort(); const mid = Math.floor(arr.length / 2); if (arr.length % 2 === 0) { return arr[mid] + arr[mid - 1] / 2; } return arr[mid]; } ```

Checklist

  • ✓ A js code block is present and defines a function named median
  • ✓ median([3,1,2]) === 2
  • ✓ median([10,2,1,4]) === 3
  • ✓ median([100,20,3]) === 20 (catches default string sort)
  • ✓ median([-1,-3]) === -2 and median([1.5,2.5,0.5]) === 1.5
  • ✓ median([]) === null
  • ✓ The input array is not mutated
Read the full answer (unedited model output, punctuation normalized)
```js
function median(arr) {
  if (!Array.isArray(arr) || arr.length === 0) {
    return null;
  }
  const sorted = [...arr].sort((a, b) => a - b);
  const mid = Math.floor(sorted.length / 2);
  if (sorted.length % 2 === 0) {
    return (sorted[mid - 1] + sorted[mid]) / 2;
  }
  return sorted[mid];
}
```

The original sorted the input array in place and used the default lexicographic sort, which misorders negative numbers, decimals, and multi-digit values. The fix sorts a copy with a numeric comparator. It also adds the missing empty-array check and fixes operator precedence so the two middle values are summed before dividing by 2.

claude-opus-5-5 · Tested October 25, 2026

Claude Code: Card with the prompt and the full API answer from claude-opus-5-5
Write a SQL query against a given schemaPass
Prompt

Given this SQLite schema: ```sql CREATE TABLE customers ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, city TEXT ); CREATE TABLE orders ( id INTEGER PRIMARY KEY, customer_id INTEGER NOT NULL REFERENCES customers(id), created_at TEXT NOT NULL, -- ISO 8601 date, 'YYYY-MM-DD' status TEXT NOT NULL, -- 'paid', 'refunded' or 'pending' amount_cents INTEGER NOT NULL ); ``` Write one SQLite query that returns the top 3 customers by total amount of PAID orders created in calendar year 2025. Return the columns name and total_cents. Order by total_cents descending, then by name ascending. Customers without paid 2025 orders must not appear. Reply with only the query in a single ```sql code block.

Checklist

  • ✓ A sql code block is present
  • ✓ The query runs without error on node:sqlite against the schema plus our seed data (fixtures/seed.sql)
  • ✓ Result has exactly the columns name, total_cents
  • ✓ Result rows equal the reference: Ayu 12000, Budi 12000, Citra 12000 (seed traps: a 2024-12-31 paid order, a refunded order, a pending order, a 2026-01-01 order)
Read the full answer (unedited model output, punctuation normalized)
```sql
SELECT c.name, SUM(o.amount_cents) AS total_cents
FROM customers c
JOIN orders o ON o.customer_id = c.id
WHERE o.status = 'paid'
  AND o.created_at >= '2025-01-01'
  AND o.created_at < '2026-01-01'
GROUP BY c.id, c.name
ORDER BY total_cents DESC, c.name ASC
LIMIT 3;
```

claude-opus-5-5 · Tested October 25, 2026

Claude Code: Card with the prompt and the full API answer from claude-opus-5-5
Refactor TypeScript to strict typesPass
Prompt

Refactor this TypeScript file into idiomatic, strictly typed TypeScript. Rules: no `any` anywhere; define and export types for the item, the options and the result; use const/let instead of var; keep the exported function name `summarize` and keep the behavior identical (including how a missing qty is treated). Reply with the full file in a single ```ts code block. ```ts export function summarize(items: any, opts?: any): any { var result: any = {}; for (var i = 0; i < items.length; i++) { var it = items[i]; if (opts && opts.onlyActive && !it.active) continue; if (!result[it.category]) result[it.category] = { count: 0, total: 0 }; result[it.category].count = result[it.category].count + 1; result[it.category].total = result[it.category].total + it.price * (it.qty == undefined ? 1 : it.qty); } return result; } ```

Checklist

  • ✓ A ts code block is present
  • ✓ The word any does not appear in the code
  • ✓ No var declarations
  • ✓ tsc --strict --noEmit passes (TypeScript from the workspace node_modules)
  • ✓ Behavior equals the legacy function on 4 fixed inputs (no options, onlyActive true, qty 0, qty missing), run with node type stripping
Read the full answer (unedited model output, punctuation normalized)
```ts
export interface SummaryItem {
  category: string;
  price: number;
  /** Treated as 1 when `undefined` or `null`. */
  qty?: number | null;
  active?: boolean;
}

export interface SummarizeOptions {
  /** When true, items whose `active` flag is falsy are skipped. */
  onlyActive?: boolean;
}

export interface CategorySummary {
  count: number;
  total: number;
}

export type SummaryResult = Record<string, CategorySummary>;

export function summarize(
  items: readonly SummaryItem[],
  opts?: SummarizeOptions,
): SummaryResult {
  const result: SummaryResult = {};

  for (const item of items) {
    if (opts?.onlyActive && !item.active) continue;

    let summary: CategorySummary | undefined = result[item.category];
    if (!summary) {
      summary = { count: 0, total: 0 };
      result[item.category] = summary;
    }

    summary.count += 1;
    summary.total += item.price * (item.qty ?? 1);
  }

  return result;
}
```

claude-opus-5-5 · Tested October 25, 2026

See all results

DeepSeek

5 of 5 passed

Model: deepseek-v4-pro · Run through: API model deepseek:deepseek-v4-pro · Tested October 25, 2026

DeepSeek: Card with the prompt and the full API answer from deepseek-v4-pro
Fix a buggy JavaScript function (median)Pass
Prompt

The following JavaScript function should return the median of an array of numbers, but it has bugs. Fix it. Requirements: return null for an empty array; do not modify the input array; work for negative numbers and decimals; for an even number of elements return the average of the two middle values. Reply with the complete fixed function in a single ```js code block (function name `median`, no exports, nothing else in the block), then at most 3 sentences explaining the bugs. ```js function median(arr) { arr.sort(); const mid = Math.floor(arr.length / 2); if (arr.length % 2 === 0) { return arr[mid] + arr[mid - 1] / 2; } return arr[mid]; } ```

Checklist

  • ✓ A js code block is present and defines a function named median
  • ✓ median([3,1,2]) === 2
  • ✓ median([10,2,1,4]) === 3
  • ✓ median([100,20,3]) === 20 (catches default string sort)
  • ✓ median([-1,-3]) === -2 and median([1.5,2.5,0.5]) === 1.5
  • ✓ median([]) === null
  • ✓ The input array is not mutated
Read the full answer (unedited model output, punctuation normalized)
```js
function median(arr) {
  if (arr.length === 0) return null;
  const sorted = [...arr].sort((a, b) => a - b);
  const mid = Math.floor(sorted.length / 2);
  if (sorted.length % 2 === 0) {
    return (sorted[mid] + sorted[mid - 1]) / 2;
  }
  return sorted[mid];
}
```

The original code mutated the input and sorted lexicographically instead of numerically, breaking negative numbers and decimals. It also lacked parentheses in the even-length average, dividing only the second middle value. Empty arrays now return `null`.

deepseek-v4-pro · Tested October 25, 2026

DeepSeek: Card with the prompt and the full API answer from deepseek-v4-pro
Write a SQL query against a given schemaPass
Prompt

Given this SQLite schema: ```sql CREATE TABLE customers ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, city TEXT ); CREATE TABLE orders ( id INTEGER PRIMARY KEY, customer_id INTEGER NOT NULL REFERENCES customers(id), created_at TEXT NOT NULL, -- ISO 8601 date, 'YYYY-MM-DD' status TEXT NOT NULL, -- 'paid', 'refunded' or 'pending' amount_cents INTEGER NOT NULL ); ``` Write one SQLite query that returns the top 3 customers by total amount of PAID orders created in calendar year 2025. Return the columns name and total_cents. Order by total_cents descending, then by name ascending. Customers without paid 2025 orders must not appear. Reply with only the query in a single ```sql code block.

Checklist

  • ✓ A sql code block is present
  • ✓ The query runs without error on node:sqlite against the schema plus our seed data (fixtures/seed.sql)
  • ✓ Result has exactly the columns name, total_cents
  • ✓ Result rows equal the reference: Ayu 12000, Budi 12000, Citra 12000 (seed traps: a 2024-12-31 paid order, a refunded order, a pending order, a 2026-01-01 order)
Read the full answer (unedited model output, punctuation normalized)
```sql
SELECT c.name, SUM(o.amount_cents) AS total_cents
FROM orders o
JOIN customers c ON c.id = o.customer_id
WHERE o.status = 'paid'
  AND o.created_at BETWEEN '2025-01-01' AND '2025-12-31'
GROUP BY c.id, c.name
ORDER BY total_cents DESC, c.name ASC
LIMIT 3;
```

deepseek-v4-pro · Tested October 25, 2026

DeepSeek: Card with the prompt and the full API answer from deepseek-v4-pro
Refactor TypeScript to strict typesPass
Prompt

Refactor this TypeScript file into idiomatic, strictly typed TypeScript. Rules: no `any` anywhere; define and export types for the item, the options and the result; use const/let instead of var; keep the exported function name `summarize` and keep the behavior identical (including how a missing qty is treated). Reply with the full file in a single ```ts code block. ```ts export function summarize(items: any, opts?: any): any { var result: any = {}; for (var i = 0; i < items.length; i++) { var it = items[i]; if (opts && opts.onlyActive && !it.active) continue; if (!result[it.category]) result[it.category] = { count: 0, total: 0 }; result[it.category].count = result[it.category].count + 1; result[it.category].total = result[it.category].total + it.price * (it.qty == undefined ? 1 : it.qty); } return result; } ```

Checklist

  • ✓ A ts code block is present
  • ✓ The word any does not appear in the code
  • ✓ No var declarations
  • ✓ tsc --strict --noEmit passes (TypeScript from the workspace node_modules)
  • ✓ Behavior equals the legacy function on 4 fixed inputs (no options, onlyActive true, qty 0, qty missing), run with node type stripping
Read the full answer (unedited model output, punctuation normalized)
```ts
export interface Item {
  category: string;
  price: number;
  qty?: number;
  active?: boolean;
}

export interface SummarizeOptions {
  onlyActive?: boolean;
}

export interface CategorySummary {
  count: number;
  total: number;
}

export interface SummaryResult {
  [category: string]: CategorySummary;
}

export function summarize(items: Item[], opts?: SummarizeOptions): SummaryResult {
  const result: SummaryResult = {};

  for (const it of items) {
    if (opts?.onlyActive && !it.active) continue;

    const summary = result[it.category] ?? { count: 0, total: 0 };
    summary.count += 1;
    summary.total += it.price * (it.qty ?? 1);
    result[it.category] = summary;
  }

  return result;
}
```

deepseek-v4-pro · Tested October 25, 2026

See all results

Model: black-forest-labs/flux.2-pro · Run through: OpenRouter API (black-forest-labs/flux.2-pro), served by Black Forest Labs · Tested October 25, 2026

FLUX (Black Forest Labs): Pale sage green mug on a light wooden table, soft grey background
Product shotPass
Prompt

Studio product photo of a matte sage green ceramic coffee mug standing on a light oak wooden table, soft window light from the left, shallow depth of field, plain neutral background. No text, no logos.

Checklist

  • A single mug is the clear subject
  • Mug is sage green (muted grey-green)
  • Mug stands on a light wooden surface
  • Looks like a photograph, not an illustration
  • No text or logo anywhere
  • Mug geometry intact (one handle, no melted rim)
  • Light visibly comes from the left (nice to have)

black-forest-labs/flux.2-pro · Tested October 25, 2026

FLUX (Black Forest Labs): Framed poster FRESH MARKET, Saturday 8 AM, with carrots, tomatoes and greens
Poster with short English textPass

Both lines exact

Prompt

Minimalist event poster for a weekend farmers market. Large headline text that reads exactly "FRESH MARKET" and a smaller line below it that reads exactly "Saturday 8 AM". Flat illustration of carrots, tomatoes and leafy greens at the bottom. Warm orange and cream color palette.

Checklist

  • Headline spelled exactly FRESH MARKET
  • Second line spelled exactly Saturday 8 AM (case may differ)
  • No extra garbled or invented words
  • Vegetables illustrated (at least two of carrot, tomato, greens)
  • Reads as a poster layout (portrait or square, clear hierarchy) (nice to have)
  • Warm orange palette (nice to have)

black-forest-labs/flux.2-pro · Tested October 25, 2026

FLUX (Black Forest Labs): Orange kitten holding an open blue book on grass under a large tree at sunset
IllustrationPass
Prompt

Children's book illustration of a small orange cat sitting and reading an open book under a large banyan tree at sunset, soft watercolor textures, warm colors.

Checklist

  • Exactly one orange cat
  • An open book in front of or held by the cat
  • A large tree is present
  • Illustration style (not a photo)
  • Cat anatomy plausible (no extra limbs or heads)
  • Sunset light (nice to have)
  • Tree reads as a banyan (aerial roots) (nice to have)

black-forest-labs/flux.2-pro · Tested October 25, 2026

See all results

Gemini Code Assist

5 of 5 passed

Model: google/gemini-4-argon · Run through: API model openrouter:google/gemini-4-argon · Tested October 25, 2026

Gemini Code Assist: Card with the prompt and the full API answer from google/gemini-4-argon
Fix a buggy JavaScript function (median)Pass
Prompt

The following JavaScript function should return the median of an array of numbers, but it has bugs. Fix it. Requirements: return null for an empty array; do not modify the input array; work for negative numbers and decimals; for an even number of elements return the average of the two middle values. Reply with the complete fixed function in a single ```js code block (function name `median`, no exports, nothing else in the block), then at most 3 sentences explaining the bugs. ```js function median(arr) { arr.sort(); const mid = Math.floor(arr.length / 2); if (arr.length % 2 === 0) { return arr[mid] + arr[mid - 1] / 2; } return arr[mid]; } ```

Checklist

  • ✓ A js code block is present and defines a function named median
  • ✓ median([3,1,2]) === 2
  • ✓ median([10,2,1,4]) === 3
  • ✓ median([100,20,3]) === 20 (catches default string sort)
  • ✓ median([-1,-3]) === -2 and median([1.5,2.5,0.5]) === 1.5
  • ✓ median([]) === null
  • ✓ The input array is not mutated
Read the full answer (unedited model output, punctuation normalized)
```js
function median(arr) {
  if (arr.length === 0) return null;
  const sorted = [...arr].sort((a, b) => a - b);
  const mid = Math.floor(sorted.length / 2);
  if (sorted.length % 2 === 0) {
    return (sorted[mid] + sorted[mid - 1]) / 2;
  }
  return sorted[mid];
}
```

The original function failed to check for an empty array and mutated the original input array directly instead of creating a copy. Additionally, `arr.sort()` sorts elements alphabetically as strings by default, requiring a numeric comparator `(a, b) => a - b` to properly order negative and multi-digit numbers. Finally, the average calculation for even-length arrays lacked parentheses around the addition, causing division to happen first due to operator precedence.

google/gemini-4-argon · Tested October 25, 2026

Gemini Code Assist: Card with the prompt and the full API answer from google/gemini-4-argon
Write a SQL query against a given schemaPass
Prompt

Given this SQLite schema: ```sql CREATE TABLE customers ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, city TEXT ); CREATE TABLE orders ( id INTEGER PRIMARY KEY, customer_id INTEGER NOT NULL REFERENCES customers(id), created_at TEXT NOT NULL, -- ISO 8601 date, 'YYYY-MM-DD' status TEXT NOT NULL, -- 'paid', 'refunded' or 'pending' amount_cents INTEGER NOT NULL ); ``` Write one SQLite query that returns the top 3 customers by total amount of PAID orders created in calendar year 2025. Return the columns name and total_cents. Order by total_cents descending, then by name ascending. Customers without paid 2025 orders must not appear. Reply with only the query in a single ```sql code block.

Checklist

  • ✓ A sql code block is present
  • ✓ The query runs without error on node:sqlite against the schema plus our seed data (fixtures/seed.sql)
  • ✓ Result has exactly the columns name, total_cents
  • ✓ Result rows equal the reference: Ayu 12000, Budi 12000, Citra 12000 (seed traps: a 2024-12-31 paid order, a refunded order, a pending order, a 2026-01-01 order)
Read the full answer (unedited model output, punctuation normalized)
```sql
SELECT 
  c.name, 
  SUM(o.amount_cents) AS total_cents
FROM customers c
JOIN orders o ON c.id = o.customer_id
WHERE o.status = 'paid'
  AND o.created_at >= '2025-01-01'
  AND o.created_at <= '2025-12-31'
GROUP BY c.id, c.name
ORDER BY total_cents DESC, c.name ASC
LIMIT 3;
```

google/gemini-4-argon · Tested October 25, 2026

Gemini Code Assist: Card with the prompt and the full API answer from google/gemini-4-argon
Refactor TypeScript to strict typesPass
Prompt

Refactor this TypeScript file into idiomatic, strictly typed TypeScript. Rules: no `any` anywhere; define and export types for the item, the options and the result; use const/let instead of var; keep the exported function name `summarize` and keep the behavior identical (including how a missing qty is treated). Reply with the full file in a single ```ts code block. ```ts export function summarize(items: any, opts?: any): any { var result: any = {}; for (var i = 0; i < items.length; i++) { var it = items[i]; if (opts && opts.onlyActive && !it.active) continue; if (!result[it.category]) result[it.category] = { count: 0, total: 0 }; result[it.category].count = result[it.category].count + 1; result[it.category].total = result[it.category].total + it.price * (it.qty == undefined ? 1 : it.qty); } return result; } ```

Checklist

  • ✓ A ts code block is present
  • ✓ The word any does not appear in the code
  • ✓ No var declarations
  • ✓ tsc --strict --noEmit passes (TypeScript from the workspace node_modules)
  • ✓ Behavior equals the legacy function on 4 fixed inputs (no options, onlyActive true, qty 0, qty missing), run with node type stripping
Read the full answer (unedited model output, punctuation normalized)
```ts
export interface SummarizeItem {
  category: string;
  price: number;
  qty?: number | null;
  active?: boolean;
}

export interface SummarizeOptions {
  onlyActive?: boolean;
}

export interface CategorySummary {
  count: number;
  total: number;
}

export type SummarizeResult = Record<string, CategorySummary>;

export function summarize(
  items: readonly SummarizeItem[],
  opts?: SummarizeOptions,
): SummarizeResult {
  const result: SummarizeResult = {};

  for (const item of items) {
    if (opts?.onlyActive && !item.active) {
      continue;
    }

    let categorySummary = result[item.category];
    if (!categorySummary) {
      categorySummary = { count: 0, total: 0 };
      result[item.category] = categorySummary;
    }

    categorySummary.count += 1;
    categorySummary.total += item.price * (item.qty ?? 1);
  }

  return result;
}
```

google/gemini-4-argon · Tested October 25, 2026

See all results

Grok

5 of 5 passed

Model: x-ai/grok-4.7 · Run through: API model openrouter:x-ai/grok-4.7 · Tested October 25, 2026

Grok: Card with the prompt and the full API answer from x-ai/grok-4.7
Email draftPass
Prompt

Write a short email to my landlord asking him to fix the leaking kitchen faucet. Propose two possible time slots this week for the repair. Keep it polite and under 150 words, and include a subject line.

Checklist

  • ✓ Has a subject line
  • ✓ Mentions the faucet/tap and the leak
  • ✓ Proposes at least two time slots (two weekday names or two clock times)
  • ✓ At most 170 words in total (150 body plus subject allowance)
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
Subject: Request to Repair Leaking Kitchen Faucet

Dear [Landlord’s Name],

I hope you’re doing well. The kitchen faucet in my apartment has been leaking, and I’d appreciate it if you could arrange a repair.

I’m available this week on Tuesday from 10:00 a.m. to 12:00 p.m. or Thursday from 2:00 p.m. to 4:00 p.m. Please let me know which time works best, or suggest another option if needed.

Thank you for your help.

Best regards,  
[Your Name]  
[Your Unit Number]

x-ai/grok-4.7 · Tested October 25, 2026

Grok: Card with the prompt and the full API answer from x-ai/grok-4.7
Summary of a given textPass
Prompt

Summarize the following text in exactly 3 bullet points, 60 words maximum in total. Use only information from the text. Text: Borobudur, also transcribed Barabudur (Indonesian: Candi Borobudur, Javanese: ꦕꦤ꧀ꦝꦶꦧꦫꦧꦸꦝꦸꦂ, romanized: Candhi Barabudhur), is a 9th-century Mahayana Buddhist temple in Magelang Regency, near the town of Muntilan, northwest of the city of Yogyakarta, in Central Java, Indonesia. Constructed of gray andesite-like stone, the temple consists of nine stacked platforms, six square and three circular, topped by a central dome. It is decorated with 2,672 relief panels and originally 504 Buddha statues. The central dome is surrounded by 72 Buddha statues, each seated inside a perforated stupa. The monument guides pilgrims through an extensive system of stairways and corridors with 1,460 narrative relief panels on the walls and the balustrades. Borobudur has one of the world's most extensive collections of Buddhist reliefs. Built during the reign of the Sailendra dynasty, the temple design follows Javanese Buddhist architecture, which blends the Indonesian indigenous tradition of ancestor worship and the Buddhist concept of attaining nirvāṇa. The monument is a shrine to the Buddha and a place for Buddhist pilgrimage. Evidence suggests that Borobudur was constructed in the 8th century and subsequently abandoned following the 14th-century decline of Hindu kingdoms in Java and the Javanese conversion to Islam. Worldwide knowledge of its existence was sparked in 1814 by Thomas Stamford Raffles, then the British administrator of Java, who was advised of its location by native Indonesians. Borobudur has since been preserved through several restorations. The largest restoration project was completed in 1983 by the Indonesian government and UNESCO, followed by the monument's listing as a UNESCO World Heritage Site. Borobudur is the largest Buddhist temple in the world, and ranks with Bagan in Myanmar and Angkor Wat in Cambodia as one of the great archeological sites of Southeast Asia. Borobudur remains popular for pilgrimage, with Buddhists in Indonesia celebrating Vesak Day at the monument. Among Indonesia's tourist attractions, Borobudur is the most-visited monument.

Checklist

  • ✓ Exactly 3 bullet lines
  • ✓ At most 60 words
  • ✓ Mentions at least 2 of: 9th century, Buddhist, Central Java
  • ✓ Every number in the answer appears in the source text (no invented figures)
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
- Borobudur is a 9th-century Mahayana Buddhist temple in Central Java, Indonesia.
- It has nine stone platforms, 2,672 relief panels, and originally 504 Buddha statues, and is the world’s largest Buddhist temple.
- Built by the Sailendra dynasty, abandoned, rediscovered in 1814, restored by 1983, and a UNESCO World Heritage Site, it is Indonesia’s most-visited monument.

x-ai/grok-4.7 · Tested October 25, 2026

Grok: Card with the prompt and the full API answer from x-ai/grok-4.7
Trip planPass
Prompt

Plan a 3-day trip to Yogyakarta, Indonesia for a first-time visitor on a moderate budget. Give a day-by-day plan with morning, afternoon and evening for each day. Include Borobudur and Prambanan, and give one practical tip about getting around. Keep it under 350 words.

Checklist

  • ✓ Has Day 1, Day 2 and Day 3
  • ✓ Mentions Borobudur and Prambanan
  • ✓ Uses morning, afternoon and evening
  • ✓ Gives a transport tip (Grab, Gojek, taxi, bus, Trans Jogja, car, scooter, train, driver)
  • ✓ At most 380 words
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
**3-day Yogyakarta plan (moderate budget, first visit)**

Base yourself near Malioboro or Prawirotaman so meals, walks, and rides stay cheap. Book temple tickets online and go early.

**Day 1 - Old city**  
Morning: Kraton (Sultan’s Palace) and nearby Taman Sari water castle.  
Afternoon: Walk Jalan Malioboro; browse batik and street snacks, then the Sonobudoyo Museum if you want a short cultural stop.  
Evening: Dinner at a simple warung (gudeg is the local specialty), then a stroll or a free street performance near Malioboro.

**Day 2 - Borobudur**  
Morning: Leave before dawn for Borobudur (about 1 hour). Sunrise or early entry is cooler and less crowded; allow 2–3 hours on the terraces.  
Afternoon: Return toward town and stop at a village craft workshop (silver in Kota Gede, or batik) or rest at your guesthouse.  
Evening: Casual dinner in Prawirotaman and an early night.

**Day 3 - Prambanan**  
Morning: Prambanan temple complex (about 30–45 minutes from the center). Focus on the main Shiva, Brahma, and Vishnu shrines.  
Afternoon: If energy remains, nearby Ratu Boko hilltop ruins; otherwise coffee and a last market stop for snacks or small souvenirs.  
Evening: Farewell meal on Malioboro and depart, or a relaxed night in if your flight is the next morning.

**Getting around:** Use Gojek or Grab for short city hops (cheap and easy with a local SIM or hotel Wi‑Fi). For Borobudur and Prambanan, a shared or private driver for the day is usually simpler and still moderate-budget - agree the price before you leave. Temples involve a lot of walking and stairs in heat, so start early, carry water, and dress with shoulders and knees covered.

x-ai/grok-4.7 · Tested October 25, 2026

Hailuo AI

5 of 5 passed

Model: minimax/hailuo-3-max · Run through: OpenRouter video API (minimax/hailuo-3-max) · Tested October 25, 2026

product orbitPass

Orbit around the mug to the far side; handle geometry stays plausible.

Prompt

Slow, smooth camera orbit around the ceramic mug on the wooden table. Keep the mug shape, colour and the table unchanged. Soft natural light. No text.

Checklist

  • ✓ The request returns a playable video file.
  • ✓ No severe temporal breakdown: subject does not melt, split, duplicate or flicker into something else.
  • ✓ No garbled pseudo-text or fake watermark appears on screen. (nice to have)
  • ✓ First frame matches the input photo (same mug, table, framing).
  • ✓ The mug keeps its shape and handle while the camera moves.
  • ✓ Visible camera movement around the mug. (nice to have)

Input photo: Ceramic mug wooden table by creator not listed, CC0 1.0

minimax/hailuo-3-max · Tested October 25, 2026

food steamPass

Faithful to the photo; little steam, slow push-in mainly in the second half (first/last frame motion check).

Prompt

Gentle steam rises from the bowl of noodle soup, the broth surface ripples slightly, very slow camera push-in. No hands, no people.

Checklist

  • ✓ The request returns a playable video file.
  • ✓ No severe temporal breakdown: subject does not melt, split, duplicate or flicker into something else.
  • ✓ No garbled pseudo-text or fake watermark appears on screen. (nice to have)
  • ✓ First frame matches the input photo (same bowl, noodles, meatballs).
  • ✓ No hands, utensils held by a person, or people appear.
  • ✓ Steam or broth movement is visible; food keeps its look. (nice to have)

Input photo: A bowl of soup with noodles and meatballs by Faisal Ahammad, CC0 1.0

minimax/hailuo-3-max · Tested October 25, 2026

room dollyPass

Furniture stable; slow push-in mainly in the second half (first/last frame motion check).

Prompt

Slow cinematic dolly forward into the living room, sheer curtains moving gently in a light breeze, daylight. Furniture stays still and unchanged. No people.

Checklist

  • ✓ The request returns a playable video file.
  • ✓ No severe temporal breakdown: subject does not melt, split, duplicate or flicker into something else.
  • ✓ No garbled pseudo-text or fake watermark appears on screen. (nice to have)
  • ✓ First frame matches the input photo (same sofa, chairs, windows).
  • ✓ Furniture keeps its geometry (no bending sofas or chairs morphing).
  • ✓ Forward camera motion is visible; no people appear. (nice to have)

Input photo: Free minimalist living room interior by creator not listed, CC0 1.0

minimax/hailuo-3-max · Tested October 25, 2026

See all results

Kimi

5 of 5 passed

Model: moonshotai/kimi-k3.1-pro · Run through: API model openrouter:moonshotai/kimi-k3.1-pro · Tested October 25, 2026

Kimi: Card with the prompt and the full API answer from moonshotai/kimi-k3.1-pro
Email draftPass
Prompt

Write a short email to my landlord asking him to fix the leaking kitchen faucet. Propose two possible time slots this week for the repair. Keep it polite and under 150 words, and include a subject line.

Checklist

  • ✓ Has a subject line
  • ✓ Mentions the faucet/tap and the leak
  • ✓ Proposes at least two time slots (two weekday names or two clock times)
  • ✓ At most 170 words in total (150 body plus subject allowance)
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
**Subject: Repair Request – Leaking Kitchen Faucet**

Dear [Landlord’s Name],

I hope you’re doing well. The kitchen faucet in my unit has started leaking, and I would appreciate it if you could arrange for it to be repaired.

I’m available this week on Thursday between 2:00 and 4:00 p.m., or Friday between 9:00 and 11:00 a.m. Please let me know if either time works for you. If not, I’m happy to coordinate another convenient time.

Thank you for your help.

Best regards,  
[Your Name]  
[Unit Number]

moonshotai/kimi-k3.1-pro · Tested October 25, 2026

Kimi: Card with the prompt and the full API answer from moonshotai/kimi-k3.1-pro
Summary of a given textPass
Prompt

Summarize the following text in exactly 3 bullet points, 60 words maximum in total. Use only information from the text. Text: Borobudur, also transcribed Barabudur (Indonesian: Candi Borobudur, Javanese: ꦕꦤ꧀ꦝꦶꦧꦫꦧꦸꦝꦸꦂ, romanized: Candhi Barabudhur), is a 9th-century Mahayana Buddhist temple in Magelang Regency, near the town of Muntilan, northwest of the city of Yogyakarta, in Central Java, Indonesia. Constructed of gray andesite-like stone, the temple consists of nine stacked platforms, six square and three circular, topped by a central dome. It is decorated with 2,672 relief panels and originally 504 Buddha statues. The central dome is surrounded by 72 Buddha statues, each seated inside a perforated stupa. The monument guides pilgrims through an extensive system of stairways and corridors with 1,460 narrative relief panels on the walls and the balustrades. Borobudur has one of the world's most extensive collections of Buddhist reliefs. Built during the reign of the Sailendra dynasty, the temple design follows Javanese Buddhist architecture, which blends the Indonesian indigenous tradition of ancestor worship and the Buddhist concept of attaining nirvāṇa. The monument is a shrine to the Buddha and a place for Buddhist pilgrimage. Evidence suggests that Borobudur was constructed in the 8th century and subsequently abandoned following the 14th-century decline of Hindu kingdoms in Java and the Javanese conversion to Islam. Worldwide knowledge of its existence was sparked in 1814 by Thomas Stamford Raffles, then the British administrator of Java, who was advised of its location by native Indonesians. Borobudur has since been preserved through several restorations. The largest restoration project was completed in 1983 by the Indonesian government and UNESCO, followed by the monument's listing as a UNESCO World Heritage Site. Borobudur is the largest Buddhist temple in the world, and ranks with Bagan in Myanmar and Angkor Wat in Cambodia as one of the great archeological sites of Southeast Asia. Borobudur remains popular for pilgrimage, with Buddhists in Indonesia celebrating Vesak Day at the monument. Among Indonesia's tourist attractions, Borobudur is the most-visited monument.

Checklist

  • ✓ Exactly 3 bullet lines
  • ✓ At most 60 words
  • ✓ Mentions at least 2 of: 9th century, Buddhist, Central Java
  • ✓ Every number in the answer appears in the source text (no invented figures)
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
- Borobudur, in Central Java, Indonesia, is a 9th-century Mahayana Buddhist temple and the world’s largest Buddhist temple.
- It has nine stacked platforms, 2,672 relief panels, and originally 504 Buddha statues.
- Built under the Sailendra dynasty and later abandoned, it gained worldwide attention in 1814, was restored and UNESCO-listed, and remains popular for pilgrimage and tourism.

moonshotai/kimi-k3.1-pro · Tested October 25, 2026

Kimi: Card with the prompt and the full API answer from moonshotai/kimi-k3.1-pro
Trip planPass
Prompt

Plan a 3-day trip to Yogyakarta, Indonesia for a first-time visitor on a moderate budget. Give a day-by-day plan with morning, afternoon and evening for each day. Include Borobudur and Prambanan, and give one practical tip about getting around. Keep it under 350 words.

Checklist

  • ✓ Has Day 1, Day 2 and Day 3
  • ✓ Mentions Borobudur and Prambanan
  • ✓ Uses morning, afternoon and evening
  • ✓ Gives a transport tip (Grab, Gojek, taxi, bus, Trans Jogja, car, scooter, train, driver)
  • ✓ At most 380 words
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
**Base:** Stay in a guesthouse near Malioboro or Prawirotaman, and eat at local *warungs* for good-value meals.

### Day 1 – Yogyakarta’s culture
- **Morning:** Visit the **Kraton** (Sultan’s Palace), then continue to **Taman Sari**, the former royal water garden. Go early to avoid heat and crowds, and check palace closing days.
- **Afternoon:** Take an inexpensive batik-making workshop or visit **Sonobudoyo Museum** for an introduction to Javanese art and history.
- **Evening:** Stroll along **Malioboro Street**, browse Beringharjo Market, and try *gudeg* or *nasi goreng* for dinner.

### Day 2 – Borobudur and nearby temples
- **Morning:** Take an early shared minivan to **Borobudur**, roughly 1.5 hours away. Allow several hours to appreciate the reliefs and surroundings. Book tickets ahead; climbing the monument requires separate, limited-quota access.
- **Afternoon:** Have a local lunch, then stop at the smaller **Pawon** and **Mendut** temples on the return journey. Head back to your hotel for a rest.
- **Evening:** Enjoy a relaxed dinner around **Prawirotaman**, which has plenty of mid-range Indonesian and international options.

### Day 3 – Prambanan
- **Morning:** Arrive at **Prambanan** near opening time. Explore the main Hindu temples and, if energy permits, walk to nearby Sewu Temple within the archaeological park.
- **Afternoon:** After lunch, visit **Ratu Boko** for its hilltop ruins and views; it has a separate entrance fee. Budget travellers can instead return to the city for a free afternoon.
- **Evening:** If scheduled and within budget, see the **Ramayana Ballet** near Prambanan. Otherwise, return to Yogyakarta for a final warung dinner.

**Getting around:** Use Grab or Gojek for inexpensive city rides; for the temples, choose a shared Borobudur tour and a pre-arranged driver for Day 3 to avoid slow, complicated connections.

moonshotai/kimi-k3.1-pro · Tested October 25, 2026

Meta AI

5 of 5 passed

Model: meta-llama/llama-4-maverick · Run through: API model openrouter:meta-llama/llama-4-maverick · Tested October 25, 2026

Meta AI: Card with the prompt and the full API answer from meta-llama/llama-4-maverick
Email draftPass
Prompt

Write a short email to my landlord asking him to fix the leaking kitchen faucet. Propose two possible time slots this week for the repair. Keep it polite and under 150 words, and include a subject line.

Checklist

  • ✓ Has a subject line
  • ✓ Mentions the faucet/tap and the leak
  • ✓ Proposes at least two time slots (two weekday names or two clock times)
  • ✓ At most 170 words in total (150 body plus subject allowance)
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
Here is a short email to your landlord:

Subject: Leaking Kitchen Faucet Repair Request

Dear [Landlord's Name],

I hope this email finds you well. I wanted to bring to your attention that the kitchen faucet is leaking and needs to be repaired. I would greatly appreciate it if you could arrange for a plumber to fix the issue as soon as possible.

I am available to accommodate a repair visit this week. Would it be possible to schedule the repair for either Wednesday morning (around 9:00 am) or Thursday afternoon (around 2:00 pm)? Please let me know which time slot works best for you, or if an alternative time is needed.

Thank you for your prompt attention to this matter.

Best regards,
[Your Name]

meta-llama/llama-4-maverick · Tested October 25, 2026

Meta AI: Card with the prompt and the full API answer from meta-llama/llama-4-maverick
Summary of a given textPass
Prompt

Summarize the following text in exactly 3 bullet points, 60 words maximum in total. Use only information from the text. Text: Borobudur, also transcribed Barabudur (Indonesian: Candi Borobudur, Javanese: ꦕꦤ꧀ꦝꦶꦧꦫꦧꦸꦝꦸꦂ, romanized: Candhi Barabudhur), is a 9th-century Mahayana Buddhist temple in Magelang Regency, near the town of Muntilan, northwest of the city of Yogyakarta, in Central Java, Indonesia. Constructed of gray andesite-like stone, the temple consists of nine stacked platforms, six square and three circular, topped by a central dome. It is decorated with 2,672 relief panels and originally 504 Buddha statues. The central dome is surrounded by 72 Buddha statues, each seated inside a perforated stupa. The monument guides pilgrims through an extensive system of stairways and corridors with 1,460 narrative relief panels on the walls and the balustrades. Borobudur has one of the world's most extensive collections of Buddhist reliefs. Built during the reign of the Sailendra dynasty, the temple design follows Javanese Buddhist architecture, which blends the Indonesian indigenous tradition of ancestor worship and the Buddhist concept of attaining nirvāṇa. The monument is a shrine to the Buddha and a place for Buddhist pilgrimage. Evidence suggests that Borobudur was constructed in the 8th century and subsequently abandoned following the 14th-century decline of Hindu kingdoms in Java and the Javanese conversion to Islam. Worldwide knowledge of its existence was sparked in 1814 by Thomas Stamford Raffles, then the British administrator of Java, who was advised of its location by native Indonesians. Borobudur has since been preserved through several restorations. The largest restoration project was completed in 1983 by the Indonesian government and UNESCO, followed by the monument's listing as a UNESCO World Heritage Site. Borobudur is the largest Buddhist temple in the world, and ranks with Bagan in Myanmar and Angkor Wat in Cambodia as one of the great archeological sites of Southeast Asia. Borobudur remains popular for pilgrimage, with Buddhists in Indonesia celebrating Vesak Day at the monument. Among Indonesia's tourist attractions, Borobudur is the most-visited monument.

Checklist

  • ✓ Exactly 3 bullet lines
  • ✓ At most 60 words
  • ✓ Mentions at least 2 of: 9th century, Buddhist, Central Java
  • ✓ Every number in the answer appears in the source text (no invented figures)
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
Here are 3 bullet points summarizing the text in 60 words or less:
* Borobudur is a 9th-century Mahayana Buddhist temple in Central Java, Indonesia, constructed of gray andesite-like stone.
* The temple features 2,672 relief panels and 504 Buddha statues, with a central dome surrounded by 72 Buddha statues.
* It is the largest Buddhist temple in the world and a popular pilgrimage site and tourist attraction.

meta-llama/llama-4-maverick · Tested October 25, 2026

Meta AI: Card with the prompt and the full API answer from meta-llama/llama-4-maverick
Trip planPass
Prompt

Plan a 3-day trip to Yogyakarta, Indonesia for a first-time visitor on a moderate budget. Give a day-by-day plan with morning, afternoon and evening for each day. Include Borobudur and Prambanan, and give one practical tip about getting around. Keep it under 350 words.

Checklist

  • ✓ Has Day 1, Day 2 and Day 3
  • ✓ Mentions Borobudur and Prambanan
  • ✓ Uses morning, afternoon and evening
  • ✓ Gives a transport tip (Grab, Gojek, taxi, bus, Trans Jogja, car, scooter, train, driver)
  • ✓ At most 380 words
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
For a 3-day trip to Yogyakarta on a moderate budget, consider the following itinerary:

Day 1:
- Morning: Visit Borobudur, a UNESCO World Heritage Site and one of the largest Buddhist temples in the world. Take a guided tour to learn about its history and significance.
- Afternoon: Explore the nearby Manohara Hotel's gardens or visit the nearby Mendut and Pawon temples.
- Evening: Enjoy traditional Javanese cuisine and watch a cultural performance, such as a Ramayana ballet, at a local restaurant.

Day 2:
- Morning: Visit Prambanan, another UNESCO World Heritage Site and a collection of Hindu temples. Take a guided tour to learn about its history and mythology.
- Afternoon: Explore the Yogyakarta Kraton (Sultan's Palace) to learn about the city's rich history and cultural heritage.
- Evening: Stroll through Malioboro Street, a popular shopping and dining area, and try some local street food.

Day 3:
- Morning: Visit the Jomblang Cave or take a sunrise hike at Mount Merapi for an adventurous experience.
- Afternoon: Explore the Banteng Market or visit the Affandi Museum to learn about Indonesian art.
- Evening: Enjoy a farewell dinner at a local restaurant and try some traditional Yogyakarta dishes.

Practical tip: To get around Yogyakarta, consider renting a motorbike for the day. This will give you the flexibility to explore the city and its surroundings at your own pace, and is relatively affordable (around IDR 50,000 - 100,000 or $3.50 - $7 USD per day).

Budget breakdown:
- Accommodation: IDR 500,000 - 1,000,000 ($35 - $70 USD) per night
- Transportation: IDR 50,000 - 100,000 ($3.50 - $7 USD) per day for motorbike rental
- Food and activities: IDR 500,000 - 1,000,000 ($35 - $70 USD) per day

Total estimated budget for 3 days: IDR 2,500,000 - 4,500,000 ($175 - $315 USD)

meta-llama/llama-4-maverick · Tested October 25, 2026

Model: mistralai/mistral-medium-3-5 · Run through: API model openrouter:mistralai/mistral-medium-3-5 · Tested October 25, 2026

Mistral Vibe (formerly Le Chat): Card with the prompt and the full API answer from mistralai/mistral-medium-3-5
Email draftPass
Prompt

Write a short email to my landlord asking him to fix the leaking kitchen faucet. Propose two possible time slots this week for the repair. Keep it polite and under 150 words, and include a subject line.

Checklist

  • ✓ Has a subject line
  • ✓ Mentions the faucet/tap and the leak
  • ✓ Proposes at least two time slots (two weekday names or two clock times)
  • ✓ At most 170 words in total (150 body plus subject allowance)
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
**Subject:** Request for Kitchen Faucet Repair

Dear [Landlord's Name],

I hope you're doing well. I wanted to let you know that the kitchen faucet in my unit has started leaking, and I’d appreciate it if you could arrange for a repair.

To make it easier, I’m available this week on:
- **Tuesday between 2–4 PM**
- **Thursday between 10 AM–12 PM**

Please let me know if either of these times works for you or the repair person. If not, I’m happy to coordinate an alternative.

Thank you for your attention to this - I’d really appreciate getting it fixed soon to avoid any water damage.

Best regards,
[Your Full Name]
[Your Apartment Number, if applicable]
[Your Contact Information]

mistralai/mistral-medium-3-5 · Tested October 25, 2026

Mistral Vibe (formerly Le Chat): Card with the prompt and the full API answer from mistralai/mistral-medium-3-5
Summary of a given textPass
Prompt

Summarize the following text in exactly 3 bullet points, 60 words maximum in total. Use only information from the text. Text: Borobudur, also transcribed Barabudur (Indonesian: Candi Borobudur, Javanese: ꦕꦤ꧀ꦝꦶꦧꦫꦧꦸꦝꦸꦂ, romanized: Candhi Barabudhur), is a 9th-century Mahayana Buddhist temple in Magelang Regency, near the town of Muntilan, northwest of the city of Yogyakarta, in Central Java, Indonesia. Constructed of gray andesite-like stone, the temple consists of nine stacked platforms, six square and three circular, topped by a central dome. It is decorated with 2,672 relief panels and originally 504 Buddha statues. The central dome is surrounded by 72 Buddha statues, each seated inside a perforated stupa. The monument guides pilgrims through an extensive system of stairways and corridors with 1,460 narrative relief panels on the walls and the balustrades. Borobudur has one of the world's most extensive collections of Buddhist reliefs. Built during the reign of the Sailendra dynasty, the temple design follows Javanese Buddhist architecture, which blends the Indonesian indigenous tradition of ancestor worship and the Buddhist concept of attaining nirvāṇa. The monument is a shrine to the Buddha and a place for Buddhist pilgrimage. Evidence suggests that Borobudur was constructed in the 8th century and subsequently abandoned following the 14th-century decline of Hindu kingdoms in Java and the Javanese conversion to Islam. Worldwide knowledge of its existence was sparked in 1814 by Thomas Stamford Raffles, then the British administrator of Java, who was advised of its location by native Indonesians. Borobudur has since been preserved through several restorations. The largest restoration project was completed in 1983 by the Indonesian government and UNESCO, followed by the monument's listing as a UNESCO World Heritage Site. Borobudur is the largest Buddhist temple in the world, and ranks with Bagan in Myanmar and Angkor Wat in Cambodia as one of the great archeological sites of Southeast Asia. Borobudur remains popular for pilgrimage, with Buddhists in Indonesia celebrating Vesak Day at the monument. Among Indonesia's tourist attractions, Borobudur is the most-visited monument.

Checklist

  • ✓ Exactly 3 bullet lines
  • ✓ At most 60 words
  • ✓ Mentions at least 2 of: 9th century, Buddhist, Central Java
  • ✓ Every number in the answer appears in the source text (no invented figures)
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
- 9th-century Mahayana Buddhist temple in Central Java, Indonesia, with nine stacked platforms and 2,672 relief panels.
- Built by Sailendra dynasty, abandoned in 14th century, rediscovered in 1814, restored in 1983.
- Largest Buddhist temple, UNESCO site, popular for pilgrimage and tourism.

mistralai/mistral-medium-3-5 · Tested October 25, 2026

Mistral Vibe (formerly Le Chat): Card with the prompt and the full API answer from mistralai/mistral-medium-3-5
Trip planPass
Prompt

Plan a 3-day trip to Yogyakarta, Indonesia for a first-time visitor on a moderate budget. Give a day-by-day plan with morning, afternoon and evening for each day. Include Borobudur and Prambanan, and give one practical tip about getting around. Keep it under 350 words.

Checklist

  • ✓ Has Day 1, Day 2 and Day 3
  • ✓ Mentions Borobudur and Prambanan
  • ✓ Uses morning, afternoon and evening
  • ✓ Gives a transport tip (Grab, Gojek, taxi, bus, Trans Jogja, car, scooter, train, driver)
  • ✓ At most 380 words
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
**3-Day Yogyakarta Itinerary (Moderate Budget)**

**Day 1: Temples & Culture**
- **Morning:** Visit **Borobudur** (arrive by 6 AM to avoid crowds). Explore the temple and enjoy the sunrise (ticket: ~$25).
- **Afternoon:** Head to **Mendut Temple**, then return to Yogyakarta. Stop at **Kasongan Art Village** for local crafts.
- **Evening:** Stroll along **Malioboro Street** for shopping and street food (try *gudeg* or *sate klathak*).

**Day 2: Prambanan & Local Gems**
- **Morning:** Explore **Prambanan Temple** (ticket: ~$25). Combine with **Ratu Boko** for sunset views.
- **Afternoon:** Visit **Kraton Ngayogyakarta Hadiningrat** (Sultan’s Palace) and **Taman Sari Water Castle**.
- **Evening:** Relax at a **rooftop café** (e.g., **Mediterranea**) or watch a **Ramayana Ballet** at Prambanan (seasonal).

**Day 3: Nature & Relaxation**
- **Morning:** Hike **Mount Merapi** (sunrise trek) or visit **Jomblang Cave** (book a tour in advance).
- **Afternoon:** Relax at **Pantai Pok Tunggal** (beach) or **Taman Pintar** (interactive science park).
- **Evening:** Enjoy a **Javanese massage** and dinner at **Bakmi Jowo Mbah Gito**.

**Practical Tip:** Rent a **motorcycle** (IDR 70K–100K/day) or use **Grab** (ride-hailing app) for cheap, flexible transport. Avoid taxis without meters.

*Budget:* ~$50–70/day (excluding flights).

mistralai/mistral-medium-3-5 · Tested October 25, 2026

OpenAI Codex

5 of 5 passed

Model: gpt-5.3-codex · Run through: API model openai:gpt-5.3-codex · Tested October 25, 2026

OpenAI Codex: Card with the prompt and the full API answer from gpt-5.3-codex
Fix a buggy JavaScript function (median)Pass
Prompt

The following JavaScript function should return the median of an array of numbers, but it has bugs. Fix it. Requirements: return null for an empty array; do not modify the input array; work for negative numbers and decimals; for an even number of elements return the average of the two middle values. Reply with the complete fixed function in a single ```js code block (function name `median`, no exports, nothing else in the block), then at most 3 sentences explaining the bugs. ```js function median(arr) { arr.sort(); const mid = Math.floor(arr.length / 2); if (arr.length % 2 === 0) { return arr[mid] + arr[mid - 1] / 2; } return arr[mid]; } ```

Checklist

  • ✓ A js code block is present and defines a function named median
  • ✓ median([3,1,2]) === 2
  • ✓ median([10,2,1,4]) === 3
  • ✓ median([100,20,3]) === 20 (catches default string sort)
  • ✓ median([-1,-3]) === -2 and median([1.5,2.5,0.5]) === 1.5
  • ✓ median([]) === null
  • ✓ The input array is not mutated
Read the full answer (unedited model output, punctuation normalized)
```js
function median(arr) {
  if (arr.length === 0) return null;

  const sorted = [...arr].sort((a, b) => a - b);
  const mid = Math.floor(sorted.length / 2);

  if (sorted.length % 2 === 0) {
    return (sorted[mid - 1] + sorted[mid]) / 2;
  }

  return sorted[mid];
}
```

The original code mutated the input by sorting `arr` directly, so it now sorts a copied array instead.  
It also used default `.sort()` (lexicographic), which breaks numeric ordering; a numeric comparator fixes that.  
Finally, the even-length formula had operator-precedence issues and there was no empty-array handling.

gpt-5.3-codex · Tested October 25, 2026

OpenAI Codex: Card with the prompt and the full API answer from gpt-5.3-codex
Write a SQL query against a given schemaPass
Prompt

Given this SQLite schema: ```sql CREATE TABLE customers ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, city TEXT ); CREATE TABLE orders ( id INTEGER PRIMARY KEY, customer_id INTEGER NOT NULL REFERENCES customers(id), created_at TEXT NOT NULL, -- ISO 8601 date, 'YYYY-MM-DD' status TEXT NOT NULL, -- 'paid', 'refunded' or 'pending' amount_cents INTEGER NOT NULL ); ``` Write one SQLite query that returns the top 3 customers by total amount of PAID orders created in calendar year 2025. Return the columns name and total_cents. Order by total_cents descending, then by name ascending. Customers without paid 2025 orders must not appear. Reply with only the query in a single ```sql code block.

Checklist

  • ✓ A sql code block is present
  • ✓ The query runs without error on node:sqlite against the schema plus our seed data (fixtures/seed.sql)
  • ✓ Result has exactly the columns name, total_cents
  • ✓ Result rows equal the reference: Ayu 12000, Budi 12000, Citra 12000 (seed traps: a 2024-12-31 paid order, a refunded order, a pending order, a 2026-01-01 order)
Read the full answer (unedited model output, punctuation normalized)
```sql
SELECT
  c.name,
  SUM(o.amount_cents) AS total_cents
FROM customers AS c
JOIN orders AS o
  ON o.customer_id = c.id
WHERE o.status = 'paid'
  AND o.created_at >= '2025-01-01'
  AND o.created_at < '2026-01-01'
GROUP BY c.id, c.name
ORDER BY total_cents DESC, c.name ASC
LIMIT 3;
```

gpt-5.3-codex · Tested October 25, 2026

OpenAI Codex: Card with the prompt and the full API answer from gpt-5.3-codex
Refactor TypeScript to strict typesPass
Prompt

Refactor this TypeScript file into idiomatic, strictly typed TypeScript. Rules: no `any` anywhere; define and export types for the item, the options and the result; use const/let instead of var; keep the exported function name `summarize` and keep the behavior identical (including how a missing qty is treated). Reply with the full file in a single ```ts code block. ```ts export function summarize(items: any, opts?: any): any { var result: any = {}; for (var i = 0; i < items.length; i++) { var it = items[i]; if (opts && opts.onlyActive && !it.active) continue; if (!result[it.category]) result[it.category] = { count: 0, total: 0 }; result[it.category].count = result[it.category].count + 1; result[it.category].total = result[it.category].total + it.price * (it.qty == undefined ? 1 : it.qty); } return result; } ```

Checklist

  • ✓ A ts code block is present
  • ✓ The word any does not appear in the code
  • ✓ No var declarations
  • ✓ tsc --strict --noEmit passes (TypeScript from the workspace node_modules)
  • ✓ Behavior equals the legacy function on 4 fixed inputs (no options, onlyActive true, qty 0, qty missing), run with node type stripping
Read the full answer (unedited model output, punctuation normalized)
```ts
export type SummaryItem = {
  category: string;
  price: number;
  qty?: number;
  active?: boolean;
};

export type SummarizeOptions = {
  onlyActive?: boolean;
};

export type CategorySummary = {
  count: number;
  total: number;
};

export type SummarizeResult = Record<string, CategorySummary>;

export function summarize(
  items: readonly SummaryItem[],
  opts?: SummarizeOptions
): SummarizeResult {
  const result: SummarizeResult = {};

  for (let i = 0; i < items.length; i++) {
    const it = items[i];

    if (opts && opts.onlyActive && !it.active) continue;

    if (!result[it.category]) {
      result[it.category] = { count: 0, total: 0 };
    }

    result[it.category].count = result[it.category].count + 1;
    result[it.category].total =
      result[it.category].total + it.price * (it.qty == undefined ? 1 : it.qty);
  }

  return result;
}
```

gpt-5.3-codex · Tested October 25, 2026

See all results

Model: qwen/qwen-image-3 · Run through: OpenRouter API (qwen/qwen-image-3), served by the model vendor · Tested October 25, 2026

Qwen Image (Alibaba): Large sage green mug close up on a light wooden table
Product shotPass
Prompt

Studio product photo of a matte sage green ceramic coffee mug standing on a light oak wooden table, soft window light from the left, shallow depth of field, plain neutral background. No text, no logos.

Checklist

  • A single mug is the clear subject
  • Mug is sage green (muted grey-green)
  • Mug stands on a light wooden surface
  • Looks like a photograph, not an illustration
  • No text or logo anywhere
  • Mug geometry intact (one handle, no melted rim)
  • Light visibly comes from the left (nice to have)

qwen/qwen-image-3 · Tested October 25, 2026

Qwen Image (Alibaba): Poster FRESH MARKET, Saturday 8 AM, with vegetables and a small leaf badge
Poster with short English textPass

Both lines exact; small leaf badge added

Prompt

Minimalist event poster for a weekend farmers market. Large headline text that reads exactly "FRESH MARKET" and a smaller line below it that reads exactly "Saturday 8 AM". Flat illustration of carrots, tomatoes and leafy greens at the bottom. Warm orange and cream color palette.

Checklist

  • Headline spelled exactly FRESH MARKET
  • Second line spelled exactly Saturday 8 AM (case may differ)
  • No extra garbled or invented words
  • Vegetables illustrated (at least two of carrot, tomato, greens)
  • Reads as a poster layout (portrait or square, clear hierarchy) (nice to have)
  • Warm orange palette (nice to have)

qwen/qwen-image-3 · Tested October 25, 2026

Qwen Image (Alibaba): Fluffy orange kitten reading a book inside an arch of banyan roots
IllustrationPass
Prompt

Children's book illustration of a small orange cat sitting and reading an open book under a large banyan tree at sunset, soft watercolor textures, warm colors.

Checklist

  • Exactly one orange cat
  • An open book in front of or held by the cat
  • A large tree is present
  • Illustration style (not a photo)
  • Cat anatomy plausible (no extra limbs or heads)
  • Sunset light (nice to have)
  • Tree reads as a banyan (aerial roots) (nice to have)

qwen/qwen-image-3 · Tested October 25, 2026

See all results

Recraft

5 of 5 passed

Model: recraft/recraft-v4 · Run through: OpenRouter API (recraft/recraft-v4), served by Recraft · Tested October 25, 2026

Recraft: Speckled sage green mug filled with steaming black coffee on an oak table
Product shotPass

Speckled glaze, mug filled with steaming coffee (not asked)

Prompt

Studio product photo of a matte sage green ceramic coffee mug standing on a light oak wooden table, soft window light from the left, shallow depth of field, plain neutral background. No text, no logos.

Checklist

  • A single mug is the clear subject
  • Mug is sage green (muted grey-green)
  • Mug stands on a light wooden surface
  • Looks like a photograph, not an illustration
  • No text or logo anywhere
  • Mug geometry intact (one handle, no melted rim)
  • Light visibly comes from the left (nice to have)

recraft/recraft-v4 · Tested October 25, 2026

Recraft: Thin serif FRESH MARKET poster with line drawings of carrots, tomatoes and greens
Poster with short English textPass

Both lines exact, line-drawing vegetables

Prompt

Minimalist event poster for a weekend farmers market. Large headline text that reads exactly "FRESH MARKET" and a smaller line below it that reads exactly "Saturday 8 AM". Flat illustration of carrots, tomatoes and leafy greens at the bottom. Warm orange and cream color palette.

Checklist

  • Headline spelled exactly FRESH MARKET
  • Second line spelled exactly Saturday 8 AM (case may differ)
  • No extra garbled or invented words
  • Vegetables illustrated (at least two of carrot, tomato, greens)
  • Reads as a poster layout (portrait or square, clear hierarchy) (nice to have)
  • Warm orange palette (nice to have)

recraft/recraft-v4 · Tested October 25, 2026

Recraft: Small orange cat reading at the roots of a huge banyan tree, watercolor sunset
IllustrationPass

Cat small in frame

Prompt

Children's book illustration of a small orange cat sitting and reading an open book under a large banyan tree at sunset, soft watercolor textures, warm colors.

Checklist

  • Exactly one orange cat
  • An open book in front of or held by the cat
  • A large tree is present
  • Illustration style (not a photo)
  • Cat anatomy plausible (no extra limbs or heads)
  • Sunset light (nice to have)
  • Tree reads as a banyan (aerial roots) (nice to have)

recraft/recraft-v4 · Tested October 25, 2026

See all results

Seedance

5 of 5 passed

Model: bytedance/seedance-2.0-mini · Run through: OpenRouter video API (bytedance/seedance-2.0-mini) · Tested October 25, 2026

product orbitPass

Keeps the photo; slow drift and slight orbit, background reveals a wall corner.

Prompt

Slow, smooth camera orbit around the ceramic mug on the wooden table. Keep the mug shape, colour and the table unchanged. Soft natural light. No text.

Checklist

  • ✓ The request returns a playable video file.
  • ✓ No severe temporal breakdown: subject does not melt, split, duplicate or flicker into something else.
  • ✓ No garbled pseudo-text or fake watermark appears on screen. (nice to have)
  • ✓ First frame matches the input photo (same mug, table, framing).
  • ✓ The mug keeps its shape and handle while the camera moves.
  • ✓ Visible camera movement around the mug. (nice to have)

Input photo: Ceramic mug wooden table by creator not listed, CC0 1.0

bytedance/seedance-2.0-mini · Tested October 25, 2026

food steamPass

Slow push-in with visible steam; food unchanged; no hands.

Prompt

Gentle steam rises from the bowl of noodle soup, the broth surface ripples slightly, very slow camera push-in. No hands, no people.

Checklist

  • ✓ The request returns a playable video file.
  • ✓ No severe temporal breakdown: subject does not melt, split, duplicate or flicker into something else.
  • ✓ No garbled pseudo-text or fake watermark appears on screen. (nice to have)
  • ✓ First frame matches the input photo (same bowl, noodles, meatballs).
  • ✓ No hands, utensils held by a person, or people appear.
  • ✓ Steam or broth movement is visible; food keeps its look. (nice to have)

Input photo: A bowl of soup with noodles and meatballs by Faisal Ahammad, CC0 1.0

bytedance/seedance-2.0-mini · Tested October 25, 2026

room dollyPass

Clear forward dolly, sofa and chairs keep their shape.

Prompt

Slow cinematic dolly forward into the living room, sheer curtains moving gently in a light breeze, daylight. Furniture stays still and unchanged. No people.

Checklist

  • ✓ The request returns a playable video file.
  • ✓ No severe temporal breakdown: subject does not melt, split, duplicate or flicker into something else.
  • ✓ No garbled pseudo-text or fake watermark appears on screen. (nice to have)
  • ✓ First frame matches the input photo (same sofa, chairs, windows).
  • ✓ Furniture keeps its geometry (no bending sofas or chairs morphing).
  • ✓ Forward camera motion is visible; no people appear. (nice to have)

Input photo: Free minimalist living room interior by creator not listed, CC0 1.0

bytedance/seedance-2.0-mini · Tested October 25, 2026

See all results

Wan

5 of 5 passed

Model: alibaba/wan-3.0 · Run through: OpenRouter video API (alibaba/wan-3.0) · Tested October 25, 2026

product orbitPass

Starts on the input photo, camera orbits, mug and table keep their look.

Prompt

Slow, smooth camera orbit around the ceramic mug on the wooden table. Keep the mug shape, colour and the table unchanged. Soft natural light. No text.

Checklist

  • ✓ The request returns a playable video file.
  • ✓ No severe temporal breakdown: subject does not melt, split, duplicate or flicker into something else.
  • ✓ No garbled pseudo-text or fake watermark appears on screen. (nice to have)
  • ✓ First frame matches the input photo (same mug, table, framing).
  • ✓ The mug keeps its shape and handle while the camera moves.
  • ✓ Visible camera movement around the mug. (nice to have)

Input photo: Ceramic mug wooden table by creator not listed, CC0 1.0

alibaba/wan-3.0 · Tested October 25, 2026

food steamPass

Strong push-in with steam rising; bowl, noodles and meatballs unchanged; no hands.

Prompt

Gentle steam rises from the bowl of noodle soup, the broth surface ripples slightly, very slow camera push-in. No hands, no people.

Checklist

  • ✓ The request returns a playable video file.
  • ✓ No severe temporal breakdown: subject does not melt, split, duplicate or flicker into something else.
  • ✓ No garbled pseudo-text or fake watermark appears on screen. (nice to have)
  • ✓ First frame matches the input photo (same bowl, noodles, meatballs).
  • ✓ No hands, utensils held by a person, or people appear.
  • ✓ Steam or broth movement is visible; food keeps its look. (nice to have)

Input photo: A bowl of soup with noodles and meatballs by Faisal Ahammad, CC0 1.0

alibaba/wan-3.0 · Tested October 25, 2026

room dollyPass

Dolly forward; furniture stable; it replaced the window blinds with sheer curtains, which the prompt asked to move.

Prompt

Slow cinematic dolly forward into the living room, sheer curtains moving gently in a light breeze, daylight. Furniture stays still and unchanged. No people.

Checklist

  • ✓ The request returns a playable video file.
  • ✓ No severe temporal breakdown: subject does not melt, split, duplicate or flicker into something else.
  • ✓ No garbled pseudo-text or fake watermark appears on screen. (nice to have)
  • ✓ First frame matches the input photo (same sofa, chairs, windows).
  • ✓ Furniture keeps its geometry (no bending sofas or chairs morphing).
  • ✓ Forward camera motion is visible; no people appear. (nice to have)

Input photo: Free minimalist living room interior by creator not listed, CC0 1.0

alibaba/wan-3.0 · Tested October 25, 2026

See all results

ChatGPT

4 of 5 passed

Model: chat-latest · Run through: API model openai:chat-latest · Tested October 25, 2026

ChatGPT: Card with the prompt and the full API answer from chat-latest
Email draftPass
Prompt

Write a short email to my landlord asking him to fix the leaking kitchen faucet. Propose two possible time slots this week for the repair. Keep it polite and under 150 words, and include a subject line.

Checklist

  • ✓ Has a subject line
  • ✓ Mentions the faucet/tap and the leak
  • ✓ Proposes at least two time slots (two weekday names or two clock times)
  • ✓ At most 170 words in total (150 body plus subject allowance)
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
**Subject: Repair Request – Leaking Kitchen Faucet**

Dear [Landlord’s Name],

I hope you're doing well.

I’m writing to let you know that the kitchen faucet in my apartment is leaking and needs to be repaired. I would appreciate it if you could arrange for someone to take a look at it.

I’m available at the following times this week:
- **Tuesday, 10:00 AM – 12:00 PM**
- **Thursday, 2:00 PM – 4:00 PM**

Please let me know if either of these times works for you or if we need to arrange another time.

Thank you for your help!

Best regards,  
[Your Name]

chat-latest · Tested October 25, 2026

ChatGPT: Card with the prompt and the full API answer from chat-latest
Summary of a given textFail

Failed: At most 60 words

Prompt

Summarize the following text in exactly 3 bullet points, 60 words maximum in total. Use only information from the text. Text: Borobudur, also transcribed Barabudur (Indonesian: Candi Borobudur, Javanese: ꦕꦤ꧀ꦝꦶꦧꦫꦧꦸꦝꦸꦂ, romanized: Candhi Barabudhur), is a 9th-century Mahayana Buddhist temple in Magelang Regency, near the town of Muntilan, northwest of the city of Yogyakarta, in Central Java, Indonesia. Constructed of gray andesite-like stone, the temple consists of nine stacked platforms, six square and three circular, topped by a central dome. It is decorated with 2,672 relief panels and originally 504 Buddha statues. The central dome is surrounded by 72 Buddha statues, each seated inside a perforated stupa. The monument guides pilgrims through an extensive system of stairways and corridors with 1,460 narrative relief panels on the walls and the balustrades. Borobudur has one of the world's most extensive collections of Buddhist reliefs. Built during the reign of the Sailendra dynasty, the temple design follows Javanese Buddhist architecture, which blends the Indonesian indigenous tradition of ancestor worship and the Buddhist concept of attaining nirvāṇa. The monument is a shrine to the Buddha and a place for Buddhist pilgrimage. Evidence suggests that Borobudur was constructed in the 8th century and subsequently abandoned following the 14th-century decline of Hindu kingdoms in Java and the Javanese conversion to Islam. Worldwide knowledge of its existence was sparked in 1814 by Thomas Stamford Raffles, then the British administrator of Java, who was advised of its location by native Indonesians. Borobudur has since been preserved through several restorations. The largest restoration project was completed in 1983 by the Indonesian government and UNESCO, followed by the monument's listing as a UNESCO World Heritage Site. Borobudur is the largest Buddhist temple in the world, and ranks with Bagan in Myanmar and Angkor Wat in Cambodia as one of the great archeological sites of Southeast Asia. Borobudur remains popular for pilgrimage, with Buddhists in Indonesia celebrating Vesak Day at the monument. Among Indonesia's tourist attractions, Borobudur is the most-visited monument.

Checklist

  • ✓ Exactly 3 bullet lines
  • ✗ At most 60 words
  • ✓ Mentions at least 2 of: 9th century, Buddhist, Central Java
  • ✓ Every number in the answer appears in the source text (no invented figures)
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
- Borobudur is a 9th-century Mahayana Buddhist temple in Central Java, Indonesia, and the world's largest Buddhist temple.

- Built under the Sailendra dynasty, it features nine stacked platforms, 2,672 relief panels, and originally 504 Buddha statues, blending Javanese and Buddhist traditions.

- Rediscovered internationally in 1814, Borobudur underwent major restoration and became a UNESCO World Heritage Site. It remains a major pilgrimage and tourist destination.

chat-latest · Tested October 25, 2026

ChatGPT: Card with the prompt and the full API answer from chat-latest
Trip planPass
Prompt

Plan a 3-day trip to Yogyakarta, Indonesia for a first-time visitor on a moderate budget. Give a day-by-day plan with morning, afternoon and evening for each day. Include Borobudur and Prambanan, and give one practical tip about getting around. Keep it under 350 words.

Checklist

  • ✓ Has Day 1, Day 2 and Day 3
  • ✓ Mentions Borobudur and Prambanan
  • ✓ Uses morning, afternoon and evening
  • ✓ Gives a transport tip (Grab, Gojek, taxi, bus, Trans Jogja, car, scooter, train, driver)
  • ✓ At most 380 words
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
# 🇮🇩 3-Day Yogyakarta Itinerary (Moderate Budget)

Yogyakarta (often called Jogja) is Indonesia’s cultural heart, famous for ancient temples, traditional arts, delicious food, and affordable experiences. This 3-day itinerary balances sightseeing, culture, and relaxation.

## Day 1: Explore Yogyakarta’s Culture & City Life

**🌅 Morning: Sultan’s Palace & Water Castle**
- Visit **Kraton Yogyakarta**, the Sultan’s royal palace, to learn about Javanese traditions.
- Explore **Taman Sari Water Castle**, a historic royal garden with beautiful architecture.
- Budget: IDR 40,000–80,000 for entrance fees.

**☀️ Afternoon: Local Food & Shopping**
- Try **gudeg**, Jogja’s signature sweet jackfruit dish, at a local restaurant.
- Explore **Beringharjo Market** for batik clothing, souvenirs, and traditional snacks.
- Budget: IDR 50,000–100,000.

**🌙 Evening: Malioboro Street**
- Walk along bustling **Malioboro Street**, filled with street vendors, shops, and local performers.
- Enjoy dinner at a traditional *lesehan* (floor-seating restaurant).
- Budget: IDR 50,000–100,000.

## Day 2: Borobudur Temple & Scenic Views

**🌅 Morning: Borobudur Temple**
- Depart around 6:00 AM for **Borobudur**, the magnificent 9th-century Buddhist temple (approximately 1–1.5 hours away).
- Explore its intricate carvings and stunning architecture.
- Book temple-structure access tickets in advance.

**☀️ Afternoon: Villages & Local Crafts**
- Visit nearby **Candirejo Village** to experience traditional Javanese village life.
- Enjoy lunch at a local restaurant overlooking rice fields.

**🌙 Evening: Relax in Yogyakarta**
- Return to the city and unwind at a café in the **Prawirotaman** neighborhood.
- Estimated daily budget: IDR 500,000–850,000.

## Day 3: Prambanan Temple & Traditional Performances

**🌅 Morning: Prambanan Temple**
- Visit **Prambanan**, Indonesia’s spectacular Hindu temple complex, about 45–60 minutes from central Yogyakarta.
- Admire its towering temples dedicated to Shiva, Vishnu, and Brahma.

**☀️ Afternoon: Ratu Boko Palace**
- Explore **Ratu Boko**, an archaeological site offering panoramic views.
- Enjoy a relaxed lunch nearby.

**🌙 Evening: Ramayana Ballet**
- Watch the **Ramayana Ballet**, a traditional Javanese dance performance near Prambanan (check schedules beforehand).
- Estimated daily budget: IDR 500,000–900,000.

## 💰 Budget & Transportation Tips

- **Accommodation:** IDR 250,000–450,000/night for comfortable budget hotels.
- **Food:** IDR 100,000–180,000/day.
- **Getting around:** Use **Grab or Gojek** for affordable city rides. For Borobudur and Prambanan, consider hiring a driver for convenience.

**Best time to visit:** May–September (generally drier weather).

chat-latest · Tested October 25, 2026

Perplexity

4 of 5 passed

Model: perplexity/sonar · Run through: API model perplexity:perplexity/sonar · Tested October 25, 2026

Perplexity: Card with the prompt and the full API answer from perplexity/sonar
Email draftPass
Prompt

Write a short email to my landlord asking him to fix the leaking kitchen faucet. Propose two possible time slots this week for the repair. Keep it polite and under 150 words, and include a subject line.

Checklist

  • ✓ Has a subject line
  • ✓ Mentions the faucet/tap and the leak
  • ✓ Proposes at least two time slots (two weekday names or two clock times)
  • ✓ At most 170 words in total (150 body plus subject allowance)
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
Subject: Repair Request: Leaking Kitchen Faucet

Hi [Landlord’s Name],

The kitchen faucet is leaking. Could you please arrange a repair this week? I’m available Tuesday from 10 a.m. to noon or Thursday from 2 to 4 p.m. Please let me know if either time works.

Thank you,  
[Your Name]

perplexity/sonar · Tested October 25, 2026

Perplexity: Card with the prompt and the full API answer from perplexity/sonar
Summary of a given textFail

Failed: At most 60 words

Prompt

Summarize the following text in exactly 3 bullet points, 60 words maximum in total. Use only information from the text. Text: Borobudur, also transcribed Barabudur (Indonesian: Candi Borobudur, Javanese: ꦕꦤ꧀ꦝꦶꦧꦫꦧꦸꦝꦸꦂ, romanized: Candhi Barabudhur), is a 9th-century Mahayana Buddhist temple in Magelang Regency, near the town of Muntilan, northwest of the city of Yogyakarta, in Central Java, Indonesia. Constructed of gray andesite-like stone, the temple consists of nine stacked platforms, six square and three circular, topped by a central dome. It is decorated with 2,672 relief panels and originally 504 Buddha statues. The central dome is surrounded by 72 Buddha statues, each seated inside a perforated stupa. The monument guides pilgrims through an extensive system of stairways and corridors with 1,460 narrative relief panels on the walls and the balustrades. Borobudur has one of the world's most extensive collections of Buddhist reliefs. Built during the reign of the Sailendra dynasty, the temple design follows Javanese Buddhist architecture, which blends the Indonesian indigenous tradition of ancestor worship and the Buddhist concept of attaining nirvāṇa. The monument is a shrine to the Buddha and a place for Buddhist pilgrimage. Evidence suggests that Borobudur was constructed in the 8th century and subsequently abandoned following the 14th-century decline of Hindu kingdoms in Java and the Javanese conversion to Islam. Worldwide knowledge of its existence was sparked in 1814 by Thomas Stamford Raffles, then the British administrator of Java, who was advised of its location by native Indonesians. Borobudur has since been preserved through several restorations. The largest restoration project was completed in 1983 by the Indonesian government and UNESCO, followed by the monument's listing as a UNESCO World Heritage Site. Borobudur is the largest Buddhist temple in the world, and ranks with Bagan in Myanmar and Angkor Wat in Cambodia as one of the great archeological sites of Southeast Asia. Borobudur remains popular for pilgrimage, with Buddhists in Indonesia celebrating Vesak Day at the monument. Among Indonesia's tourist attractions, Borobudur is the most-visited monument.

Checklist

  • ✓ Exactly 3 bullet lines
  • ✗ At most 60 words
  • ✓ Mentions at least 2 of: 9th century, Buddhist, Central Java
  • ✓ Every number in the answer appears in the source text (no invented figures)
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
- Borobudur is a 9th-century Mahayana Buddhist temple in Central Java, Indonesia, built during the Sailendra dynasty.
- Its nine platforms feature 2,672 relief panels and originally 504 Buddha statues; its design guides pilgrims through Buddhist teachings toward nirvāṇa.
- Abandoned after Java’s Hindu kingdoms declined, it was restored and listed as a UNESCO World Heritage Site; it remains a major pilgrimage site and Indonesia’s most-visited monument.

perplexity/sonar · Tested October 25, 2026

Perplexity: Card with the prompt and the full API answer from perplexity/sonar
Trip planPass
Prompt

Plan a 3-day trip to Yogyakarta, Indonesia for a first-time visitor on a moderate budget. Give a day-by-day plan with morning, afternoon and evening for each day. Include Borobudur and Prambanan, and give one practical tip about getting around. Keep it under 350 words.

Checklist

  • ✓ Has Day 1, Day 2 and Day 3
  • ✓ Mentions Borobudur and Prambanan
  • ✓ Uses morning, afternoon and evening
  • ✓ Gives a transport tip (Grab, Gojek, taxi, bus, Trans Jogja, car, scooter, train, driver)
  • ✓ At most 380 words
  • ✓ Answer is in English
Read the full answer (unedited model output, punctuation normalized)
## Day 1 - Yogyakarta’s historic center
**Morning:** Visit the Sultan’s Palace (Kraton), then walk to nearby Taman Sari water palace.  
**Afternoon:** Browse local crafts and batik around the old town; pause for lunch at a modest warung.  
**Evening:** Stroll Malioboro Street, try street-food favorites such as *gudeg*, and explore the evening market.

## Day 2 - Borobudur
**Morning:** Head out early for Borobudur; allow roughly an hour or more each way from the city. Book a temple-structure ticket in advance if you want to climb the monument; access is guided and time-slot limited.  
**Afternoon:** Explore the temple grounds and nearby village or countryside, then return to Yogyakarta.  
**Evening:** Keep it relaxed with an inexpensive local dinner near your accommodation.

## Day 3 - Prambanan
**Morning:** Visit Prambanan, the striking Hindu temple complex east of the city.  
**Afternoon:** See the smaller temples nearby, or return to town for a leisurely lunch and a visit to a museum or café.  
**Evening:** If it’s showing, consider the Ramayana Ballet; otherwise, enjoy a final dinner around the center.

**Getting around:** Trans Jogja buses are a low-cost option for city routes and Prambanan, but Borobudur is farther away - compare a shared tour with a driver or ride-hailing car. Check current schedules and ticket options before setting out.

perplexity/sonar · Tested October 25, 2026

Qwen Chat

4 of 5 passed

Model: qwen/qwen3-coder-next · Run through: API model openrouter:qwen/qwen3-coder-next · Tested October 25, 2026

Qwen Chat: Card with the prompt and the full API answer from qwen/qwen3-coder-next
Fix a buggy JavaScript function (median)Pass
Prompt

The following JavaScript function should return the median of an array of numbers, but it has bugs. Fix it. Requirements: return null for an empty array; do not modify the input array; work for negative numbers and decimals; for an even number of elements return the average of the two middle values. Reply with the complete fixed function in a single ```js code block (function name `median`, no exports, nothing else in the block), then at most 3 sentences explaining the bugs. ```js function median(arr) { arr.sort(); const mid = Math.floor(arr.length / 2); if (arr.length % 2 === 0) { return arr[mid] + arr[mid - 1] / 2; } return arr[mid]; } ```

Checklist

  • ✓ A js code block is present and defines a function named median
  • ✓ median([3,1,2]) === 2
  • ✓ median([10,2,1,4]) === 3
  • ✓ median([100,20,3]) === 20 (catches default string sort)
  • ✓ median([-1,-3]) === -2 and median([1.5,2.5,0.5]) === 1.5
  • ✓ median([]) === null
  • ✓ The input array is not mutated
Read the full answer (unedited model output, punctuation normalized)
```js
function median(arr) {
  if (arr.length === 0) return null;
  const sorted = [...arr].sort((a, b) => a - b);
  const mid = Math.floor(sorted.length / 2);
  if (sorted.length % 2 === 0) {
    return (sorted[mid - 1] + sorted[mid]) / 2;
  }
  return sorted[mid];
}
```

The original function had three bugs: (1) it mutated the original array by calling `sort()` without cloning it first; (2) `sort()` without a compare function performs lexicographic sorting, breaking numeric comparisons (e.g., `[2, 10]` sorts as `[10, 2]`); (3) for even-length arrays, it incorrectly computed `arr[mid] + arr[mid - 1] / 2` due to operator precedence - division happens before addition - instead of `(arr[mid - 1] + arr[mid]) / 2`.

qwen/qwen3-coder-next · Tested October 25, 2026

Qwen Chat: Card with the prompt and the full API answer from qwen/qwen3-coder-next
Write a SQL query against a given schemaPass
Prompt

Given this SQLite schema: ```sql CREATE TABLE customers ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, city TEXT ); CREATE TABLE orders ( id INTEGER PRIMARY KEY, customer_id INTEGER NOT NULL REFERENCES customers(id), created_at TEXT NOT NULL, -- ISO 8601 date, 'YYYY-MM-DD' status TEXT NOT NULL, -- 'paid', 'refunded' or 'pending' amount_cents INTEGER NOT NULL ); ``` Write one SQLite query that returns the top 3 customers by total amount of PAID orders created in calendar year 2025. Return the columns name and total_cents. Order by total_cents descending, then by name ascending. Customers without paid 2025 orders must not appear. Reply with only the query in a single ```sql code block.

Checklist

  • ✓ A sql code block is present
  • ✓ The query runs without error on node:sqlite against the schema plus our seed data (fixtures/seed.sql)
  • ✓ Result has exactly the columns name, total_cents
  • ✓ Result rows equal the reference: Ayu 12000, Budi 12000, Citra 12000 (seed traps: a 2024-12-31 paid order, a refunded order, a pending order, a 2026-01-01 order)
Read the full answer (unedited model output, punctuation normalized)
```sql
SELECT c.name, SUM(o.amount_cents) AS total_cents
FROM customers c
JOIN orders o ON c.id = o.customer_id
WHERE o.status = 'paid' AND o.created_at >= '2025-01-01' AND o.created_at <= '2025-12-31'
GROUP BY c.id, c.name
ORDER BY total_cents DESC, c.name ASC
LIMIT 3;
```

qwen/qwen3-coder-next · Tested October 25, 2026

Qwen Chat: Card with the prompt and the full API answer from qwen/qwen3-coder-next
Refactor TypeScript to strict typesPass
Prompt

Refactor this TypeScript file into idiomatic, strictly typed TypeScript. Rules: no `any` anywhere; define and export types for the item, the options and the result; use const/let instead of var; keep the exported function name `summarize` and keep the behavior identical (including how a missing qty is treated). Reply with the full file in a single ```ts code block. ```ts export function summarize(items: any, opts?: any): any { var result: any = {}; for (var i = 0; i < items.length; i++) { var it = items[i]; if (opts && opts.onlyActive && !it.active) continue; if (!result[it.category]) result[it.category] = { count: 0, total: 0 }; result[it.category].count = result[it.category].count + 1; result[it.category].total = result[it.category].total + it.price * (it.qty == undefined ? 1 : it.qty); } return result; } ```

Checklist

  • ✓ A ts code block is present
  • ✓ The word any does not appear in the code
  • ✓ No var declarations
  • ✓ tsc --strict --noEmit passes (TypeScript from the workspace node_modules)
  • ✓ Behavior equals the legacy function on 4 fixed inputs (no options, onlyActive true, qty 0, qty missing), run with node type stripping
Read the full answer (unedited model output, punctuation normalized)
```ts
export interface Item {
  category: string;
  price: number;
  qty?: number;
  active?: boolean;
}

export interface Options {
  onlyActive?: boolean;
}

export interface CategorySummary {
  count: number;
  total: number;
}

export function summarize(items: Item[], opts?: Options): Record<string, CategorySummary> {
  const result: Record<string, CategorySummary> = {};
  
  for (let i = 0; i < items.length; i++) {
    const it = items[i];
    
    if (opts?.onlyActive && !it.active) {
      continue;
    }
    
    if (!result[it.category]) {
      result[it.category] = { count: 0, total: 0 };
    }
    
    result[it.category].count += 1;
    result[it.category].total += it.price * (it.qty ?? 1);
  }
  
  return result;
}
```

qwen/qwen3-coder-next · Tested October 25, 2026

See all results

Model: bytedance-seed/seedream-4.5 · Run through: OpenRouter API (bytedance-seed/seedream-4.5), served by Seed · Tested October 25, 2026

Seedream (ByteDance): Sage green mug on the edge of a light wooden table, light from the left
Product shotPass
Prompt

Studio product photo of a matte sage green ceramic coffee mug standing on a light oak wooden table, soft window light from the left, shallow depth of field, plain neutral background. No text, no logos.

Checklist

  • A single mug is the clear subject
  • Mug is sage green (muted grey-green)
  • Mug stands on a light wooden surface
  • Looks like a photograph, not an illustration
  • No text or logo anywhere
  • Mug geometry intact (one handle, no melted rim)
  • Light visibly comes from the left (nice to have)

bytedance-seed/seedream-4.5 · Tested October 25, 2026

Seedream (ByteDance): Poster FRESH MARKET, Saturday 8 AM, with carrots, tomatoes and spinach leaves
Poster with short English textPass

Both lines exact

Prompt

Minimalist event poster for a weekend farmers market. Large headline text that reads exactly "FRESH MARKET" and a smaller line below it that reads exactly "Saturday 8 AM". Flat illustration of carrots, tomatoes and leafy greens at the bottom. Warm orange and cream color palette.

Checklist

  • Headline spelled exactly FRESH MARKET
  • Second line spelled exactly Saturday 8 AM (case may differ)
  • No extra garbled or invented words
  • Vegetables illustrated (at least two of carrot, tomato, greens)
  • Reads as a poster layout (portrait or square, clear hierarchy) (nice to have)
  • Warm orange palette (nice to have)

bytedance-seed/seedream-4.5 · Tested October 25, 2026

Seedream (ByteDance): Orange kitten reading a red book under a banyan tree against a pink sunset
IllustrationPass
Prompt

Children's book illustration of a small orange cat sitting and reading an open book under a large banyan tree at sunset, soft watercolor textures, warm colors.

Checklist

  • Exactly one orange cat
  • An open book in front of or held by the cat
  • A large tree is present
  • Illustration style (not a photo)
  • Cat anatomy plausible (no extra limbs or heads)
  • Sunset light (nice to have)
  • Tree reads as a banyan (aerial roots) (nice to have)

bytedance-seed/seedream-4.5 · Tested October 25, 2026

See all results

Model: google/gemini-3-pro-image · Run through: OpenRouter API (google/gemini-3-pro-image), served by Google · Tested October 25, 2026

Google Gemini (Nano Banana): Sage green mug on a light wooden table against a white wall
Product shotPass
Prompt

Studio product photo of a matte sage green ceramic coffee mug standing on a light oak wooden table, soft window light from the left, shallow depth of field, plain neutral background. No text, no logos.

Checklist

  • A single mug is the clear subject
  • Mug is sage green (muted grey-green)
  • Mug stands on a light wooden surface
  • Looks like a photograph, not an illustration
  • No text or logo anywhere
  • Mug geometry intact (one handle, no melted rim)
  • Light visibly comes from the left (nice to have)

google/gemini-3-pro-image · Tested October 25, 2026

Google Gemini (Nano Banana): Orange poster text FRESH MARKET and Saturday 8 AM with flat carrots, tomatoes and leaves
Poster with short English textPass

Both lines exact

Prompt

Minimalist event poster for a weekend farmers market. Large headline text that reads exactly "FRESH MARKET" and a smaller line below it that reads exactly "Saturday 8 AM". Flat illustration of carrots, tomatoes and leafy greens at the bottom. Warm orange and cream color palette.

Checklist

  • Headline spelled exactly FRESH MARKET
  • Second line spelled exactly Saturday 8 AM (case may differ)
  • No extra garbled or invented words
  • Vegetables illustrated (at least two of carrot, tomato, greens)
  • Reads as a poster layout (portrait or square, clear hierarchy) (nice to have)
  • Warm orange palette (nice to have)

google/gemini-3-pro-image · Tested October 25, 2026

Google Gemini (Nano Banana): Orange cat with glasses and scarf reading Tales of the Banyan, squirrels and birds around
IllustrationPass

Adds glasses, scarf, squirrels, birds and a book title 'Tales of the Banyan' (not asked)

Prompt

Children's book illustration of a small orange cat sitting and reading an open book under a large banyan tree at sunset, soft watercolor textures, warm colors.

Checklist

  • Exactly one orange cat
  • An open book in front of or held by the cat
  • A large tree is present
  • Illustration style (not a photo)
  • Cat anatomy plausible (no extra limbs or heads)
  • Sunset light (nice to have)
  • Tree reads as a banyan (aerial roots) (nice to have)

google/gemini-3-pro-image · Tested October 25, 2026

See all results

Krea

3 of 5 passed

Model: krea/krea-2-medium · Run through: OpenRouter API (krea/krea-2-medium), served by the model vendor · Tested October 25, 2026

Krea: Small sage green mug on a light wooden table with window light
Product shotPass
Prompt

Studio product photo of a matte sage green ceramic coffee mug standing on a light oak wooden table, soft window light from the left, shallow depth of field, plain neutral background. No text, no logos.

Checklist

  • A single mug is the clear subject
  • Mug is sage green (muted grey-green)
  • Mug stands on a light wooden surface
  • Looks like a photograph, not an illustration
  • No text or logo anywhere
  • Mug geometry intact (one handle, no melted rim)
  • Light visibly comes from the left (nice to have)

krea/krea-2-medium · Tested October 25, 2026

Krea: Poster FRESH MARKET, Saturday 8 AM, with only a row of carrots
Poster with short English textFail

Text exact but only carrots drawn (no tomatoes or leafy greens)

Prompt

Minimalist event poster for a weekend farmers market. Large headline text that reads exactly "FRESH MARKET" and a smaller line below it that reads exactly "Saturday 8 AM". Flat illustration of carrots, tomatoes and leafy greens at the bottom. Warm orange and cream color palette.

Checklist

  • Headline spelled exactly FRESH MARKET
  • Second line spelled exactly Saturday 8 AM (case may differ)
  • No extra garbled or invented words
  • Vegetables illustrated (at least two of carrot, tomato, greens)
  • Reads as a poster layout (portrait or square, clear hierarchy) (nice to have)
  • Warm orange palette (nice to have)

krea/krea-2-medium · Tested October 25, 2026

Krea: Orange kitten with an open picture book on a mossy mound under a banyan tree
IllustrationPass
Prompt

Children's book illustration of a small orange cat sitting and reading an open book under a large banyan tree at sunset, soft watercolor textures, warm colors.

Checklist

  • Exactly one orange cat
  • An open book in front of or held by the cat
  • A large tree is present
  • Illustration style (not a photo)
  • Cat anatomy plausible (no extra limbs or heads)
  • Sunset light (nice to have)
  • Tree reads as a banyan (aerial roots) (nice to have)

krea/krea-2-medium · Tested October 25, 2026

See all results

Kling AI

1 of 1 passed

Model: kwaivgi/kling-v3.0-std · Run through: OpenRouter video API (kwaivgi/kling-v3.0-std) · Tested October 25, 2026

product turntablePass

Clean turntable rotation, consistent handle; output came back 1920x1080 although 720p was requested.

Prompt

A plain matte white ceramic coffee mug slowly rotating on a turntable against a seamless light grey studio background, soft even lighting, smooth continuous rotation, no text, no logos.

Checklist

  • ✓ The request returns a playable video file.
  • ✓ No severe temporal breakdown: subject does not melt, split, duplicate or flicker into something else.
  • ✓ No garbled pseudo-text or fake watermark appears on screen. (nice to have)
  • ✓ A single mug is the subject and stays a mug (handle does not appear and vanish randomly).
  • ✓ The mug visibly rotates (turntable motion), camera mostly static.
  • ✓ Plain studio background, no text or logo on the mug. (nice to have)

kwaivgi/kling-v3.0-std · Tested October 25, 2026

How we test

The prompts and the pass or fail checklist were written on October 25, 2026, before any tool was run. Each tool got the same prompts and settings. A prompt passes only when every required checklist item is met; the notes say what was off. Results come from the API model behind each product, not from its app.

Questions

Can a company pay to be listed higher?

No. Order comes from test results only. Paid visibility, when it opens, is always labeled Sponsor and never changes a score.

Which tool did best in your test?

ChatGPT (GPT Image), Claude, Claude Code, DeepSeek, FLUX (Black Forest Labs), Gemini Code Assist, Grok, Hailuo AI, Kimi, Meta AI, Mistral Vibe (formerly Le Chat), OpenAI Codex, Qwen Image (Alibaba), Recraft, Seedance, and Wan passed every prompt in our run of October 25, 2026. The full results, including failures, are in the gallery above.

Which of these have a free plan?

According to the official pricing pages (checked October 25, 2026): ChatGPT (GPT Image), Claude, DeepSeek, Grok, Hailuo AI, Kimi, Meta AI, Mistral Vibe (formerly Le Chat), OpenAI Codex, Qwen Image (Alibaba), Recraft, Wan, ChatGPT, Perplexity, Qwen Chat, Google Gemini (Nano Banana), Krea, and Kling AI.

Why might this page say it is not in search engines?

We only ask search engines to index a list once at least 5 tools have a fresh price check and 5 graded prompts. Until then the page stays visible to visitors but out of search results.