Product Overview
What Jester is
Jester is a platform that generates oddspark's articles and blogs with AI. From material that already exists โ race results, race videos, past blog articles โ AI drafts the copy, and an operator reviews and publishes it.
There are two kinds of content.
| Content | Description |
|---|---|
| Article | The "10-second race result summary" embedded in the race result page: one headline and three sentences |
| Blog | Longer-form blog articles, in two families: rewrites of past blogs, and newly written race recaps / predictions |
Generated content is saved as a draft and published by an operator. The AI never publishes anything.
Problems it solves
| Problem | How Jester addresses it |
|---|---|
| Writing articles takes time and money | AI drafts them from the race result and race video |
| Migrating past articles is laborious | Past blogs are imported and rewritten by AI without changing their content |
| Race videos go unused | AI analyses the video and feeds it into the writing and thumbnail selection |
| Preparing thumbnails is laborious | AI picks the best moment in the race video and that frame becomes the thumbnail |
| AI can write things that are not true | Transcription and cross-referencing are done in code, and generated text is checked against the official data โ contradictions are never published |
Key features
Race information management
- Uploading race result JSON (auto racing, keirin, horse racing)
- Registering the pre-race entry list and AI prediction marks
- Race videos and course images live in S3 and are read during generation
AI article generation (10-second race result summary)
- Request generation for a race, and AI writes a summary readable in about ten seconds
- The race result, race video and course image (horse racing only) are analysed and reflected in the text
- The generated article is saved as a draft; publishing is a separate operator action
- Failed generations remain visible as "failed" with a reason and can be retried with extra instructions
AI blog generation
| Kind | Description |
|---|---|
| Rewrite | Rewrites an imported past blog for readability without changing its content |
| Race recap | Writes a post-race retrospective from the race result and video |
| Race prediction | Writes a pre-race prediction from the entry list and AI prediction marks |
Generated blogs are assembled using oddspark's real article designs.
AI thumbnail generation
- AI analyses the race video and selects the best moment for a thumbnail
- That frame is extracted, stored as an image and embedded in the blog body
Related information
- Similarity between blogs is computed and links to related blogs are inserted at the bottom of the article
- Race-linked blogs also show a card pointing to the race result page
Master data
- Categories (broad blog categories, which also determine the article design)
- NG words (terms that must not appear in generated text)
How factual accuracy is protected
Generative AI is poor at transcribing numbers and cross-referencing multiple data sources, and it mixes things up. Jester is designed so that interpretation, matching and transcription happen in code, and the AI only writes the Japanese.
| Mechanism | Description |
|---|---|
| Eligibility check | Races with no finishing order (void / cancelled) are never generated, because the AI would invent a winner |
| Value substitution | Entrant names, payout amounts and popularity are filled in from the official data rather than written by the AI |
| Post-generation checking | Number-to-name mapping and payout figures are verified against the official data |
| NG word screening | Generated text is scanned for prohibited words |
When something is detected the text is rewritten (up to twice); if it still cannot be resolved, generation fails and nothing is published.
Tech stack
| Area | Technology |
|---|---|
| Cloud | AWS (Lambda / API Gateway / SQS / S3 / CloudFront / DocumentDB / Bedrock) |
| AI models | Amazon Bedrock (Nova Pro / Claude Sonnet / Titan Text Embeddings v2) |
| AI agents | LangGraph (combined race analysis, thumbnail moment selection) |
| Database | Amazon DocumentDB (MongoDB-compatible) |
| Architecture | Serverless, asynchronous pipelines |
See Tech Stack for details.
Current phase
Jester is in a proof-of-concept phase. The focus is validating automatic article and blog generation and the factual accuracy of what it produces. There is also instrumentation for measuring how much a generated article drew on the race result versus the race video.