Skip to content

Article Generation

Overview

Article generation produces a "10-second race result summary" from nothing more than a race selection. The summary is one headline plus three sentences, embedded in the race result page.

When an operator submits a request, AI reads the race information (race result, race video, course image) and writes a summary to match. The article is marked "generating" while the request is in flight and becomes a "draft" once complete. Publishing is a separate operator action.


How generation works

flowchart TD
    Request([Operator requests generation]) --> Check{Does the race have a finishing order?}
    Check -->|no| Reject[Reject the request]
    Check -->|yes| Generating[Article is created as "generating"]
    Generating --> Analyze[AI reads the race result, video and course image]
    Analyze --> Write[AI writes the summary]
    Write --> Guard{Fact and NG word checks}
    Guard -->|issues| Retry[Feed findings back and rewrite<br/>up to twice]
    Retry --> Write
    Guard -->|clean| Build[Build the article HTML]
    Build --> Saved[Saved as a draft]
    Guard -->|unresolved| Failed[Kept as "failed" with the reason]

Once generation completes, the article stays a draft. Publishing is an operator action.


Article status

Status Description
Generating The request has been accepted and AI is producing the article
Draft Generated or manually created, not yet published
Published An operator has published it
Failed Generation failed to the end; the reason is recorded and it becomes the starting point for a retry

Article generation never sets an article to "published" โ€” only an operator does that.


Race information the AI reads

Each article is tied to a race (auto racing, keirin or horse racing), and the AI reflects that race's information in the text.

Kind Description
Race result Finishing order, times, payouts and other result data
Race video Race footage โ€” winning moves, field movement, incidents
Course image Course diagram (horse racing only)

Races without a video or course image are still generated, based on the race result alone.


How factual accuracy is protected

AI is poor at transcribing numbers and cross-referencing data sources, and it mixes things up. So interpretation, matching and transcription are done by the machine, and the AI only writes the Japanese.

Mechanism Description
Eligibility check Races with no finishing order (void / cancelled) are not generated
Confirmed facts Lap and corner leaders are resolved to "number + name" by the machine before being given to the AI
Value substitution Entrant names, payout amounts, combinations and popularity are filled in from the official data
Popularity correction Popularity written directly by the AI, and "the Nth favourite finished Mth" mix-ups, are corrected to the official values
Fact checking Number-to-name mapping and payout figures are verified against the official data
NG word screening Generated text is scanned for prohibited words
Length Each sentence is checked for being too long

Anything detected is fed back to the AI and the text is rewritten (up to twice). If it still cannot be resolved, generation fails and nothing is published.

Why races without a finishing order are excluded

With nothing to base the finishing order on, the AI invents a winner โ€” we have seen "car 8's X took first place; every rider finished, in an uneventful race" for a race that never ran.


Failures and regeneration

An article whose generation failed to the end is not deleted; it remains visible as "failed", along with the reason (e.g. what the fact guard flagged), so operators can see at a glance which race had which problem.

Regeneration accepts extra instructions. Since retrying with identical input fails for the same reason, the operator can change what the AI is told. If the instructions are omitted, the previous ones are reused, so repeatedly triggering regeneration from the list view never loses them.

Only failed articles can be regenerated

Draft and published articles cannot be regenerated, because that would overwrite reviewed content.


Compared with manual creation

Method Description
Manual The operator types the title and body directly
AI generation The operator picks a race and title, and AI writes the body