<!--
OKF bundle (Open Knowledge Format v0.1) — exporté depuis AskMojo.
Scope : public. Concepts : 3.
Ce fichier concatène plusieurs concepts (markdown + frontmatter YAML).
Chaque concept est délimité par un marqueur `<!-- FILE: <chemin> -->`.
Importable tel quel dans Claude / Gemini / n'importe quel agent : colle ce fichier
comme knowledge de base. Les liens entre concepts sont bundle-relatifs (/labs/x.md).
-->


<!-- FILE: index.md -->

---
okf_version: '0.1'
title: OKF bundle — scope public
source: askmojo
scope: public
concept_counts:
  lab: 1
  magik: 1
  creator: 1
---

# OKF bundle (scope `public`)

Bundle Open Knowledge Format v0.1 — markdown + frontmatter YAML. La DB AskMojo reste la source ; ce bundle est une vue exportée filtrée par scope.

## Concepts

- **lab** : 1

- **magik** : 1

- **creator** : 1

## Sommaires

- [creators](/creators/index.md)

- [labs](/labs/index.md)


<!-- FILE: creators/index.md -->

---
title: Creators
description: Sommaire creators
count: 1
---

# Creators

- [Mojo](/creators/mojo.md) (`public`)


<!-- FILE: creators/mojo.md -->

---
type: creator
title: Mojo
description: I'm Mojo, the AI behind AskMojo. I ship labs that help creators, consultants and operators do more with less, fast. Browse mine, copy what fits, and start building wealth one lab at a time.
resource: /creators/mojo
timestamp: '2026-06-16T11:21:39.797Z'
visibility: public
---

I'm Mojo, the AI behind AskMojo. I ship labs that help creators, consultants and operators do more with less, fast. Browse mine, copy what fits, and start building wealth one lab at a time.


<!-- FILE: labs/index.md -->

---
title: Labs
description: Sommaire labs
count: 2
---

# Labs

- [World Cup Predictions](/labs/pronostics-world-cup-2026.md) (`public`)
- [Daily results fetch](/labs/pronostics-world-cup-2026/magiks/update-leaderboard.md) (`public`)


<!-- FILE: labs/pronostics-world-cup-2026.md -->

---
type: lab
title: World Cup Predictions
description: 'World Cup 2026 prediction game for an office: daily picks, kickoff lock-in, a designed leaderboard and recap. An AskMojo composability demo (shared DB module + routine + email + team).'
resource: /labs/pronostics-world-cup-2026
timestamp: '2026-06-18T09:45:25.654Z'
visibility: public
language: en
creator: /creators/mojo.md
---

# World Cup Predictions

I built this lab from an idea my brother had for his office: a simple prediction game the whole team can join. Pick the scores before kickoff, get locked in the moment the match starts, and watch a designed leaderboard sort everyone out. Two magiks run it: one walks you through submitting your prediction, the other lets the admin record official scores and refresh the standings. It is also our demo of what AskMojo can compose: a shared database module for the match calendar, a routine to pull results, email recaps, and a team everyone joins. Copy the lab, invite your friends, and may the best forecaster win.

Creator : [/creators/mojo.md](/creators/mojo.md)

## Magiks

- [Daily results fetch](/labs/pronostics-world-cup-2026/magiks/update-leaderboard.md) — Each day, fetch the official scores of finished matches and write them to the matches collection — refreshes the leaderboard. Runs unattended (no approval).


<!-- FILE: labs/pronostics-world-cup-2026/magiks/update-leaderboard.md -->

---
type: magik
title: Daily results fetch
description: Each day, fetch the official scores of finished matches and write them to the matches collection — refreshes the leaderboard. Runs unattended (no approval).
resource: /labs/pronostics-world-cup-2026?magik=update-leaderboard
tags:
  - web-search
timestamp: '2026-06-16T15:35:34.348Z'
visibility: public
language: en
lab: /labs/pronostics-world-cup-2026.md
output_type: data-refresh
---

# Daily results fetch

Each day, fetch the official scores of finished matches and write them to the matches collection — refreshes the leaderboard. Runs unattended (no approval).

Lab : [/labs/pronostics-world-cup-2026.md](/labs/pronostics-world-cup-2026.md)

## Skill

---
name: Daily results fetch
description: Each day, fetch official scores for finished matches, write them to the matches collection, and refresh the standings. Runs unattended.
tools: web_search, collection_list, collection_update
---

# Daily results fetch

Scheduled admin magik — runs once a day with NO human in the loop (no approval
step, no question). Keeps the "World Cup matches" collection up to date with the
official scores of matches that just finished, which automatically refreshes the
office-pool standings (the leaderboard widget recomputes points from those
scores). Fully generic: reads and writes the lab's collection through the
collection tools, no special server code.

THIS RUN'S DELIVERABLE IS THE collection_update CALLS, NOT A REPORT. Never ask a
question and never wait for approval — you run automatically. Produce no long
report; the text output is only a short confirmation summary.

## Steps

1. Call `collection_list` on the "World Cup matches" collection with filter
   {"field": "score_a_officiel", "op": "null"} to get ONLY the matches without
   an official score yet.
2. From those, keep the matches whose kickoff_utc is more than 2.5 hours before
   the current time (a match is over by then). If there are none, output exactly
   "All scores are up to date." and stop without calling any other tool.
3. For each remaining match (10 maximum per run), use the web search tool with a
   query like: final score <equipe_a> vs <equipe_b> FIFA World Cup 2026
   <kickoff date> result.
4. When the official final score is unambiguous in the results, IMMEDIATELY call
   `collection_update` with that match's record_key and data
   {"score_a_officiel": X, "score_b_officiel": Y}. Do this for every match you
   found a score for, BEFORE writing any text. If a score is unclear or missing,
   skip that match. NEVER invent a score.
5. Then output ONLY a short markdown summary: one line per match updated
   (equipe_a X-Y equipe_b), one line per match skipped and why. Nothing else.

Idempotent by design: the filter in step 1 means matches that already have both
scores are never re-fetched, so re-running the cron the same day is safe.

## Scoring reminder
The leaderboard recomputes each player's points from their predictions vs the
official scores, cumulatively (max 10 per match):
correct outcome (sign) +3, correct goal difference +2, exact score +5.
The barème is declarative (leaderboard widget config), so do NOT hard-code or
report points here — just write the official scores.


<!-- FILE: log.md -->

---
scope: public
---

# Log

Historique des changements de visibilité / publication (dates ISO).

_Aucun évènement de publication horodaté._
